A powerful tool to run Cypress tests in parallel, optimizing test execution time.
npm install cy-parallelA powerful tool to run Cypress tests in parallel, optimizing test execution time.
- Usage
- Environment Variables
- Modes
- Reporting
- Examples
- Basic Usage
```
DIR="cypress/e2e" COMMAND="npx run cypress" yarn cy-parallel
- DIR: Directory of tests (default: cypress/e2e).COMMAND
- : Cypress command (default: npx cypress run).WORKERS
- : Number of workers (default: CPU cores).POLL
- : Set to true for Polling Mode; otherwise, Weighted Bucketing is used.WEIGHT_PER_TEST
- : Weight assigned to each test (default: 1). (Only for Weighted Bucketing)BASE_WEIGHT
- : Base weight value (default: 1). (Only for Weighted Bucketing)VERBOSE
- : Enable logging for cy-parallel (default: true).CYPRESS_LOG
- : Enable Cypress-specific logging (default: true).
Feel free to experiment and measure which option is faster in your case. You can use time to measure run durations.
- Weighted Bucketing (default) (POLL=false): Distributes tests evenly on workers.(POLL=true)
- Polling : Start workers, worker get tests from a test file queue.
- Merging report can be done with mochawesome
- Install dependencies
yarn add -D mochawesome mochawesome-merge mochawesome-report-generator
Example:
- Setup mochawesome in cypress config
`
import { defineConfig } from 'cypress';
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
// implement node event listeners here
},
reporter: 'mochawesome',
video: true,
reporterOptions: {
reportDir: 'cypress/reports',
overwrite: false,
json: true,
reportFilename: '[name]-[datetime]',
},
},
});
`
- Merge reports
mochawesome-merge cypress/reports/*.json > cypress/reports/merged-report.json
- generate html report
npx mochawesome-report-generator cypress/reports/merged-report.json -o cypress/reports/merged-html-report
```
CYPRESS_LOG=false WORKERS=2 POLL=true yarn cy-parallel
- Don't log Cypress logs to stdout
- Only 2 parallel processes (Workers)
- Use POLL mode. 2 workers pulling tests from a queue