History that outlives CI
Every run, trace, and HTML report kept and browsable long after the build agent deleted its artifacts — with pass-rate, duration, and stability trends computed across all of them.
CI throws away every report it makes. Piwi keeps them — then groups the failures by root cause, scores the flaky tests, and finds the locator you should have used. Self-hosted, MIT, zero telemetry.
Every run, trace, and HTML report kept and browsable long after the build agent deleted its artifacts — with pass-rate, duration, and stability trends computed across all of them.
An error fingerprint collapses forty red tests into the three root causes behind them, grouped across specs and across runs, so one cause is one thing to triage.
A composite flakiness score with a root-cause class (timing, network, assertion…) and the CI minutes each flake wastes — so you fix the expensive ones, not the annoying ones.
When a selector breaks, ranked replacements captured from the last passing run, with a recommended fix that matches your existing conventions.
The bundled Playwright trace viewer, screenshots, console, network calls, Web Vitals, and the failing call stack with real source — all served by your own instance.
One Docker container, SQLite or PostgreSQL, local or S3 storage, optional role-based auth. Zero telemetry — the only outbound calls are the ones you configure.
Playwright's HTML report is excellent, and it lasts exactly until the next build. So the questions that actually matter get hard to answer: Has this test always been flaky? Did my fix work? Which of these forty red tests are the same bug? What did we change the day the suite started failing?
Piwi keeps the runs, so you can answer them — and then does the things a permanent history makes possible. It is deliberately Playwright-only: that is what makes traces, step timing and locator healing first-class rather than lowest-common-denominator. If you need one place for JUnit, pytest and Cypress results too, or you only ever debug locally and never look back, Why Piwi? says so plainly.
Live streaming — a run updating in real time as tests complete. No polling, no waiting on CI to finish.

Dashboard overview — at-a-glance stats, each project's recent runs and pass rate, and live activity across all projects

Project detail — one bar per run over the complete history, filtered by environment

Test run detail — every test case with status, duration, location, and error messages

Failure clusters — tests sharing the same root cause are grouped by error fingerprint

Flaky tests — composite flakiness score with retry-pass and alternation detection

Performance — per-run total, average and P90 duration, above the slowest-tests ranking

Cluster triage — set status, write triage notes, and track resolution
Start from what you came here to do.
Also here: cross-project analytics, notifications to Slack, email or a webhook, timeline markers for annotating trends, backend log capture, offline export of an investigation, plain-English test steps compiled once and replayed with no model calls, and a browser extension that picks locators from the live page.