Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate test report. Use when user says "test report", "results summary", "test status", "show results", "test dashboard", or "how did tests go".
.claude/skills/alirezarezvani-report/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -37% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -2% | 0% |
Generate test reports that plug into the user's existing workflow. Zero new tools.
Check if recent test results exist:
bashls -la test-results/ playwright-report/ 2>/dev/null
If no recent results, run tests:
bashnpx playwright test --reporter=json,html,list 2>&1 | tee test-output.log
Read the JSON report:
bashnpx playwright test --reporter=json 2> /dev/null
Extract:
Check what's configured and route automatically:
| Check | If found | Action | |---|---|---| | TESTRAIL_URL env var | TestRail configured | Push results via /pw:testrail push | | SLACK_WEBHOOK_URL env var | Slack configured | Post summary to Slack | | .github/workflows/ | GitHub Actions | Results go to PR comment via artifacts | | playwright-report/ | HTML reporter | Open or serve the report | | None of the above | Default | Generate markdown report |
markdown# Test Results — {{date}} ## Summary - ✅ Passed: {{passed}} - ❌ Failed: {{failed}} - ⏭️ Skipped: {{skipped}} - 🔄 Flaky: {{flaky}} - ⏱️ Duration: {{duration}} ## Failed Tests | Test | Error | File | |---|---|---| | {{name}} | {{error}} | {{file}}:{{line}} | ## Flaky Tests | Test | Retries | File | |---|---|---| | {{name}} | {{retries}} | {{file}} | ## By Project | Browser | Passed | Failed | Duration | |---|---|---|---| | Chromium | X | Y | Zs | | Firefox | X | Y | Zs | | WebKit | X | Y | Zs |
Save to test-reports/{{date}}-report.md.
bashcurl -X POST "$SLACK_WEBHOOK_URL" \ -H 'Content-Type: application/json' \ -d '{ "text": "🧪 Test Results: ✅ {{passed}} | ❌ {{failed}} | ⏱️ {{duration}}\n{{failed_details}}" }'
Invoke /pw:testrail push with the JSON results.
bashnpx playwright show-report
Or if in CI:
bashecho "HTML report available at: playwright-report/index.html"
If previous reports exist in test-reports/:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 7,773 | 3,831 | -51% | 1 | 1 | 0% | 1,452 | 1,507 | +4% | 0 | 0 | — |
case-01 | fail→fail | 4,852 | 2,801 | -42% | 1 | 1 | 0% | 339 | 1,104 | +226% | 0 | 0 | — |
case-02 | fail→fail | 4,187 | 5,161 | +23% | 1 | 1 | 0% | 275 | 1,172 | +326% | 0 | 0 | — |
case-03 | fail→fail | 15,925 | 2,193 | -86% | 1 | 1 | 0% | 3,444 | 1,008 | -71% | 0 | 0 | — |
case-04 | fail→pass | 11,957 | 3,688 | -69% | 1 | 1 | 0% | 2,163 | 1,372 | -37% | 0 | 0 | — |
case-06 | fail→pass | 13,801 | 5,405 | -61% | 1 | 1 | 0% | 2,314 | 1,882 | -19% | 0 | 0 | — |
case-07 | pass→pass | 13,291 | 8,634 | -35% | 1 | 1 | 0% | 2,629 | 2,589 | -2% | 0 | 0 | — |
case-08 | fail→fail | 10,372 | 5,617 | -46% | 1 | 1 | 0% | 1,916 | 1,861 | -3% | 0 | 0 | — |
case-09 | fail→fail | 5,372 | 1,826 | -66% | 1 | 1 | 0% | 771 | 1,094 | +42% | 0 | 0 | — |
case-10 | fail→fail | 9,510 | 1,422 | -85% | 1 | 1 | 0% | 1,801 | 994 | -45% | 0 | 0 | — |
case-11 | pass→pass | 9,775 | 2,276 | -77% | 1 | 1 | 0% | 1,863 | 1,196 | -36% | 0 | 0 | — |
case-12 | pass→pass | 12,985 | 5,440 | -58% | 1 | 1 | 0% | 2,416 | 1,796 | -26% | 0 | 0 | — |
case-13 | pass→pass | 11,990 | 3,816 | -68% | 1 | 1 | 0% | 2,188 | 1,498 | -32% | 0 | 0 | — |
case-14 | pass→pass | 13,558 | 9,885 | -27% | 1 | 1 | 0% | 2,507 | 2,834 | +13% | 0 | 0 | — |
case-15 | fail→pass | 9,026 | 2,157 | -76% | 1 | 1 | 0% | 1,550 | 1,117 | -28% | 0 | 0 | — |
case-16 | fail→pass | 12,534 | 8,193 | -35% | 1 | 1 | 0% | 2,145 | 2,236 | +4% | 0 | 0 | — |
case-17 | fail→pass | 9,819 | 5,300 | -46% | 1 | 1 | 0% | 1,704 | 1,677 | -2% | 0 | 0 | — |
case-18 | pass→pass | 9,747 | 3,438 | -65% | 1 | 1 | 0% | 1,648 | 1,352 | -18% | 0 | 0 | — |
case-19 | fail→pass | 7,137 | 1,376 | -81% | 1 | 1 | 0% | 1,239 | 989 | -20% | 0 | 0 | — |
case-20 | pass→pass | 9,215 | 5,415 | -41% | 1 | 1 | 0% | 1,960 | 1,925 | -2% | 0 | 0 | — |
case-21 | pass→pass | 6,347 | 5,657 | -11% | 1 | 1 | 0% | 1,291 | 1,918 | +49% | 0 | 0 | — |
case-22 | pass→pass | 8,892 | 7,284 | -18% | 1 | 1 | 0% | 1,758 | 2,239 | +27% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.