Documentation
The stuff that didn't fit in the main README without turning it into a novel. Jump straight to the page that matches whatever's ruining your day.
Ops & infrastructure
- Configuration: every env var used for configuration.
- Authentication: login, roles, users, invites, API keys, SSO.
- Storage:
fs,s3,azure. Litestream replication. - Deployment: Docker basics.
- Notifications: ship report outcomes and summaries to Slack or any webhook. Event rules on upload, schedule rules on cron, delivery log.
- UI white-label: title, logo, favicon, header links. Make it look like your team's tool rather than someone else's.
Getting reports in
- Uploading reports: every upload path. The reporter plugin, sharded runs with auto-merge, HTML upload via CLI, GitHub Sync, manual report generation, and the direct-to-S3 presigned uploads.
- Data migration: one-time import of an existing instance's reports and results, served in place from your storage backend.
- GitHub Sync: scrape Playwright artifacts out of GitHub Actions on a cron so you don't have to touch any workflow files or just download the latest reports to your local instance.
Day-to-day features
- Overview dashboard: a configurable home page - per-project letter grades and OK/NOT OK verdicts rolled into one signal, pinned to
/. - Analytics dashboard: trends, slow tests, failure clustering.
- Regression tracking: telling a genuine break (was green, now broken) from a flake - opened, tracked with its breaking/last-green commits, resolved on recovery.
- Test management & quarantine: how flakiness is scored, when auto-quarantine kicks in, and how the reporter actually skips quarantined tests at runtime (spoiler: a file on disk, no magic, unfortunately).
- Report export (PDF): one self-contained PDF per report, generated server-side for audits and review attachments.
LLM integration
- Analysis: how failure analysis is done and why - providers, the model registry, screenshots, the background queue.
- Routing: multi-model strategies (fusion, council, cascade, refine) per task - what each costs, when it helps, and how to experiment.
- Selection: how to choose a model - general recommendations for local (LM Studio / oMLX / Ollama) and remote (OpenRouter).
- Code assistant: hand your coding partner (
pwrs-cli+ Claude Code skill) access to the failure data so it can stop guessing what broke and pull real run history instead of poking around withgh, grep, and a web browser.
Where things live in this repo
apps/backend/: Fastify API server (port 3001)apps/frontend/: React SPA (Vite, port 3000 in dev)packages/shared/:@playwright-reports/sharedtypes and constantspackages/reporter/:@cyborgtests/reporter, the reporter pluginpackages/cli/:@cyborgtests/pwrs-cli, the agent CLIpackages/skill/: Claude Code plugin that wraps the CLI