cypress parallel runs duplicate tests: machineId conflict fix
Shows how to fix Cypress parallel runs where every machine executes the full suite instead of a slice. Covers unique ci-build-id values, run groups, and the record key. Use when the dashboard shows duplicate runs or machineId conflicts. Not for non-recorded parallel setups, for spec-splitting without the dashboard, or for single-machine runs.
TL;DR
Cypress Cloud groups parallel machines by build id. Give every CI job a unique --ci-build-id so machines join one run and split the specs. A missing or reused build id is why each machine runs everything.
Problem
You run Cypress with --record and --parallel on several machines, but each machine runs the entire suite instead of its share, and the dashboard reports machineId conflicts or duplicate runs.
Steps
- Give every CI run a unique build id so parallel machines join the same run instead of starting their own:
npx cypress run --record --parallel --ci-build-id "$BUILD_ID"Expected: the dashboard shows one run with all machines attached.
- Never reuse a build id across different commits or branches. Expected: each dashboard run maps to exactly one CI job.
- Confirm the record key is set for the job through the CYPRESSRECORDKEY environment variable holding your record key. Expected: runs record instead of erroring on auth.
- Use --group when one CI job runs several parallel batches, for example separate e2e and component groups. Expected: each group balances its own machines.
- Check the dashboard run page: machines should list distinct machineIds and complementary spec lists. Expected: no two machines claim the same specs.
- Re-run the pipeline. Expected: the suite splits across machines with no duplicates.
When to use
- Every parallel machine runs the full suite
- The dashboard shows machineId conflicts or duplicate run entries
- Parallelism recently stopped splitting work after a CI config change
When not to use
- You parallelize without --record (use a third-party splitter or matrix strategy instead)
- A single machine runs everything (parallel flags do nothing there)
- Specs fail when run in parallel but pass serially (a test isolation problem)
Tool compatibility
- Cypress 12 through 14 with Cypress Cloud recording
- --record, --parallel, --group, and --ci-build-id flags
- GitHub Actions, CircleCI, Jenkins, and other CI providers
Variant phrasings
Cypress parallel machines each run all specs
The machines never joined the same run. A shared, unique --ci-build-id is the fix.
Cypress Cloud shows duplicate runs for one commit
Two CI jobs used the same build id, or a retried job reused the old one. Make the id unique per job execution.
Why it happens
Cypress Cloud groups parallel machines by build id. If the id is missing, Cypress generates one per machine, and if it is reused, separate jobs merge into one run. Either way the load balancer cannot split specs, so every machine takes everything.
Edge cases
- Still duplicates with a unique id: check that all machines use the same --group name and the same record key.
- Retried jobs double up: generate the build id from the job execution, not just the commit SHA.
- Some machines idle while others work: spec durations are uneven. The balancer improves as Cypress Cloud learns timings over runs.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_cUnRtw3IU9hoo3TYYoAIxQ
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.