A permanent, self-hosted home for your Playwright test results โ clustering & AI diagnosis
7.0K
Your Playwright results, kept and explained. 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.
๐ Full documentationโ ยท ๐ฎ Live demoโ ยท ๐ฌ GitHubโ
Disclaimer: Piwi Dashboard is not affiliated with, endorsed by, or connected to Microsoft Corporation.
# Linux / macOS
mkdir -p .data && chown -R 1001:1001 .data # the container runs as non-root UID 1001
docker run -d --name piwi-dashboard -p 3000:3000 -v $(pwd)/.data:/app/.data phenx/piwitests-server:latest
# Windows (PowerShell)
docker run -d --name piwi-dashboard -p 3000:3000 -v ${PWD}/.data:/app/.data phenx/piwitests-server:latest
Open http://localhost:3000. The SQLite database and file storage are created automatically inside .data/.
Linux hosts: without the
chown, Docker auto-creates.dataowned byrootand the container (non-root UID 1001) can't write to it. Docker Desktop on Windows and macOS handles this for you.
Then point the Playwright reporterโ at it โ one npm install and four lines in playwright.config.ts, covered in the getting started guideโ .
| Property | Value |
|---|---|
| Base image | node:24-alpine |
| Platforms | linux/amd64, linux/arm64 |
| Image size | ~400 MB |
| Run as | Non-root (nodejs, UID/GID 1001) |
| Data | /app/.data โ mount a volume here |
/app/.data holds piwi.db (the SQLite database, skipped when PIWI_DATABASE_URL is set) and storage/ (HTML reports and trace files, skipped when S3 is configured). Mount it, or the container loses everything on restart.
| Tag | Description |
|---|---|
latest | Latest stable release |
MAJOR.MINOR.PATCH | One exact release โ pin this in production |
MAJOR.MINOR | Latest patch of that minor |
MAJOR | Latest release of that major |
The same multi-arch image is mirrored to the GitHub Container Registry as ghcr.io/piwitests/platform, which additionally carries an edge tag built from main (no release testing โ not for production).
Read Upgradingโ before bumping a tag: migrations run automatically on startup and are forward-only, so rolling back means restoring a backup.
Piwi runs with zero configuration โ set variables only to change a default. The full list, with defaults and which ones the Settings UI can override, is the configuration referenceโ ; the configuration generatorโ builds a ready-to-paste .env, Compose, Kubernetes or systemd block in your browser.
The three worth knowing before you expose the container to a network:
| Variable | Why |
|---|---|
PIWI_AUTH_ENABLED | Authentication is off by default. Set to true for anything beyond localhost โ see Authenticationโ . |
PIWI_AUTH_SECRET | Signs session cookies. Required when auth is enabled. |
PIWI_SECRET_KEY | Encrypts secrets stored in the database (AI keys, SCM tokens). Recommended in every deployment. |
Generate a value for the latter two with node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))".
Beyond those: PIWI_DATABASE_URL switches to PostgreSQL, PIWI_STORAGE_TYPE=s3 plus the PIWI_S3_* variables switch artifact storage to any S3-compatible service, and PIWI_RETENTION_DAYS turns on nightly pruning of old runs.
services:
piwi-dashboard:
image: phenx/piwitests-server:latest
ports:
- "3000:3000"
volumes:
- ./.data:/app/.data
environment:
PIWI_SECRET_KEY: "replace-with-a-32-byte-hex-string"
PIWI_AUTH_ENABLED: "true"
PIWI_AUTH_SECRET: "replace-with-a-different-32-byte-hex-string"
restart: unless-stopped
PostgreSQL, S3 and MinIO variants are in the deployment guideโ , alongside Kubernetes manifests, reverse-proxy configuration and backups.
Volume permission error (Linux hosts only) โ mkdir -p .data && chown -R 1001:1001 .data, then recreate the container.
Container exits immediately โ docker logs piwi-dashboard.
Data not persisted after restart โ the -v volume mount is missing.
SQLite locked / concurrent write errors โ SQLite allows one writer at a time; set PIWI_DATABASE_URL to switch to PostgreSQL.
More, including port conflicts and reverse-proxy issues: deployment troubleshootingโ .
MIT โ source code on GitHubโ
Content type
Image
Digest
sha256:b91a8f4e6โฆ
Size
89.6 MB
Last updated
about 9 hours ago
docker pull phenx/piwitests-server