qa-skills 3.0.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 +168 -0
  2. package/bin/cli.js +42 -0
  3. package/dist/agents/registry.d.ts +5 -0
  4. package/dist/agents/registry.d.ts.map +1 -0
  5. package/dist/agents/registry.js +101 -0
  6. package/dist/agents/registry.js.map +1 -0
  7. package/dist/agents/types.d.ts +9 -0
  8. package/dist/agents/types.d.ts.map +1 -0
  9. package/dist/agents/types.js +2 -0
  10. package/dist/agents/types.js.map +1 -0
  11. package/dist/dependencies.d.ts +21 -0
  12. package/dist/dependencies.d.ts.map +1 -0
  13. package/dist/dependencies.js +125 -0
  14. package/dist/dependencies.js.map +1 -0
  15. package/dist/installer.d.ts +25 -0
  16. package/dist/installer.d.ts.map +1 -0
  17. package/dist/installer.js +437 -0
  18. package/dist/installer.js.map +1 -0
  19. package/dist/scaffold.d.ts +27 -0
  20. package/dist/scaffold.d.ts.map +1 -0
  21. package/dist/scaffold.js +182 -0
  22. package/dist/scaffold.js.map +1 -0
  23. package/package.json +40 -0
  24. package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
  25. package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
  26. package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
  27. package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
  28. package/skills/qa-api-contract-curator/SKILL.md +104 -0
  29. package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
  30. package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
  31. package/skills/qa-browser-data-collector/SKILL.md +132 -0
  32. package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
  33. package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
  34. package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
  35. package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
  36. package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
  37. package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
  38. package/skills/qa-changelog-analyzer/SKILL.md +134 -0
  39. package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
  40. package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
  41. package/skills/qa-clickup-integration/SKILL.md +166 -0
  42. package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
  43. package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
  44. package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
  45. package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
  46. package/skills/qa-codeceptjs-writer/references/config.md +255 -0
  47. package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
  48. package/skills/qa-coverage-analyzer/SKILL.md +166 -0
  49. package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
  50. package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
  51. package/skills/qa-coverage-analyzer/references/tools.md +204 -0
  52. package/skills/qa-cypress-writer/SKILL.md +134 -0
  53. package/skills/qa-cypress-writer/references/assertions.md +121 -0
  54. package/skills/qa-cypress-writer/references/best-practices.md +82 -0
  55. package/skills/qa-cypress-writer/references/config.md +121 -0
  56. package/skills/qa-cypress-writer/references/patterns.md +170 -0
  57. package/skills/qa-data-factory/SKILL.md +126 -0
  58. package/skills/qa-data-factory/references/factory-patterns.md +164 -0
  59. package/skills/qa-data-factory/references/faker-guide.md +131 -0
  60. package/skills/qa-diagram-generator/SKILL.md +125 -0
  61. package/skills/qa-diagram-generator/references/c4-model.md +53 -0
  62. package/skills/qa-diagram-generator/references/charts.md +58 -0
  63. package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
  64. package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
  65. package/skills/qa-diagram-generator/references/flowchart.md +92 -0
  66. package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
  67. package/skills/qa-diagram-generator/references/gantt.md +49 -0
  68. package/skills/qa-diagram-generator/references/journey.md +50 -0
  69. package/skills/qa-diagram-generator/references/mindmap.md +75 -0
  70. package/skills/qa-diagram-generator/references/sequence.md +69 -0
  71. package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
  72. package/skills/qa-discovery-interview/SKILL.md +182 -0
  73. package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
  74. package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
  75. package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
  76. package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
  77. package/skills/qa-environment-checker/SKILL.md +142 -0
  78. package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
  79. package/skills/qa-environment-checker/references/health-checks.md +209 -0
  80. package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
  81. package/skills/qa-flaky-detector/SKILL.md +153 -0
  82. package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
  83. package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
  84. package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
  85. package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
  86. package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
  87. package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
  88. package/skills/qa-httpx-writer/SKILL.md +138 -0
  89. package/skills/qa-httpx-writer/references/assertions.md +195 -0
  90. package/skills/qa-httpx-writer/references/best-practices.md +140 -0
  91. package/skills/qa-httpx-writer/references/config.md +212 -0
  92. package/skills/qa-httpx-writer/references/patterns.md +262 -0
  93. package/skills/qa-jest-writer/SKILL.md +131 -0
  94. package/skills/qa-jest-writer/references/assertions.md +125 -0
  95. package/skills/qa-jest-writer/references/best-practices.md +136 -0
  96. package/skills/qa-jest-writer/references/config.md +134 -0
  97. package/skills/qa-jest-writer/references/patterns.md +172 -0
  98. package/skills/qa-jira-integration/SKILL.md +135 -0
  99. package/skills/qa-jira-integration/references/api-patterns.md +143 -0
  100. package/skills/qa-jira-integration/references/field-mapping.md +79 -0
  101. package/skills/qa-jira-integration/references/xray-integration.md +85 -0
  102. package/skills/qa-jmeter-writer/SKILL.md +171 -0
  103. package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
  104. package/skills/qa-jmeter-writer/references/config.md +204 -0
  105. package/skills/qa-jmeter-writer/references/patterns.md +242 -0
  106. package/skills/qa-junit5-writer/SKILL.md +157 -0
  107. package/skills/qa-junit5-writer/references/assertions.md +118 -0
  108. package/skills/qa-junit5-writer/references/config.md +97 -0
  109. package/skills/qa-junit5-writer/references/patterns.md +162 -0
  110. package/skills/qa-k6-writer/SKILL.md +155 -0
  111. package/skills/qa-k6-writer/references/best-practices.md +236 -0
  112. package/skills/qa-k6-writer/references/config.md +219 -0
  113. package/skills/qa-k6-writer/references/patterns.md +304 -0
  114. package/skills/qa-linear-integration/SKILL.md +137 -0
  115. package/skills/qa-linear-integration/references/api-patterns.md +249 -0
  116. package/skills/qa-linear-integration/references/field-mapping.md +121 -0
  117. package/skills/qa-locust-writer/SKILL.md +151 -0
  118. package/skills/qa-locust-writer/references/best-practices.md +126 -0
  119. package/skills/qa-locust-writer/references/config.md +170 -0
  120. package/skills/qa-locust-writer/references/patterns.md +235 -0
  121. package/skills/qa-manual-test-designer/SKILL.md +145 -0
  122. package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
  123. package/skills/qa-manual-test-designer/references/personas.md +146 -0
  124. package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
  125. package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
  126. package/skills/qa-mobile-test-writer/SKILL.md +144 -0
  127. package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
  128. package/skills/qa-mobile-test-writer/references/config.md +309 -0
  129. package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
  130. package/skills/qa-nfr-analyst/SKILL.md +177 -0
  131. package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
  132. package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
  133. package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
  134. package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
  135. package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
  136. package/skills/qa-orchestrator/SKILL.md +132 -0
  137. package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
  138. package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
  139. package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
  140. package/skills/qa-pact-writer/SKILL.md +133 -0
  141. package/skills/qa-pact-writer/references/best-practices.md +100 -0
  142. package/skills/qa-pact-writer/references/config.md +135 -0
  143. package/skills/qa-pact-writer/references/patterns.md +161 -0
  144. package/skills/qa-plan-creator/SKILL.md +139 -0
  145. package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
  146. package/skills/qa-plan-creator/references/migration-plan.md +44 -0
  147. package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
  148. package/skills/qa-plan-creator/references/performance-plan.md +44 -0
  149. package/skills/qa-plan-creator/references/regression-plan.md +45 -0
  150. package/skills/qa-plan-creator/references/release-plan.md +45 -0
  151. package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
  152. package/skills/qa-plan-creator/references/test-plan.md +59 -0
  153. package/skills/qa-plan-creator/references/uat-plan.md +43 -0
  154. package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
  155. package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
  156. package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
  157. package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
  158. package/skills/qa-playwright-py-writer/SKILL.md +156 -0
  159. package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
  160. package/skills/qa-playwright-py-writer/references/config.md +195 -0
  161. package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
  162. package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
  163. package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
  164. package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
  165. package/skills/qa-playwright-ts-writer/references/config.md +144 -0
  166. package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
  167. package/skills/qa-pytest-writer/SKILL.md +145 -0
  168. package/skills/qa-pytest-writer/references/assertions.md +149 -0
  169. package/skills/qa-pytest-writer/references/best-practices.md +97 -0
  170. package/skills/qa-pytest-writer/references/config.md +176 -0
  171. package/skills/qa-pytest-writer/references/patterns.md +251 -0
  172. package/skills/qa-qase-integration/SKILL.md +149 -0
  173. package/skills/qa-qase-integration/references/api-reference.md +354 -0
  174. package/skills/qa-qase-integration/references/ci-integration.md +196 -0
  175. package/skills/qa-qase-integration/references/field-mapping.md +157 -0
  176. package/skills/qa-requirements-generator/SKILL.md +152 -0
  177. package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
  178. package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
  179. package/skills/qa-rest-assured-writer/SKILL.md +137 -0
  180. package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
  181. package/skills/qa-rest-assured-writer/references/config.md +124 -0
  182. package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
  183. package/skills/qa-risk-analyzer/SKILL.md +158 -0
  184. package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
  185. package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
  186. package/skills/qa-robot-framework-writer/SKILL.md +147 -0
  187. package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
  188. package/skills/qa-robot-framework-writer/references/config.md +204 -0
  189. package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
  190. package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
  191. package/skills/qa-security-test-writer/SKILL.md +123 -0
  192. package/skills/qa-security-test-writer/references/best-practices.md +155 -0
  193. package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
  194. package/skills/qa-security-test-writer/references/zap-config.md +258 -0
  195. package/skills/qa-selenium-java-writer/SKILL.md +143 -0
  196. package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
  197. package/skills/qa-selenium-java-writer/references/config.md +143 -0
  198. package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
  199. package/skills/qa-selenium-py-writer/SKILL.md +150 -0
  200. package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
  201. package/skills/qa-selenium-py-writer/references/config.md +224 -0
  202. package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
  203. package/skills/qa-shortcut-integration/SKILL.md +143 -0
  204. package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
  205. package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
  206. package/skills/qa-spec-auditor/SKILL.md +162 -0
  207. package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
  208. package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
  209. package/skills/qa-spec-writer/SKILL.md +143 -0
  210. package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
  211. package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
  212. package/skills/qa-spring-test-writer/SKILL.md +170 -0
  213. package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
  214. package/skills/qa-spring-test-writer/references/config.md +179 -0
  215. package/skills/qa-spring-test-writer/references/patterns.md +235 -0
  216. package/skills/qa-supertest-writer/SKILL.md +150 -0
  217. package/skills/qa-supertest-writer/references/assertions.md +192 -0
  218. package/skills/qa-supertest-writer/references/best-practices.md +102 -0
  219. package/skills/qa-supertest-writer/references/config.md +166 -0
  220. package/skills/qa-supertest-writer/references/patterns.md +242 -0
  221. package/skills/qa-task-creator/SKILL.md +142 -0
  222. package/skills/qa-task-creator/references/linking-patterns.md +127 -0
  223. package/skills/qa-task-creator/references/task-types.md +169 -0
  224. package/skills/qa-task-creator/templates/task-template.md +24 -0
  225. package/skills/qa-test-doc-compiler/SKILL.md +114 -0
  226. package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
  227. package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
  228. package/skills/qa-test-healer/SKILL.md +101 -0
  229. package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
  230. package/skills/qa-test-healer/references/fix-strategies.md +177 -0
  231. package/skills/qa-test-reporter/SKILL.md +130 -0
  232. package/skills/qa-test-reporter/references/best-practices.md +162 -0
  233. package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
  234. package/skills/qa-test-reporter/references/report-formats.md +287 -0
  235. package/skills/qa-test-reviewer/SKILL.md +142 -0
  236. package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
  237. package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
  238. package/skills/qa-test-strategy/SKILL.md +133 -0
  239. package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
  240. package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
  241. package/skills/qa-test-strategy/references/testing-types.md +143 -0
  242. package/skills/qa-testcase-from-docs/SKILL.md +161 -0
  243. package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
  244. package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
  245. package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
  246. package/skills/qa-testcase-from-ui/SKILL.md +109 -0
  247. package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
  248. package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
  249. package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
  250. package/skills/qa-visual-regression-writer/SKILL.md +175 -0
  251. package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
  252. package/skills/qa-visual-regression-writer/references/config.md +220 -0
  253. package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
  254. package/skills/qa-vitest-writer/SKILL.md +141 -0
  255. package/skills/qa-vitest-writer/references/assertions.md +105 -0
  256. package/skills/qa-vitest-writer/references/best-practices.md +62 -0
  257. package/skills/qa-vitest-writer/references/config.md +127 -0
  258. package/skills/qa-vitest-writer/references/patterns.md +141 -0
  259. package/skills/qa-webdriverio-writer/SKILL.md +145 -0
  260. package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
  261. package/skills/qa-webdriverio-writer/references/config.md +240 -0
  262. package/skills/qa-webdriverio-writer/references/patterns.md +269 -0
@@ -0,0 +1,146 @@
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.
@@ -0,0 +1,31 @@
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}
@@ -0,0 +1,175 @@
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 |
@@ -0,0 +1,154 @@
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