# Parallelism and Sharding — Playwright & Cypress

Source: https://www.skillbyai.com/en/e2e-testing/c-parallel

> Workers inside a machine, shards across machines.

## Splitting the work

Playwright runs test files in parallel **workers** on one machine (`workers` in config; `fullyParallel: true` also parallelises tests within a file). To spread a suite across machines, use **sharding**: `npx playwright test --shard=1/4` runs a quarter of the tests; a CI matrix runs each shard, and with the `blob` reporter the per-shard results can be combined with `npx playwright merge-reports`. Cypress runs spec files serially within one `cypress run`; parallelisation across machines is provided by **Cypress Cloud** (`cypress run --record --parallel`, a paid service beyond the free tier) or by community tools that split specs between CI jobs. Parallel runs only work if tests are isolated and do not share data.

## Sharding Playwright in a matrix

Each job runs one shard and uploads a blob report.

```yaml
jobs:
  e2e:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        shard: [1, 2, 3, 4]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npm ci
      - run: npx playwright install --with-deps
      - run: npx playwright test --shard=${{ matrix.shard }}/4 --reporter=blob
      - uses: actions/upload-artifact@v4
        if: ${{ !cancelled() }}
        with:
          name: blob-report-${{ matrix.shard }}
          path: blob-report
# a follow-up job downloads all blob-report-* artifacts and runs:
#   npx playwright merge-reports --reporter html ./all-blob-reports
```

## More checkout lanes

Workers open more tills in one shop; shards open more shops. Either way, each customer (test) must be able to pay without waiting for the person in front.

**Quiz:** What does `npx playwright test --shard=2/4` do?

- [x] Runs the second of four roughly equal portions of the suite
- [ ] Runs every test four times
- [ ] Uses two workers for four browsers
- [ ] Skips half of the tests permanently

*Answer:* Runs the second of four roughly equal portions of the suite. Combine shards with a CI matrix and merged reports.
