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

PanelSource
Pass rate trendtests.passed / tests.total across the last 30 runs
Top 10 flakiest testsTests whose verdict has changed in the last 30 runs without code changes
Slowest 10 testsMedian wall-clock from the JSON reporter
Route coverage matrixEvery route under src/pages/ × which suite touches it
Last failure logStack + 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:

  1. Reproduce locally with --repeat-each=10.
  2. If genuinely flaky, mark test.fixme with a // flake: <issue-link> note. Do not use .skip — fixme keeps the test discoverable.
  3. 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: