Test dashboard
Where to read pass-rate, flake, and coverage trends from the Playwright suite.
The dashboard at /internal/test-dashboard aggregates the last 30 runs of the Playwright suite. It’s regenerated:
- After every CI run on
main - After every successful nightly job
- On demand:
npm run test:dashboard
What it shows
| Panel | Source |
|---|---|
| Pass rate trend | tests.passed / tests.total across the last 30 runs |
| Top 10 flakiest tests | Tests whose verdict has changed in the last 30 runs without code changes |
| Slowest 10 tests | Median wall-clock from the JSON reporter |
| Route coverage matrix | Every route under src/pages/ × which suite touches it |
| Last failure log | Stack + screenshot of the most recent failure per spec |
Where data is stored
- Per-run JSON:
playwright-report/results.json - Rolling history:
.test-history/{YYYY-MM-DD}-{run-id}.json(gitignored) - Aggregated output:
docs/test-dashboard/index.html(committed)
The aggregator script is scripts/aggregate-test-results.mjs — it reads recent history, computes the metrics, and writes a static dashboard. No external service required.
Cleaning up flakes
When a test lands on the flake list:
- Reproduce locally with
--repeat-each=10. - If genuinely flaky, mark
test.fixmewith a// flake: <issue-link>note. Do not use.skip— fixme keeps the test discoverable. - File a Linear ticket against the owning team. Flakes auto-decay off the list after 7 days without recurrence.
We treat sustained pass rate <99% as a release blocker.
Last updated: