A permanent home for your Playwright test results.
CI reports vanish on every build. Piwi keeps them — and turns them into live dashboards,
failure clusters, AI diagnosis, and cross-run analytics. Self-hosted, no SaaS.
▶ Click through to the live demo — sample data, no install, runs entirely in your browser — or watch the 30-second clip.
Native Playwright HTML reports are great for local debugging — but they're ephemeral. Once the next CI run completes, the old report is gone. Piwi keeps every run and makes them connected, searchable, and actionable:
- 🗄️ Permanent history — every run, trace, and report stored and browsable across time.
- ⚡ Live streaming — watch runs in real time as CI executes; no polling, no waiting.
- 🔗 Failure clustering — failures sharing a root cause are auto-grouped by error fingerprint.
- 📈 Performance & flaky tracking — P90 duration trends, slowest tests, composite flakiness scores.
- 🩹 Locator healing — when a locator breaks, ranked replacement locators captured from prior passing runs, with a recommended fix.
- 🔌 Built for automation — drop-in reporter, REST API, OpenAPI docs, and an MCP server for agent integrations.
- ☁️ Zero lock-in — self-hosted with Docker; your data in SQLite/PostgreSQL and local/S3 storage.
- 🔒 Private by design — zero telemetry, no phone-home. The only outbound calls are the ones you configure (your AI provider, SMTP, S3).
- 🤖 AI-assisted diagnosis (optional) — LLM analysis of a failure cluster, grounded in your actual SCM diff, to speed up triage.
👉 Explore the live demo — no install required.
1. Start the dashboard
# Linux / macOS
docker run -p 3000:3000 -v $(pwd)/.data:/app/.data phenx/piwitests-server:latest# Windows (PowerShell)
docker run -p 3000:3000 -v ${PWD}/.data:/app/.data phenx/piwitests-server:latestVisit http://localhost:3000. A docker-compose.yml is also included.
Production tip: set
PIWI_SECRET_KEY(any long random string) so credentials you store in the dashboard — AI API keys, SCM tokens — are encrypted at rest. Generate one withnode -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))". See the deployment guide.
2. Add the reporter to your test project
npm install --save-dev @piwitests/reporter// playwright.config.ts
import { defineConfig } from '@playwright/test'
export default defineConfig({
reporter: [
['list'],
['@piwitests/reporter', {
serverUrl: 'http://localhost:3000',
projectName: 'my-project',
}],
],
use: { trace: 'retain-on-failure' },
})3. Run your tests — npx playwright test. Results appear automatically; the project is created on first submission.
➡️ Full setup, configuration, and CI integration in the Getting started guide.
| Piwi | Playwright HTML report | Allure Report | ReportPortal | Currents | |
|---|---|---|---|---|---|
| Run history across builds | ✅ | ❌ per-run, ephemeral | ➖ manual history files | ✅ | ✅ |
| Self-hosted | ✅ single container | — | ➖ static files | ✅ multi-service stack | ❌ SaaS |
| Live run streaming | ✅ | ❌ | ❌ | ➖ | ✅ |
| Playwright traces, first-class | ✅ | ✅ | ➖ | ➖ | ✅ |
| Flaky scoring & failure clustering | ✅ | ❌ | ❌ | ✅ ML triage | ✅ |
| AI failure diagnosis on your git diff | ✅ optional | ❌ | ❌ | ➖ | ➖ |
| Locator healing suggestions | ✅ | ❌ | ❌ | ❌ | ❌ |
| Price | Free, MIT | Free | Free | Free (self-host) | Paid |
Every tool in that table is good at what it targets — the honest version with trade-offs is in Comparison & FAQ.
| Topic | Link |
|---|---|
| Getting started | piwitests.github.io/getting-started |
| Comparison & FAQ | piwitests.github.io/comparison |
| Playwright reporter | piwitests.github.io/reporter |
| UI overview | piwitests.github.io/ui-overview |
| AI diagnosis & clustering | piwitests.github.io/ai-diagnosis |
| Flaky tests & analytics | piwitests.github.io/flaky-tests |
| Notifications & alerts | piwitests.github.io/notifications |
| Configuration reference | piwitests.github.io/configuration |
| API reference (interactive) | piwitests.github.io/demo/docs |
| MCP server | piwitests.github.io/mcp |
| Authentication | piwitests.github.io/authentication |
| Storage configuration | piwitests.github.io/storage |
| Deployment | piwitests.github.io/deployment |
The running dashboard also serves interactive API docs (Scalar) at /docs.
- 💬 GitHub Discussions — questions, ideas, show & tell.
- 🐛 Issues — bug reports and feature requests.
- 🗺️ Roadmap — what's shipped, what's next.
- 🔐 Security policy — how to report a vulnerability.
Contributions are welcome — see CONTRIBUTING.md for dev setup, tests, and commit conventions, and AGENTS.md for architecture and the full development guide.
cd application && npm install && npm run app:dev # http://localhost:3000MIT
Disclaimer: Piwi Dashboard is not affiliated with, endorsed by, or connected to Microsoft Corporation in any way. "Piwi" is a playful, unrelated name with no connection to any existing product or brand. Playwright is a trademark of Microsoft Corporation.





