Skip to content
Snippets Groups Projects

GitLab CI template for Cypress

This project implements a generic GitLab CI template for running Cypress functional tests.

Usage

In order to include this template in your project, add the following to your gitlab-ci.yml:

include:
  - project: 'to-be-continuous/cypress'
    ref: '3.1.1'
    file: '/templates/gitlab-ci-cypress.yml'

# Pipeline steps
stages:
  - acceptance # required by Cypress template
  # TODO: add all other required stages

cypress job

This job starts Cypress (functional) tests.

It uses the following variable:

Name description default value
CYPRESS_IMAGE The Docker image used to run Cypress (use included images only). cypress/included:12.0.2
CYPRESS_PROJECT_DIR The Cypress project directory (containing cypress.config.js or cypress.config.ts) .
CYPRESS_EXTRA_ARGS Cypress extra run options (to select a different browser, configuration or spec files for e.g.) none
REVIEW_ENABLED Set to true to enable Cypress tests on review environments (dynamic environments instantiated on development branches) none (disabled)

In addition to a textual report in the console, this job produces the following reports, kept for one day:

Report Format Usage
$CYPRESS_PROJECT_DIR/reports/cypress-*.xunit.xml xUnit test report(s) GitLab integration

Cypress baseUrl auto evaluation

By default, the Cypress template tries to auto-evaluate the baseUrl setting (i.e. the variable pointing at server under test) by looking either for a $environment_url variable or for an environment_url.txt file.

Therefore if an upstream job in the pipeline deployed your code to a server and propagated the deployed server url, either through a dotenv variable $environment_url or through a basic environment_url.txt file, then the Cypress test will automatically be run on this server.

:warning: all our deployment templates implement this design. Therefore even purely dynamic environments (such as review environments) will automatically be propagated to your Cypress tests.

If you're not using a smart deployment job, you may still explicitly declare the CYPRESS_BASE_URL variable (but that will be unfortunately hardcoded to a single server).