qa-skills 3.0.0 → 3.1.0

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 (262) hide show
  1. package/README.md +20 -149
  2. package/bin/cli.js +1 -40
  3. package/package.json +23 -26
  4. package/dist/agents/registry.d.ts +0 -5
  5. package/dist/agents/registry.d.ts.map +0 -1
  6. package/dist/agents/registry.js +0 -101
  7. package/dist/agents/registry.js.map +0 -1
  8. package/dist/agents/types.d.ts +0 -9
  9. package/dist/agents/types.d.ts.map +0 -1
  10. package/dist/agents/types.js +0 -2
  11. package/dist/agents/types.js.map +0 -1
  12. package/dist/dependencies.d.ts +0 -21
  13. package/dist/dependencies.d.ts.map +0 -1
  14. package/dist/dependencies.js +0 -125
  15. package/dist/dependencies.js.map +0 -1
  16. package/dist/installer.d.ts +0 -25
  17. package/dist/installer.d.ts.map +0 -1
  18. package/dist/installer.js +0 -437
  19. package/dist/installer.js.map +0 -1
  20. package/dist/scaffold.d.ts +0 -27
  21. package/dist/scaffold.d.ts.map +0 -1
  22. package/dist/scaffold.js +0 -182
  23. package/dist/scaffold.js.map +0 -1
  24. package/skills/qa-accessibility-test-writer/SKILL.md +0 -127
  25. package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +0 -349
  26. package/skills/qa-accessibility-test-writer/references/best-practices.md +0 -184
  27. package/skills/qa-accessibility-test-writer/references/wcag-tests.md +0 -331
  28. package/skills/qa-api-contract-curator/SKILL.md +0 -104
  29. package/skills/qa-api-contract-curator/references/breaking-changes.md +0 -363
  30. package/skills/qa-api-contract-curator/references/openapi-structure.md +0 -404
  31. package/skills/qa-browser-data-collector/SKILL.md +0 -132
  32. package/skills/qa-browser-data-collector/references/data-collection-checklist.md +0 -91
  33. package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +0 -113
  34. package/skills/qa-bug-ticket-creator/SKILL.md +0 -148
  35. package/skills/qa-bug-ticket-creator/references/bug-report-format.md +0 -149
  36. package/skills/qa-bug-ticket-creator/references/severity-guide.md +0 -81
  37. package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +0 -39
  38. package/skills/qa-changelog-analyzer/SKILL.md +0 -134
  39. package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +0 -138
  40. package/skills/qa-changelog-analyzer/references/impact-mapping.md +0 -120
  41. package/skills/qa-clickup-integration/SKILL.md +0 -166
  42. package/skills/qa-clickup-integration/references/api-patterns.md +0 -102
  43. package/skills/qa-clickup-integration/references/field-mapping.md +0 -71
  44. package/skills/qa-codeceptjs-writer/SKILL.md +0 -136
  45. package/skills/qa-codeceptjs-writer/references/best-practices.md +0 -207
  46. package/skills/qa-codeceptjs-writer/references/config.md +0 -255
  47. package/skills/qa-codeceptjs-writer/references/patterns.md +0 -285
  48. package/skills/qa-coverage-analyzer/SKILL.md +0 -166
  49. package/skills/qa-coverage-analyzer/references/best-practices.md +0 -142
  50. package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +0 -155
  51. package/skills/qa-coverage-analyzer/references/tools.md +0 -204
  52. package/skills/qa-cypress-writer/SKILL.md +0 -134
  53. package/skills/qa-cypress-writer/references/assertions.md +0 -121
  54. package/skills/qa-cypress-writer/references/best-practices.md +0 -82
  55. package/skills/qa-cypress-writer/references/config.md +0 -121
  56. package/skills/qa-cypress-writer/references/patterns.md +0 -170
  57. package/skills/qa-data-factory/SKILL.md +0 -126
  58. package/skills/qa-data-factory/references/factory-patterns.md +0 -164
  59. package/skills/qa-data-factory/references/faker-guide.md +0 -131
  60. package/skills/qa-diagram-generator/SKILL.md +0 -125
  61. package/skills/qa-diagram-generator/references/c4-model.md +0 -53
  62. package/skills/qa-diagram-generator/references/charts.md +0 -58
  63. package/skills/qa-diagram-generator/references/class-diagram.md +0 -85
  64. package/skills/qa-diagram-generator/references/er-diagram.md +0 -69
  65. package/skills/qa-diagram-generator/references/flowchart.md +0 -92
  66. package/skills/qa-diagram-generator/references/from-screenshot.md +0 -45
  67. package/skills/qa-diagram-generator/references/gantt.md +0 -49
  68. package/skills/qa-diagram-generator/references/journey.md +0 -50
  69. package/skills/qa-diagram-generator/references/mindmap.md +0 -75
  70. package/skills/qa-diagram-generator/references/sequence.md +0 -69
  71. package/skills/qa-diagram-generator/references/state-diagram.md +0 -56
  72. package/skills/qa-discovery-interview/SKILL.md +0 -182
  73. package/skills/qa-discovery-interview/references/completeness-checklist.md +0 -53
  74. package/skills/qa-discovery-interview/references/conflict-patterns.md +0 -101
  75. package/skills/qa-discovery-interview/references/qa-categories.md +0 -147
  76. package/skills/qa-discovery-interview/templates/qa-brief-template.md +0 -168
  77. package/skills/qa-environment-checker/SKILL.md +0 -142
  78. package/skills/qa-environment-checker/references/dependency-matrix.md +0 -101
  79. package/skills/qa-environment-checker/references/health-checks.md +0 -209
  80. package/skills/qa-environment-checker/templates/env-readiness-template.md +0 -64
  81. package/skills/qa-flaky-detector/SKILL.md +0 -153
  82. package/skills/qa-flaky-detector/references/ci-analysis.md +0 -140
  83. package/skills/qa-flaky-detector/references/flaky-patterns.md +0 -247
  84. package/skills/qa-github-issues-enhanced/SKILL.md +0 -175
  85. package/skills/qa-github-issues-enhanced/references/issue-templates.md +0 -425
  86. package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +0 -130
  87. package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +0 -188
  88. package/skills/qa-httpx-writer/SKILL.md +0 -138
  89. package/skills/qa-httpx-writer/references/assertions.md +0 -195
  90. package/skills/qa-httpx-writer/references/best-practices.md +0 -140
  91. package/skills/qa-httpx-writer/references/config.md +0 -212
  92. package/skills/qa-httpx-writer/references/patterns.md +0 -262
  93. package/skills/qa-jest-writer/SKILL.md +0 -131
  94. package/skills/qa-jest-writer/references/assertions.md +0 -125
  95. package/skills/qa-jest-writer/references/best-practices.md +0 -136
  96. package/skills/qa-jest-writer/references/config.md +0 -134
  97. package/skills/qa-jest-writer/references/patterns.md +0 -172
  98. package/skills/qa-jira-integration/SKILL.md +0 -135
  99. package/skills/qa-jira-integration/references/api-patterns.md +0 -143
  100. package/skills/qa-jira-integration/references/field-mapping.md +0 -79
  101. package/skills/qa-jira-integration/references/xray-integration.md +0 -85
  102. package/skills/qa-jmeter-writer/SKILL.md +0 -171
  103. package/skills/qa-jmeter-writer/references/best-practices.md +0 -157
  104. package/skills/qa-jmeter-writer/references/config.md +0 -204
  105. package/skills/qa-jmeter-writer/references/patterns.md +0 -242
  106. package/skills/qa-junit5-writer/SKILL.md +0 -157
  107. package/skills/qa-junit5-writer/references/assertions.md +0 -118
  108. package/skills/qa-junit5-writer/references/config.md +0 -97
  109. package/skills/qa-junit5-writer/references/patterns.md +0 -162
  110. package/skills/qa-k6-writer/SKILL.md +0 -155
  111. package/skills/qa-k6-writer/references/best-practices.md +0 -236
  112. package/skills/qa-k6-writer/references/config.md +0 -219
  113. package/skills/qa-k6-writer/references/patterns.md +0 -304
  114. package/skills/qa-linear-integration/SKILL.md +0 -137
  115. package/skills/qa-linear-integration/references/api-patterns.md +0 -249
  116. package/skills/qa-linear-integration/references/field-mapping.md +0 -121
  117. package/skills/qa-locust-writer/SKILL.md +0 -151
  118. package/skills/qa-locust-writer/references/best-practices.md +0 -126
  119. package/skills/qa-locust-writer/references/config.md +0 -170
  120. package/skills/qa-locust-writer/references/patterns.md +0 -235
  121. package/skills/qa-manual-test-designer/SKILL.md +0 -145
  122. package/skills/qa-manual-test-designer/references/exploratory-charters.md +0 -138
  123. package/skills/qa-manual-test-designer/references/personas.md +0 -146
  124. package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +0 -47
  125. package/skills/qa-manual-test-designer/templates/test-case-template.md +0 -31
  126. package/skills/qa-mobile-test-writer/SKILL.md +0 -144
  127. package/skills/qa-mobile-test-writer/references/best-practices.md +0 -214
  128. package/skills/qa-mobile-test-writer/references/config.md +0 -309
  129. package/skills/qa-mobile-test-writer/references/patterns.md +0 -304
  130. package/skills/qa-nfr-analyst/SKILL.md +0 -177
  131. package/skills/qa-nfr-analyst/references/iso-25010-model.md +0 -159
  132. package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +0 -202
  133. package/skills/qa-nfr-analyst/references/wcag-checklist.md +0 -184
  134. package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +0 -89
  135. package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +0 -48
  136. package/skills/qa-orchestrator/SKILL.md +0 -132
  137. package/skills/qa-orchestrator/references/handoff-chains.md +0 -105
  138. package/skills/qa-orchestrator/references/pipeline-modes.md +0 -115
  139. package/skills/qa-orchestrator/references/scheduler-rules.md +0 -84
  140. package/skills/qa-pact-writer/SKILL.md +0 -133
  141. package/skills/qa-pact-writer/references/best-practices.md +0 -100
  142. package/skills/qa-pact-writer/references/config.md +0 -135
  143. package/skills/qa-pact-writer/references/patterns.md +0 -161
  144. package/skills/qa-plan-creator/SKILL.md +0 -139
  145. package/skills/qa-plan-creator/references/introduction-plan.md +0 -43
  146. package/skills/qa-plan-creator/references/migration-plan.md +0 -44
  147. package/skills/qa-plan-creator/references/onboarding-plan.md +0 -46
  148. package/skills/qa-plan-creator/references/performance-plan.md +0 -44
  149. package/skills/qa-plan-creator/references/regression-plan.md +0 -45
  150. package/skills/qa-plan-creator/references/release-plan.md +0 -45
  151. package/skills/qa-plan-creator/references/sprint-plan.md +0 -44
  152. package/skills/qa-plan-creator/references/test-plan.md +0 -59
  153. package/skills/qa-plan-creator/references/uat-plan.md +0 -43
  154. package/skills/qa-plan-creator/templates/checklist-template.md +0 -36
  155. package/skills/qa-plan-creator/templates/regression-checklist-template.md +0 -49
  156. package/skills/qa-plan-creator/templates/release-checklist-template.md +0 -46
  157. package/skills/qa-plan-creator/templates/test-plan-template.md +0 -74
  158. package/skills/qa-playwright-py-writer/SKILL.md +0 -156
  159. package/skills/qa-playwright-py-writer/references/best-practices.md +0 -194
  160. package/skills/qa-playwright-py-writer/references/config.md +0 -195
  161. package/skills/qa-playwright-py-writer/references/patterns.md +0 -212
  162. package/skills/qa-playwright-ts-writer/SKILL.md +0 -151
  163. package/skills/qa-playwright-ts-writer/references/assertions.md +0 -109
  164. package/skills/qa-playwright-ts-writer/references/best-practices.md +0 -191
  165. package/skills/qa-playwright-ts-writer/references/config.md +0 -144
  166. package/skills/qa-playwright-ts-writer/references/patterns.md +0 -171
  167. package/skills/qa-pytest-writer/SKILL.md +0 -145
  168. package/skills/qa-pytest-writer/references/assertions.md +0 -149
  169. package/skills/qa-pytest-writer/references/best-practices.md +0 -97
  170. package/skills/qa-pytest-writer/references/config.md +0 -176
  171. package/skills/qa-pytest-writer/references/patterns.md +0 -251
  172. package/skills/qa-qase-integration/SKILL.md +0 -149
  173. package/skills/qa-qase-integration/references/api-reference.md +0 -354
  174. package/skills/qa-qase-integration/references/ci-integration.md +0 -196
  175. package/skills/qa-qase-integration/references/field-mapping.md +0 -157
  176. package/skills/qa-requirements-generator/SKILL.md +0 -152
  177. package/skills/qa-requirements-generator/references/iso-29148-structure.md +0 -153
  178. package/skills/qa-requirements-generator/references/requirement-patterns.md +0 -278
  179. package/skills/qa-rest-assured-writer/SKILL.md +0 -137
  180. package/skills/qa-rest-assured-writer/references/best-practices.md +0 -50
  181. package/skills/qa-rest-assured-writer/references/config.md +0 -124
  182. package/skills/qa-rest-assured-writer/references/patterns.md +0 -192
  183. package/skills/qa-risk-analyzer/SKILL.md +0 -158
  184. package/skills/qa-risk-analyzer/references/impact-analysis.md +0 -133
  185. package/skills/qa-risk-analyzer/references/risk-factors.md +0 -123
  186. package/skills/qa-robot-framework-writer/SKILL.md +0 -147
  187. package/skills/qa-robot-framework-writer/references/best-practices.md +0 -249
  188. package/skills/qa-robot-framework-writer/references/config.md +0 -204
  189. package/skills/qa-robot-framework-writer/references/libraries.md +0 -273
  190. package/skills/qa-robot-framework-writer/references/patterns.md +0 -216
  191. package/skills/qa-security-test-writer/SKILL.md +0 -123
  192. package/skills/qa-security-test-writer/references/best-practices.md +0 -155
  193. package/skills/qa-security-test-writer/references/owasp-top10.md +0 -331
  194. package/skills/qa-security-test-writer/references/zap-config.md +0 -258
  195. package/skills/qa-selenium-java-writer/SKILL.md +0 -143
  196. package/skills/qa-selenium-java-writer/references/best-practices.md +0 -59
  197. package/skills/qa-selenium-java-writer/references/config.md +0 -143
  198. package/skills/qa-selenium-java-writer/references/patterns.md +0 -170
  199. package/skills/qa-selenium-py-writer/SKILL.md +0 -150
  200. package/skills/qa-selenium-py-writer/references/best-practices.md +0 -175
  201. package/skills/qa-selenium-py-writer/references/config.md +0 -224
  202. package/skills/qa-selenium-py-writer/references/patterns.md +0 -255
  203. package/skills/qa-shortcut-integration/SKILL.md +0 -143
  204. package/skills/qa-shortcut-integration/references/api-patterns.md +0 -126
  205. package/skills/qa-shortcut-integration/references/field-mapping.md +0 -66
  206. package/skills/qa-spec-auditor/SKILL.md +0 -162
  207. package/skills/qa-spec-auditor/references/audit-checklist.md +0 -144
  208. package/skills/qa-spec-auditor/references/drift-patterns.md +0 -207
  209. package/skills/qa-spec-writer/SKILL.md +0 -143
  210. package/skills/qa-spec-writer/references/gherkin-guide.md +0 -253
  211. package/skills/qa-spec-writer/references/specification-patterns.md +0 -274
  212. package/skills/qa-spring-test-writer/SKILL.md +0 -170
  213. package/skills/qa-spring-test-writer/references/best-practices.md +0 -57
  214. package/skills/qa-spring-test-writer/references/config.md +0 -179
  215. package/skills/qa-spring-test-writer/references/patterns.md +0 -235
  216. package/skills/qa-supertest-writer/SKILL.md +0 -150
  217. package/skills/qa-supertest-writer/references/assertions.md +0 -192
  218. package/skills/qa-supertest-writer/references/best-practices.md +0 -102
  219. package/skills/qa-supertest-writer/references/config.md +0 -166
  220. package/skills/qa-supertest-writer/references/patterns.md +0 -242
  221. package/skills/qa-task-creator/SKILL.md +0 -142
  222. package/skills/qa-task-creator/references/linking-patterns.md +0 -127
  223. package/skills/qa-task-creator/references/task-types.md +0 -169
  224. package/skills/qa-task-creator/templates/task-template.md +0 -24
  225. package/skills/qa-test-doc-compiler/SKILL.md +0 -114
  226. package/skills/qa-test-doc-compiler/references/agile-tailoring.md +0 -220
  227. package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +0 -302
  228. package/skills/qa-test-healer/SKILL.md +0 -101
  229. package/skills/qa-test-healer/references/diagnosis-patterns.md +0 -142
  230. package/skills/qa-test-healer/references/fix-strategies.md +0 -177
  231. package/skills/qa-test-reporter/SKILL.md +0 -130
  232. package/skills/qa-test-reporter/references/best-practices.md +0 -162
  233. package/skills/qa-test-reporter/references/iso-29119-reports.md +0 -236
  234. package/skills/qa-test-reporter/references/report-formats.md +0 -287
  235. package/skills/qa-test-reviewer/SKILL.md +0 -142
  236. package/skills/qa-test-reviewer/references/anti-patterns.md +0 -268
  237. package/skills/qa-test-reviewer/references/review-checklist.md +0 -93
  238. package/skills/qa-test-strategy/SKILL.md +0 -133
  239. package/skills/qa-test-strategy/references/entry-exit-criteria.md +0 -176
  240. package/skills/qa-test-strategy/references/risk-matrix.md +0 -102
  241. package/skills/qa-test-strategy/references/testing-types.md +0 -143
  242. package/skills/qa-testcase-from-docs/SKILL.md +0 -161
  243. package/skills/qa-testcase-from-docs/references/test-case-format.md +0 -196
  244. package/skills/qa-testcase-from-docs/references/test-design-techniques.md +0 -126
  245. package/skills/qa-testcase-from-docs/templates/test-case-template.md +0 -31
  246. package/skills/qa-testcase-from-ui/SKILL.md +0 -109
  247. package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +0 -126
  248. package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +0 -146
  249. package/skills/qa-testcase-from-ui/templates/test-case-template.md +0 -31
  250. package/skills/qa-visual-regression-writer/SKILL.md +0 -175
  251. package/skills/qa-visual-regression-writer/references/best-practices.md +0 -154
  252. package/skills/qa-visual-regression-writer/references/config.md +0 -220
  253. package/skills/qa-visual-regression-writer/references/patterns.md +0 -213
  254. package/skills/qa-vitest-writer/SKILL.md +0 -141
  255. package/skills/qa-vitest-writer/references/assertions.md +0 -105
  256. package/skills/qa-vitest-writer/references/best-practices.md +0 -62
  257. package/skills/qa-vitest-writer/references/config.md +0 -127
  258. package/skills/qa-vitest-writer/references/patterns.md +0 -141
  259. package/skills/qa-webdriverio-writer/SKILL.md +0 -145
  260. package/skills/qa-webdriverio-writer/references/best-practices.md +0 -176
  261. package/skills/qa-webdriverio-writer/references/config.md +0 -240
  262. package/skills/qa-webdriverio-writer/references/patterns.md +0 -269
@@ -1,146 +0,0 @@
1
- # Visual Analysis Guide for UI Screenshots
2
-
3
- Guide for analyzing UI screenshots to identify elements, infer semantics, and derive test scenarios. Use when processing images for qa-testcase-from-ui.
4
-
5
- ---
6
-
7
- ## Element Identification Techniques
8
-
9
- ### 1. Shape and Layout Heuristics
10
-
11
- | Visual Pattern | Likely Element | Confidence |
12
- |----------------|----------------|------------|
13
- | Rounded rectangle with placeholder text | Text input | High |
14
- | Small square with checkmark | Checkbox | High |
15
- | Circle with dot | Radio button | High |
16
- | Rectangle with dropdown arrow | Select/dropdown | High |
17
- | Rounded rectangle, filled, with label | Button | High |
18
- | Grid of rows and columns | Table | High |
19
- | Overlay with centered content | Modal/dialog | High |
20
- | Horizontal row of links with separators | Navigation bar | Medium |
21
- | Vertical list with indentation | Tree or nested menu | Medium |
22
-
23
- ### 2. Label and Context Clues
24
-
25
- - **"Email", "Password", "Username"** → Form fields with implied validation
26
- - **"Submit", "Save", "Cancel"** → Button actions
27
- - **"Sign In", "Log in"** → Auth flow entry
28
- - **"Search"** → Search input or button
29
- - **"Add", "+", "New"** → Create action
30
- - **"Edit", "Delete", trash icon** → CRUD actions
31
- - **"Settings", gear icon** → Configuration/settings
32
- - **"Help", "?"** → Help or documentation
33
-
34
- ### 3. Position Conventions
35
-
36
- - **Top of viewport:** Logo, primary nav, search
37
- - **Center:** Main content, forms, modals
38
- - **Bottom:** Submit buttons, footer links
39
- - **Right edge:** Sidebar, secondary actions
40
- - **Floating:** Notifications, tooltips
41
-
42
- ---
43
-
44
- ## Semantic Mapping Rules
45
-
46
- ### From Visual to Action
47
-
48
- 1. **Input-like shapes** → User can type or select
49
- 2. **Button-like shapes** → User can click to trigger action
50
- 3. **Links (underlined or distinct color)** → Navigation
51
- 4. **Overlays** → Modal flow (open → interact → close)
52
- 5. **Tables** → Data display + possible sort/filter/pagination
53
- 6. **Tabs** → Switch between views/panels
54
-
55
- ### Inferring Validation
56
-
57
- - **Required indicator** (asterisk, "Required") → Empty submit should show error
58
- - **Format hints** (e.g., "DD/MM/YYYY") → Invalid format should be rejected
59
- - **Character counter** → Max length validation
60
- - **Password strength meter** → Password rules apply
61
-
62
- ### Inferring State
63
-
64
- - **Disabled** (grayed out, reduced opacity) → Not clickable
65
- - **Loading** (spinner, skeleton) → Async operation in progress
66
- - **Error** (red border, error icon) → Validation failed
67
- - **Success** (green check, success message) → Operation completed
68
-
69
- ---
70
-
71
- ## Common UI Patterns
72
-
73
- ### Login / Auth Screens
74
-
75
- - Email + Password inputs
76
- - "Sign In" / "Log in" button
77
- - "Forgot password?" link
78
- - "Create account" / "Register" link
79
- - Social login buttons (Google, etc.)
80
-
81
- **Test focus:** Valid/invalid credentials, empty fields, forgot password flow.
82
-
83
- ### Dashboard / List Views
84
-
85
- - Table or card grid
86
- - Search/filter bar
87
- - "Add" or "Create" button
88
- - Row/card actions (edit, delete)
89
- - Pagination or infinite scroll
90
-
91
- **Test focus:** CRUD, search, filter, sort, pagination.
92
-
93
- ### Form Pages (Create/Edit)
94
-
95
- - Multiple form fields
96
- - Required indicators
97
- - Submit and Cancel buttons
98
- - Possible "Save draft" or "Reset"
99
-
100
- **Test focus:** Validation, submission, cancel, reset.
101
-
102
- ### Settings / Configuration
103
-
104
- - Tabs or sidebar sections
105
- - Toggles, checkboxes, inputs
106
- - "Save" or "Apply" button
107
- - Possible "Reset to default"
108
-
109
- **Test focus:** Toggle states, save, reset, section navigation.
110
-
111
- ---
112
-
113
- ## Edge Cases to Consider
114
-
115
- | Scenario | When to Include |
116
- |----------|-----------------|
117
- | Empty input submit | Form with required fields |
118
- | Invalid format | Email, date, phone inputs |
119
- | Max length exceeded | Inputs with character limits |
120
- | Modal ESC/backdrop | Any modal/dialog |
121
- | No results | Search, filter, or list views |
122
- | Loading state | Any async action (submit, fetch) |
123
- | Disabled state | Buttons that depend on form validity |
124
- | Responsive collapse | Nav, sidebar, tables on small screens |
125
-
126
- ---
127
-
128
- ## Coordinate and Reference Conventions
129
-
130
- When describing element location for test cases:
131
-
132
- 1. **Prefer semantic description** over coordinates: "Email input, top of form" vs "x:120, y:200"
133
- 2. **Use relative terms:** "Center of modal", "First row of table", "Primary CTA button"
134
- 3. **Include labels:** "Button labeled 'Submit'", "Input with placeholder 'Search'"
135
- 4. **Note ambiguity:** "Possible dropdown (chevron visible)" when uncertain
136
-
137
- ---
138
-
139
- ## Limitations
140
-
141
- - **Static images** do not reveal dynamic behavior (e.g., API errors, real-time validation)
142
- - **Design vs implementation** — Figma/mockups may differ from built UI
143
- - **Overlapping elements** — Hard to distinguish without interaction
144
- - **Custom components** — May not match standard patterns; use conservative labels
145
-
146
- When in doubt, flag elements for manual verification and suggest live capture for implementation-level tests.
@@ -1,31 +0,0 @@
1
- # Test Case
2
-
3
- ## [TC-{ID}] {Title}
4
-
5
- **Module:** {module name}
6
- **Priority:** {P1 | P2 | P3 | P4}
7
- **Type:** {Functional | Regression | Smoke | Integration | E2E | Other}
8
-
9
- ## Preconditions
10
- {Prerequisites, data state, environment setup}
11
-
12
- ## Test Steps
13
-
14
- | # | Action | Expected Result |
15
- |---|--------|-----------------|
16
- | 1 | {action} | {expected} |
17
- | 2 | {action} | {expected} |
18
- | 3 | {action} | {expected} |
19
-
20
- ## Postconditions
21
- {Cleanup, state after test}
22
-
23
- ## Test Data
24
- {Input values, test accounts, sample data}
25
-
26
- ## Traceability
27
- - **Requirement ID:** [REQ-{ID}]
28
- - **Spec Reference:** {section or link}
29
-
30
- ## Automation Status
31
- {Manual | Automated | Planned | N/A}
@@ -1,175 +0,0 @@
1
- ---
2
- name: qa-visual-regression-writer
3
- description: Generate visual regression tests using Playwright screenshots, Percy, and BackstopJS for screenshot comparison, layout drift detection, and baseline management.
4
- output_dir: tests/visual
5
- ---
6
-
7
- # QA Visual Regression Writer
8
-
9
- ## Purpose
10
-
11
- Write visual regression tests to detect unintended UI changes. Transform test cases and visual checkpoints into executable visual tests using Playwright built-in screenshots, Percy (cloud-based), or BackstopJS (Docker-based).
12
-
13
- ## Trigger Phrases
14
-
15
- - "Write visual regression tests for [page/component]"
16
- - "Generate screenshot comparison tests"
17
- - "Create visual tests with Playwright toHaveScreenshot"
18
- - "Add Percy visual tests for [flow]"
19
- - "BackstopJS visual regression for [viewports]"
20
- - "Visual tests for layout drift detection"
21
- - "Screenshot baseline tests for [feature]"
22
- - "Mask dynamic content in visual tests"
23
- - "Visual regression with viewport variations"
24
-
25
- ## Tools
26
-
27
- | Tool | Approach | Best For |
28
- |------|----------|----------|
29
- | **Playwright** | Built-in `toHaveScreenshot()` | Local baselines, CI, no extra services |
30
- | **Percy** | Cloud-based, BrowserStack integration | Cross-browser, team review, CI integration |
31
- | **BackstopJS** | Docker, configurable viewports | Multi-viewport, config-driven scenarios |
32
-
33
- ## Workflow
34
-
35
- 1. **Read test cases** — From qa-testcase-from-docs, qa-testcase-from-ui, or manual specs
36
- 2. **Define visual checkpoints** — Identify pages/elements to capture
37
- 3. **Set baselines** — Initial capture; store reference images
38
- 4. **Generate visual tests** — Produce test scripts with assertions
39
- 5. **Configure thresholds** — maxDiffPixels, maxDiffPixelRatio, or tool-specific settings
40
-
41
- ## Key Patterns
42
-
43
- - **Full page screenshots** — `expect(page).toHaveScreenshot()`
44
- - **Element screenshots** — `expect(locator).toHaveScreenshot()`
45
- - **Viewport variations** — Desktop, tablet, mobile (1280x720, 768x1024, 375x667)
46
- - **Dynamic content masking** — Mask timestamps, avatars, ads, animations
47
- - **Animation disabling** — `page.addStyleTag` or `prefers-reduced-motion` for stable captures
48
- - **Threshold configuration** — Tune sensitivity to avoid false positives
49
-
50
- See `references/patterns.md` for screenshot strategies, masking, viewports, thresholds.
51
-
52
- ## Baseline Management
53
-
54
- | Phase | Action |
55
- |-------|--------|
56
- | **Initial capture** | Run tests with `--update-snapshots` (Playwright) or `backstop approve` |
57
- | **Update workflow** | Review diffs → approve intentional changes → commit baselines |
58
- | **Review process** | Percy: dashboard review; BackstopJS: HTML report; Playwright: diff artifacts |
59
-
60
- See `references/best-practices.md` for baseline management and CI integration.
61
-
62
- ## Playwright Integration
63
-
64
- ```typescript
65
- // Full page
66
- await expect(page).toHaveScreenshot('homepage.png');
67
-
68
- // Element
69
- await expect(page.getByTestId('header')).toHaveScreenshot('header.png');
70
-
71
- // With options
72
- await expect(page).toHaveScreenshot('dashboard.png', {
73
- mask: [page.locator('.timestamp'), page.locator('.avatar')],
74
- maxDiffPixels: 100,
75
- maxDiffPixelRatio: 0.01,
76
- fullPage: true,
77
- });
78
- ```
79
-
80
- - **expect(page).toHaveScreenshot(name)** — Full page or viewport
81
- - **expect(locator).toHaveScreenshot(name)** — Element-only
82
- - **maxDiffPixels / maxDiffPixelRatio** — Tolerance for minor rendering differences
83
- - **mask** — Hide dynamic regions from comparison
84
-
85
- See `references/config.md` for Playwright screenshot config.
86
-
87
- ## Percy Integration
88
-
89
- ```typescript
90
- import percySnapshot from '@percy/playwright';
91
-
92
- await percySnapshot(page, 'Homepage');
93
- await percySnapshot(page, 'Dashboard', { widths: [1280, 768, 375] });
94
- ```
95
-
96
- - **percySnapshot(page, name)** — Capture and upload to Percy
97
- - **Percy CLI** — `npx percy exec -- npx playwright test`
98
- - **BrowserStack Percy** — Cloud review, cross-browser, parallel execution
99
-
100
- See `references/config.md` for Percy setup.
101
-
102
- ## BackstopJS Integration
103
-
104
- ```javascript
105
- // backstop.json
106
- {
107
- "scenarios": [
108
- {
109
- "label": "Homepage",
110
- "url": "http://localhost:3000",
111
- "viewports": [{ "width": 1280, "height": 720 }]
112
- }
113
- ]
114
- }
115
- ```
116
-
117
- - **backstop.json** — Scenarios, viewports, selectors, delay
118
- - **backstop test** — Run comparisons
119
- - **backstop approve** — Update baselines
120
-
121
- See `references/config.md` for BackstopJS configuration.
122
-
123
- ## Output
124
-
125
- - **Visual test scripts** — TypeScript/JavaScript with screenshot assertions
126
- - **Baseline images** — Stored in `test-results/`, `backstop_data/`, or Percy cloud
127
- - **Comparison reports** — HTML diff reports, Percy dashboard, Playwright artifacts
128
-
129
- ## Scope
130
-
131
- **Can do (autonomous):**
132
- - Generate visual regression tests from test case specs
133
- - Use Playwright toHaveScreenshot, Percy, or BackstopJS
134
- - Apply masking for dynamic content (timestamps, avatars, ads)
135
- - Configure viewport variations (desktop/tablet/mobile)
136
- - Set thresholds (maxDiffPixels, maxDiffPixelRatio)
137
- - Disable animations for stable captures
138
- - Create backstop.json scenarios
139
-
140
- **Cannot do (requires confirmation):**
141
- - Add Percy/BackstopJS dependencies without approval
142
- - Configure Percy project token (user must provide)
143
- - Override existing baseline images without approval
144
-
145
- **Will not do (out of scope):**
146
- - Execute tests (user runs `npx playwright test`, `backstop test`)
147
- - Modify production UI code
148
- - Set up Percy/BrowserStack accounts
149
-
150
- ## References
151
-
152
- - `references/patterns.md` — Screenshot strategies, masking, viewports, thresholds
153
- - `references/config.md` — Playwright, Percy, BackstopJS configuration
154
- - `references/best-practices.md` — Baseline management, CI integration, dynamic content
155
-
156
- ## Quality Checklist
157
-
158
- - [ ] Dynamic content masked (timestamps, avatars, ads)
159
- - [ ] Animations disabled or reduced for stable captures
160
- - [ ] Viewport variations defined where needed
161
- - [ ] Thresholds configured to avoid false positives
162
- - [ ] Baselines stored in version control (Playwright/BackstopJS)
163
- - [ ] Traceability to test case IDs where applicable
164
- - [ ] No hardcoded secrets (Percy token via env)
165
-
166
- ## Troubleshooting
167
-
168
- | Symptom | Likely Cause | Fix |
169
- |---------|--------------|-----|
170
- | Flaky visual diffs | Animations, timestamps, fonts | Mask dynamic regions; disable animations |
171
- | Too many false positives | Threshold too strict | Increase maxDiffPixels or maxDiffPixelRatio |
172
- | Baseline mismatch | Different OS/fonts/DPI | Run baselines in CI; use consistent environment |
173
- | Percy upload fails | Missing token, network | Set PERCY_TOKEN; check Percy dashboard |
174
- | BackstopJS no match | Wrong reference path | Run `backstop approve` to create baselines |
175
- | Element screenshot empty | Element not visible | Ensure element in viewport; add wait |
@@ -1,154 +0,0 @@
1
- # Visual Testing Best Practices
2
-
3
- Baseline management, CI integration, and dynamic content handling for visual regression testing.
4
-
5
- ## Baseline Management
6
-
7
- ### Initial Capture
8
-
9
- 1. **Ensure stable state** — Disable animations, wait for network idle
10
- 2. **Run with update flag** — `--update-snapshots` (Playwright), `backstop approve` (BackstopJS)
11
- 3. **Commit baselines** — Store reference images in version control (Playwright, BackstopJS)
12
- 4. **Percy** — First run creates baselines automatically
13
-
14
- ### Update Workflow
15
-
16
- | Tool | Update Command | When to Use |
17
- |------|----------------|-------------|
18
- | Playwright | `npx playwright test --update-snapshots` | Intentional UI change |
19
- | BackstopJS | `backstop approve` | Intentional UI change |
20
- | Percy | Approve in dashboard | After reviewing diff |
21
-
22
- ### Review Process
23
-
24
- 1. **Run tests** — Detect visual changes
25
- 2. **Review diffs** — Playwright: `test-results/`, BackstopJS: `backstop_data/html_report/`
26
- 3. **Decide** — Intentional → approve; Bug → fix code
27
- 4. **Update** — Only approve when change is correct
28
-
29
- ### Baseline Hygiene
30
-
31
- - **One baseline per viewport** — Don't mix viewports
32
- - **Meaningful names** — `homepage-desktop.png` not `screenshot1.png`
33
- - **Avoid bloating** — Capture only critical pages/elements
34
- - **Branch strategy** — Baselines on main; feature branches compare against main
35
-
36
- ## CI Integration
37
-
38
- ### Playwright in CI
39
-
40
- ```yaml
41
- # GitHub Actions
42
- - name: Run visual tests
43
- run: npx playwright test visual/
44
- env:
45
- CI: true
46
-
47
- - name: Update snapshots (on main, when approved)
48
- if: github.ref == 'refs/heads/main' && github.event_name == 'workflow_dispatch'
49
- run: npx playwright test visual/ --update-snapshots
50
- ```
51
-
52
- ### Percy in CI
53
-
54
- ```yaml
55
- - name: Percy snapshots
56
- run: percy exec -- npx playwright test
57
- env:
58
- PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
59
- PERCY_BRANCH: ${{ github.ref_name }}
60
- ```
61
-
62
- ### BackstopJS in CI
63
-
64
- ```yaml
65
- - name: Backstop test
66
- run: npx backstop test
67
- - name: Upload report
68
- uses: actions/upload-artifact@v4
69
- with:
70
- name: backstop-report
71
- path: backstop_data/html_report
72
- ```
73
-
74
- ### Fail on Diff
75
-
76
- - **Playwright:** Fails by default when diff exceeds threshold
77
- - **Percy:** Fails when unapproved diffs exist (configurable)
78
- - **BackstopJS:** Fails when `misMatchThreshold` exceeded
79
-
80
- ## Dynamic Content Handling
81
-
82
- ### Strategy Hierarchy
83
-
84
- 1. **Mask** — Hide dynamic regions (timestamps, avatars)
85
- 2. **Stub** — Replace with static data (API mocking)
86
- 3. **Wait** — Ensure content loaded before capture
87
- 4. **Ignore** — Increase threshold if unavoidable
88
-
89
- ### API Mocking for Consistency
90
-
91
- ```typescript
92
- test('dashboard visual', async ({ page }) => {
93
- await page.route('**/api/user', (route) =>
94
- route.fulfill({
95
- status: 200,
96
- body: JSON.stringify({ name: 'Test User', avatar: '/static/avatar.png' }),
97
- })
98
- );
99
- await page.goto('/dashboard');
100
- await expect(page).toHaveScreenshot('dashboard.png');
101
- });
102
- ```
103
-
104
- ### Deterministic Data
105
-
106
- - Use fixed dates in test data
107
- - Seed database with known state
108
- - Mock external services (maps, analytics)
109
-
110
- ### Font and Rendering Consistency
111
-
112
- - **Same OS in CI** — Use Linux in CI if baselines from Linux
113
- - **System fonts** — Or bundle fonts to avoid OS differences
114
- - **Threshold** — Use `maxDiffPixelRatio` for subpixel tolerance
115
-
116
- ## Test Organization
117
-
118
- ### Structure
119
-
120
- ```
121
- visual/
122
- homepage.spec.ts
123
- login.spec.ts
124
- __snapshots__/
125
- homepage.spec.ts-snapshots/
126
- homepage-chromium.png
127
- homepage-mobile-chromium.png
128
- ```
129
-
130
- ### Naming Conventions
131
-
132
- - **Page:** `{page-name}-{viewport}.png`
133
- - **Element:** `{element}-{state}.png` (e.g., `modal-open.png`)
134
- - **Scenario:** Descriptive; avoid numbers
135
-
136
- ### Scope
137
-
138
- - **Critical paths** — Login, checkout, key flows
139
- - **High-traffic pages** — Homepage, product pages
140
- - **Layout-sensitive** — Responsive breakpoints
141
- - **Avoid** — Low-value pages, rarely changed UI
142
-
143
- ## Performance
144
-
145
- - **Parallelize** — Playwright and Percy support parallel runs
146
- - **Limit viewports** — Test 2–3 key breakpoints, not every device
147
- - **Lazy capture** — Only capture when test reaches checkpoint
148
- - **Cache baselines** — CI cache `__snapshots__` / `backstop_data` when appropriate
149
-
150
- ## Security
151
-
152
- - **No secrets in screenshots** — Mask tokens, passwords, PII
153
- - **Percy token** — Store in CI secrets, never commit
154
- - **Test URLs** — Use staging/test envs, not production with real data