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,47 @@
1
+ # Exploratory Testing Session Charter
2
+
3
+ **Charter:** {mission statement}
4
+ **Date:** {YYYY-MM-DD}
5
+ **Tester:** {name}
6
+ **Time-box:** {e.g., 90 minutes}
7
+
8
+ ---
9
+
10
+ ## Mission
11
+
12
+ {What are we trying to learn or validate?}
13
+
14
+ ---
15
+
16
+ ## Areas to Explore
17
+
18
+ 1. {area 1}
19
+ 2. {area 2}
20
+ 3. {area 3}
21
+
22
+ ---
23
+
24
+ ## Setup
25
+
26
+ - **Build/URL:** {version or URL}
27
+ - **Test data:** {credentials, test accounts}
28
+ - **Tools:** {browser, proxy, recorder}
29
+
30
+ ---
31
+
32
+ ## Session Notes
33
+
34
+ | Time | Action | Observation | Issue? |
35
+ |------|--------|-------------|--------|
36
+ | {HH:MM} | {what you did} | {what you saw} | ☐ Yes ☐ No |
37
+ | {HH:MM} | | | |
38
+ | {HH:MM} | | | |
39
+
40
+ ---
41
+
42
+ ## Debrief
43
+
44
+ - **Bugs found:** {count and brief list}
45
+ - **Coverage:** {areas covered vs. missed}
46
+ - **Questions / follow-ups:** {open items}
47
+ - **Next charter:** {suggested focus}
@@ -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,144 @@
1
+ ---
2
+ name: qa-mobile-test-writer
3
+ description: Generate mobile tests using Appium, WebdriverIO Mobile, and Flutter Driver for iOS and Android native, hybrid, Flutter, and mobile web applications.
4
+ output_dir: tests/mobile
5
+ ---
6
+
7
+ # QA Mobile Test Writer
8
+
9
+ ## Purpose
10
+
11
+ Write mobile tests for iOS, Android, hybrid, Flutter, and mobile web applications. Transform structured test cases into executable mobile test scripts using Appium (cross-platform native + hybrid), WebdriverIO Mobile (@wdio/appium-service), and Flutter Driver / integration_test for Flutter apps.
12
+
13
+ ## Trigger Phrases
14
+
15
+ - "Write mobile tests for [iOS/Android/Flutter]"
16
+ - "Generate Appium tests from test cases"
17
+ - "Create mobile E2E tests for [app]"
18
+ - "Add Flutter integration tests"
19
+ - "Appium tests for native/hybrid app"
20
+ - "Mobile web tests on device"
21
+ - "WebdriverIO mobile tests with Appium"
22
+ - "Touch actions, gestures, app lifecycle tests"
23
+ - "Configure device farm (BrowserStack, Sauce Labs)"
24
+ - "Mobile test capabilities and emulator setup"
25
+
26
+ ## Workflow
27
+
28
+ 1. **Read test cases** — From qa-testcase-from-docs, qa-manual-test-designer, qa-testcase-from-ui
29
+ 2. **Determine platform/framework** — iOS vs Android, native vs hybrid vs Flutter vs mobile web
30
+ 3. **Generate test files** — Create test scripts with appropriate framework (Appium, WDIO, Flutter)
31
+ 4. **Configure capabilities** — platformName, automationName, app path, device/emulator
32
+ 5. **Set up device/emulator** — Local emulator, simulator, or device farm config
33
+
34
+ ## Frameworks
35
+
36
+ | Framework | Use Case | Drivers |
37
+ |-----------|----------|---------|
38
+ | **Appium** | Native, hybrid, mobile web | XCUITest (iOS), UiAutomator2 (Android), Espresso (Android) |
39
+ | **WebdriverIO Mobile** | WDIO + Appium; TypeScript | @wdio/appium-service, same drivers |
40
+ | **Flutter Driver** | Flutter apps only | Flutter driver, integration_test |
41
+
42
+ ## Platform Coverage
43
+
44
+ | Platform | Driver | Automation |
45
+ |----------|--------|------------|
46
+ | **iOS** | XCUITest | Native, hybrid, Safari (mobile web) |
47
+ | **Android** | UiAutomator2 | Native, hybrid, Chrome (mobile web) |
48
+ | **Flutter** | Flutter Driver | Flutter widgets, integration_test |
49
+ | **Mobile Web** | Browser on device | Chrome (Android), Safari (iOS) |
50
+
51
+ ## Key Patterns
52
+
53
+ - **Desired capabilities:** platformName, automationName, app (path or URL), deviceName, udid, noReset, fullReset
54
+ - **Touch actions:** tap, swipe, scroll, long press, multi-touch
55
+ - **Element location:** accessibility id, xpath, class name, resource-id (Android), name (iOS)
56
+ - **Gestures:** W3C Actions API, TouchAction, MultiTouchAction
57
+ - **App lifecycle:** install, launch, close, reset, background/foreground
58
+
59
+ See `references/patterns.md` for native apps, hybrid apps, gestures, app lifecycle, deep links.
60
+
61
+ ## Flutter Integration
62
+
63
+ - **flutter_test** — Unit and widget tests
64
+ - **integration_test** — E2E on device/emulator
65
+ - **Finders:** find.byKey, find.text, find.byType, find.bySemanticsLabel
66
+ - **Pumping:** pumpWidget, pumpAndSettle
67
+ - **Golden tests** — Screenshot comparison for visual regression
68
+
69
+ ## WebdriverIO Mobile
70
+
71
+ - **@wdio/appium-service** — Appium server management
72
+ - **Mobile-specific selectors** — accessibility id, -android uiautomator, -ios predicate string
73
+ - **Touch actions** — element.touchAction(), browser.touchAction()
74
+ - **Mobile commands** — getContext, switchContext (for hybrid)
75
+
76
+ ## Device Farms
77
+
78
+ | Service | Use Case |
79
+ |---------|----------|
80
+ | **BrowserStack** | Real devices, parallel execution |
81
+ | **Sauce Labs** | Real devices, emulators, Appium cloud |
82
+ | **AWS Device Farm** | AWS-integrated device testing |
83
+ | **Local** | Emulators, simulators, USB devices |
84
+
85
+ See `references/config.md` for Appium setup, capabilities, device farms, emulators.
86
+
87
+ ## Output
88
+
89
+ - Mobile test scripts (Appium, WDIO, Flutter)
90
+ - Capability configuration files
91
+ - CI integration snippets (GitHub Actions, Jenkins, etc.)
92
+ - Device/emulator setup instructions
93
+
94
+ ## Scope
95
+
96
+ **Can do (autonomous):**
97
+ - Generate Appium, WebdriverIO Mobile, Flutter Driver tests from test cases
98
+ - Configure desired capabilities for iOS/Android
99
+ - Use touch actions, gestures, app lifecycle patterns
100
+ - Set up capability configs for BrowserStack, Sauce Labs, AWS Device Farm
101
+ - Generate Flutter integration_test with finders and pumping
102
+ - Apply accessibility id, resource-id, xpath for element location
103
+ - Delegate to qa-test-healer when tests fail (selector/assertion fixes)
104
+
105
+ **Cannot do (requires confirmation):**
106
+ - Change production app code or add test IDs
107
+ - Add dependencies not in package.json / pubspec.yaml
108
+ - Override project Appium/WDIO config without approval
109
+ - Install or configure emulators/simulators on user machine
110
+
111
+ **Will not do (out of scope):**
112
+ - Execute tests (user runs `npx wdio`, `appium`, `flutter test integration_test`)
113
+ - Write unit/widget tests (use qa-jest-writer, qa-pytest-writer)
114
+ - Modify CI/CD pipelines
115
+ - Provision or manage device farm accounts
116
+
117
+ ## References
118
+
119
+ - `references/patterns.md` — Native apps, hybrid apps, gestures, app lifecycle, deep links
120
+ - `references/config.md` — Appium setup, capabilities, device farms, emulators
121
+ - `references/best-practices.md` — Test stability, device matrix, accessibility IDs, CI with emulators
122
+
123
+ ## Quality Checklist
124
+
125
+ - [ ] Accessibility id / resource-id preferred over xpath where possible
126
+ - [ ] Touch actions used for mobile (tap, swipe, scroll) vs generic click
127
+ - [ ] App lifecycle handled (install, launch, reset) per test needs
128
+ - [ ] Capabilities match target platform (iOS XCUITest, Android UiAutomator2)
129
+ - [ ] Tests independent (no shared state, order-independent)
130
+ - [ ] No hardcoded secrets (use env vars for device farm credentials)
131
+ - [ ] Traceability to test case IDs where applicable
132
+ - [ ] Flutter: find.byKey used for stable element location when available
133
+
134
+ ## Troubleshooting
135
+
136
+ | Symptom | Likely Cause | Fix |
137
+ |---------|--------------|-----|
138
+ | Element not found | Wrong locator strategy, timing | Use accessibility id; add explicit wait; check context (native vs webview) |
139
+ | Session not created | Capability mismatch, wrong driver | Verify platformName, automationName, app path; check Appium server version |
140
+ | Hybrid app: element in webview | Wrong context | Use getContext/switchContext to webview; use CSS/XPath in webview |
141
+ | Flaky on emulator | Timing, animations | Use pumpAndSettle (Flutter); add explicit waits; disable animations |
142
+ | Device farm timeout | Slow device, network | Increase timeout; use faster device; check app size |
143
+ | Gesture fails | Unsupported action | Use W3C Actions API; fallback to TouchAction |
144
+ | App not installing | Invalid path, signing | Verify app path; check .ipa/.apk signing for real devices |
@@ -0,0 +1,214 @@
1
+ # Mobile Testing Best Practices
2
+
3
+ ## Test Stability
4
+
5
+ ### Prefer Accessibility IDs
6
+
7
+ ```javascript
8
+ // Good — stable, semantic
9
+ await $('~login-button').click();
10
+ await $('~email-input').setValue('user@test.com');
11
+
12
+ // Avoid — brittle
13
+ await $('//android.widget.Button[@index="2"]').click();
14
+ await $('.android.widget.EditText').setValue('user@test.com');
15
+ ```
16
+
17
+ **Recommendation:** Add `accessibilityIdentifier` (iOS) and `contentDescription` / `testID` (Android/React Native) to key UI elements. Use these for automation.
18
+
19
+ ### Explicit Waits
20
+
21
+ ```javascript
22
+ // Good — wait for condition
23
+ await $('~welcome-message').waitForDisplayed({ timeout: 10000 });
24
+ await $('~submit-btn').waitForClickable();
25
+
26
+ // Bad — arbitrary delay
27
+ await driver.pause(3000);
28
+ ```
29
+
30
+ ### Handle Animations
31
+
32
+ - **Flutter:** Use `pumpAndSettle()` to wait for animations to finish
33
+ - **Appium:** Add short waits after navigation; use `waitForDisplayed` before interaction
34
+ - **Tip:** Disable animations on emulators for faster, more stable runs:
35
+ - Android: Settings → Developer options → Window/Transition/Animator scale → Off
36
+ - iOS: Settings → Accessibility → Motion → Reduce Motion
37
+
38
+ ### Avoid Order Dependencies
39
+
40
+ - Each test should run in isolation
41
+ - Use `beforeEach` to reset app state or use `fullReset` when needed
42
+ - Prefer API/data setup over UI-based setup when possible
43
+
44
+ ---
45
+
46
+ ## Device Matrix
47
+
48
+ ### Prioritize Key Combinations
49
+
50
+ | Priority | Android | iOS |
51
+ |----------|---------|-----|
52
+ | High | Latest (API 34) | Latest (17) |
53
+ | Medium | L-1 (API 33) | N-1 (16) |
54
+ | Low | Older (API 30) | Older (15) |
55
+
56
+ ### Screen Sizes
57
+
58
+ - **Phone:** Small (320pt), Medium (375pt), Large (414pt)
59
+ - **Tablet:** 768pt, 1024pt (if app supports)
60
+ - **Orientation:** Portrait and landscape for critical flows
61
+
62
+ ### Strategy
63
+
64
+ - **Smoke:** 1–2 devices (latest Android + iOS)
65
+ - **Regression:** 4–6 devices covering OS versions and screen sizes
66
+ - **Full matrix:** Device farm with parallel execution
67
+
68
+ ---
69
+
70
+ ## Accessibility IDs
71
+
72
+ ### iOS (Swift/SwiftUI)
73
+
74
+ ```swift
75
+ Button("Login") { ... }
76
+ .accessibilityIdentifier("login-button")
77
+
78
+ TextField("Email", text: $email)
79
+ .accessibilityIdentifier("email-input")
80
+ ```
81
+
82
+ ### Android (Kotlin/XML)
83
+
84
+ ```xml
85
+ <Button
86
+ android:id="@+id/login_button"
87
+ android:contentDescription="Login" />
88
+ ```
89
+
90
+ ```kotlin
91
+ // Or programmatically
92
+ view.accessibilityDelegate = object : AccessibilityDelegate() {
93
+ // Use contentDescription for screen readers and automation
94
+ }
95
+ ```
96
+
97
+ ### React Native
98
+
99
+ ```jsx
100
+ <Button testID="login-button" title="Login" />
101
+ <TextInput testID="email-input" />
102
+ ```
103
+
104
+ ### Flutter
105
+
106
+ ```dart
107
+ ElevatedButton(
108
+ key: Key('login-button'),
109
+ onPressed: () {},
110
+ child: Text('Login'),
111
+ )
112
+ ```
113
+
114
+ ---
115
+
116
+ ## CI with Emulators
117
+
118
+ ### Caching
119
+
120
+ - Cache Android SDK and emulator images
121
+ - Cache iOS simulators (Xcode)
122
+ - Cache npm/pip dependencies
123
+
124
+ ### Parallelization
125
+
126
+ ```yaml
127
+ # Run Android and iOS in parallel
128
+ jobs:
129
+ android:
130
+ runs-on: ubuntu-latest
131
+ steps:
132
+ - run: npx wdio run wdio.android.conf.ts
133
+ ios:
134
+ runs-on: macos-latest
135
+ steps:
136
+ - run: npx wdio run wdio.ios.conf.ts
137
+ ```
138
+
139
+ ### Sharding
140
+
141
+ ```bash
142
+ # Split specs across workers
143
+ npx wdio run wdio.conf.ts --shard=1/4
144
+ npx wdio run wdio.conf.ts --shard=2/4
145
+ # ...
146
+ ```
147
+
148
+ ### Artifacts on Failure
149
+
150
+ - Screenshots on failure
151
+ - Appium logs
152
+ - Video recording (device farms often provide this)
153
+
154
+ ```javascript
155
+ afterTest: async function (test, context, result) {
156
+ if (result.error) {
157
+ const screenshot = await browser.takeScreenshot();
158
+ // Write to file, upload to artifact storage
159
+ }
160
+ },
161
+ ```
162
+
163
+ ---
164
+
165
+ ## Hybrid App Considerations
166
+
167
+ - **Context switching:** Always verify current context before interacting
168
+ - **Webview load:** Wait for webview context to appear and page to load
169
+ - **Selectors in webview:** Use web selectors (CSS, XPath) after switching to webview
170
+ - **Performance:** Webview interactions can be slower; increase timeouts if needed
171
+
172
+ ---
173
+
174
+ ## Flutter-Specific
175
+
176
+ ### Use Keys for Stability
177
+
178
+ ```dart
179
+ // In app
180
+ ElevatedButton(key: Key('submit'), ...)
181
+
182
+ // In test
183
+ await tester.tap(find.byKey(Key('submit')));
184
+ ```
185
+
186
+ ### pumpAndSettle for Animations
187
+
188
+ ```dart
189
+ await tester.pumpAndSettle(); // Waits for all animations
190
+ ```
191
+
192
+ ### Golden Tests
193
+
194
+ - Store golden images in version control
195
+ - Review visual diffs in PRs
196
+ - Use `flutter test --update-goldens` to update when UI intentionally changes
197
+
198
+ ---
199
+
200
+ ## Security
201
+
202
+ - Never hardcode device farm credentials
203
+ - Use `process.env` or CI secrets
204
+ - Store app paths in config; avoid committing .apk/.ipa to repo
205
+ - Use signed builds for real device testing
206
+
207
+ ---
208
+
209
+ ## Performance
210
+
211
+ - Use `noReset: true` when possible to avoid reinstall between tests
212
+ - Run tests in parallel on device farms
213
+ - Minimize unnecessary app restarts
214
+ - Consider splitting long flows into smaller, focused tests