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,136 @@
1
+ ---
2
+ name: qa-codeceptjs-writer
3
+ description: Generate CodeceptJS scenario-driven E2E and BDD tests for TypeScript with human-readable syntax, multi-backend support (Playwright/WebDriver/Puppeteer), and Gherkin integration.
4
+ output_dir: tests/e2e
5
+ ---
6
+
7
+ # QA CodeceptJS Writer
8
+
9
+ ## Purpose
10
+
11
+ Write CodeceptJS BDD/scenario-driven E2E tests from test case specifications. Transform structured test cases into executable scenarios using human-readable syntax (`I.click`, `I.see`, `I.fillField`), multi-backend support, and optional Gherkin BDD integration.
12
+
13
+ ## Trigger Phrases
14
+
15
+ - "Write CodeceptJS tests for [feature/flow]"
16
+ - "Generate CodeceptJS E2E tests from test cases"
17
+ - "Create CodeceptJS BDD scenarios for [flow]"
18
+ - "Add CodeceptJS tests with Gherkin for [feature]"
19
+ - "CodeceptJS scenario-driven tests for [page]"
20
+ - "CodeceptJS data-driven tests for [scenario]"
21
+ - "CodeceptJS Page Object for [page]"
22
+ - "CodeceptJS tests with Playwright/WebDriver/Puppeteer backend"
23
+
24
+ ## Workflow
25
+
26
+ 1. **Read test cases** — From qa-testcase-from-docs, qa-manual-test-designer, qa-browser-data-collector
27
+ 2. **Generate scenarios** — Create `Feature`/`Scenario` blocks or `.feature` files
28
+ 3. **Add step definitions** — If BDD mode: implement Given/When/Then in step definition files
29
+ 4. **Configure helper** — Ensure `codecept.conf.ts` has correct helper (Playwright, WebDriver, Puppeteer)
30
+
31
+ ## Key Features
32
+
33
+ | Feature | Description |
34
+ |---------|-------------|
35
+ | **Scenario-driven syntax** | `I.click`, `I.see`, `I.fillField`, `I.grabTextFrom` — human-readable, framework-agnostic |
36
+ | **Multi-backend** | Playwright, WebDriver, Puppeteer — switch via config without changing test code |
37
+ | **BDD Gherkin** | `.feature` files + step definitions; Given/When/Then; Background, Examples, tables |
38
+ | **Page Objects** | Encapsulate page logic; inject via `inject()` |
39
+ | **Custom helpers** | Extend I with custom methods |
40
+ | **Data-driven** | `Data().Scenario` for parameterized scenarios |
41
+ | **within()** | Scope locators to a container element |
42
+
43
+ ## Test Types
44
+
45
+ | Type | Scope | Approach |
46
+ |------|-------|----------|
47
+ | **Scenario** | E2E user flows | `Feature`/`Scenario` blocks; `I` actor |
48
+ | **BDD Gherkin** | Business-readable acceptance | `.feature` files + step definitions |
49
+ | **Data-driven** | Same flow, multiple data sets | `Data(table).Scenario` with `current` |
50
+
51
+ ## Key Patterns
52
+
53
+ - **Structure:** `Feature('name')` / `Scenario('title', ({ I }) => { ... })`
54
+ - **Navigation:** `I.amOnPage('/path')`
55
+ - **Interactions:** `I.click('Submit')`, `I.fillField('Email', 'a@b.com')`, `I.selectOption('Country', 'US')`
56
+ - **Assertions:** `I.see('Welcome')`, `I.seeElement('.user')`, `I.dontSee('Error')`
57
+ - **Scoped locators:** `within('.modal', () => { I.click('OK'); })`
58
+ - **Data-driven:** `Data(accounts).Scenario('Login', ({ I, current }) => { ... })`
59
+ - **Debugging:** `pause()` — interactive console during execution
60
+ - **Auth:** `autoLogin` plugin — login once, reuse session
61
+
62
+ See `references/patterns.md` for full pattern reference.
63
+
64
+ ## BDD Mode (Gherkin)
65
+
66
+ - **Feature files:** `features/*.feature` — human-readable scenarios
67
+ - **Step definitions:** `step_definitions/steps.ts` — Given/When/Then implementations
68
+ - **Init:** `npx codeceptjs gherkin:init`
69
+ - **Snippets:** `npx codeceptjs gherkin:snippets` — generate stubs for undefined steps
70
+ - **Run features only:** `npx codeceptjs run --features`
71
+
72
+ See `references/patterns.md` for Gherkin patterns.
73
+
74
+ ## Configuration
75
+
76
+ - **codecept.conf.ts** — helpers (Playwright/WebDriver/Puppeteer), plugins (autoLogin, allure), include (Page Objects), output
77
+ - **Helper options** — url, browser, restart, video, trace, storageState
78
+
79
+ See `references/config.md` for full configuration guide.
80
+
81
+ ## Context7 MCP
82
+
83
+ Uses Context7 MCP to fetch CodeceptJS documentation when needed. Query for CodeceptJS API, helpers, or configuration when patterns are unclear.
84
+
85
+ ## Scope
86
+
87
+ **Can do (autonomous):**
88
+ - Generate CodeceptJS scenario and BDD tests from test case specs
89
+ - Create Page Objects and inject them via `inject()`
90
+ - Add `Data().Scenario` for data-driven tests
91
+ - Configure `codecept.conf.ts` (helpers, plugins, include)
92
+ - Use `within()` for scoped interactions
93
+ - Add step definitions for Gherkin scenarios
94
+ - Use autoLogin plugin for auth
95
+ - Use Context7 MCP for CodeceptJS docs
96
+
97
+ **Cannot do (requires confirmation):**
98
+ - Change production code structure
99
+ - Add dependencies not in package.json
100
+ - Override project CodeceptJS config without approval
101
+ - Switch helper (Playwright ↔ WebDriver) without user preference
102
+
103
+ **Will not do (out of scope):**
104
+ - Execute tests (user runs `npx codeceptjs run`)
105
+ - Write Jest/Vitest unit tests (use qa-jest-writer)
106
+ - Modify CI/CD pipelines
107
+ - Bypass security or access restricted areas
108
+
109
+ ## References
110
+
111
+ - `references/patterns.md` — Scenario syntax, BDD Gherkin, Page Objects, custom helpers, data-driven
112
+ - `references/config.md` — codecept.conf.ts, helpers, plugins, output
113
+ - `references/best-practices.md` — Readable scenarios, step granularity, helper selection
114
+
115
+ ## Quality Checklist
116
+
117
+ - [ ] Human-readable steps; avoid raw CSS/XPath when semantic locators suffice
118
+ - [ ] Page Objects for page-specific logic; inject via `inject()`
119
+ - [ ] No hardcoded waits; use helper retry or explicit `I.waitForVisible`
120
+ - [ ] Tests independent; no shared state between scenarios
121
+ - [ ] BDD step definitions map to single, focused actions
122
+ - [ ] Data-driven tests use `Data().Scenario` with `current`
123
+ - [ ] Traceability to test case IDs where applicable
124
+ - [ ] No hardcoded secrets (use env vars)
125
+
126
+ ## Troubleshooting
127
+
128
+ | Symptom | Likely Cause | Fix |
129
+ |---------|--------------|-----|
130
+ | Element not found | Locator too specific, dynamic content | Use semantic locators (text, label); add `data-test` with customLocator |
131
+ | I is undefined | Wrong inject/context | Ensure `({ I }) =>` in Scenario; use `inject()` in step defs |
132
+ | Step definition not matched | Regex/string mismatch | Run `gherkin:snippets`; check Cucumber expressions |
133
+ | Backend-specific failure | Helper API differs | Playwright/WebDriver/Puppeteer have different methods; check helper docs |
134
+ | autoLogin not working | Config or TypeScript | Ensure plugin enabled; check login function export |
135
+ | Data().Scenario fails | current not passed | Use `({ I, current })`; access `current.columnName` |
136
+ | within() scope wrong | Nested structure | Verify container selector; use strict locators `{ css: '...' }` |
@@ -0,0 +1,207 @@
1
+ # CodeceptJS Best Practices
2
+
3
+ Guidelines for maintainable, readable CodeceptJS scenarios.
4
+
5
+ ## Readable Scenarios
6
+
7
+ ### Use Human-Readable Steps
8
+
9
+ Prefer semantic, visible keywords over raw selectors:
10
+
11
+ ```typescript
12
+ // GOOD: Readable, intent-focused
13
+ Scenario('user logs in', ({ I }) => {
14
+ I.amOnPage('/login');
15
+ I.fillField('Username', 'john');
16
+ I.fillField('Password', 'secret');
17
+ I.click('Sign In');
18
+ I.see('Welcome');
19
+ });
20
+
21
+ // AVOID: Overly technical
22
+ Scenario('user logs in', ({ I }) => {
23
+ I.amOnPage('/login');
24
+ I.fillField('#username', 'john');
25
+ I.fillField('input[type="password"]', 'secret');
26
+ I.click('.btn-primary');
27
+ I.seeElement('.welcome-msg');
28
+ });
29
+ ```
30
+
31
+ ### Leverage Locator Resolution
32
+
33
+ CodeceptJS resolves locators by label, link text, button text, then CSS/XPath. Use that:
34
+
35
+ ```typescript
36
+ // Prefer label/button text when unique
37
+ I.fillField('Email address', 'user@example.com');
38
+ I.click('Submit');
39
+
40
+ // Use data-test or data-qa with customLocator plugin for stability
41
+ I.click({ custom: 'submit-btn' });
42
+ ```
43
+
44
+ ## Step Granularity
45
+
46
+ ### One Logical Action Per Step
47
+
48
+ ```typescript
49
+ // GOOD: Clear, debuggable steps
50
+ Scenario('checkout flow', ({ I }) => {
51
+ I.amOnPage('/cart');
52
+ I.click('Proceed to checkout');
53
+ I.fillField('Card number', '4111111111111111');
54
+ I.fillField('Expiry', '12/25');
55
+ I.click('Pay');
56
+ I.see('Order confirmed');
57
+ });
58
+
59
+ // AVOID: One giant step
60
+ Scenario('checkout flow', ({ I }) => {
61
+ I.amOnPage('/cart');
62
+ I.click('Proceed to checkout');
63
+ I.fillField('Card number', '4111111111111111');
64
+ I.fillField('Expiry', '12/25');
65
+ I.click('Pay');
66
+ I.see('Order confirmed');
67
+ // All in one — hard to debug which step failed
68
+ });
69
+ ```
70
+
71
+ ### Use Page Objects for Complex Flows
72
+
73
+ ```typescript
74
+ // Extract repeated flows to Page Objects
75
+ const { I, checkoutPage } = inject();
76
+
77
+ Scenario('checkout', () => {
78
+ checkoutPage.addItem('Product A');
79
+ checkoutPage.proceedToPayment();
80
+ checkoutPage.payWithCard('4111111111111111', '12/25');
81
+ I.see('Order confirmed');
82
+ });
83
+ ```
84
+
85
+ ## Helper Selection
86
+
87
+ | Helper | When to Use |
88
+ |--------|-------------|
89
+ | **Playwright** | Modern apps, multi-browser, trace/video, auto-wait |
90
+ | **WebDriver** | Selenium grid, cloud providers, legacy browsers |
91
+ | **Puppeteer** | Chrome-only, lightweight, fast |
92
+
93
+ Choose based on project constraints (browser support, CI, existing stack).
94
+
95
+ ## BDD Best Practices
96
+
97
+ ### Keep Feature Files Business-Focused
98
+
99
+ ```gherkin
100
+ # GOOD: Business language
101
+ Feature: Checkout
102
+ As a customer I want to checkout my cart
103
+
104
+ Scenario: apply discount
105
+ Given I have products totaling $50 in my cart
106
+ When I apply coupon "SAVE10"
107
+ Then my total should be $45
108
+ ```
109
+
110
+ ```gherkin
111
+ # AVOID: Technical implementation details
112
+ Feature: Checkout
113
+ Scenario: apply discount
114
+ Given I am on /cart
115
+ And I click .coupon-input
116
+ And I type SAVE10
117
+ ```
118
+
119
+ ### Use Background for Common Setup
120
+
121
+ ```gherkin
122
+ Feature: Dashboard
123
+
124
+ Background:
125
+ Given I am logged in as administrator
126
+
127
+ Scenario: view reports
128
+ When I open reports page
129
+ Then I should see sales report
130
+ ```
131
+
132
+ ### Use Scenario Outline for Data Variations
133
+
134
+ ```gherkin
135
+ Scenario Outline: login with role
136
+ Given I am on login page
137
+ When I login as "<user>" with "<password>"
138
+ Then I should see "<welcome>" message
139
+ Examples:
140
+ | user | password | welcome |
141
+ | admin | admin123 | Admin |
142
+ | user | user123 | User |
143
+ ```
144
+
145
+ ## Data-Driven vs Gherkin
146
+
147
+ | Approach | Use When |
148
+ |----------|----------|
149
+ | **Data().Scenario** | Same flow, different data; technical tests |
150
+ | **Scenario Outline** | BDD; business examples; readable to stakeholders |
151
+
152
+ ## Stability and Flakiness
153
+
154
+ | Practice | Description |
155
+ |----------|-------------|
156
+ | **Stable selectors** | Prefer label, `data-test`, `data-qa` over CSS |
157
+ | **Avoid I.wait(ms)** | Use `I.waitForVisible`, `I.waitForElement` when needed |
158
+ | **Isolation** | Each scenario independent; use `restart: 'context'` |
159
+ | **No shared state** | Don't rely on order; use Background/login for setup |
160
+
161
+ ## Custom Helpers for Reuse
162
+
163
+ Extract cross-cutting logic:
164
+
165
+ ```typescript
166
+ // helpers/DbHelper.ts
167
+ async haveUser(email: string) {
168
+ // Create user in DB
169
+ return { id, email };
170
+ }
171
+
172
+ // In test
173
+ const { I, DbHelper } = inject();
174
+ Scenario('test', async () => {
175
+ const user = await DbHelper.haveUser('test@example.com');
176
+ I.amOnPage(`/user/${user.id}`);
177
+ });
178
+ ```
179
+
180
+ ## Debugging
181
+
182
+ | Tool | Use |
183
+ |------|-----|
184
+ | `pause()` | Interactive console; inspect state, run I.* commands |
185
+ | `--steps` | Step-by-step output in console |
186
+ | `--debug` | Debug mode with detailed output |
187
+ | `screenshotOnFail` | Auto-screenshot on failure |
188
+
189
+ ## File Organization
190
+
191
+ ```
192
+ tests/
193
+ login_test.ts
194
+ checkout_test.ts
195
+ features/
196
+ login.feature
197
+ checkout.feature
198
+ step_definitions/
199
+ steps.ts
200
+ checkout_steps.ts
201
+ pages/
202
+ LoginPage.ts
203
+ CheckoutPage.ts
204
+ helpers/
205
+ MyHelper.ts
206
+ output/ # Screenshots, videos, traces
207
+ ```
@@ -0,0 +1,255 @@
1
+ # CodeceptJS Configuration Guide
2
+
3
+ Configuration for `codecept.conf.ts` (or `.js`) and related setup.
4
+
5
+ ## Basic Structure
6
+
7
+ ```typescript
8
+ // codecept.conf.ts
9
+ import { Config } from 'codeceptjs';
10
+
11
+ const config: Config = {
12
+ tests: './tests/**/*_test.ts',
13
+ output: './output',
14
+ helpers: {
15
+ Playwright: {
16
+ url: 'http://localhost:3000',
17
+ show: false,
18
+ browser: 'chromium',
19
+ },
20
+ },
21
+ include: {
22
+ I: './steps_file.ts',
23
+ loginPage: './pages/LoginPage.ts',
24
+ },
25
+ mocha: {},
26
+ bootstrap: null,
27
+ timeout: null,
28
+ teardown: null,
29
+ hooks: [],
30
+ gherkin: {
31
+ features: './features/**/*.feature',
32
+ steps: ['./step_definitions/steps.ts'],
33
+ },
34
+ plugins: {
35
+ screenshotOnFail: {
36
+ enabled: true,
37
+ },
38
+ },
39
+ stepTimeout: 0,
40
+ stepTimeoutOverride: [
41
+ {
42
+ pattern: 'wait.*',
43
+ timeout: 0,
44
+ },
45
+ ],
46
+ name: 'my-app',
47
+ };
48
+
49
+ export = config;
50
+ ```
51
+
52
+ ## Helpers
53
+
54
+ ### Playwright Helper
55
+
56
+ ```typescript
57
+ helpers: {
58
+ Playwright: {
59
+ url: 'http://localhost:3000',
60
+ show: false,
61
+ browser: 'chromium', // or 'firefox', 'webkit'
62
+ restart: 'context', // 'context' | 'session' | 'browser'
63
+ waitForNavigation: 'load',
64
+ waitForAction: 100,
65
+ timeout: 10000,
66
+ video: false,
67
+ trace: false,
68
+ keepVideoForPassedTests: false,
69
+ recordHar: false,
70
+ storageState: 'auth.json', // Reuse auth state
71
+ },
72
+ },
73
+ ```
74
+
75
+ | Option | Description | Values |
76
+ |--------|-------------|--------|
77
+ | `url` | Base URL | `'http://localhost:3000'` |
78
+ | `browser` | Browser to use | `'chromium'`, `'firefox'`, `'webkit'` |
79
+ | `restart` | Restart strategy | `'context'`, `'session'`, `'browser'` |
80
+ | `video` | Record failed tests | `true` / `false` |
81
+ | `trace` | Enable trace recording | `true` / `false` |
82
+ | `storageState` | Auth state file | Path to JSON file |
83
+
84
+ ### WebDriver Helper
85
+
86
+ ```typescript
87
+ helpers: {
88
+ WebDriver: {
89
+ url: 'http://localhost:3000',
90
+ browser: 'chrome',
91
+ host: 'localhost',
92
+ port: 4444,
93
+ restart: true,
94
+ smartWait: 5000,
95
+ waitForTimeout: 10000,
96
+ desiredCapabilities: {},
97
+ },
98
+ },
99
+ ```
100
+
101
+ ### Puppeteer Helper
102
+
103
+ ```typescript
104
+ helpers: {
105
+ Puppeteer: {
106
+ url: 'http://localhost:3000',
107
+ show: false,
108
+ restart: true,
109
+ waitForNavigation: 'networkidle0',
110
+ waitForAction: 100,
111
+ chrome: {
112
+ args: ['--no-sandbox'],
113
+ },
114
+ },
115
+ },
116
+ ```
117
+
118
+ ## Include (Page Objects and Steps)
119
+
120
+ ```typescript
121
+ include: {
122
+ I: './steps_file.ts',
123
+ loginPage: './pages/LoginPage.ts',
124
+ dashboardPage: './pages/DashboardPage.ts',
125
+ },
126
+ ```
127
+
128
+ - `I` — Custom steps file extending `I` object
129
+ - Other keys — Page Objects or custom objects injected via `inject()`
130
+
131
+ ## Gherkin Configuration
132
+
133
+ ```typescript
134
+ gherkin: {
135
+ features: './features/**/*.feature',
136
+ steps: [
137
+ './step_definitions/steps.ts',
138
+ './step_definitions/checkout_steps.ts',
139
+ ],
140
+ avoidDuplicateSteps: true,
141
+ },
142
+ ```
143
+
144
+ ## Plugins
145
+
146
+ ### Built-in Plugins
147
+
148
+ ```typescript
149
+ plugins: {
150
+ screenshotOnFail: {
151
+ enabled: true,
152
+ uniqueScreenshotNames: true,
153
+ },
154
+ retryFailedStep: {
155
+ enabled: true,
156
+ retries: 3,
157
+ },
158
+ tryTo: {
159
+ enabled: true,
160
+ },
161
+ retryTo: {
162
+ enabled: true,
163
+ retries: 3,
164
+ },
165
+ stepByStepReport: {
166
+ enabled: true,
167
+ output: './output',
168
+ },
169
+ autoLogin: {
170
+ enabled: true,
171
+ inject: 'login',
172
+ users: {
173
+ admin: {
174
+ login: (I) => {
175
+ I.amOnPage('/login');
176
+ I.fillField('Username', 'admin');
177
+ I.fillField('Password', 'admin123');
178
+ I.click('Sign In');
179
+ },
180
+ check: (I) => {
181
+ I.see('Dashboard');
182
+ },
183
+ },
184
+ },
185
+ },
186
+ },
187
+ ```
188
+
189
+ ### autoLogin Plugin
190
+
191
+ Eliminates repeated login steps in scenarios:
192
+
193
+ ```typescript
194
+ // Enable in plugins
195
+ autoLogin: {
196
+ enabled: true,
197
+ inject: 'login',
198
+ users: {
199
+ admin: {
200
+ login: (I) => {
201
+ I.amOnPage('/login');
202
+ I.fillField('Username', 'admin');
203
+ I.fillField('Password', 'admin123');
204
+ I.click('Sign In');
205
+ },
206
+ check: (I) => {
207
+ I.see('Dashboard');
208
+ },
209
+ },
210
+ },
211
+ },
212
+
213
+ // In test
214
+ Scenario('admin flow', ({ I, login }) => {
215
+ login('admin');
216
+ I.amOnPage('/settings');
217
+ I.see('Settings');
218
+ });
219
+ ```
220
+
221
+ ## Output and Reports
222
+
223
+ | Option | Description |
224
+ |--------|-------------|
225
+ | `output` | Directory for screenshots, videos, traces |
226
+ | `stepByStepReport` | Human-readable step output |
227
+ | `mocha.reporter` | Mocha reporter (e.g., `'spec'`) |
228
+
229
+ ## Test Discovery
230
+
231
+ | Option | Description | Example |
232
+ |--------|-------------|---------|
233
+ | `tests` | Glob for test files | `'./tests/**/*_test.ts'` |
234
+ | `gherkin.features` | Glob for feature files | `'./features/**/*.feature'` |
235
+
236
+ ## Bootstrap and Teardown
237
+
238
+ ```typescript
239
+ bootstrap: './bootstrap.ts',
240
+ teardown: './teardown.ts',
241
+ ```
242
+
243
+ ## CLI Options
244
+
245
+ | Command | Description |
246
+ |---------|-------------|
247
+ | `npx codeceptjs run` | Run all tests |
248
+ | `npx codeceptjs run --steps` | Show step-by-step output |
249
+ | `npx codeceptjs run --debug` | Debug mode |
250
+ | `npx codeceptjs run --features` | Run only feature files |
251
+ | `npx codeceptjs run --tests` | Run only JS/TS tests |
252
+ | `npx codeceptjs run --grep "login"` | Run tests matching pattern |
253
+ | `npx codeceptjs gherkin:init` | Initialize Gherkin |
254
+ | `npx codeceptjs gherkin:snippets` | Generate step definition stubs |
255
+ | `npx codeceptjs gherkin:steps` | List defined steps |