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,258 @@
1
+ # OWASP ZAP Configuration
2
+
3
+ Configuration guide for OWASP ZAP (Zed Attack Proxy) for DAST scanning. Use with qa-security-test-writer when generating ZAP automation configs.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ | Mode | Purpose |
10
+ |------|---------|
11
+ | **Passive scan** | Observe traffic; detect issues without sending attack payloads |
12
+ | **Active scan** | Send probes to find vulnerabilities (injection, XSS, etc.) |
13
+ | **API scan** | Target OpenAPI/Swagger-defined endpoints |
14
+ | **AJAX spider** | Crawl SPAs and dynamic content |
15
+
16
+ ---
17
+
18
+ ## Basic Configuration
19
+
20
+ ### Target URL
21
+
22
+ ```yaml
23
+ # zap-config.yaml (conceptual)
24
+ target:
25
+ url: "https://staging.example.com"
26
+ include: ["https://staging.example.com/*"]
27
+ exclude: ["https://staging.example.com/logout", "https://staging.example.com/admin/dangerous"]
28
+ ```
29
+
30
+ ### Command-Line (Docker)
31
+
32
+ ```bash
33
+ docker run -t owasp/zap2docker-stable zap-baseline.py \
34
+ -t https://staging.example.com \
35
+ -r zap-report.html
36
+ ```
37
+
38
+ ```bash
39
+ # Full scan (active + passive)
40
+ docker run -t owasp/zap2docker-stable zap-full-scan.py \
41
+ -t https://staging.example.com \
42
+ -r zap-report.html
43
+ ```
44
+
45
+ ---
46
+
47
+ ## Scan Policies
48
+
49
+ ### Policy Levels
50
+
51
+ | Policy | Risk | Description |
52
+ |--------|------|-------------|
53
+ | **Low** | Lower false positives, may miss issues |
54
+ | **Medium** | Balanced |
55
+ | **High** | More thorough, more false positives |
56
+
57
+ ### Custom Policy (API)
58
+
59
+ ```python
60
+ # Python ZAP API example
61
+ import zapv2
62
+
63
+ zap = zapv2.ZAPv2(apikey='your-api-key', proxies={'http': 'http://127.0.0.1:8080'})
64
+
65
+ # Enable/disable specific scanners
66
+ zap.ascan.enable_all_scanners()
67
+ zap.ascan.disable_scanners(['40018']) # Disable specific scanner ID
68
+
69
+ # Set scan policy
70
+ zap.ascan.set_scanner_alert_threshold('40018', 'HIGH') # SQL Injection
71
+ ```
72
+
73
+ ### Scanner IDs (Common)
74
+
75
+ | ID | Scanner |
76
+ |----|---------|
77
+ | 40018 | SQL Injection |
78
+ | 40014 | Cross Site Scripting (Reflected) |
79
+ | 40016 | Cross Site Scripting (Persistent) |
80
+ | 40012 | Cross Site Scripting (DOM) |
81
+ | 90011 | Content Security Policy |
82
+ | 90033 | X-Content-Type-Options |
83
+ | 40009 | Path Traversal |
84
+
85
+ ---
86
+
87
+ ## Authentication
88
+
89
+ ### Form-Based Authentication
90
+
91
+ ```yaml
92
+ auth:
93
+ type: form
94
+ login_url: "https://staging.example.com/login"
95
+ login_request:
96
+ method: POST
97
+ url: "https://staging.example.com/login"
98
+ body: "username={%username%}&password={%password%}"
99
+ logout:
100
+ url: "https://staging.example.com/logout"
101
+ credentials:
102
+ username: "${TEST_USER}"
103
+ password: "${TEST_PASSWORD}"
104
+ ```
105
+
106
+ ### JSON API Authentication
107
+
108
+ ```yaml
109
+ auth:
110
+ type: json
111
+ login_url: "https://staging.example.com/api/auth/login"
112
+ login_request:
113
+ method: POST
114
+ body: '{"email":"{%username%}","password":"{%password%}"}'
115
+ token_extract:
116
+ from: response.body
117
+ json_path: "$.token"
118
+ token_usage:
119
+ header: "Authorization"
120
+ value: "Bearer {%token%}"
121
+ ```
122
+
123
+ ### Script-Based Authentication (ZAP API)
124
+
125
+ ```python
126
+ # Configure auth via ZAP API
127
+ zap.authentication.set_authentication_method(
128
+ contextid='1',
129
+ authmethodname='formBasedAuthentication',
130
+ authmethodconfigparams='loginUrl=https://staging.example.com/login' +
131
+ '&loginRequestData=username%3D%7B%25username%25%7D%26password%3D%7B%25password%25%7D'
132
+ )
133
+ zap.users.new_user(contextid='1', name='TestUser')
134
+ zap.users.set_authentication_credentials(
135
+ contextid='1', userid='0',
136
+ authcredentialsconfigparams='username=testuser&password=TestPass123!'
137
+ )
138
+ zap.users.set_user_enabled(contextid='1', userid='0', enabled='true')
139
+ ```
140
+
141
+ ---
142
+
143
+ ## API Scan
144
+
145
+ ### OpenAPI/Swagger
146
+
147
+ ```bash
148
+ # ZAP with OpenAPI definition
149
+ docker run -t owasp/zap2docker-stable zap-api-scan.py \
150
+ -t https://staging.example.com \
151
+ -f openapi \
152
+ -d openapi.json \
153
+ -r zap-api-report.html
154
+ ```
155
+
156
+ ```yaml
157
+ # Config for API scan
158
+ api_scan:
159
+ definition_url: "https://staging.example.com/openapi.json"
160
+ # or local file path
161
+ definition_file: "./openapi.json"
162
+ target_url: "https://staging.example.com"
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Passive Scan
168
+
169
+ - Runs by default when proxying or spidering
170
+ - No attack payloads; analyzes requests/responses
171
+ - Detects: missing security headers, sensitive data exposure, cookie flags
172
+
173
+ ### Passive Scan Tuning
174
+
175
+ ```python
176
+ # Enable all passive scanners
177
+ zap.pscan.enable_all_scanners()
178
+
179
+ # Set alert threshold for a passive rule
180
+ zap.pscan.set_scanner_alert_threshold('10021', 'HIGH') # Content-Type
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Active Scan
186
+
187
+ - Sends probes to find vulnerabilities
188
+ - **Always run against test/staging only**
189
+ - Can be destructive; configure exclusions
190
+
191
+ ### Active Scan Scope
192
+
193
+ ```python
194
+ # Scan only in-scope URLs
195
+ zap.ascan.scan(url='https://staging.example.com/api', recurse=True)
196
+
197
+ # Exclude sensitive paths
198
+ zap.context.exclude_from_context(contextname='Default', regex='https://staging.example.com/admin/.*')
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Headless / CI Integration
204
+
205
+ ### GitHub Actions Example
206
+
207
+ ```yaml
208
+ - name: ZAP Baseline Scan
209
+ uses: zaproxy/action-baseline@v0.10.0
210
+ with:
211
+ target: 'https://staging.example.com'
212
+ rules_file_name: '.zap/rules.tsv'
213
+ fail_action: true
214
+ ```
215
+
216
+ ### Zaproxy Jenkins Plugin
217
+
218
+ - Configure target URL, auth, and scan policy
219
+ - Publish HTML/XML report
220
+ - Fail build on high/critical findings
221
+
222
+ ---
223
+
224
+ ## Report Output
225
+
226
+ | Format | Use Case |
227
+ |--------|----------|
228
+ | HTML | Human review |
229
+ | JSON | CI parsing, custom tooling |
230
+ | XML | JUnit-style, SARIF |
231
+
232
+ ```bash
233
+ # Generate multiple formats
234
+ zap-full-scan.py -t https://staging.example.com \
235
+ -r report.html \
236
+ -J report.json \
237
+ -x report.xml
238
+ ```
239
+
240
+ ---
241
+
242
+ ## Best Practices
243
+
244
+ 1. **Never scan production** without explicit approval and change window
245
+ 2. **Use test credentials** stored in env vars; never hardcode
246
+ 3. **Exclude destructive endpoints** (delete, reset, admin actions)
247
+ 4. **Whitelist test environment** in WAF/firewall to avoid blocking
248
+ 5. **Tune false positives** by adjusting policy or excluding known-safe patterns
249
+ 6. **Run during off-peak** to minimize impact on shared staging
250
+
251
+ ---
252
+
253
+ ## References
254
+
255
+ - [ZAP Docker](https://www.zaproxy.org/docs/docker/)
256
+ - [ZAP API](https://www.zaproxy.org/docs/api/)
257
+ - [ZAP Jenkins Plugin](https://plugins.jenkins.io/zaproxy/)
258
+ - [ZAP GitHub Action](https://github.com/zaproxy/action-baseline)
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: qa-selenium-java-writer
3
+ description: Generate Selenium Java E2E tests with JUnit 5, Page Object Model, explicit waits, AssertJ assertions, and Allure reporting integration.
4
+ output_dir: tests/e2e
5
+ ---
6
+
7
+ # QA Selenium Java Writer
8
+
9
+ ## Purpose
10
+
11
+ Write Selenium Java E2E tests from test case specifications. Transform structured test cases (from qa-testcase-from-docs, qa-manual-test-designer, qa-browser-data-collector, or specs) into executable Selenium Java test files with JUnit 5, Page Object Model, explicit waits, AssertJ assertions, and Allure reporting.
12
+
13
+ ## Trigger Phrases
14
+
15
+ - "Write Selenium Java tests for [feature/flow]"
16
+ - "Generate Selenium E2E tests in Java"
17
+ - "Create Selenium Java tests with POM"
18
+ - "Add Selenium Java tests for [URL/page]"
19
+ - "Selenium Java with JUnit 5 and Allure"
20
+ - "Selenium Java Page Object Model tests"
21
+ - "Headless Selenium Java tests for [feature]"
22
+ - "Selenium Java tests with WebDriverWait"
23
+ - "Heal my failing Selenium Java tests"
24
+
25
+ ## Key Features
26
+
27
+ | Feature | Description |
28
+ | ------- | ----------- |
29
+ | **Java 21+** | Modern Java with records, pattern matching, virtual threads support |
30
+ | **Selenium WebDriver** | Chrome, Firefox, Edge via WebDriver API |
31
+ | **JUnit 5** | @Test, @BeforeEach/@AfterEach, @DisplayName, @Tag |
32
+ | **Page Object Model** | POM with PageFactory; base page + page-specific classes |
33
+ | **Explicit waits** | WebDriverWait + ExpectedConditions; avoid implicit waits |
34
+ | **AssertJ** | Fluent assertions: assertThat(element).isDisplayed().isEnabled() |
35
+ | **Allure** | @Step, @Description, @Severity, @Epic, @Feature for reporting |
36
+ | **Headless mode** | Chrome/Firefox headless for CI |
37
+ | **Parallel execution** | maven-surefire-plugin parallel configuration |
38
+
39
+ ## Workflow
40
+
41
+ 1. **Read test cases** — From specs, requirements, manual test designs, or browser-collected data
42
+ 2. **Analyze app** — Inspect pages, forms, flows; identify locators and interactions
43
+ 3. **Generate test classes with POM** — Produce `{Feature}Test.java` with Page Objects in `pages/`
44
+ 4. **Configure WebDriver** — Set up driver lifecycle, headless options, timeouts
45
+ 5. **Add Allure annotations** — @Step for steps, @Description, @Severity for reporting
46
+ 6. **Run** — User runs `mvn test` or `./gradlew test` to execute tests
47
+
48
+ ## Context7 MCP
49
+
50
+ Use **Context7 MCP** for Selenium Java documentation when:
51
+ - WebDriver API or ExpectedConditions syntax is uncertain
52
+ - PageFactory, Actions, or Select handling needs verification
53
+ - Browser-specific options (Chrome, Firefox headless) require up-to-date reference
54
+
55
+ ## Key Patterns
56
+
57
+ | Pattern | Usage |
58
+ | ------- | ----- |
59
+ | `@Test` | JUnit 5 test method |
60
+ | `@BeforeEach` / `@AfterEach` | Driver setup and teardown |
61
+ | `WebDriverWait(driver, Duration.ofSeconds(10))` | Explicit wait |
62
+ | `ExpectedConditions.visibilityOfElementLocated(By.id("id"))` | Wait for element |
63
+ | `PageFactory.initElements(driver, PageClass.class)` | POM initialization |
64
+ | `assertThat(element).isDisplayed().isEnabled()` | AssertJ assertions |
65
+ | `@Step("User clicks submit")` | Allure step |
66
+ | `@Description("Verify login flow")` | Allure description |
67
+ | `@Severity(SeverityLevel.CRITICAL)` | Allure severity |
68
+
69
+ ## Wait Strategies
70
+
71
+ Prefer explicit waits; avoid implicit waits for reliability:
72
+
73
+ ```java
74
+ WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
75
+ WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("submit-btn")));
76
+ element.click();
77
+ ```
78
+
79
+ Common expected conditions: `visibilityOfElementLocated`, `elementToBeClickable`, `presenceOfElementLocated`, `textToBePresentInElement`, `urlContains`.
80
+
81
+ ## File Naming
82
+
83
+ - `{Feature}Test.java` — Test classes (e.g., `LoginTest.java`, `CheckoutTest.java`)
84
+ - `pages/{Feature}Page.java` — Page objects (e.g., `pages/LoginPage.java`, `pages/CheckoutPage.java`)
85
+ - Place in `src/test/java` per Maven/Gradle convention
86
+
87
+ ## Scope
88
+
89
+ **Can do (autonomous):**
90
+ - Generate Selenium Java E2E tests from test case specs
91
+ - Apply Page Object Model with PageFactory
92
+ - Use explicit waits (WebDriverWait + ExpectedConditions)
93
+ - Configure WebDriver (Chrome, Firefox, Edge, headless)
94
+ - Use AssertJ for fluent assertions
95
+ - Add Allure annotations for reporting
96
+ - Configure maven-surefire-plugin for parallel execution
97
+ - Use Context7 MCP for Selenium Java docs
98
+ - Delegate to qa-test-healer when tests fail (Heal Mode)
99
+
100
+ **Cannot do (requires confirmation):**
101
+ - Change production code structure
102
+ - Add dependencies not in pom.xml/build.gradle
103
+ - Override project Selenium/JUnit config without approval
104
+ - Navigate to URLs not provided
105
+
106
+ **Will not do (out of scope):**
107
+ - Execute tests (user runs `mvn test`)
108
+ - Write Playwright/Cypress tests (use qa-playwright-ts-writer, qa-cypress-writer)
109
+ - Modify CI/CD pipelines
110
+ - Bypass security or access restricted areas
111
+
112
+ ## References
113
+
114
+ - `references/patterns.md` — POM, waits, selectors, actions, Select, alerts, frames
115
+ - `references/config.md` — Maven/Gradle config, WebDriver setup, parallel execution
116
+ - `references/best-practices.md` — Java Selenium best practices
117
+
118
+ ## Quality Checklist
119
+
120
+ - [ ] Explicit waits used; avoid implicit waits where possible
121
+ - [ ] No Thread.sleep; prefer WebDriverWait + ExpectedConditions
122
+ - [ ] POM pattern applied with PageFactory
123
+ - [ ] Stable locators (ID, data attributes, CSS; XPath as fallback)
124
+ - [ ] Tests independent (no shared state, order-independent)
125
+ - [ ] Proper teardown (driver.quit in @AfterEach)
126
+ - [ ] AssertJ used for assertions
127
+ - [ ] Allure annotations (@Step, @Description, @Severity) where applicable
128
+ - [ ] Traceability to test case IDs where applicable
129
+ - [ ] No hardcoded secrets (use env vars)
130
+ - [ ] File naming follows `{Feature}Test.java` convention
131
+
132
+ ## Troubleshooting
133
+
134
+ | Symptom | Likely Cause | Fix |
135
+ | ------- | ------------ | --- |
136
+ | Element not found | Selector too specific, timing | Use explicit wait; prefer ID/CSS over fragile XPath |
137
+ | StaleElementReferenceException | DOM changed after find | Re-find element before interaction; use explicit wait |
138
+ | Timeout | Element not ready, slow page | Increase WebDriverWait timeout; check for overlays/modals |
139
+ | Flaky tests | Implicit wait, race conditions | Replace implicit with explicit waits; ensure test isolation |
140
+ | Driver not found | WebDriver binary missing | Use WebDriverManager; ensure browser installed |
141
+ | Headless fails | Browser options incorrect | Verify Chrome/Firefox headless options for your Selenium version |
142
+ | PageFactory null | Not initialized | Call PageFactory.initElements in constructor or @BeforeEach |
143
+ | Allure not showing | Surefire config missing | Add allure-maven-plugin and surefire properties |
@@ -0,0 +1,59 @@
1
+ # Selenium Java Best Practices
2
+
3
+ ## Explicit Waits Over Implicit
4
+
5
+ - Set `implicitlyWait(Duration.ZERO)` and use `WebDriverWait` + `ExpectedConditions` for all waits
6
+ - Avoid `Thread.sleep()` — use explicit waits for reliability
7
+ - Choose the right condition: `visibilityOf` for UI, `presenceOf` for DOM-only checks
8
+
9
+ ## Page Object Model
10
+
11
+ - One page class per page/screen; extend `BasePage` for shared logic
12
+ - Use `PageFactory.initElements()` in constructor
13
+ - Encapsulate locators with `@FindBy`; expose actions as methods
14
+ - Do not expose `WebElement` directly when an action method is clearer
15
+
16
+ ## Locator Strategy
17
+
18
+ 1. **ID** — Fast, stable when present
19
+ 2. **data-testid** — Explicit test hooks: `By.cssSelector("[data-testid='submit']")`
20
+ 3. **CSS** — Readable, fast; avoid deep hierarchies
21
+ 4. **XPath** — Use when CSS cannot express; prefer relative paths
22
+
23
+ Avoid: brittle text-based XPath, index-based selectors, dynamic class names.
24
+
25
+ ## AssertJ Assertions
26
+
27
+ ```java
28
+ assertThat(element).isDisplayed().isEnabled();
29
+ assertThat(element.getText()).contains("Expected");
30
+ assertThat(driver.getCurrentUrl()).contains("/dashboard");
31
+ assertThat(elements).hasSize(3);
32
+ ```
33
+
34
+ Prefer AssertJ over JUnit `assertEquals` for readability and failure messages.
35
+
36
+ ## Allure Annotations
37
+
38
+ - `@Step("User logs in with {username}")` — Wrap actions for step reporting
39
+ - `@Description("Verify checkout flow with valid cart")` — Test description
40
+ - `@Severity(SeverityLevel.CRITICAL)` — For prioritization
41
+ - `@Epic`, `@Feature`, `@Story` — For hierarchical reporting
42
+
43
+ ## Test Independence
44
+
45
+ - Each test should run in isolation
46
+ - Use `@BeforeEach` for fresh driver; `@AfterEach` for cleanup
47
+ - No shared mutable state between tests
48
+ - Use `@Order` only when truly required; prefer independent tests
49
+
50
+ ## Headless for CI
51
+
52
+ - Enable headless via `--headless=new` (Chrome) or `-headless` (Firefox)
53
+ - Set `window-size` to avoid layout issues
54
+ - Use `WebDriverManager` for driver binaries in CI
55
+
56
+ ## Security
57
+
58
+ - Never hardcode credentials; use env vars or secrets
59
+ - Use `System.getenv("BASE_URL")` or config files for URLs
@@ -0,0 +1,143 @@
1
+ # Selenium Java Configuration
2
+
3
+ ## Maven Dependencies
4
+
5
+ ```xml
6
+ <dependencies>
7
+ <dependency>
8
+ <groupId>org.seleniumhq.selenium</groupId>
9
+ <artifactId>selenium-java</artifactId>
10
+ <version>4.25.0</version>
11
+ <scope>test</scope>
12
+ </dependency>
13
+ <dependency>
14
+ <groupId>org.junit.jupiter</groupId>
15
+ <artifactId>junit-jupiter</artifactId>
16
+ <version>5.10.2</version>
17
+ <scope>test</scope>
18
+ </dependency>
19
+ <dependency>
20
+ <groupId>org.assertj</groupId>
21
+ <artifactId>assertj-core</artifactId>
22
+ <version>3.25.3</version>
23
+ <scope>test</scope>
24
+ </dependency>
25
+ <dependency>
26
+ <groupId>io.qameta.allure</groupId>
27
+ <artifactId>allure-junit5</artifactId>
28
+ <version>2.29.0</version>
29
+ <scope>test</scope>
30
+ </dependency>
31
+ <dependency>
32
+ <groupId>io.github.bonigarcia</groupId>
33
+ <artifactId>webdrivermanager</artifactId>
34
+ <version>5.7.0</version>
35
+ <scope>test</scope>
36
+ </dependency>
37
+ </dependencies>
38
+ ```
39
+
40
+ ## Gradle Dependencies
41
+
42
+ ```groovy
43
+ dependencies {
44
+ testImplementation 'org.seleniumhq.selenium:selenium-java:4.25.0'
45
+ testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2'
46
+ testImplementation 'org.assertj:assertj-core:3.25.3'
47
+ testImplementation 'io.qameta.allure:allure-junit5:2.29.0'
48
+ testImplementation 'io.github.bonigarcia:webdrivermanager:5.7.0'
49
+ }
50
+ ```
51
+
52
+ ## WebDriver Setup with WebDriverManager
53
+
54
+ ```java
55
+ @BeforeEach
56
+ void setUp() {
57
+ WebDriverManager.chromedriver().setup();
58
+ ChromeOptions options = new ChromeOptions();
59
+ if (Boolean.parseBoolean(System.getProperty("headless", "false"))) {
60
+ options.addArguments("--headless=new", "--disable-gpu", "--window-size=1920,1080");
61
+ }
62
+ driver = new ChromeDriver(options);
63
+ driver.manage().timeouts().implicitlyWait(Duration.ZERO); // Prefer explicit
64
+ driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(30));
65
+ }
66
+
67
+ @AfterEach
68
+ void tearDown() {
69
+ if (driver != null) {
70
+ driver.quit();
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## Base Test Class Pattern
76
+
77
+ ```java
78
+ @ExtendWith(AllureJunit5.class)
79
+ public abstract class BaseSeleniumTest {
80
+ protected WebDriver driver;
81
+
82
+ @BeforeEach
83
+ void initDriver() {
84
+ driver = createDriver();
85
+ }
86
+
87
+ @AfterEach
88
+ void closeDriver() {
89
+ if (driver != null) driver.quit();
90
+ }
91
+
92
+ protected abstract WebDriver createDriver();
93
+ }
94
+ ```
95
+
96
+ ## Parallel Execution (maven-surefire-plugin)
97
+
98
+ ```xml
99
+ <plugin>
100
+ <groupId>org.apache.maven.plugins</groupId>
101
+ <artifactId>maven-surefire-plugin</artifactId>
102
+ <version>3.2.5</version>
103
+ <configuration>
104
+ <properties>
105
+ <configurationParameters>
106
+ junit.jupiter.execution.parallel.enabled=true
107
+ junit.jupiter.execution.parallel.mode.default=concurrent
108
+ junit.jupiter.execution.parallel.config.strategy=fixed
109
+ junit.jupiter.execution.parallel.config.fixed.parallelism=4
110
+ </configurationParameters>
111
+ </properties>
112
+ <systemPropertyVariables>
113
+ <headless>true</headless>
114
+ </systemPropertyVariables>
115
+ </configuration>
116
+ </plugin>
117
+ ```
118
+
119
+ ## Allure Configuration
120
+
121
+ ```xml
122
+ <plugin>
123
+ <groupId>io.qameta.allure</groupId>
124
+ <artifactId>allure-maven</artifactId>
125
+ <version>2.12.0</version>
126
+ </plugin>
127
+ ```
128
+
129
+ ```properties
130
+ # allure.properties (src/test/resources)
131
+ allure.results.directory=target/allure-results
132
+ allure.link.issue.pattern=https://jira.example.com/browse/{}
133
+ allure.link.tms.pattern=https://testlink.example.com/linkto.php?tprojectPrefix=QA&item=testcase&id={}
134
+ ```
135
+
136
+ ## Environment Variables
137
+
138
+ | Variable | Purpose |
139
+ | -------- | ------- |
140
+ | `BASE_URL` | Application base URL |
141
+ | `HEADLESS` | Run browser headless |
142
+ | `BROWSER` | chrome, firefox, edge |
143
+ | `IMPLICIT_WAIT` | Fallback implicit wait (prefer 0) |