@athenaflow/plugin-e2e-test-builder 2.0.9 → 2.0.10

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.
Files changed (167) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/dist/{2.0.8 → 2.0.10}/.agents/plugins/marketplace.json +1 -1
  4. package/dist/{2.0.9 → 2.0.10}/claude/plugin/.claude-plugin/plugin.json +1 -1
  5. package/dist/{2.0.9 → 2.0.10}/claude/plugin/package.json +8 -2
  6. package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/add-e2e-tests/SKILL.md +18 -65
  7. package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/add-e2e-tests/agents/openai.yaml +1 -1
  8. package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/add-e2e-tests/references/error-recovery.md +3 -3
  9. package/dist/{2.0.8/codex → 2.0.10/claude}/plugin/skills/add-e2e-tests/references/scaffolding.md +1 -1
  10. package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/fix-flaky-tests/SKILL.md +1 -1
  11. package/dist/{2.0.8/codex → 2.0.10/claude}/plugin/skills/fix-flaky-tests/references/fix-patterns.md +3 -2
  12. package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/generate-test-cases/SKILL.md +8 -2
  13. package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/plan-test-coverage/SKILL.md +7 -6
  14. package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-cases/SKILL.md +3 -4
  15. package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/SKILL.md +4 -3
  16. package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/api-setup-teardown.md +1 -1
  17. package/dist/{2.0.9 → 2.0.10}/codex/plugin/.codex-plugin/plugin.json +1 -1
  18. package/dist/{2.0.9 → 2.0.10}/codex/plugin/package.json +8 -2
  19. package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/add-e2e-tests/SKILL.md +18 -65
  20. package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/add-e2e-tests/agents/openai.yaml +1 -1
  21. package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/add-e2e-tests/references/error-recovery.md +3 -3
  22. package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/add-e2e-tests/references/scaffolding.md +1 -1
  23. package/dist/{2.0.8/claude → 2.0.10/codex}/plugin/skills/fix-flaky-tests/SKILL.md +1 -1
  24. package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/fix-flaky-tests/references/fix-patterns.md +3 -2
  25. package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/generate-test-cases/SKILL.md +8 -2
  26. package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/plan-test-coverage/SKILL.md +7 -6
  27. package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/review-test-cases/SKILL.md +3 -4
  28. package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/write-test-code/SKILL.md +4 -3
  29. package/dist/{2.0.9/claude → 2.0.10/codex}/plugin/skills/write-test-code/references/api-setup-teardown.md +1 -1
  30. package/dist/{2.0.9 → 2.0.10}/release.json +1 -1
  31. package/package.json +7 -1
  32. package/skills/add-e2e-tests/SKILL.md +18 -65
  33. package/skills/add-e2e-tests/agents/openai.yaml +1 -1
  34. package/skills/add-e2e-tests/references/error-recovery.md +3 -3
  35. package/skills/add-e2e-tests/references/scaffolding.md +1 -1
  36. package/skills/fix-flaky-tests/SKILL.md +1 -1
  37. package/skills/fix-flaky-tests/references/fix-patterns.md +3 -2
  38. package/skills/generate-test-cases/SKILL.md +8 -2
  39. package/skills/plan-test-coverage/SKILL.md +7 -6
  40. package/skills/review-test-cases/SKILL.md +3 -4
  41. package/skills/write-test-code/SKILL.md +4 -3
  42. package/skills/write-test-code/references/api-setup-teardown.md +1 -1
  43. package/dist/2.0.8/claude/plugin/.claude-plugin/plugin.json +0 -20
  44. package/dist/2.0.8/claude/plugin/package.json +0 -9
  45. package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/SKILL.md +0 -217
  46. package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -1
  47. package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/scaffolding.md +0 -12
  48. package/dist/2.0.8/claude/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
  49. package/dist/2.0.8/claude/plugin/skills/fix-flaky-tests/references/fix-patterns.md +0 -91
  50. package/dist/2.0.8/claude/plugin/skills/generate-test-cases/SKILL.md +0 -184
  51. package/dist/2.0.8/claude/plugin/skills/plan-test-coverage/SKILL.md +0 -116
  52. package/dist/2.0.8/codex/plugin/.codex-plugin/plugin.json +0 -15
  53. package/dist/2.0.8/codex/plugin/package.json +0 -9
  54. package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/SKILL.md +0 -217
  55. package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -1
  56. package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/error-recovery.md +0 -43
  57. package/dist/2.0.8/codex/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
  58. package/dist/2.0.8/codex/plugin/skills/fix-flaky-tests/SKILL.md +0 -160
  59. package/dist/2.0.8/codex/plugin/skills/generate-test-cases/SKILL.md +0 -184
  60. package/dist/2.0.8/codex/plugin/skills/plan-test-coverage/SKILL.md +0 -116
  61. package/dist/2.0.8/codex/plugin/skills/review-test-cases/SKILL.md +0 -147
  62. package/dist/2.0.8/codex/plugin/skills/write-test-code/SKILL.md +0 -227
  63. package/dist/2.0.8/codex/plugin/skills/write-test-code/references/api-setup-teardown.md +0 -83
  64. package/dist/2.0.8/release.json +0 -18
  65. package/dist/2.0.9/.agents/plugins/marketplace.json +0 -14
  66. package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/agents/openai.yaml +0 -10
  67. package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/authentication.md +0 -8
  68. package/dist/2.0.9/claude/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
  69. package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/SKILL.md +0 -142
  70. package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -3
  71. package/dist/2.0.9/claude/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -4
  72. package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -3
  73. package/dist/2.0.9/claude/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -10
  74. package/dist/2.0.9/claude/plugin/skills/generate-test-cases/agents/claude.yaml +0 -3
  75. package/dist/2.0.9/claude/plugin/skills/generate-test-cases/agents/openai.yaml +0 -10
  76. package/dist/2.0.9/claude/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -36
  77. package/dist/2.0.9/claude/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -3
  78. package/dist/2.0.9/claude/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -10
  79. package/dist/2.0.9/claude/plugin/skills/review-test-cases/agents/claude.yaml +0 -3
  80. package/dist/2.0.9/claude/plugin/skills/review-test-cases/agents/openai.yaml +0 -10
  81. package/dist/2.0.9/claude/plugin/skills/review-test-code/SKILL.md +0 -189
  82. package/dist/2.0.9/claude/plugin/skills/review-test-code/agents/claude.yaml +0 -3
  83. package/dist/2.0.9/claude/plugin/skills/review-test-code/agents/openai.yaml +0 -10
  84. package/dist/2.0.9/claude/plugin/skills/write-test-code/agents/claude.yaml +0 -3
  85. package/dist/2.0.9/claude/plugin/skills/write-test-code/agents/openai.yaml +0 -10
  86. package/dist/2.0.9/claude/plugin/skills/write-test-code/references/anti-patterns.md +0 -88
  87. package/dist/2.0.9/claude/plugin/skills/write-test-code/references/auth-patterns.md +0 -63
  88. package/dist/2.0.9/claude/plugin/skills/write-test-code/references/mapping-tables.md +0 -56
  89. package/dist/2.0.9/claude/plugin/skills/write-test-code/references/network-interception.md +0 -56
  90. package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/agents/openai.yaml +0 -10
  91. package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/authentication.md +0 -8
  92. package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/error-recovery.md +0 -43
  93. package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/scaffolding.md +0 -12
  94. package/dist/2.0.9/codex/plugin/skills/add-e2e-tests/references/tracker-template.md +0 -53
  95. package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/SKILL.md +0 -142
  96. package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -3
  97. package/dist/2.0.9/codex/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -4
  98. package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/SKILL.md +0 -160
  99. package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -3
  100. package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -10
  101. package/dist/2.0.9/codex/plugin/skills/fix-flaky-tests/references/fix-patterns.md +0 -91
  102. package/dist/2.0.9/codex/plugin/skills/generate-test-cases/agents/claude.yaml +0 -3
  103. package/dist/2.0.9/codex/plugin/skills/generate-test-cases/agents/openai.yaml +0 -10
  104. package/dist/2.0.9/codex/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -36
  105. package/dist/2.0.9/codex/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -3
  106. package/dist/2.0.9/codex/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -10
  107. package/dist/2.0.9/codex/plugin/skills/review-test-cases/SKILL.md +0 -147
  108. package/dist/2.0.9/codex/plugin/skills/review-test-cases/agents/claude.yaml +0 -3
  109. package/dist/2.0.9/codex/plugin/skills/review-test-cases/agents/openai.yaml +0 -10
  110. package/dist/2.0.9/codex/plugin/skills/review-test-code/SKILL.md +0 -189
  111. package/dist/2.0.9/codex/plugin/skills/review-test-code/agents/claude.yaml +0 -3
  112. package/dist/2.0.9/codex/plugin/skills/review-test-code/agents/openai.yaml +0 -10
  113. package/dist/2.0.9/codex/plugin/skills/write-test-code/SKILL.md +0 -227
  114. package/dist/2.0.9/codex/plugin/skills/write-test-code/agents/claude.yaml +0 -3
  115. package/dist/2.0.9/codex/plugin/skills/write-test-code/agents/openai.yaml +0 -10
  116. package/dist/2.0.9/codex/plugin/skills/write-test-code/references/anti-patterns.md +0 -88
  117. package/dist/2.0.9/codex/plugin/skills/write-test-code/references/api-setup-teardown.md +0 -83
  118. package/dist/2.0.9/codex/plugin/skills/write-test-code/references/auth-patterns.md +0 -63
  119. package/dist/2.0.9/codex/plugin/skills/write-test-code/references/mapping-tables.md +0 -56
  120. package/dist/2.0.9/codex/plugin/skills/write-test-code/references/network-interception.md +0 -56
  121. package/skills/add-e2e-tests/references/tracker-template.md +0 -53
  122. /package/dist/{2.0.9 → 2.0.10}/claude/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -0
  123. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/add-e2e-tests/references/authentication.md +0 -0
  124. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/SKILL.md +0 -0
  125. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -0
  126. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -0
  127. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -0
  128. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -0
  129. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/generate-test-cases/agents/claude.yaml +0 -0
  130. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/generate-test-cases/agents/openai.yaml +0 -0
  131. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -0
  132. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -0
  133. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -0
  134. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-cases/agents/claude.yaml +0 -0
  135. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-cases/agents/openai.yaml +0 -0
  136. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-code/SKILL.md +0 -0
  137. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-code/agents/claude.yaml +0 -0
  138. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/review-test-code/agents/openai.yaml +0 -0
  139. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/agents/claude.yaml +0 -0
  140. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/agents/openai.yaml +0 -0
  141. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/anti-patterns.md +0 -0
  142. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/auth-patterns.md +0 -0
  143. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/mapping-tables.md +0 -0
  144. /package/dist/{2.0.8 → 2.0.10}/claude/plugin/skills/write-test-code/references/network-interception.md +0 -0
  145. /package/dist/{2.0.9 → 2.0.10}/codex/plugin/skills/add-e2e-tests/agents/claude.yaml +0 -0
  146. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/add-e2e-tests/references/authentication.md +0 -0
  147. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/analyze-test-codebase/SKILL.md +0 -0
  148. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/analyze-test-codebase/agents/claude.yaml +0 -0
  149. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/analyze-test-codebase/agents/openai.yaml +0 -0
  150. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/fix-flaky-tests/agents/claude.yaml +0 -0
  151. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/fix-flaky-tests/agents/openai.yaml +0 -0
  152. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/generate-test-cases/agents/claude.yaml +0 -0
  153. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/generate-test-cases/agents/openai.yaml +0 -0
  154. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/generate-test-cases/references/scenario-categories.md +0 -0
  155. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/plan-test-coverage/agents/claude.yaml +0 -0
  156. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/plan-test-coverage/agents/openai.yaml +0 -0
  157. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-cases/agents/claude.yaml +0 -0
  158. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-cases/agents/openai.yaml +0 -0
  159. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-code/SKILL.md +0 -0
  160. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-code/agents/claude.yaml +0 -0
  161. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/review-test-code/agents/openai.yaml +0 -0
  162. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/agents/claude.yaml +0 -0
  163. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/agents/openai.yaml +0 -0
  164. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/anti-patterns.md +0 -0
  165. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/auth-patterns.md +0 -0
  166. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/mapping-tables.md +0 -0
  167. /package/dist/{2.0.8 → 2.0.10}/codex/plugin/skills/write-test-code/references/network-interception.md +0 -0
@@ -1,20 +0,0 @@
1
- {
2
- "name": "e2e-test-builder",
3
- "description": "Full-pipeline Playwright E2E test generation — explores your live site via browser, detects existing test conventions, plans coverage gaps, produces reviewed test specs, writes production-grade test code with quality gates, and stabilizes flaky tests",
4
- "version": "2.0.8",
5
- "author": {
6
- "name": "Athenaflow"
7
- },
8
- "keywords": [
9
- "playwright",
10
- "e2e",
11
- "testing",
12
- "test-generation",
13
- "test-automation",
14
- "browser-exploration",
15
- "quality-gates",
16
- "coverage-planning",
17
- "flaky-test-fix"
18
- ],
19
- "category": "testing"
20
- }
@@ -1,9 +0,0 @@
1
- {
2
- "name": "@athenaflow/plugin-e2e-test-builder",
3
- "version": "2.0.8",
4
- "description": "Full-pipeline Playwright E2E test generation — explores your live site via browser, detects existing test conventions, plans coverage gaps, produces reviewed test specs, writes production-grade test code with quality gates, and stabilizes flaky tests",
5
- "license": "MIT",
6
- "publishConfig": {
7
- "access": "public"
8
- }
9
- }
@@ -1,217 +0,0 @@
1
- ---
2
- name: add-e2e-tests
3
- description: >
4
- THE DEFAULT ENTRY POINT for all Playwright / E2E test work. This skill should be used FIRST
5
- whenever the user wants to add, create, or set up end-to-end tests for any feature, page, or
6
- application. Runs the full pipeline: analyze codebase, explore the live site, plan coverage,
7
- generate TC-ID specs, run quality-gate reviews, write production-grade test code, and execute.
8
- Delegates to sub-skills (analyze-test-codebase, plan-test-coverage, generate-test-cases,
9
- review-test-cases, write-test-code, review-test-code, fix-flaky-tests) internally — do NOT
10
- skip to sub-skills directly unless the user explicitly requests a narrow activity.
11
- Iterative and resumable via tracker file. Uses subagent delegation to save context.
12
- user-invocable: true
13
- argument-hint: "<url> <feature to test>"
14
- allowed-tools: Read Write Edit Glob Grep Bash Task
15
- ---
16
-
17
- # Add E2E Tests
18
-
19
- Go from zero to passing Playwright tests for the target feature in one interactive session.
20
-
21
- ## Input
22
-
23
- Parse the target URL and feature description from: $ARGUMENTS
24
-
25
- Derive a **feature slug** from the feature description (e.g., "Login flow" → `login`, "Checkout with payment" → `checkout`). Use this slug for file naming throughout.
26
-
27
- ## Session Protocol
28
-
29
- ### 1. Orient: Understand the Project, the Product, and Your Capabilities
30
-
31
- Before planning any work, build deep situational awareness. This step determines the quality of everything that follows — rushed orientation leads to missed test cases and wasted effort.
32
-
33
- **Check for existing progress:**
34
- - If `e2e-tracker.md` exists in the project root, read it and resume from where you left off — skip to **step 2 (Plan)** with the remaining work.
35
- - If no tracker exists, this is a fresh start. Proceed with orientation below.
36
-
37
- #### First: create initial tasks and tracker
38
-
39
- As soon as you parse the user's request:
40
-
41
- 1. **Create the tracker** — write `e2e-tracker.md` with the goal (URL, feature, slug) and a skeleton plan.
42
- 2. **Create high-level tasks** for the work ahead — analyze codebase, explore the product, plan coverage, generate test specs, write tests, verify tests.
43
-
44
- These are your starting skeleton. As you work through orientation and discover the actual shape of the work, refine both the tasks and the tracker — break tasks into granular sub-tasks, add new ones, remove ones that don't apply.
45
-
46
- Treat the task list as a visible milestone log. Keep it concise, but update it continuously. Do not leave broad tasks open until the end and then mark everything complete in one batch.
47
-
48
- #### 1a. Understand the codebase
49
-
50
- - Does a Playwright config exist (`playwright.config.{ts,js,mjs}`)? If not, you will need to scaffold one (see Scaffolding section).
51
- - Are there existing tests? What conventions do they follow — naming, locators, fixtures, page objects, auth?
52
- - Load the `analyze-test-codebase` skill and follow its methodology.
53
-
54
- #### 1b. Understand the product
55
-
56
- This is the most important part of orientation. You cannot write good tests for a product you don't understand.
57
-
58
- - **Read existing test cases** — if `test-cases/*.md` files exist, read them to understand what journeys have been mapped. Look at what's covered AND what's missing.
59
- - **Browse the actual product** — load the `agent-web-interface-guide` skill and use the browser MCP tools to walk through the feature you're testing. Don't just skim the page — interact with it as a user would: fill forms, click buttons, trigger validation, navigate between pages, check error states.
60
- - **Map the user journey in detail** — understand the complete flow: entry points, happy paths, error paths, edge cases, what happens with invalid input, what happens when the user goes back, what conditional UI exists.
61
-
62
- Why this matters: absent explicit exploration, agents tend to write tests based on assumptions about how a product works rather than how it actually works. The result is tests that target imaginary behavior or miss critical real behavior. Spending time here prevents both.
63
-
64
- #### 1c. Know your skills
65
-
66
- You have access to specialized skills that contain deep domain knowledge. Load the relevant skill before performing each activity — skills prevent improvisation and encode best practices.
67
-
68
- | Activity | Skill |
69
- |----------|-------|
70
- | Analyzing test setup, config, conventions | `analyze-test-codebase` |
71
- | Deciding what to test, coverage gaps, priorities | `plan-test-coverage` |
72
- | Opening a URL, browsing, using browser MCP tools | `agent-web-interface-guide` |
73
- | Creating TC-ID specs from site exploration | `generate-test-cases` |
74
- | Reviewing TC-ID specs before implementation | `review-test-cases` |
75
- | Writing, editing, or refactoring test code | `write-test-code` |
76
- | Reviewing test code before execution signoff | `review-test-code` |
77
- | Debugging test failures, checking stability | `fix-flaky-tests` |
78
-
79
- Before doing a substantial activity, load the skill that covers that activity so you can follow its workflow rather than improvising.
80
-
81
- #### 1d. Update the tracker with orientation findings
82
-
83
- After orienting, update the tracker with what you learned about the codebase and product, conventions discovered, and your refined plan. The tracker must always answer these four questions for anyone reading it cold:
84
-
85
- 1. What is the goal?
86
- 2. What has been done?
87
- 3. What is remaining?
88
- 4. What should I do next?
89
-
90
- See [references/tracker-template.md](references/tracker-template.md) for a concrete template.
91
-
92
- ### 2. Plan: Refine Tasks Into Granular Checkpoints
93
-
94
- By now you have initial tasks and a tracker from step 1. Refine tasks into granular checkpoints. The plan should flow from what you learned during orientation, not from a fixed template.
95
-
96
- #### Task granularity
97
-
98
- Think in small checkpoints, not big phases. Each task should represent a concrete, verifiable unit of progress.
99
-
100
- Too coarse: "Analyze codebase", "Write tests", "Verify tests"
101
-
102
- Right granularity:
103
- - "Read playwright.config.ts — extract baseURL, testDir, projects"
104
- - "Read 2 existing test files — identify locator strategy and naming pattern"
105
- - "Write conventions report to e2e-plan/conventions.md"
106
- - "Navigate to /login — catalog all form fields, buttons, and validation messages"
107
- - "Submit login form empty — record all validation error messages and their positions"
108
- - "Submit login with invalid email format — record inline validation behavior"
109
- - "Write TC-LOGIN-001: happy path login with valid credentials"
110
- - "Write TC-LOGIN-002: login with empty email shows required field error"
111
- - "Run login.spec.ts and record full output"
112
- - "Fix TC-LOGIN-003: selector not found — browse page and re-extract selector"
113
- - "Re-run login.spec.ts — verify fix didn't break other tests"
114
- - "Check all TC-IDs from spec are present in test files"
115
-
116
- **Never be conservative.** More tasks is better than fewer. If you discover new work mid-session (a test fails, a selector changed, a form has unexpected validation), add tasks dynamically. The task list is a living document that reflects the real state of the work.
117
-
118
- Create tasks for verification steps too (running tests, checking coverage, browsing to confirm selectors), not just implementation.
119
-
120
- Update task status as each checkpoint completes. A good pattern is: finish exploration and mark it complete, finish coverage/spec work and mark it complete, finish implementation and mark it complete, then finish review/execution and mark it complete. Do not keep all milestones open until session end.
121
-
122
- ### 3. Execute
123
-
124
- Work through your tasks. Load the relevant skill before each activity.
125
-
126
- #### Planning uses the browser heavily
127
-
128
- When planning what to test (coverage planning, test case generation), use the browser extensively. Don't just catalog elements — interact with the product to discover:
129
- - What validation messages appear for each field?
130
- - What happens when you submit with missing data?
131
- - What error states exist (network errors, empty states, permission errors)?
132
- - What does the flow look like end-to-end, not just page-by-page?
133
- - What edge cases exist (special characters, long inputs, rapid clicks)?
134
- - What UI changes conditionally (loading states, disabled buttons, progressive disclosure)?
135
-
136
- Every test case you generate should trace back to something you actually observed or deliberately triggered in the browser. This is how you avoid introducing useless test cases (testing imaginary behavior) and avoid missing important ones (behavior you didn't think to check).
137
-
138
- #### Subagent delegation
139
-
140
- Delegate heavy browser exploration and test writing to subagents when that saves context for orchestration, verification, and debugging. When delegating:
141
- - Pass the relevant file paths (conventions, coverage plan, test specs)
142
- - Instruct the subagent to invoke the appropriate skill (subagents inherit access to plugin skills)
143
- - Specify concrete output expectations (file path, format, TC-ID conventions)
144
-
145
- #### Quality gates
146
-
147
- Two review gates and a test execution checkpoint are mandatory during execution. The review gates are review-only — they produce findings but do not modify files.
148
-
149
- **Gate 1: Review test case specs** (after `generate-test-cases`, before `write-test-code`)
150
- 1. Load the `review-test-cases` skill and run it against `test-cases/<feature>.md`
151
- 2. If verdict is **NEEDS REVISION** — address all blockers in the spec before proceeding to implementation
152
- 3. If verdict is **PASS WITH WARNINGS** — address warnings if quick, otherwise note them and proceed
153
- 4. Record the review verdict in the tracker
154
-
155
- **Gate 2: Review test code** (after `write-test-code`, before final test execution)
156
- 1. Load the `review-test-code` skill and run it against the implemented test files
157
- 2. If verdict is **NEEDS REVISION** — fix all blockers before running tests for signoff
158
- 3. If verdict is **PASS WITH WARNINGS** — fix warnings that affect stability, proceed with execution
159
- 4. Record the review verdict in the tracker
160
-
161
- **Checkpoint: Test execution**
162
- 1. Run the tests: `npx playwright test <file> --reporter=list 2>&1`
163
- 2. Record full output — green test output is the only proof of correctness
164
- 3. If tests fail, load the `fix-flaky-tests` skill and follow its structured diagnostic approach. Do not guess-and-retry.
165
- 4. Maximum 3 fix-and-rerun cycles per test. If stuck after 3 cycles, record the diagnostic output in the tracker and move on.
166
-
167
- **Test execution and coverage checks must never be delegated to subagents.** Run `npx playwright test` directly and record the output.
168
-
169
- #### Update the tracker as you work
170
-
171
- Do not wait until session end. After each meaningful chunk of progress (completing a step, discovering a blocker, producing an artifact), update the tracker. If your context window resets, only what's in the tracker survives.
172
-
173
- Keep the tracker and task list synchronized. If you record progress in the tracker, update the corresponding task status in the same phase of work.
174
-
175
- #### Error recovery
176
-
177
- If infrastructure failures occur (browser MCP unavailable, clone failures, npm install errors), see [references/error-recovery.md](references/error-recovery.md) for diagnostic steps. General pattern: diagnose, attempt one known fix, if still stuck record in tracker and ask the user.
178
-
179
- ### 4. End of Session
180
-
181
- Before exiting:
182
- 1. Ensure the tracker reflects all progress, discoveries, and blockers from this session
183
- 2. Write clear instructions for what the next session should do
184
- 3. If all work is complete and all tests pass with full TC-ID coverage: write `<!-- E2E_COMPLETE -->` as the last line of the tracker
185
- 4. If an unrecoverable blocker prevents progress: write `<!-- E2E_BLOCKED: reason -->` as the last line
186
-
187
- Do not write terminal markers prematurely. Only after you are confident the work is truly done or truly stuck.
188
-
189
- ## Scaffolding
190
-
191
- If Playwright is not set up in the target project, follow the procedure in [references/scaffolding.md](references/scaffolding.md) to clone the boilerplate, merge configuration, and install dependencies. Log all scaffolding steps in the tracker.
192
-
193
- ## Authentication
194
-
195
- If the target feature requires login, follow [references/authentication.md](references/authentication.md). Key rule: never hardcode credentials — use environment variables or `storageState`.
196
-
197
- ## Principles
198
-
199
- - **Skills carry the knowledge** — load the relevant skill before each activity; do not improvise
200
- - **Subagent-driven** — delegate heavy browser and writing work to subagents to save context
201
- - **Follow existing conventions** — match the project's test style, not a generic template
202
- - **Traceable** — every test links back to a TC-ID from the spec
203
- - **Use what the project provides** — if the scaffolded boilerplate includes Page Object Models (BasePage, pages/), path aliases (tsconfig paths), or utility modules, USE them in generated tests. Do not ship infrastructure that tests ignore. If a boilerplate file is unused after test generation, either integrate it or remove it — dead code in test infrastructure causes confusion.
204
- - **No arbitrary waits** — use Playwright's built-in auto-wait and event-driven waits
205
- - **API before UI for setup** — use API calls (`request` fixture) for test data; reserve UI for what you are verifying
206
- - **Test failures, not just success** — every feature needs error path coverage
207
- - **Artifacts live in standard locations** — `e2e-plan/` for analysis, `test-cases/` for specs, project test dir for test files
208
-
209
- ## Example Usage
210
-
211
- ```
212
- Claude Code: /add-e2e-tests https://myapp.com/checkout Checkout flow with cart, shipping, and payment
213
- Codex: $add-e2e-tests https://myapp.com/checkout Checkout flow with cart, shipping, and payment
214
-
215
- Claude Code: /add-e2e-tests https://myapp.com/login User authentication including social login
216
- Codex: $add-e2e-tests https://myapp.com/login User authentication including social login
217
- ```
@@ -1,12 +0,0 @@
1
- # Scaffolding Playwright from Boilerplate
2
-
3
- If Playwright is not set up in the target project, follow this procedure:
4
-
5
- 1. Clone `git@github.com:lespaceman/playwright-typescript-e2e-boilerplate.git` into a temporary directory.
6
- 2. Copy config, fixtures, pages, and utils into the project. Do not overwrite existing files.
7
- 3. Update `baseURL` to the target URL and remove example tests.
8
- - **Test execution strategy:** If the project needs role-based or category-based test filtering, configure it via Playwright `--grep` tags or file naming conventions (`*.admin.spec.ts`), NOT via `testIgnore` regex patterns. A `testIgnore` regex becomes a maintenance trap — every new test file requires updating the regex. If the boilerplate includes a `testIgnore` regex, replace it with tag-based filtering.
9
- 4. Merge devDependencies into `package.json`.
10
- 5. Run `npm install && npx playwright install --with-deps chromium`.
11
- 6. Clean up the temp clone.
12
- 7. Log all scaffolding steps in the tracker.
@@ -1,53 +0,0 @@
1
- # Tracker Template: e2e-tracker.md
2
-
3
- Use this as a starting template when creating the tracker file. Adapt sections as needed.
4
-
5
- ---
6
-
7
- ```markdown
8
- # E2E Test Tracker
9
-
10
- ## Goal
11
-
12
- - **URL:** https://myapp.com/checkout
13
- - **Feature:** Checkout flow with cart, shipping, and payment
14
- - **Slug:** checkout
15
-
16
- ## Progress
17
-
18
- ### Session 1 — 2026-04-01
19
-
20
- - Analyzed codebase: Playwright 1.42, TypeScript, existing auth fixture in `tests/fixtures/auth.ts`
21
- - Browsed checkout flow: 4-step wizard (cart review, shipping, payment, confirmation)
22
- - Discovered 3 form validation states per step
23
- - Generated test spec: `test-cases/checkout.md` with TC-CHECKOUT-001 through TC-CHECKOUT-012
24
- - Review gate passed with warnings (TC-CHECKOUT-008 needs clarification on coupon edge case)
25
-
26
- ### Session 2 — 2026-04-02
27
-
28
- - Wrote `tests/checkout.spec.ts` covering TC-CHECKOUT-001 through TC-CHECKOUT-012
29
- - Code review gate passed
30
- - Ran tests: 10/12 passing, 2 failing (TC-CHECKOUT-006: selector stale, TC-CHECKOUT-011: timeout)
31
- - Fixed TC-CHECKOUT-006: updated selector from `.price` to `[data-testid="cart-total"]`
32
- - Fixed TC-CHECKOUT-011: added `waitForResponse` before assertion
33
-
34
- ## Remaining
35
-
36
- - Re-run full suite to confirm fixes
37
- - Verify TC-ID coverage: all 12 specs should map to test code
38
-
39
- ## Next Steps
40
-
41
- - Run `npx playwright test tests/checkout.spec.ts --reporter=list` and record output
42
- - If all green, mark complete
43
- - If failures remain, diagnose with `fix-flaky-tests` skill
44
-
45
- <!-- E2E_COMPLETE -->
46
- ```
47
-
48
- ---
49
-
50
- **Terminal markers** (write as the last line of the tracker when appropriate):
51
-
52
- - `<!-- E2E_COMPLETE -->` — all tests pass, all TC-IDs covered, work is done
53
- - `<!-- E2E_BLOCKED: reason -->` — unrecoverable blocker prevents further progress (e.g., `<!-- E2E_BLOCKED: login requires 2FA token we cannot automate -->`)
@@ -1,91 +0,0 @@
1
- # Fix Patterns by Root Cause
2
-
3
- Code examples for each root cause category. Apply only after diagnosing the cause in Step 2.
4
-
5
- ## Timing Fixes — Replace Sleeps with Event-Driven Waits
6
-
7
- ```typescript
8
- // BAD: arbitrary sleep
9
- await page.waitForTimeout(2000);
10
- await expect(element).toBeVisible();
11
-
12
- // GOOD: wait for the network event that loads the content
13
- await page.waitForResponse(resp => resp.url().includes('/api/data'));
14
- await expect(element).toBeVisible();
15
-
16
- // GOOD: wait for loading indicator to disappear
17
- await expect(page.getByRole('progressbar')).toBeHidden();
18
- await expect(element).toBeVisible();
19
-
20
- // GOOD: wait for navigation to complete
21
- await page.goto('/page', { waitUntil: 'networkidle' });
22
-
23
- // GOOD: use auto-retrying assertion (retries until timeout)
24
- await expect(page.getByText(/loaded/i)).toBeVisible({ timeout: 10000 });
25
- ```
26
-
27
- ## State Isolation Fixes
28
-
29
- ```typescript
30
- // Unique data per test
31
- const uniqueEmail = `test-${Date.now()}@example.com`;
32
-
33
- // Reset state via API before each test
34
- test.beforeEach(async ({ request }) => {
35
- await request.post('/api/test/reset');
36
- });
37
-
38
- // Use fresh browser context (default in Playwright, but verify)
39
- // Do NOT share page or context between tests
40
- ```
41
-
42
- ## Race Condition Fixes
43
-
44
- ```typescript
45
- // Wait for hydration/framework readiness
46
- await page.waitForFunction(() =>
47
- document.querySelector('[data-hydrated="true"]')
48
- );
49
-
50
- // Use Promise.all for action + expected response
51
- const [response] = await Promise.all([
52
- page.waitForResponse('**/api/submit'),
53
- submitButton.click(),
54
- ]);
55
-
56
- // Wait for animation/transition to complete
57
- await expect(modal).toBeVisible();
58
- await page.waitForFunction(() =>
59
- !document.querySelector('.modal-animating')
60
- );
61
- ```
62
-
63
- ## Selector Fixes
64
-
65
- ```typescript
66
- // BAD: position-dependent, matches wrong element if order changes
67
- page.locator('.item').first();
68
-
69
- // GOOD: scoped to container with unique content
70
- page.getByRole('listitem').filter({ hasText: 'Specific Item' });
71
-
72
- // GOOD: use test IDs for ambiguous elements
73
- page.getByTestId('cart-item-sku-123');
74
-
75
- // GOOD: scope to a region first, then find within
76
- page.locator('main').getByRole('button', { name: /submit/i });
77
- ```
78
-
79
- ## Environment Fixes
80
-
81
- ```typescript
82
- // Set explicit viewport in test or config
83
- test.use({ viewport: { width: 1280, height: 720 } });
84
-
85
- // Use timezone-agnostic assertions
86
- await expect(dateElement).toContainText(/\d{4}/); // year, not full date string
87
-
88
- // Block third-party scripts that interfere
89
- await page.route('**/analytics/**', route => route.abort());
90
- await page.route('**/chat-widget/**', route => route.abort());
91
- ```
@@ -1,184 +0,0 @@
1
- ---
2
- name: generate-test-cases
3
- description: >
4
- Use when the user wants detailed TC-ID test case specifications for a web app feature, not executable code. It explores the target flow, covers happy paths, validation failures, edge cases, and required error states, then writes structured specs under `test-cases/`. Use it after coverage planning or when the user explicitly asks for test cases or TC-IDs. It does not write Playwright code.
5
- allowed-tools: Read Write Bash Glob Grep Task
6
- ---
7
-
8
- # Generate Test Cases
9
-
10
- Generate comprehensive, structured test case specifications for a web application by exploring it live in a browser.
11
-
12
- ## Input
13
-
14
- Parse the target URL and user journey description from: $ARGUMENTS
15
-
16
- ## Workflow
17
-
18
- ### Step 1: Understand the Journey and Existing Coverage
19
-
20
- Parse the journey description to identify:
21
- - **Base URL** and target feature area
22
- - **Primary user goal** (what the happy path achieves)
23
- - **Key interaction points** (forms, buttons, navigation, selections)
24
- - **Implicit requirements** (validation, authentication, authorization)
25
-
26
- Check for existing test coverage before exploring:
27
- - Search for existing test files related to this feature (`Grep` for feature keywords in `**/*.spec.ts`, `**/*.test.ts`)
28
- - Read any existing `test-cases/*.md` spec files for this feature
29
- - Note existing TC-IDs to avoid conflicts — continue numbering from the highest existing ID
30
- - Focus on gaps in existing coverage
31
-
32
- ### Step 2: Explore the Happy Path
33
-
34
- Use a subagent for browser exploration when that saves context. Pass it:
35
- - The URL and journey description
36
- - Instructions to walk through each step using `find`, `get_form`, `get_field`
37
- - Instructions to catalog all interactive elements, form fields, navigation options
38
- - Instructions to use `get_element` on key elements to capture the best Playwright selector
39
- - Instructions to return results in this structured format for each step:
40
-
41
- ```
42
- Step: <what was done>
43
- URL: <current URL after action>
44
- Elements found:
45
- - Submit button: getByRole('button', { name: /submit/i })
46
- - Email field: getByLabel(/email/i)
47
- - Error message: getByText(/required/i)
48
- Observations: <what appeared, validation messages, state changes>
49
- ```
50
-
51
- This structured output ensures selectors survive the handoff to the spec file and ultimately to `write-test-code`.
52
-
53
- ### Step 3: Explore Alternative and Failure Paths
54
-
55
- Launch another subagent, or continue in the main thread if the flow is small, to systematically probe beyond the happy path:
56
-
57
- **Validation & Error Handling:**
58
- - Submit forms with empty required fields
59
- - Enter invalid formats (wrong email, short passwords, letters in number fields)
60
- - Exceed field length limits, use special characters and Unicode
61
-
62
- **Boundary Conditions:**
63
- - Min/max values for numeric fields
64
- - Single character and max length strings
65
- - Zero quantities, negative numbers, date boundaries
66
-
67
- **State & Navigation:**
68
- - Browser back/forward during multi-step flows
69
- - Page refresh mid-flow
70
- - Accessing later steps directly via URL
71
-
72
- **UI & Interaction:**
73
- - Rapid repeated clicks on submit buttons
74
- - Dropdown default values, empty options
75
- - Loading states, disabled states, conditional visibility
76
-
77
- **Access & Authorization (observe only):**
78
- - Redirect behavior for unauthenticated users
79
- - Permission-related error messages
80
-
81
- ### Step 4: Reason About Additional Scenarios
82
-
83
- After exploration, reason about scenarios that could not be directly triggered but must be covered:
84
-
85
- - **Network & Performance** — failure modes, slow responses, large data sets, offline behavior
86
- - **Accessibility (WCAG 2.1 AA)** — keyboard navigation, screen reader support, focus management, contrast
87
- - **Visual Consistency** — layout stability, responsive breakpoints, dark mode
88
- - **Cross-browser** — Safari/Firefox/mobile-specific behavioral differences
89
- - **Concurrent & Session** — session expiry, multi-tab conflicts, race conditions
90
-
91
- See [references/scenario-categories.md](references/scenario-categories.md) for detailed checklists within each category.
92
-
93
- ### Step 5: Generate Test Case Specifications
94
-
95
- Write structured test cases to `test-cases/<feature-name>.md`.
96
-
97
- ## Output Specification
98
-
99
- ### Test Case Format
100
-
101
- ```markdown
102
- ### TC-<FEATURE>-<NUMBER>: <Descriptive title>
103
-
104
- **Priority:** Critical | High | Medium | Low
105
- **Category:** Happy Path | Validation | Error Handling | Edge Case | Boundary | Security | Accessibility | Visual | Performance | Network Error | UX
106
- **Preconditions:**
107
- - <What must be true before this test>
108
-
109
- **Steps:**
110
- 1. <Action the tester performs>
111
- 2. <Next action>
112
-
113
- **Expected Result:**
114
- - <What should happen>
115
-
116
- **Selectors observed:**
117
- - <element>: `getByRole('button', { name: /submit/i })` or `getByLabel(/email/i)` — from `get_element`/`find` during exploration
118
- - (Include selectors for key interactive elements so `write-test-code` doesn't have to rediscover them)
119
-
120
- **Notes:**
121
- - <Additional context discovered during exploration>
122
- ```
123
-
124
- ### Output Organization
125
-
126
- ```markdown
127
- # Test Cases: <Feature Name>
128
-
129
- **URL:** <base URL>
130
- **Generated:** <date>
131
- **Journey:** <brief description>
132
-
133
- ## Summary
134
- - Total test cases: <count>
135
- - Critical: <count> | High: <count> | Medium: <count> | Low: <count>
136
-
137
- ## Happy Path
138
- ## Validation & Error Handling
139
- ## Edge Cases
140
- ## Boundary Conditions
141
- ## Security & Access
142
- ## Network Error Scenarios
143
- ## Visual & Responsive
144
- ## Performance & Loading
145
- ## Accessibility & UX
146
- ```
147
-
148
- ### File Naming Convention
149
-
150
- When generating specs that span multiple roles or test categories, recommend role-based file naming (`*.admin.spec.ts`, `*.user.spec.ts`) or Playwright tag annotations (`@admin`, `@smoke`) in the spec. This enables selective execution via `--grep @admin` or glob patterns instead of fragile `testIgnore` regex in playwright.config.ts. NEVER recommend a `testIgnore` regex that must be updated for every new test file.
151
-
152
- ### TC-ID Convention
153
-
154
- - Format: `TC-<FEATURE>-<NNN>` where NNN is zero-padded to 3 digits
155
- - Feature abbreviation: short and clear (LOGIN, CHECKOUT, SEARCH, SIGNUP)
156
- - Start at 001, sequential, unique within the document
157
- - Happy path first, then validation, then edge cases
158
-
159
- ## Quality Standards
160
-
161
- - Every test case must be **independently executable** — no hidden dependencies
162
- - Steps must be **concrete and unambiguous** — "click the Submit button" not "submit the form"
163
- - Expected results must be **observable and verifiable** — include actual error messages observed
164
- - Priority must be **justified** — Critical = blocks core journey, High = significant, Medium = secondary, Low = cosmetic
165
- - Every feature spec MUST include at minimum: one network error scenario (500/timeout), one empty state scenario, and one session/auth edge case (if the feature requires auth). These are non-negotiable — omitting them is a BLOCKER in the review-test-cases quality gate.
166
- - **Test case count guidance:** Aim for 15-30 test cases per feature area as a baseline. Fewer than 10 suggests missing error paths or edge cases. More than 40 suggests the feature should be split into sub-features with separate spec files. Prioritize breadth of category coverage over depth within a single category.
167
-
168
- ## Blocking Conditions
169
-
170
- Report and work around:
171
- - **Login/auth walls**: Document as precondition, test observable behavior
172
- - **CAPTCHA**: Report, skip, note in preconditions
173
- - **Payment gateways**: Don't enter real data, document flow up to that point
174
- - **Rate limiting**: Slow down, note rate limit behavior as a test case
175
-
176
- ## Example Usage
177
-
178
- ```
179
- Claude Code: /generate-test-cases https://example.com/login User logs in with email and password, sees dashboard
180
- Codex: $generate-test-cases https://example.com/login User logs in with email and password, sees dashboard
181
-
182
- Claude Code: /generate-test-cases https://shop.example.com User searches for product, adds to cart, proceeds to checkout
183
- Codex: $generate-test-cases https://shop.example.com User searches for product, adds to cart, proceeds to checkout
184
- ```