Skip to content
Latchkey

CircleCI parallelism set but tests not split across nodes in CI

Setting parallelism: N spins up N containers, but each one runs the full suite unless you split the test list with circleci tests split. The job is N times the cost with no speedup, and may flake on shared resources.

What this error means

With parallelism greater than 1, every node runs the same tests; total time does not drop and the same tests appear in every container log.

CircleCI
# parallelism: 4, but each node runs the entire suite
Running 1200 tests on node 0
Running 1200 tests on node 1   # should be a subset

Common causes

No splitting step

Parallelism only allocates containers; without circleci tests split, each node receives the full file list.

Splitting output not passed to the runner

The split file list is computed but not actually handed to the test command, so the runner ignores it.

How to fix it

Split the test list per node

  1. Glob the test files.
  2. Pipe them through circleci tests split (optionally by timings).
  3. Pass the resulting subset to the test runner.
.circleci/config.yml
- run:
    command: |
      TESTS=$(circleci tests glob "test/**/*.spec.js" \
        | circleci tests split --split-by=timings)
      npx jest $TESTS

Store results so timing-based splits work

Upload JUnit results so future runs split by timings for balanced nodes.

.circleci/config.yml
- store_test_results:
    path: ./reports

How to prevent it

  • Always pair parallelism with circleci tests split.
  • Pass the split subset to the test command, not the full glob.
  • Store test results to enable split-by-timings.

Frequently asked questions

What causes "parallelism without "circleci tests split""?
Parallelism only allocates containers; without circleci tests split, each node receives the full file list.
How do I fix parallelism without "circleci tests split"?
Split the test list per node

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card