Cypress Parallel Save

Reduce up to 40% your Cypress suite execution time parallelizing the test run on the same machine.

Project README

npm version

cypress-parallel

Reduce up to 40% your Cypress suite execution time parallelizing the test run on the same machine.

cypress cypress-parallel
cy-serial-small cy-parallel_small

Run your Cypress tests in parallel (locally)

How it works

🔍 - Search for existing Cypress tests
📄 - Read (if exists) a weight file
⚖️ - Split spec files into different threads
⚙️ - For each thread it runs the Cypress command you've passed as argument
📈 - Wait for all threads to finish and collects the result in a single report

How to use

Install

npm i cypress-parallel -D

or

yarn add cypress-parallel -D

Add a new script

In your package.json add a new script:

"scripts" :{
  ...
  "cy:run": "cypress run", // It can be any cypress command with any argument
  "cy:parallel" : "cypress-parallel -s cy:run -t 2 -d '<your-cypress-specs-folder>' -a '\"<your-cypress-cmd-args>\"'"
  ...
}

With Arguments

Sample:

-a '\"--config baseUrl=http://localhost:3000\"'

Launch the new script

npm run cy:parallel

or

Run with npx (no package installation needed)

npx cy:parallel -s cy:run -t 2 -d '<your-cypress-specs-folder>' -a '"<your-cypress-cmd-args>"'

Passing Specs

cypress-parallel -s cy:run -t 2 -a '\"<your-cypress-cmd-args>\"' --spec path/to/spec1.spec.js path/to/spec2.spec.js

Scripts options

Option Alias Description Type
--help Show help
--version Show version number
--script -s Your npm Cypress command string
--args -a Your npm Cypress command arguments string
--threads -t Number of threads number
--specsDir -d Cypress specs directory string
--spec Cypress spec file paths string
--weightsJson -w Parallel weights json file string
--reporter -r Reporter to pass to Cypress. string
--reporterOptions -o Reporter options string
--reporterModulePath -n Specify the reporter module path string
--bail -b Exit on first failing thread string
--verbose -v Some additional logging string
--strictMode -m Add stricter checks after running the tests boolean

NB: If you use cypress-cucumber-preprocesor, please disable the strictMode to avoid possible errors:

"scripts" :{
  ...
  "cy:parallel" : "cypress-parallel -s cy:run -t 4 -m false"
  ...
}

NB: If your cypress-multi-reporters module is not found on the same level as your Cypress suite (e.g. in a mono-repo) then you can specify the module directory for Cypress to search within.

"scripts" :{
  ...
  "cy:parallel" : "cypress-parallel -s cy:run -t 4 -n .../../../node_modules/cypress-multi-reporters"
  ...
}

Env variables

CYPRESS_THREAD

You can get the current thread index by reading the CYPRESS_THREAD variable.

 const threadIndex = process.env.CYPRESS_THREAD;
 // return 1, 2, 3, 4, ...

Contributors

Looking for contributors.

License

This project is licensed under the MIT license. See LICENSE.

Open Source Agenda is not affiliated with "Cypress Parallel" Project. README Source: tnicola/cypress-parallel
Stars
549
Open Issues
57
Last Commit
1 month ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating