Teach agents to shard and parallelize Playwright, Jest, and pytest suites in CI to reduce wall-clock time while merging reports reliably.
npx skills add https://github.com/PramodDutta/qaskills --skill CI Test Sharding Parallelization
You are a test infrastructure engineer who reduces CI wall-clock time by sharding and parallelizing test suites while preserving deterministic results, useful reports, and clear failure ownership.
Create scripts for each framework.
npm install --save-dev @playwright/test jest jest-junit
python -m venv .venv
. .venv/bin/activate
pip install pytest pytest-xdist pytest-json-report
mkdir -p test-results merged-reports
Use consistent environment variables.
export SHARD_INDEX=1
export SHARD_TOTAL=4
export CI_NODE_INDEX=1
export CI_NODE_TOTAL=4
ci/
sharding/
playwright.yml
jest.yml
pytest.yml
scripts/
run-playwright-shard.sh
run-jest-shard.ts
run-pytest-shard.sh
merge-reports.sh
test-results/
merged-reports/
Use the built-in Playwright shard flag.
#!/usr/bin/env bash
set -euo pipefail
: "${SHARD_INDEX:?SHARD_INDEX is required}"
: "${SHARD_TOTAL:?SHARD_TOTAL is required}"
npx playwright test \
--shard="${SHARD_INDEX}/${SHARD_TOTAL}" \
--reporter=blob \
--output="test-results/playwright-${SHARD_INDEX}"
Merge Playwright blob reports after all shards finish.
#!/usr/bin/env bash
set -euo pipefail
mkdir -p merged-reports/playwright
npx playwright merge-reports --reporter html ./blob-report
Use Jest shard support when available.
// scripts/run-jest-shard.ts
import { spawnSync } from 'node:child_process';
const shardIndex = process.env.SHARD_INDEX || '1';
const shardTotal = process.env.SHARD_TOTAL || '1';
const result = spawnSync(
'npx',
[
'jest',
`--shard=${shardIndex}/${shardTotal}`,
'--runInBand',
'--ci',
'--reporters=default',
'--reporters=jest-junit',
],
{ stdio: 'inherit' },
);
process.exit(result.status ?? 1);
Use xdist for process-level parallelism and CI matrix for sharding.
#!/usr/bin/env bash
set -euo pipefail
PYTEST_WORKERS="${PYTEST_WORKERS:-auto}"
REPORT_FILE="test-results/pytest-${SHARD_INDEX:-1}.json"
pytest tests \
-n "$PYTEST_WORKERS" \
--json-report \
--json-report-file="$REPORT_FILE"
Use matrix jobs for Playwright shards.
name: sharded-tests
on:
pull_request:
jobs:
playwright:
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: bash scripts/run-playwright-shard.sh
env:
SHARD_INDEX: ${{ matrix.shard }}
SHARD_TOTAL: 4
- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-blob-${{ matrix.shard }}
path: blob-report
Measure before and after.
10. Revisit shard count monthly.
| Framework | Sharding Method | Report Merge |
|---|---|---|
| Playwright | --shard=1/4 | Blob report merge |
| Jest | --shard=1/4 | JUnit aggregation |
| pytest | Matrix plus xdist | JSON or JUnit merge |
| Cypress | Dashboard or spec split | Dashboard report |
| Large monorepo | Package filters | Per-package reports |
| Slow E2E | Historical timing split | Custom manifest |
10. Mixing parallel workers with unsafe shared database state.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Use when implementing any feature or bugfix, before writing implementation code
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
Expert guidance for systematic backtesting of trading strategies. Use when developing, testing, stress-testing, or validating quantitative trading strategies. Covers "beating ideas to death" methodology, parameter robustness testing, slippage modeling, bias prevention, and interpreting backtest results. Applicable when user asks about backtesting, strategy validation, robustness testing, avoiding overfitting, or systematic trading development.
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use for submitting experiments via API, tracking experiment status, downloading results, optimizing protein sequences for better expression using computational tools (NetSolP, SoluProt, SolubleMPNN, ESM), or managing protein design workflows with wet-lab validation.
This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.
Take pramoddutta/ci test sharding parallelization from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip, npm, npx.
Without those the skill loads but fails at the first command.