cyborgtests/playwright-reports-server/playwright-reports
Claude Code and agent skill by cyborgtests/playwright-reports-server
- community
Checking that the SKILL.md file is still in the repository.
Pull Playwright Reports Server context - failing tests, flakiness, run history, failure clusters, and LLM-written analyses. Trigger on mentions of a failing test, flaky run, `.spec.ts` file under suspicion, a CI reportId, "what failed in the last run", "why is X failing", or aggregate questions like "what's flaky this week" / "compare last two reports".
Install
npx vskill@latest install cyborgtests/playwright-reports-server/playwright-reportsSKILL.md
Playwright Reports
Access to the Playwright Reports Server. Every command returns JSON; error messages, LLM analyses, and cluster members pass through verbatim.
Use this skill when the user asks why a test is failing, what's flaky, what changed between runs, or any aggregate question over a time window.
Skip this skill for writing new tests, modifying playwright.config.ts, running tests locally, or any task that doesn't touch historical run data.
The CLI is read-only. Write commands (analysis-submit, summary-submit, feedback) live in authoring.md and are loaded only when the user explicitly asks to author or dissent.
Quick reference
| Goal | Command | Returns | |||
|---|---|---|---|---|---|
| Triage a known test | pwrs-cli test brief <testId> | signals + latest failure + LLM analysis + cluster | |||
| Triage a whole report | pwrs-cli report brief <reportId> | stats + cluster summary + sample failures | |||
| Latest report (sugar) | pwrs-cli report latest [--project p] | same as report brief on the most recent | |||
| Find by test name | pwrs-cli test find "fragment" | matches[].testId | |||
| Find by file path | pwrs-cli test from-file <path>[:line] | matches[].testId, line-ranked | |||
| What's flaky now | pwrs-cli test search --tier flaky | filtered test roster | |||
| What ran in a window | pwrs-cli report list --from --to | paginated reports | |||
| Active failure clusters | pwrs-cli cluster list | top clusters by impact | |||
| All clusters incl. resolved | pwrs-cli cluster list --include-resolved | full list with lifecycle state | |||
| Drill into a cluster | pwrs-cli cluster brief <id> | full member roster | |||
| Active regressions (broke recently) | `pwrs-cli regression list [--active] [--sort impact\ | recent\ | oldest]` | tests in green→red state with commit attribution | |
| Diff two reports | pwrs-cli report compare A B | newlyFailed / fixed / stillFailing / … | |||
| Per-run history of a test | pwrs-cli test history <testId> | runs + signatureGroups | |||
| Verdict on a report | pwrs-cli report summary <id> | persisted LLM summary + verdict | |||
| Project health digest | pwrs-cli project summary | persisted LLM project summary + verdict | |||
| Numeric stats | pwrs-cli stats --from --to | pass rate, trends, slowest | |||
| Raw failure evidence | pwrs-cli test failure-context <id> --report-id <r> | typed evidence envelope | |||
| Inspect the prompt we sent | pwrs-cli test analysis-prompt <id> --report-id <r> | verbatim prompt + response | |||
| Full LLM markdown | pwrs-cli test analysis <testId> | unmodified analysis | |||
#479 → UUID | pwrs-cli report resolve 479 | matching reportIds | |||
| Discover projects/tags/categories | pwrs-cli project list / tag list / category list | string arrays | |||
| Attachment metadata | pwrs-cli attachment <url> | URL + content-type + bytes (HEAD) | |||
| Sanity check | pwrs-cli ping | server + token + latency |
All list-returning commands carry total + hasMore. Defaults: report list/test search/report compare = 20, cluster list = 10, test history = 20 (max 50), regression list = 25 (max 200). For exact flags run pwrs-cli help <group> or pwrs-cli <command> --help.
Project identification
Most commands accept --project to scope data. If the user's query doesn't name a project, identify the project first - don't guess or omit it silently.
project list returns all known project names - use exact string values from this list in --project. Projects are named by the reporter config, not by you.
When to pass `--project`:
- User names a project ("how's staging?") → use the matching string from
project list(e.g.staging:main). - User doesn't name a project and only one project exists → use it implicitly, don't ask.
- User doesn't name a project and multiple projects exist → ask which project they mean, or if the question is aggregate ("overall health"), omit
--projectto get cross-project results. Commands without--projectreturn data across all projects. - `PWRS_PROJECT` env var is set → it serves as the default; explicit
--projectstill wins. You can check if it's set viapwrs-cli config get.
Cross-project (`--project` omitted or `all`):
test find/test searchreturn results from all projects - theprojectfield on each row tells you which project it belongs to.project summarywithout--projectproduces a cross-project digest. Per-project summaries are more specific; prefer them when the user asks about one area.report list/stats/cluster listaggregate across projects when--projectis omitted.
Don't assume project names. Project names vary by server (e.g. chromium, staging:main, head:main, nightly). Always start from project list output.
Worked examples
User: "Why is the checkout test failing?"
If cluster is non-null, fix at cluster.anchor, not the test. If llmAnalysis: null, fall back to pwrs-cli test failure-context <testId> --report-id <reportId> and reason from the evidence envelope yourself.
User: "How did staging do yesterday?"
Read summary.llmSummaryStructured.verdict first - widespread/systemic means the run is broken at a layer above any single test (infra, fixtures, deploy); don't drill into individual tests in that case.
Workflows
Discovery (no ID yet)
Drill-down (you have an ID)
--project is optional for test brief / test history / test analysis* - the server resolves the canonical (fileId, project) lane from the test's most recent run. Pass it only when auto-resolution picks the wrong lane (e.g. an obsolete project sharing a testId).
From a file path or stack frame
failure-context evidence envelope
test failure-context returns { markdown, segments, evidence, attachments, heuristicCategory, meta }. The evidence envelope is the typed shape the LLM queue uses:
errorMessage, stackTrace, testSourceFrame (codeframe), stepTree, pageSnapshot (ARIA), stdout, stderr, testMeta, gitCommit, ciBuild, gitDiff, environment, consoleEvents, networkEvents, actionLog.
Use this when you want to reason from raw signals (faster + cheaper than the LLM-mediated path) or when no analysis exists yet.
Interpreting signals
Decision rules - apply top-to-bottom. Field shapes live in the workflow section above.
- `feedback` present → trust the team's note, override everything else.
- `signals.quarantined: true` → skip; the team already marked it broken.
- Report-level verdict first. Before assuming it's your test, read
report summary <reportId>→summary.llmSummaryStructured.verdict.widespread/systemicmeans fix the run (infra, fixtures, deploy), not the test. For multi-day patterns, escalate toproject summary→summary.structured.verdict. - `regression` present → a tracked green→red transition.
regression.regressedAtCommit+regression.lastGreenCommitdefine the suspect range; frame the fix around what landed there, not chronic flake. Oncluster brief,regressionContext.sharedRegressionCommit(when set) means ≥80% of the cluster regressed at one commit. - `cluster` present → fix at
cluster.anchor, not the test. Every member likely resolves together. - `signals.flakyTier` →
criticalurgent,flakyinvestigate,stableignore. - `signals.signatureOccurrenceCount > 1` with a stable `signature` → recurring failure. Counts prior runs of the same
latestFailure.signature, not total. Distinct fromregression: a signature can recur without a green→red transition. - `signals.signatureFirstSeen` → likely correlate with deploys / PRs.
- `llmAnalysis.rootCause` present → start from this hypothesis. Use
test analysisfor the unmodified markdown,test analysis-promptto inspect what the model saw. - `llmAnalysis: null` with a failing run → analysis hasn't been generated. Pull
test failure-contextand reason fromevidenceyourself rather than waiting.
Cluster anchors
cluster.anchor is the deterministic fix target, discriminated by anchor.kind:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingpackages/skill/skills/playwright-reports/SKILL.md
Popularity
- Repository stars
- 207
- Repository forks
- 20
- 7-day trend score
- 27
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/cyborgtests/playwright-reports-server/playwright-reports)