@athenaflow/plugin-e2e-test-builder 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +20 -0
- package/.codex-plugin/plugin.json +15 -0
- package/dist/2.0.8/.agents/plugins/marketplace.json +14 -0
- package/dist/2.0.8/claude/plugin/.claude-plugin/plugin.json +20 -0
- package/dist/2.0.8/claude/plugin/package.json +9 -0
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/SKILL.md +217 -0
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/agents/claude.yaml +1 -0
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/agents/openai.yaml +10 -0
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/authentication.md +8 -0
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/error-recovery.md +43 -0
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/scaffolding.md +12 -0
- package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/tracker-template.md +53 -0
- package/dist/2.0.8/claude/plugin/skills/analyze-test-codebase/SKILL.md +142 -0
- package/dist/2.0.8/claude/plugin/skills/analyze-test-codebase/agents/claude.yaml +3 -0
- package/dist/2.0.8/claude/plugin/skills/analyze-test-codebase/agents/openai.yaml +4 -0
- package/dist/2.0.8/claude/plugin/skills/fix-flaky-tests/SKILL.md +160 -0
- package/dist/2.0.8/claude/plugin/skills/fix-flaky-tests/agents/claude.yaml +3 -0
- package/dist/2.0.8/claude/plugin/skills/fix-flaky-tests/agents/openai.yaml +10 -0
- package/dist/2.0.8/claude/plugin/skills/fix-flaky-tests/references/fix-patterns.md +91 -0
- package/dist/2.0.8/claude/plugin/skills/generate-test-cases/SKILL.md +184 -0
- package/dist/2.0.8/claude/plugin/skills/generate-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.8/claude/plugin/skills/generate-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.8/claude/plugin/skills/generate-test-cases/references/scenario-categories.md +36 -0
- package/dist/2.0.8/claude/plugin/skills/plan-test-coverage/SKILL.md +116 -0
- package/dist/2.0.8/claude/plugin/skills/plan-test-coverage/agents/claude.yaml +3 -0
- package/dist/2.0.8/claude/plugin/skills/plan-test-coverage/agents/openai.yaml +10 -0
- package/dist/2.0.8/claude/plugin/skills/review-test-cases/SKILL.md +147 -0
- package/dist/2.0.8/claude/plugin/skills/review-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.8/claude/plugin/skills/review-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.8/claude/plugin/skills/review-test-code/SKILL.md +189 -0
- package/dist/2.0.8/claude/plugin/skills/review-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.8/claude/plugin/skills/review-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/SKILL.md +227 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/references/anti-patterns.md +88 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/references/api-setup-teardown.md +83 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/references/auth-patterns.md +63 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/references/mapping-tables.md +56 -0
- package/dist/2.0.8/claude/plugin/skills/write-test-code/references/network-interception.md +56 -0
- package/dist/2.0.8/codex/plugin/.codex-plugin/plugin.json +15 -0
- package/dist/2.0.8/codex/plugin/package.json +9 -0
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/SKILL.md +217 -0
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/agents/claude.yaml +1 -0
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/agents/openai.yaml +10 -0
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/authentication.md +8 -0
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/error-recovery.md +43 -0
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/scaffolding.md +12 -0
- package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/tracker-template.md +53 -0
- package/dist/2.0.8/codex/plugin/skills/analyze-test-codebase/SKILL.md +142 -0
- package/dist/2.0.8/codex/plugin/skills/analyze-test-codebase/agents/claude.yaml +3 -0
- package/dist/2.0.8/codex/plugin/skills/analyze-test-codebase/agents/openai.yaml +4 -0
- package/dist/2.0.8/codex/plugin/skills/fix-flaky-tests/SKILL.md +160 -0
- package/dist/2.0.8/codex/plugin/skills/fix-flaky-tests/agents/claude.yaml +3 -0
- package/dist/2.0.8/codex/plugin/skills/fix-flaky-tests/agents/openai.yaml +10 -0
- package/dist/2.0.8/codex/plugin/skills/fix-flaky-tests/references/fix-patterns.md +91 -0
- package/dist/2.0.8/codex/plugin/skills/generate-test-cases/SKILL.md +184 -0
- package/dist/2.0.8/codex/plugin/skills/generate-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.8/codex/plugin/skills/generate-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.8/codex/plugin/skills/generate-test-cases/references/scenario-categories.md +36 -0
- package/dist/2.0.8/codex/plugin/skills/plan-test-coverage/SKILL.md +116 -0
- package/dist/2.0.8/codex/plugin/skills/plan-test-coverage/agents/claude.yaml +3 -0
- package/dist/2.0.8/codex/plugin/skills/plan-test-coverage/agents/openai.yaml +10 -0
- package/dist/2.0.8/codex/plugin/skills/review-test-cases/SKILL.md +147 -0
- package/dist/2.0.8/codex/plugin/skills/review-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.8/codex/plugin/skills/review-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.8/codex/plugin/skills/review-test-code/SKILL.md +189 -0
- package/dist/2.0.8/codex/plugin/skills/review-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.8/codex/plugin/skills/review-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/SKILL.md +227 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/references/anti-patterns.md +88 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/references/api-setup-teardown.md +83 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/references/auth-patterns.md +63 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/references/mapping-tables.md +56 -0
- package/dist/2.0.8/codex/plugin/skills/write-test-code/references/network-interception.md +56 -0
- package/dist/2.0.8/release.json +18 -0
- package/dist/2.0.9/.agents/plugins/marketplace.json +14 -0
- package/dist/2.0.9/claude/plugin/.claude-plugin/plugin.json +20 -0
- package/dist/2.0.9/claude/plugin/package.json +9 -0
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/SKILL.md +215 -0
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/agents/openai.yaml +10 -0
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/authentication.md +8 -0
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/error-recovery.md +43 -0
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/scaffolding.md +12 -0
- package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/tracker-template.md +53 -0
- package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/SKILL.md +142 -0
- package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/agents/openai.yaml +4 -0
- package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/SKILL.md +160 -0
- package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/agents/openai.yaml +10 -0
- package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/references/fix-patterns.md +91 -0
- package/dist/2.0.9/claude/plugin/skills/generate-test-cases/SKILL.md +184 -0
- package/dist/2.0.9/claude/plugin/skills/generate-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/generate-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.9/claude/plugin/skills/generate-test-cases/references/scenario-categories.md +36 -0
- package/dist/2.0.9/claude/plugin/skills/plan-test-coverage/SKILL.md +117 -0
- package/dist/2.0.9/claude/plugin/skills/plan-test-coverage/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/plan-test-coverage/agents/openai.yaml +10 -0
- package/dist/2.0.9/claude/plugin/skills/review-test-cases/SKILL.md +147 -0
- package/dist/2.0.9/claude/plugin/skills/review-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/review-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.9/claude/plugin/skills/review-test-code/SKILL.md +189 -0
- package/dist/2.0.9/claude/plugin/skills/review-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/review-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/SKILL.md +227 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/anti-patterns.md +88 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/api-setup-teardown.md +83 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/auth-patterns.md +63 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/mapping-tables.md +56 -0
- package/dist/2.0.9/claude/plugin/skills/write-test-code/references/network-interception.md +56 -0
- package/dist/2.0.9/codex/plugin/.codex-plugin/plugin.json +15 -0
- package/dist/2.0.9/codex/plugin/package.json +9 -0
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/SKILL.md +215 -0
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/agents/openai.yaml +10 -0
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/authentication.md +8 -0
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/error-recovery.md +43 -0
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/scaffolding.md +12 -0
- package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/tracker-template.md +53 -0
- package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/SKILL.md +142 -0
- package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/agents/openai.yaml +4 -0
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/SKILL.md +160 -0
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/agents/openai.yaml +10 -0
- package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/references/fix-patterns.md +91 -0
- package/dist/2.0.9/codex/plugin/skills/generate-test-cases/SKILL.md +184 -0
- package/dist/2.0.9/codex/plugin/skills/generate-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/generate-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.9/codex/plugin/skills/generate-test-cases/references/scenario-categories.md +36 -0
- package/dist/2.0.9/codex/plugin/skills/plan-test-coverage/SKILL.md +117 -0
- package/dist/2.0.9/codex/plugin/skills/plan-test-coverage/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/plan-test-coverage/agents/openai.yaml +10 -0
- package/dist/2.0.9/codex/plugin/skills/review-test-cases/SKILL.md +147 -0
- package/dist/2.0.9/codex/plugin/skills/review-test-cases/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/review-test-cases/agents/openai.yaml +10 -0
- package/dist/2.0.9/codex/plugin/skills/review-test-code/SKILL.md +189 -0
- package/dist/2.0.9/codex/plugin/skills/review-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/review-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/SKILL.md +227 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/agents/claude.yaml +3 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/agents/openai.yaml +10 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/anti-patterns.md +88 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/api-setup-teardown.md +83 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/auth-patterns.md +63 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/mapping-tables.md +56 -0
- package/dist/2.0.9/codex/plugin/skills/write-test-code/references/network-interception.md +56 -0
- package/dist/2.0.9/release.json +18 -0
- package/package.json +13 -0
- package/skills/add-e2e-tests/SKILL.md +215 -0
- package/skills/add-e2e-tests/agents/claude.yaml +3 -0
- package/skills/add-e2e-tests/agents/openai.yaml +10 -0
- package/skills/add-e2e-tests/references/authentication.md +8 -0
- package/skills/add-e2e-tests/references/error-recovery.md +43 -0
- package/skills/add-e2e-tests/references/scaffolding.md +12 -0
- package/skills/add-e2e-tests/references/tracker-template.md +53 -0
- package/skills/analyze-test-codebase/SKILL.md +142 -0
- package/skills/analyze-test-codebase/agents/claude.yaml +3 -0
- package/skills/analyze-test-codebase/agents/openai.yaml +4 -0
- package/skills/fix-flaky-tests/SKILL.md +160 -0
- package/skills/fix-flaky-tests/agents/claude.yaml +3 -0
- package/skills/fix-flaky-tests/agents/openai.yaml +10 -0
- package/skills/fix-flaky-tests/references/fix-patterns.md +91 -0
- package/skills/generate-test-cases/SKILL.md +184 -0
- package/skills/generate-test-cases/agents/claude.yaml +3 -0
- package/skills/generate-test-cases/agents/openai.yaml +10 -0
- package/skills/generate-test-cases/references/scenario-categories.md +36 -0
- package/skills/plan-test-coverage/SKILL.md +117 -0
- package/skills/plan-test-coverage/agents/claude.yaml +3 -0
- package/skills/plan-test-coverage/agents/openai.yaml +10 -0
- package/skills/review-test-cases/SKILL.md +147 -0
- package/skills/review-test-cases/agents/claude.yaml +3 -0
- package/skills/review-test-cases/agents/openai.yaml +10 -0
- package/skills/review-test-code/SKILL.md +189 -0
- package/skills/review-test-code/agents/claude.yaml +3 -0
- package/skills/review-test-code/agents/openai.yaml +10 -0
- package/skills/write-test-code/SKILL.md +227 -0
- package/skills/write-test-code/agents/claude.yaml +3 -0
- package/skills/write-test-code/agents/openai.yaml +10 -0
- package/skills/write-test-code/references/anti-patterns.md +88 -0
- package/skills/write-test-code/references/api-setup-teardown.md +83 -0
- package/skills/write-test-code/references/auth-patterns.md +63 -0
- package/skills/write-test-code/references/mapping-tables.md +56 -0
- package/skills/write-test-code/references/network-interception.md +56 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-test-coverage
|
|
3
|
+
description: >
|
|
4
|
+
Use before writing specs or test code to decide what E2E coverage is needed first. It scans existing tests, inspects the target flow, finds coverage gaps, and produces a prioritized P0/P1/P2 plan with TC-IDs. Use it for requests like "what tests do I need", "coverage gaps", or "what TC-IDs are missing". It does not write detailed specs or executable tests.
|
|
5
|
+
allowed-tools: Read Glob Grep Task
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Plan Test Coverage
|
|
9
|
+
|
|
10
|
+
Plan what E2E tests to write for a feature by analyzing existing test coverage and, when browser tooling is available in the current context, doing a quick site inspection.
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. **Parse input** — extract the target URL and feature area from: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
2. **Check existing test coverage**:
|
|
17
|
+
- Search for existing test files related to the feature:
|
|
18
|
+
```
|
|
19
|
+
Grep for feature keywords in **/*.spec.ts, **/*.test.ts
|
|
20
|
+
```
|
|
21
|
+
- Identify what's already covered and what's missing
|
|
22
|
+
- Note existing TC-IDs for the feature area to avoid conflicts
|
|
23
|
+
|
|
24
|
+
3. **Quick site inspection** (lightweight, not full exploration, optional if browser tooling is unavailable):
|
|
25
|
+
- If the current context has browser tools, follow the `agent-web-interface-guide` skill's browsing patterns (orient before acting, use `list_pages` for session awareness, close only pages you opened)
|
|
26
|
+
- Navigate to the URL in a dedicated page
|
|
27
|
+
- Use `find` to catalog the main interactive elements
|
|
28
|
+
- Use `get_form` or `get_field` if the page has forms worth covering
|
|
29
|
+
- Identify the key user flows visible on the page
|
|
30
|
+
- Close only the page you opened when done; do not rely on a session-wide close
|
|
31
|
+
- If browser tooling is unavailable, infer flows from the URL, existing tests, route names, component names, and user-provided context, and record that the plan was produced without live inspection
|
|
32
|
+
|
|
33
|
+
4. **Identify test categories** — for the feature, determine tests needed across:
|
|
34
|
+
- **Critical path** — core happy path that must never break
|
|
35
|
+
- **Input validation** — form fields, required fields, format constraints
|
|
36
|
+
- **Error states** — network errors, server errors, empty states
|
|
37
|
+
- **Edge cases** — boundary values, special characters, concurrent actions
|
|
38
|
+
- **Cross-feature** — interactions with other features (e.g., auth + checkout)
|
|
39
|
+
- **Accessibility** — keyboard navigation, screen reader support, focus management
|
|
40
|
+
- **Visual regression** — layout consistency, responsive breakpoints (375px, 768px, 1280px)
|
|
41
|
+
- **Performance** — loading states, lazy loading, large data sets
|
|
42
|
+
- **Network errors** — server 500s, timeouts, offline behavior
|
|
43
|
+
|
|
44
|
+
Not all categories apply to every project. Include Accessibility, Visual Regression, and Cross-Browser sections only when the project has explicit requirements, tooling, or configuration for them. Omit them from the output plan if not relevant — a focused plan is more useful than a padded one.
|
|
45
|
+
|
|
46
|
+
5. **Prioritize** — rank tests by:
|
|
47
|
+
- **P0 (Must have)**: Core user journey, auth flows, data corruption prevention. Blocks revenue/signups if broken.
|
|
48
|
+
- **P1 (Should have)**: Input validation, common error paths, accessibility basics (keyboard navigation, form labels)
|
|
49
|
+
- **P2 (Nice to have)**: Edge cases, visual regression, performance scenarios, cross-browser specifics, rare error paths
|
|
50
|
+
|
|
51
|
+
6. **Output test plan**:
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
## Test Coverage Plan: <Feature>
|
|
55
|
+
|
|
56
|
+
**URL:** <url>
|
|
57
|
+
**Date:** <date>
|
|
58
|
+
**Existing coverage:** <N tests already exist / none>
|
|
59
|
+
|
|
60
|
+
### Already Covered
|
|
61
|
+
- TC-FEATURE-001: <description> (in `tests/feature.spec.ts`)
|
|
62
|
+
- ...
|
|
63
|
+
|
|
64
|
+
### Proposed New Tests
|
|
65
|
+
|
|
66
|
+
#### P0 — Critical Path
|
|
67
|
+
| TC-ID | Description | Why Critical |
|
|
68
|
+
|-------|-------------|-------------|
|
|
69
|
+
| TC-FEATURE-010 | Happy path: user completes full flow | Core revenue path |
|
|
70
|
+
|
|
71
|
+
#### P1 — Validation & Errors
|
|
72
|
+
| TC-ID | Description | Why Important |
|
|
73
|
+
|-------|-------------|--------------|
|
|
74
|
+
| TC-FEATURE-020 | Submit with empty required fields | Common user error |
|
|
75
|
+
|
|
76
|
+
#### P2 — Edge Cases
|
|
77
|
+
| TC-ID | Description | Notes |
|
|
78
|
+
|-------|-------------|-------|
|
|
79
|
+
| TC-FEATURE-030 | Special characters in search input | Unicode handling |
|
|
80
|
+
|
|
81
|
+
#### Accessibility (include if project has accessibility requirements or WCAG compliance goals)
|
|
82
|
+
| TC-ID | Description | WCAG Criterion |
|
|
83
|
+
|-------|-------------|----------------|
|
|
84
|
+
| TC-FEATURE-A01 | Keyboard-only navigation through flow | 2.1.1 Keyboard |
|
|
85
|
+
| TC-FEATURE-A02 | Form errors announced to screen readers | 1.3.1 Info and Relationships |
|
|
86
|
+
|
|
87
|
+
#### Visual Regression (if project has visual testing setup)
|
|
88
|
+
| TC-ID | Description | Viewport |
|
|
89
|
+
|-------|-------------|----------|
|
|
90
|
+
| TC-FEATURE-V01 | Layout consistency at mobile width | 375x812 |
|
|
91
|
+
|
|
92
|
+
#### Cross-Browser Matrix (include if project runs tests across multiple browsers)
|
|
93
|
+
| Browser | Priority | Reason |
|
|
94
|
+
|---------|----------|--------|
|
|
95
|
+
| Chromium | P0 | Primary target |
|
|
96
|
+
| Firefox | P1 | Second largest desktop share |
|
|
97
|
+
| WebKit/Safari | P1 | Required for iOS users |
|
|
98
|
+
|
|
99
|
+
### Recommended Order
|
|
100
|
+
1. Write P0 tests first (N tests)
|
|
101
|
+
2. Then P1 validation + accessibility basics (N tests)
|
|
102
|
+
3. P2 edge cases, visual regression, and performance as time allows
|
|
103
|
+
|
|
104
|
+
### Next Steps
|
|
105
|
+
- Invoke the `generate-test-cases` skill with the target URL and journey for detailed test specs
|
|
106
|
+
- Invoke the `write-test-code` skill to implement the tests
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Example Usage
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
Claude Code: /plan-test-coverage https://myapp.com/checkout Checkout flow
|
|
113
|
+
Codex: $plan-test-coverage https://myapp.com/checkout Checkout flow
|
|
114
|
+
|
|
115
|
+
Claude Code: /plan-test-coverage https://myapp.com/login Authentication
|
|
116
|
+
Codex: $plan-test-coverage https://myapp.com/login Authentication
|
|
117
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Plan Coverage Priorities"
|
|
3
|
+
short_description: "Identify coverage gaps and prioritize what to test first"
|
|
4
|
+
default_prompt: "Review this feature and produce a prioritized E2E coverage plan without writing specs or code."
|
|
5
|
+
|
|
6
|
+
dependencies:
|
|
7
|
+
tools:
|
|
8
|
+
- type: "mcp"
|
|
9
|
+
value: "agent-web-interface"
|
|
10
|
+
description: "Browser automation MCP used for lightweight site inspection"
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-test-cases
|
|
3
|
+
description: >
|
|
4
|
+
This skill should be used when a quality review of TC-ID test case specifications is needed before writing executable
|
|
5
|
+
test code. It reviews the spec artifact only; it does not implement or rewrite tests.
|
|
6
|
+
Triggers: "review test cases", "check test specs", "review TC-IDs", "audit test coverage",
|
|
7
|
+
"are my test cases good", "validate test specs", "review test-cases/*.md",
|
|
8
|
+
"check for gaps in test cases", "review before writing tests", "quality check test specs".
|
|
9
|
+
Inserted as a quality gate between generate-test-cases and write-test-code — catches
|
|
10
|
+
gaps, duplication, weak assertions, missing error paths, and invented scenarios before they get
|
|
11
|
+
encoded into test code. Review-only — does NOT modify the spec file, does NOT write test code.
|
|
12
|
+
The write-test-code skill should be used for implementation.
|
|
13
|
+
allowed-tools: Read Glob Grep Task
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Review Test Cases
|
|
17
|
+
|
|
18
|
+
Review TC-ID test case specifications for completeness, accuracy, and quality before they are implemented as executable Playwright tests. This is a quality gate — catch problems in the spec, not in the code.
|
|
19
|
+
|
|
20
|
+
## Input
|
|
21
|
+
|
|
22
|
+
Parse the spec file path from: $ARGUMENTS
|
|
23
|
+
|
|
24
|
+
If no argument provided, search for `test-cases/*.md` files and review the most recently modified one.
|
|
25
|
+
|
|
26
|
+
## Workflow
|
|
27
|
+
|
|
28
|
+
### Step 1: Load the Spec and Context
|
|
29
|
+
|
|
30
|
+
1. Read the test case spec file
|
|
31
|
+
2. Read any related files for context:
|
|
32
|
+
- `e2e-plan/conventions.md` or `e2e-plan/coverage-plan.md` if they exist
|
|
33
|
+
- `e2e-tracker.md` if it exists (to understand what was explored)
|
|
34
|
+
3. Extract the target URL from the spec header
|
|
35
|
+
|
|
36
|
+
### Step 2: Run the Review Checklist
|
|
37
|
+
|
|
38
|
+
Evaluate every test case against each criterion. Track findings by severity:
|
|
39
|
+
|
|
40
|
+
- **BLOCKER** — must fix before writing tests (missing critical paths, invented behavior, wrong URL)
|
|
41
|
+
- **WARNING** — should fix, will cause problems in implementation (vague steps, weak assertions, duplication)
|
|
42
|
+
- **SUGGESTION** — optional improvement (priority adjustment, better categorization, additional edge case)
|
|
43
|
+
|
|
44
|
+
#### 2a. Coverage Completeness
|
|
45
|
+
|
|
46
|
+
| Check | What to Look For |
|
|
47
|
+
|-------|-----------------|
|
|
48
|
+
| Happy path present | At least one Critical-priority test covers the primary success flow end-to-end |
|
|
49
|
+
| Error paths covered (MINIMUM) | Every spec MUST have at least: (1) one server error test (500), (2) one network failure test (timeout/offline), (3) one empty state test. If auth is involved: (4) one session expiry test. Missing any of these is a BLOCKER, not a suggestion |
|
|
50
|
+
| Boundary conditions | Min/max values, empty inputs, special characters, long strings |
|
|
51
|
+
| Authentication edge cases | Session expiry, unauthorized access, role-based differences (if applicable) |
|
|
52
|
+
| Navigation edge cases | Back/forward, direct URL access, refresh mid-flow |
|
|
53
|
+
| Missing user actions | Every interactive element on the page should appear in at least one test case |
|
|
54
|
+
|
|
55
|
+
#### 2b. Specification Quality
|
|
56
|
+
|
|
57
|
+
| Check | What to Look For |
|
|
58
|
+
|-------|-----------------|
|
|
59
|
+
| Steps are concrete | "Click the Submit button" not "submit the form"; "Enter 'test@example.com' in Email field" not "enter email" |
|
|
60
|
+
| Expected results are observable | Specific text, URL change, element state — not "page updates" or "works correctly" |
|
|
61
|
+
| Preconditions are explicit | Auth state, test data, feature flags, starting URL — nothing assumed |
|
|
62
|
+
| TC-IDs are sequential | No gaps, no duplicates, correct feature prefix |
|
|
63
|
+
| Priority is justified | Critical = blocks core journey; not everything is Critical |
|
|
64
|
+
| Categories are accurate | Happy Path vs Validation vs Edge Case — correctly classified |
|
|
65
|
+
|
|
66
|
+
#### 2c. Invented vs Observed
|
|
67
|
+
|
|
68
|
+
This is the most important check. Test cases should trace back to behavior that was actually observed or deliberately triggered during exploration, not assumed.
|
|
69
|
+
|
|
70
|
+
Red flags for invented scenarios:
|
|
71
|
+
- Specific error message text that wasn't observed (e.g., "Please enter a valid email" when the actual message might differ)
|
|
72
|
+
- Assumptions about validation rules without exploration evidence (e.g., "minimum 8 characters" without trying it)
|
|
73
|
+
- Test cases for UI elements that may not exist (e.g., "retry button" on error page without visiting the error page)
|
|
74
|
+
- Server-side behavior assumptions (e.g., "rate limit after 5 attempts" without evidence)
|
|
75
|
+
|
|
76
|
+
When suspicious: delegate a spot-check to a subagent with browser access (Task tool). Pass it the target URL, the specific TC-IDs under suspicion, and the claims to verify (element existence, error message text, validation behavior). The subagent should return structured evidence: what it found, what matched, what differed.
|
|
77
|
+
|
|
78
|
+
#### 2d. Duplication and Overlap
|
|
79
|
+
|
|
80
|
+
- Flag test cases that test the same behavior with trivially different inputs
|
|
81
|
+
- Flag test cases where the steps are identical but expected results differ only cosmetically
|
|
82
|
+
- Merging candidates: cases that could be combined into a single parameterized test without losing coverage
|
|
83
|
+
|
|
84
|
+
#### 2e. Implementability
|
|
85
|
+
|
|
86
|
+
- Flag steps that cannot be automated with Playwright (e.g., "verify email arrives", "check database directly")
|
|
87
|
+
- Flag preconditions that require manual setup with no automation path
|
|
88
|
+
- Flag assertions that require visual comparison without specifying tolerance
|
|
89
|
+
- Flag test cases that depend on third-party services (payment processors, OAuth providers) without a mock strategy
|
|
90
|
+
|
|
91
|
+
### Step 3: Produce the Review Report
|
|
92
|
+
|
|
93
|
+
Output a structured review with this format:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Test Case Review: <feature>
|
|
97
|
+
|
|
98
|
+
**Spec file:** <path>
|
|
99
|
+
**Total test cases:** <count>
|
|
100
|
+
**Review date:** <date>
|
|
101
|
+
|
|
102
|
+
## Verdict: PASS | PASS WITH WARNINGS | NEEDS REVISION
|
|
103
|
+
|
|
104
|
+
## Blockers (<count>)
|
|
105
|
+
- **TC-<ID>**: <issue description>
|
|
106
|
+
|
|
107
|
+
## Warnings (<count>)
|
|
108
|
+
- **TC-<ID>**: <issue description>
|
|
109
|
+
|
|
110
|
+
## Suggestions (<count>)
|
|
111
|
+
- **TC-<ID>**: <issue description>
|
|
112
|
+
|
|
113
|
+
## Coverage Gaps
|
|
114
|
+
- <Missing scenario that should be added>
|
|
115
|
+
|
|
116
|
+
## Duplication
|
|
117
|
+
- **TC-<ID>** and **TC-<ID>**: <overlap description>
|
|
118
|
+
|
|
119
|
+
## Summary
|
|
120
|
+
<2-3 sentences on overall spec quality and what to address before implementation>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Step 4: Verdict Rules
|
|
124
|
+
|
|
125
|
+
- **PASS** — no blockers, 2 or fewer warnings. Proceed to write-test-code.
|
|
126
|
+
- **PASS WITH WARNINGS** — no blockers, 3+ warnings. Can proceed but should address warnings.
|
|
127
|
+
- **NEEDS REVISION** — 1+ blockers. Do not proceed to write-test-code until blockers are resolved.
|
|
128
|
+
|
|
129
|
+
Example: 0 blockers + 2 warnings = PASS. 0 blockers + 3 warnings = PASS WITH WARNINGS. 1+ blockers = NEEDS REVISION regardless of warning count.
|
|
130
|
+
|
|
131
|
+
## Principles
|
|
132
|
+
|
|
133
|
+
- **Review-only** — never modify the spec file; report findings for the author to act on
|
|
134
|
+
- **Evidence over opinion** — cite specific TC-IDs and quote specific steps/assertions when flagging issues
|
|
135
|
+
- **Spot-check against live site** — delegate to a subagent with browser access to verify 2-3 suspicious claims rather than trusting all text at face value
|
|
136
|
+
- **Bounded output** — the review report should be actionable and finite, not an exhaustive rewrite
|
|
137
|
+
- **Severity matters** — distinguish blockers from suggestions; not every imperfection is worth fixing before implementation
|
|
138
|
+
|
|
139
|
+
## Example Usage
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
Claude Code: /review-test-cases test-cases/login.md
|
|
143
|
+
Codex: $review-test-cases test-cases/login.md
|
|
144
|
+
|
|
145
|
+
Claude Code: /review-test-cases test-cases/checkout.md
|
|
146
|
+
Codex: $review-test-cases test-cases/checkout.md
|
|
147
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Review TC-ID Specs"
|
|
3
|
+
short_description: "Review TC-ID specs for gaps, duplication, and weak assertions"
|
|
4
|
+
default_prompt: "Review these TC-ID test case specifications before implementation and flag quality issues."
|
|
5
|
+
|
|
6
|
+
dependencies:
|
|
7
|
+
tools:
|
|
8
|
+
- type: "mcp"
|
|
9
|
+
value: "agent-web-interface"
|
|
10
|
+
description: "Browser automation MCP used to spot-check observed behavior claims against live site"
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-test-code
|
|
3
|
+
description: >
|
|
4
|
+
Quality review of Playwright test code before final execution signoff. This skill should be used
|
|
5
|
+
when implementation review of executable Playwright tests is needed, not for diagnosis of runtime flakiness.
|
|
6
|
+
Triggers: "review test code", "review Playwright tests", "check test quality",
|
|
7
|
+
"audit test implementation", "review my tests before merging", "check test code for issues",
|
|
8
|
+
"review e2e tests", "code review Playwright", "are my tests stable",
|
|
9
|
+
"check for brittle selectors", "review before running tests". Quality gate
|
|
10
|
+
after write-test-code — catches brittle selectors, force:true misuse, networkidle overuse, Tailwind
|
|
11
|
+
utility class selectors, exact numeric assertions, missing teardown, parallel-unsafe mutations,
|
|
12
|
+
hardcoded data, missing assertions, test coupling, and convention divergence. Review-only — does NOT
|
|
13
|
+
rewrite tests, does NOT run tests. Use fix-flaky-tests for fixing, write-test-code for rewriting.
|
|
14
|
+
allowed-tools: Read Glob Grep Task
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Review Test Code
|
|
18
|
+
|
|
19
|
+
Review Playwright test code for stability, correctness, and adherence to project conventions before final execution signoff. This is a quality gate — catch structural issues in code before running tests, not after flaky failures.
|
|
20
|
+
|
|
21
|
+
## Input
|
|
22
|
+
|
|
23
|
+
Parse the test file path or directory from: $ARGUMENTS
|
|
24
|
+
|
|
25
|
+
If no argument provided, search for recently modified `*.spec.ts` or `*.test.ts` files and review those.
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
### Step 1: Load Context
|
|
30
|
+
|
|
31
|
+
1. Read the test file(s) to review
|
|
32
|
+
2. Read project conventions for comparison:
|
|
33
|
+
- `playwright.config.ts` or `playwright.config.js` — extract `baseURL`, `testDir`, projects, timeouts, `fullyParallel`, `workers`
|
|
34
|
+
- 2-3 existing test files (not the ones under review) to establish the project's conventions
|
|
35
|
+
- `e2e-plan/conventions.md` if it exists
|
|
36
|
+
3. Read the corresponding test case spec (`test-cases/<feature>.md`) if it exists — needed for traceability check
|
|
37
|
+
4. Note the project's locator strategy, fixture patterns, auth approach, and naming conventions
|
|
38
|
+
|
|
39
|
+
### Step 2: Run the Review Checklist
|
|
40
|
+
|
|
41
|
+
Evaluate the test code against each criterion. Track findings by severity:
|
|
42
|
+
|
|
43
|
+
- **BLOCKER** — will cause test failures or false passes (missing assertions, wrong selectors, broken isolation)
|
|
44
|
+
- **WARNING** — will cause flakiness or maintenance burden (brittle selectors, arbitrary waits, poor structure)
|
|
45
|
+
- **SUGGESTION** — style or convention improvement (naming, organization, minor readability)
|
|
46
|
+
|
|
47
|
+
#### 2a. Locator Quality
|
|
48
|
+
|
|
49
|
+
| Check | What to Look For |
|
|
50
|
+
|-------|-----------------|
|
|
51
|
+
| Semantic locators preferred | `getByRole`, `getByLabel`, `getByPlaceholder` over CSS selectors |
|
|
52
|
+
| No fragile positional selectors | `.first()`, `.nth()`, `.last()` without documented justification |
|
|
53
|
+
| No dynamic IDs or classes | Selectors containing generated hashes, UUIDs, or auto-incremented values |
|
|
54
|
+
| No utility framework classes | Selectors must not contain Tailwind (`rounded-lg`, `flex`, `bg-*`), Bootstrap (`btn-primary`, `col-md-*`), or similar utility classes — these are styling, not identity |
|
|
55
|
+
| Scoped to containers | Locators narrowed to `main`, `nav`, `[role="dialog"]` where needed |
|
|
56
|
+
| No exact long text matches | Use regex with key words instead of full marketing copy |
|
|
57
|
+
|
|
58
|
+
When a locator appears suspicious, delegate verification to a subagent (Task tool): instruct it to open the target URL, locate the element using the browser MCP tools (`find`, `get_element`), and report back whether the element exists and is unique.
|
|
59
|
+
|
|
60
|
+
#### 2b. Waiting and Timing
|
|
61
|
+
|
|
62
|
+
| Check | What to Look For |
|
|
63
|
+
|-------|-----------------|
|
|
64
|
+
| No `waitForTimeout()` | Arbitrary sleeps mask real timing issues |
|
|
65
|
+
| Proper action-response waits | `waitForResponse` before asserting API-dependent UI |
|
|
66
|
+
| Auto-retrying assertions used | `await expect(el).toBeVisible()` not `expect(await el.isVisible()).toBe(true)` |
|
|
67
|
+
| Reasonable explicit timeouts | Custom timeouts (`{ timeout: 10000 }`) have a comment explaining why |
|
|
68
|
+
| No `networkidle` overuse | `networkidle` is fragile; prefer specific response waits |
|
|
69
|
+
|
|
70
|
+
#### 2c. Assertions
|
|
71
|
+
|
|
72
|
+
| Check | What to Look For |
|
|
73
|
+
|-------|-----------------|
|
|
74
|
+
| Every test has assertions | No test blocks without `expect()` calls |
|
|
75
|
+
| Assertions test user outcomes | Visible text, URL changes, element states — not internal state or CSS classes |
|
|
76
|
+
| Assertions are specific | `toHaveText('Welcome, John')` not just `toBeVisible()` |
|
|
77
|
+
| Error paths have assertions | Error scenario tests verify the error message, not just that "something happened" |
|
|
78
|
+
| No exact server-computed values | Dashboard counters, totals, and aggregates must not assert exact numbers — use patterns, ranges, or seed data first |
|
|
79
|
+
| No `toBeTruthy()` on locators | Use Playwright-specific matchers (`toBeVisible`, `toBeEnabled`, `toHaveText`) |
|
|
80
|
+
|
|
81
|
+
#### 2d. Test Isolation and Structure
|
|
82
|
+
|
|
83
|
+
| Check | What to Look For |
|
|
84
|
+
|-------|-----------------|
|
|
85
|
+
| No shared mutable state | Tests do not depend on execution order or modify shared variables |
|
|
86
|
+
| Proper setup/teardown | `beforeEach`/`afterEach` for shared setup, not duplicated in each test |
|
|
87
|
+
| AAA structure | Clear Arrange → Act → Assert sections (comments optional but structure required) |
|
|
88
|
+
| No test coupling | Test B does not depend on side effects from Test A |
|
|
89
|
+
| Auth handled correctly | `storageState` or fixture, not UI login in every test (unless testing login itself) |
|
|
90
|
+
| Test data is unique | Uses `Date.now()`, factories, or unique IDs — not hardcoded shared data |
|
|
91
|
+
| Parallel-safe (if `fullyParallel: true` or `workers` > 1 found in config) | Tests that create data must not assert on unscoped lists or counts — filter assertions to the specific data created. If parallelism is disabled, note as SUGGESTION rather than WARNING |
|
|
92
|
+
| Data cleanup present | Tests that create persistent records (API POST/PUT) must have corresponding teardown (`afterEach`, fixture cleanup, or `globalTeardown`) |
|
|
93
|
+
|
|
94
|
+
#### 2e. Convention Adherence
|
|
95
|
+
|
|
96
|
+
| Check | What to Look For |
|
|
97
|
+
|-------|-----------------|
|
|
98
|
+
| TC-ID in test title | Every test has `TC-<FEATURE>-<NNN>: Description` format |
|
|
99
|
+
| File naming matches project | Follows existing `*.spec.ts` or `*.test.ts` convention |
|
|
100
|
+
| Import style matches project | Imports from project fixtures file if one exists, not raw `@playwright/test` |
|
|
101
|
+
| baseURL used | `page.goto('/')` not `page.goto('https://example.com/')` |
|
|
102
|
+
| POM pattern followed (if used) | Page objects for interactions, tests for assertions |
|
|
103
|
+
| Consistent locator strategy | Same locator approach as existing tests |
|
|
104
|
+
|
|
105
|
+
#### 2f. TC-ID Traceability
|
|
106
|
+
|
|
107
|
+
If a test case spec file exists for this feature:
|
|
108
|
+
- Verify every TC-ID from the spec has a corresponding test
|
|
109
|
+
- Flag TC-IDs in the spec with no implementation
|
|
110
|
+
- Flag tests with TC-IDs not present in the spec (orphaned tests)
|
|
111
|
+
- Note: not every spec TC-ID must be implemented — but missing ones should be acknowledged
|
|
112
|
+
|
|
113
|
+
#### 2g. Anti-Pattern Detection
|
|
114
|
+
|
|
115
|
+
Flag any instances of these known anti-patterns:
|
|
116
|
+
1. Raw CSS selectors where semantic locators would work
|
|
117
|
+
2. `waitForTimeout()` used as a fix
|
|
118
|
+
3. `.first()` / `.nth()` without justification
|
|
119
|
+
4. Exact long text matches (fragile to copy changes)
|
|
120
|
+
5. Login via UI in every test (should use storageState)
|
|
121
|
+
6. UI clicks to set up test data (should use API)
|
|
122
|
+
7. No error path tests in the suite
|
|
123
|
+
8. Hardcoded test data
|
|
124
|
+
9. Tests depending on execution order
|
|
125
|
+
10. `expect(await el.isVisible()).toBe(true)` instead of `await expect(el).toBeVisible()`
|
|
126
|
+
11. Missing `await` on Playwright calls (easy to miss, causes silent failures)
|
|
127
|
+
12. `{ force: true }` on interactions without documented justification (masks actionability issues — overlapping elements, disabled state, not scrolled into view)
|
|
128
|
+
13. `waitForLoadState('networkidle')` as default wait strategy — breaks on long-polling, WebSockets, analytics beacons; use specific `waitForResponse` or UI assertions instead
|
|
129
|
+
14. CSS utility class selectors (Tailwind `rounded-lg`, `flex`, Bootstrap `btn-primary`, `col-md-*`) — styling classes are volatile, never use as selectors
|
|
130
|
+
15. Asserting exact server-computed values (`toHaveText('12450')`) — use pattern matchers, ranges, or seed data to control expected values
|
|
131
|
+
|
|
132
|
+
### Step 3: Produce the Review Report
|
|
133
|
+
|
|
134
|
+
Output a structured review with this format:
|
|
135
|
+
|
|
136
|
+
```markdown
|
|
137
|
+
# Test Code Review: <file or feature>
|
|
138
|
+
|
|
139
|
+
**Files reviewed:** <list>
|
|
140
|
+
**Total tests:** <count>
|
|
141
|
+
**Review date:** <date>
|
|
142
|
+
|
|
143
|
+
## Verdict: PASS | PASS WITH WARNINGS | NEEDS REVISION
|
|
144
|
+
|
|
145
|
+
## Blockers (<count>)
|
|
146
|
+
- **<file>:<line>** `<test name>`: <issue description>
|
|
147
|
+
|
|
148
|
+
## Warnings (<count>)
|
|
149
|
+
- **<file>:<line>** `<test name>`: <issue description>
|
|
150
|
+
|
|
151
|
+
## Suggestions (<count>)
|
|
152
|
+
- **<file>:<line>**: <issue description>
|
|
153
|
+
|
|
154
|
+
## Convention Divergences
|
|
155
|
+
- <How this code differs from the project's established patterns>
|
|
156
|
+
|
|
157
|
+
## TC-ID Traceability
|
|
158
|
+
- **Implemented:** <count> / <total in spec>
|
|
159
|
+
- **Missing from implementation:** <list of TC-IDs>
|
|
160
|
+
- **Orphaned (no spec):** <list of TC-IDs>
|
|
161
|
+
|
|
162
|
+
## Summary
|
|
163
|
+
<2-3 sentences on overall code quality and what to address before test execution>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Step 4: Verdict Rules
|
|
167
|
+
|
|
168
|
+
- **PASS** — no blockers, 2 or fewer warnings. Proceed to test execution.
|
|
169
|
+
- **PASS WITH WARNINGS** — no blockers, 3+ warnings. Can proceed but should address warnings for long-term stability.
|
|
170
|
+
- **NEEDS REVISION** — 1+ blockers. Do not run tests expecting stable results until blockers are resolved.
|
|
171
|
+
|
|
172
|
+
## Principles
|
|
173
|
+
|
|
174
|
+
- **Review-only** — never modify test files; report findings for the author to act on
|
|
175
|
+
- **Evidence over opinion** — cite specific file paths, line numbers, and code snippets when flagging issues
|
|
176
|
+
- **Spot-check selectors** — delegate to a subagent with browser access to verify 2-3 suspicious locators against the live site
|
|
177
|
+
- **Convention-first** — compare against the project's existing test patterns, not an abstract ideal
|
|
178
|
+
- **Bounded output** — the review should be actionable and finite, not a full rewrite specification
|
|
179
|
+
- **Severity matters** — a missing `await` is a blocker; a naming style preference is a suggestion
|
|
180
|
+
|
|
181
|
+
## Example Usage
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
Claude Code: /review-test-code tests/e2e/login.spec.ts
|
|
185
|
+
Codex: $review-test-code tests/e2e/login.spec.ts
|
|
186
|
+
|
|
187
|
+
Claude Code: /review-test-code tests/e2e/
|
|
188
|
+
Codex: $review-test-code tests/e2e/
|
|
189
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Review Playwright Test Code"
|
|
3
|
+
short_description: "Review Playwright test implementation for stability and correctness"
|
|
4
|
+
default_prompt: "Review this Playwright test implementation before execution and flag quality issues."
|
|
5
|
+
|
|
6
|
+
dependencies:
|
|
7
|
+
tools:
|
|
8
|
+
- type: "mcp"
|
|
9
|
+
value: "agent-web-interface"
|
|
10
|
+
description: "Browser automation MCP used to verify selectors against the live site"
|