qa-skills 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/README.md +20 -149
  2. package/bin/cli.js +1 -40
  3. package/package.json +23 -26
  4. package/dist/agents/registry.d.ts +0 -5
  5. package/dist/agents/registry.d.ts.map +0 -1
  6. package/dist/agents/registry.js +0 -101
  7. package/dist/agents/registry.js.map +0 -1
  8. package/dist/agents/types.d.ts +0 -9
  9. package/dist/agents/types.d.ts.map +0 -1
  10. package/dist/agents/types.js +0 -2
  11. package/dist/agents/types.js.map +0 -1
  12. package/dist/dependencies.d.ts +0 -21
  13. package/dist/dependencies.d.ts.map +0 -1
  14. package/dist/dependencies.js +0 -125
  15. package/dist/dependencies.js.map +0 -1
  16. package/dist/installer.d.ts +0 -25
  17. package/dist/installer.d.ts.map +0 -1
  18. package/dist/installer.js +0 -437
  19. package/dist/installer.js.map +0 -1
  20. package/dist/scaffold.d.ts +0 -27
  21. package/dist/scaffold.d.ts.map +0 -1
  22. package/dist/scaffold.js +0 -182
  23. package/dist/scaffold.js.map +0 -1
  24. package/skills/qa-accessibility-test-writer/SKILL.md +0 -127
  25. package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +0 -349
  26. package/skills/qa-accessibility-test-writer/references/best-practices.md +0 -184
  27. package/skills/qa-accessibility-test-writer/references/wcag-tests.md +0 -331
  28. package/skills/qa-api-contract-curator/SKILL.md +0 -104
  29. package/skills/qa-api-contract-curator/references/breaking-changes.md +0 -363
  30. package/skills/qa-api-contract-curator/references/openapi-structure.md +0 -404
  31. package/skills/qa-browser-data-collector/SKILL.md +0 -132
  32. package/skills/qa-browser-data-collector/references/data-collection-checklist.md +0 -91
  33. package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +0 -113
  34. package/skills/qa-bug-ticket-creator/SKILL.md +0 -148
  35. package/skills/qa-bug-ticket-creator/references/bug-report-format.md +0 -149
  36. package/skills/qa-bug-ticket-creator/references/severity-guide.md +0 -81
  37. package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +0 -39
  38. package/skills/qa-changelog-analyzer/SKILL.md +0 -134
  39. package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +0 -138
  40. package/skills/qa-changelog-analyzer/references/impact-mapping.md +0 -120
  41. package/skills/qa-clickup-integration/SKILL.md +0 -166
  42. package/skills/qa-clickup-integration/references/api-patterns.md +0 -102
  43. package/skills/qa-clickup-integration/references/field-mapping.md +0 -71
  44. package/skills/qa-codeceptjs-writer/SKILL.md +0 -136
  45. package/skills/qa-codeceptjs-writer/references/best-practices.md +0 -207
  46. package/skills/qa-codeceptjs-writer/references/config.md +0 -255
  47. package/skills/qa-codeceptjs-writer/references/patterns.md +0 -285
  48. package/skills/qa-coverage-analyzer/SKILL.md +0 -166
  49. package/skills/qa-coverage-analyzer/references/best-practices.md +0 -142
  50. package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +0 -155
  51. package/skills/qa-coverage-analyzer/references/tools.md +0 -204
  52. package/skills/qa-cypress-writer/SKILL.md +0 -134
  53. package/skills/qa-cypress-writer/references/assertions.md +0 -121
  54. package/skills/qa-cypress-writer/references/best-practices.md +0 -82
  55. package/skills/qa-cypress-writer/references/config.md +0 -121
  56. package/skills/qa-cypress-writer/references/patterns.md +0 -170
  57. package/skills/qa-data-factory/SKILL.md +0 -126
  58. package/skills/qa-data-factory/references/factory-patterns.md +0 -164
  59. package/skills/qa-data-factory/references/faker-guide.md +0 -131
  60. package/skills/qa-diagram-generator/SKILL.md +0 -125
  61. package/skills/qa-diagram-generator/references/c4-model.md +0 -53
  62. package/skills/qa-diagram-generator/references/charts.md +0 -58
  63. package/skills/qa-diagram-generator/references/class-diagram.md +0 -85
  64. package/skills/qa-diagram-generator/references/er-diagram.md +0 -69
  65. package/skills/qa-diagram-generator/references/flowchart.md +0 -92
  66. package/skills/qa-diagram-generator/references/from-screenshot.md +0 -45
  67. package/skills/qa-diagram-generator/references/gantt.md +0 -49
  68. package/skills/qa-diagram-generator/references/journey.md +0 -50
  69. package/skills/qa-diagram-generator/references/mindmap.md +0 -75
  70. package/skills/qa-diagram-generator/references/sequence.md +0 -69
  71. package/skills/qa-diagram-generator/references/state-diagram.md +0 -56
  72. package/skills/qa-discovery-interview/SKILL.md +0 -182
  73. package/skills/qa-discovery-interview/references/completeness-checklist.md +0 -53
  74. package/skills/qa-discovery-interview/references/conflict-patterns.md +0 -101
  75. package/skills/qa-discovery-interview/references/qa-categories.md +0 -147
  76. package/skills/qa-discovery-interview/templates/qa-brief-template.md +0 -168
  77. package/skills/qa-environment-checker/SKILL.md +0 -142
  78. package/skills/qa-environment-checker/references/dependency-matrix.md +0 -101
  79. package/skills/qa-environment-checker/references/health-checks.md +0 -209
  80. package/skills/qa-environment-checker/templates/env-readiness-template.md +0 -64
  81. package/skills/qa-flaky-detector/SKILL.md +0 -153
  82. package/skills/qa-flaky-detector/references/ci-analysis.md +0 -140
  83. package/skills/qa-flaky-detector/references/flaky-patterns.md +0 -247
  84. package/skills/qa-github-issues-enhanced/SKILL.md +0 -175
  85. package/skills/qa-github-issues-enhanced/references/issue-templates.md +0 -425
  86. package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +0 -130
  87. package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +0 -188
  88. package/skills/qa-httpx-writer/SKILL.md +0 -138
  89. package/skills/qa-httpx-writer/references/assertions.md +0 -195
  90. package/skills/qa-httpx-writer/references/best-practices.md +0 -140
  91. package/skills/qa-httpx-writer/references/config.md +0 -212
  92. package/skills/qa-httpx-writer/references/patterns.md +0 -262
  93. package/skills/qa-jest-writer/SKILL.md +0 -131
  94. package/skills/qa-jest-writer/references/assertions.md +0 -125
  95. package/skills/qa-jest-writer/references/best-practices.md +0 -136
  96. package/skills/qa-jest-writer/references/config.md +0 -134
  97. package/skills/qa-jest-writer/references/patterns.md +0 -172
  98. package/skills/qa-jira-integration/SKILL.md +0 -135
  99. package/skills/qa-jira-integration/references/api-patterns.md +0 -143
  100. package/skills/qa-jira-integration/references/field-mapping.md +0 -79
  101. package/skills/qa-jira-integration/references/xray-integration.md +0 -85
  102. package/skills/qa-jmeter-writer/SKILL.md +0 -171
  103. package/skills/qa-jmeter-writer/references/best-practices.md +0 -157
  104. package/skills/qa-jmeter-writer/references/config.md +0 -204
  105. package/skills/qa-jmeter-writer/references/patterns.md +0 -242
  106. package/skills/qa-junit5-writer/SKILL.md +0 -157
  107. package/skills/qa-junit5-writer/references/assertions.md +0 -118
  108. package/skills/qa-junit5-writer/references/config.md +0 -97
  109. package/skills/qa-junit5-writer/references/patterns.md +0 -162
  110. package/skills/qa-k6-writer/SKILL.md +0 -155
  111. package/skills/qa-k6-writer/references/best-practices.md +0 -236
  112. package/skills/qa-k6-writer/references/config.md +0 -219
  113. package/skills/qa-k6-writer/references/patterns.md +0 -304
  114. package/skills/qa-linear-integration/SKILL.md +0 -137
  115. package/skills/qa-linear-integration/references/api-patterns.md +0 -249
  116. package/skills/qa-linear-integration/references/field-mapping.md +0 -121
  117. package/skills/qa-locust-writer/SKILL.md +0 -151
  118. package/skills/qa-locust-writer/references/best-practices.md +0 -126
  119. package/skills/qa-locust-writer/references/config.md +0 -170
  120. package/skills/qa-locust-writer/references/patterns.md +0 -235
  121. package/skills/qa-manual-test-designer/SKILL.md +0 -145
  122. package/skills/qa-manual-test-designer/references/exploratory-charters.md +0 -138
  123. package/skills/qa-manual-test-designer/references/personas.md +0 -146
  124. package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +0 -47
  125. package/skills/qa-manual-test-designer/templates/test-case-template.md +0 -31
  126. package/skills/qa-mobile-test-writer/SKILL.md +0 -144
  127. package/skills/qa-mobile-test-writer/references/best-practices.md +0 -214
  128. package/skills/qa-mobile-test-writer/references/config.md +0 -309
  129. package/skills/qa-mobile-test-writer/references/patterns.md +0 -304
  130. package/skills/qa-nfr-analyst/SKILL.md +0 -177
  131. package/skills/qa-nfr-analyst/references/iso-25010-model.md +0 -159
  132. package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +0 -202
  133. package/skills/qa-nfr-analyst/references/wcag-checklist.md +0 -184
  134. package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +0 -89
  135. package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +0 -48
  136. package/skills/qa-orchestrator/SKILL.md +0 -132
  137. package/skills/qa-orchestrator/references/handoff-chains.md +0 -105
  138. package/skills/qa-orchestrator/references/pipeline-modes.md +0 -115
  139. package/skills/qa-orchestrator/references/scheduler-rules.md +0 -84
  140. package/skills/qa-pact-writer/SKILL.md +0 -133
  141. package/skills/qa-pact-writer/references/best-practices.md +0 -100
  142. package/skills/qa-pact-writer/references/config.md +0 -135
  143. package/skills/qa-pact-writer/references/patterns.md +0 -161
  144. package/skills/qa-plan-creator/SKILL.md +0 -139
  145. package/skills/qa-plan-creator/references/introduction-plan.md +0 -43
  146. package/skills/qa-plan-creator/references/migration-plan.md +0 -44
  147. package/skills/qa-plan-creator/references/onboarding-plan.md +0 -46
  148. package/skills/qa-plan-creator/references/performance-plan.md +0 -44
  149. package/skills/qa-plan-creator/references/regression-plan.md +0 -45
  150. package/skills/qa-plan-creator/references/release-plan.md +0 -45
  151. package/skills/qa-plan-creator/references/sprint-plan.md +0 -44
  152. package/skills/qa-plan-creator/references/test-plan.md +0 -59
  153. package/skills/qa-plan-creator/references/uat-plan.md +0 -43
  154. package/skills/qa-plan-creator/templates/checklist-template.md +0 -36
  155. package/skills/qa-plan-creator/templates/regression-checklist-template.md +0 -49
  156. package/skills/qa-plan-creator/templates/release-checklist-template.md +0 -46
  157. package/skills/qa-plan-creator/templates/test-plan-template.md +0 -74
  158. package/skills/qa-playwright-py-writer/SKILL.md +0 -156
  159. package/skills/qa-playwright-py-writer/references/best-practices.md +0 -194
  160. package/skills/qa-playwright-py-writer/references/config.md +0 -195
  161. package/skills/qa-playwright-py-writer/references/patterns.md +0 -212
  162. package/skills/qa-playwright-ts-writer/SKILL.md +0 -151
  163. package/skills/qa-playwright-ts-writer/references/assertions.md +0 -109
  164. package/skills/qa-playwright-ts-writer/references/best-practices.md +0 -191
  165. package/skills/qa-playwright-ts-writer/references/config.md +0 -144
  166. package/skills/qa-playwright-ts-writer/references/patterns.md +0 -171
  167. package/skills/qa-pytest-writer/SKILL.md +0 -145
  168. package/skills/qa-pytest-writer/references/assertions.md +0 -149
  169. package/skills/qa-pytest-writer/references/best-practices.md +0 -97
  170. package/skills/qa-pytest-writer/references/config.md +0 -176
  171. package/skills/qa-pytest-writer/references/patterns.md +0 -251
  172. package/skills/qa-qase-integration/SKILL.md +0 -149
  173. package/skills/qa-qase-integration/references/api-reference.md +0 -354
  174. package/skills/qa-qase-integration/references/ci-integration.md +0 -196
  175. package/skills/qa-qase-integration/references/field-mapping.md +0 -157
  176. package/skills/qa-requirements-generator/SKILL.md +0 -152
  177. package/skills/qa-requirements-generator/references/iso-29148-structure.md +0 -153
  178. package/skills/qa-requirements-generator/references/requirement-patterns.md +0 -278
  179. package/skills/qa-rest-assured-writer/SKILL.md +0 -137
  180. package/skills/qa-rest-assured-writer/references/best-practices.md +0 -50
  181. package/skills/qa-rest-assured-writer/references/config.md +0 -124
  182. package/skills/qa-rest-assured-writer/references/patterns.md +0 -192
  183. package/skills/qa-risk-analyzer/SKILL.md +0 -158
  184. package/skills/qa-risk-analyzer/references/impact-analysis.md +0 -133
  185. package/skills/qa-risk-analyzer/references/risk-factors.md +0 -123
  186. package/skills/qa-robot-framework-writer/SKILL.md +0 -147
  187. package/skills/qa-robot-framework-writer/references/best-practices.md +0 -249
  188. package/skills/qa-robot-framework-writer/references/config.md +0 -204
  189. package/skills/qa-robot-framework-writer/references/libraries.md +0 -273
  190. package/skills/qa-robot-framework-writer/references/patterns.md +0 -216
  191. package/skills/qa-security-test-writer/SKILL.md +0 -123
  192. package/skills/qa-security-test-writer/references/best-practices.md +0 -155
  193. package/skills/qa-security-test-writer/references/owasp-top10.md +0 -331
  194. package/skills/qa-security-test-writer/references/zap-config.md +0 -258
  195. package/skills/qa-selenium-java-writer/SKILL.md +0 -143
  196. package/skills/qa-selenium-java-writer/references/best-practices.md +0 -59
  197. package/skills/qa-selenium-java-writer/references/config.md +0 -143
  198. package/skills/qa-selenium-java-writer/references/patterns.md +0 -170
  199. package/skills/qa-selenium-py-writer/SKILL.md +0 -150
  200. package/skills/qa-selenium-py-writer/references/best-practices.md +0 -175
  201. package/skills/qa-selenium-py-writer/references/config.md +0 -224
  202. package/skills/qa-selenium-py-writer/references/patterns.md +0 -255
  203. package/skills/qa-shortcut-integration/SKILL.md +0 -143
  204. package/skills/qa-shortcut-integration/references/api-patterns.md +0 -126
  205. package/skills/qa-shortcut-integration/references/field-mapping.md +0 -66
  206. package/skills/qa-spec-auditor/SKILL.md +0 -162
  207. package/skills/qa-spec-auditor/references/audit-checklist.md +0 -144
  208. package/skills/qa-spec-auditor/references/drift-patterns.md +0 -207
  209. package/skills/qa-spec-writer/SKILL.md +0 -143
  210. package/skills/qa-spec-writer/references/gherkin-guide.md +0 -253
  211. package/skills/qa-spec-writer/references/specification-patterns.md +0 -274
  212. package/skills/qa-spring-test-writer/SKILL.md +0 -170
  213. package/skills/qa-spring-test-writer/references/best-practices.md +0 -57
  214. package/skills/qa-spring-test-writer/references/config.md +0 -179
  215. package/skills/qa-spring-test-writer/references/patterns.md +0 -235
  216. package/skills/qa-supertest-writer/SKILL.md +0 -150
  217. package/skills/qa-supertest-writer/references/assertions.md +0 -192
  218. package/skills/qa-supertest-writer/references/best-practices.md +0 -102
  219. package/skills/qa-supertest-writer/references/config.md +0 -166
  220. package/skills/qa-supertest-writer/references/patterns.md +0 -242
  221. package/skills/qa-task-creator/SKILL.md +0 -142
  222. package/skills/qa-task-creator/references/linking-patterns.md +0 -127
  223. package/skills/qa-task-creator/references/task-types.md +0 -169
  224. package/skills/qa-task-creator/templates/task-template.md +0 -24
  225. package/skills/qa-test-doc-compiler/SKILL.md +0 -114
  226. package/skills/qa-test-doc-compiler/references/agile-tailoring.md +0 -220
  227. package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +0 -302
  228. package/skills/qa-test-healer/SKILL.md +0 -101
  229. package/skills/qa-test-healer/references/diagnosis-patterns.md +0 -142
  230. package/skills/qa-test-healer/references/fix-strategies.md +0 -177
  231. package/skills/qa-test-reporter/SKILL.md +0 -130
  232. package/skills/qa-test-reporter/references/best-practices.md +0 -162
  233. package/skills/qa-test-reporter/references/iso-29119-reports.md +0 -236
  234. package/skills/qa-test-reporter/references/report-formats.md +0 -287
  235. package/skills/qa-test-reviewer/SKILL.md +0 -142
  236. package/skills/qa-test-reviewer/references/anti-patterns.md +0 -268
  237. package/skills/qa-test-reviewer/references/review-checklist.md +0 -93
  238. package/skills/qa-test-strategy/SKILL.md +0 -133
  239. package/skills/qa-test-strategy/references/entry-exit-criteria.md +0 -176
  240. package/skills/qa-test-strategy/references/risk-matrix.md +0 -102
  241. package/skills/qa-test-strategy/references/testing-types.md +0 -143
  242. package/skills/qa-testcase-from-docs/SKILL.md +0 -161
  243. package/skills/qa-testcase-from-docs/references/test-case-format.md +0 -196
  244. package/skills/qa-testcase-from-docs/references/test-design-techniques.md +0 -126
  245. package/skills/qa-testcase-from-docs/templates/test-case-template.md +0 -31
  246. package/skills/qa-testcase-from-ui/SKILL.md +0 -109
  247. package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +0 -126
  248. package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +0 -146
  249. package/skills/qa-testcase-from-ui/templates/test-case-template.md +0 -31
  250. package/skills/qa-visual-regression-writer/SKILL.md +0 -175
  251. package/skills/qa-visual-regression-writer/references/best-practices.md +0 -154
  252. package/skills/qa-visual-regression-writer/references/config.md +0 -220
  253. package/skills/qa-visual-regression-writer/references/patterns.md +0 -213
  254. package/skills/qa-vitest-writer/SKILL.md +0 -141
  255. package/skills/qa-vitest-writer/references/assertions.md +0 -105
  256. package/skills/qa-vitest-writer/references/best-practices.md +0 -62
  257. package/skills/qa-vitest-writer/references/config.md +0 -127
  258. package/skills/qa-vitest-writer/references/patterns.md +0 -141
  259. package/skills/qa-webdriverio-writer/SKILL.md +0 -145
  260. package/skills/qa-webdriverio-writer/references/best-practices.md +0 -176
  261. package/skills/qa-webdriverio-writer/references/config.md +0 -240
  262. package/skills/qa-webdriverio-writer/references/patterns.md +0 -269
@@ -1,354 +0,0 @@
1
- # Qase.io REST API Reference
2
-
3
- Base URL: `https://api.qase.io/v1`
4
-
5
- Authentication: `Token: {QASE_API_TOKEN}` (header)
6
-
7
- ## Projects
8
-
9
- ### GET /project
10
-
11
- List all projects.
12
-
13
- **Query params:** `limit` (1–100, default 10), `offset` (default 0)
14
-
15
- **Response 200:**
16
- ```json
17
- {
18
- "status": true,
19
- "result": {
20
- "total": 5,
21
- "filtered": 5,
22
- "count": 5,
23
- "entities": [
24
- {
25
- "title": "My Project",
26
- "code": "MP",
27
- "counts": {
28
- "cases": 42,
29
- "suites": 3,
30
- "milestones": 2,
31
- "runs": { "total": 10, "active": 1 },
32
- "defects": { "total": 5, "open": 2 }
33
- }
34
- }
35
- ]
36
- }
37
- }
38
- ```
39
-
40
- ### POST /project
41
-
42
- Create a new project.
43
-
44
- **Request body:**
45
- ```json
46
- {
47
- "title": "My Project",
48
- "code": "MP",
49
- "description": "Optional description"
50
- }
51
- ```
52
-
53
- **Response 200:**
54
- ```json
55
- {
56
- "status": true,
57
- "result": {
58
- "id": 1,
59
- "code": "MP"
60
- }
61
- }
62
- ```
63
-
64
- ---
65
-
66
- ## Test Suites
67
-
68
- ### GET /suite/{code}
69
-
70
- List test suites. `{code}` = project code.
71
-
72
- **Query params:** `limit`, `offset`, `search`
73
-
74
- **Response 200:**
75
- ```json
76
- {
77
- "status": true,
78
- "result": {
79
- "total": 3,
80
- "entities": [
81
- {
82
- "id": 1,
83
- "title": "Login",
84
- "description": "Login flow tests",
85
- "parent_id": null
86
- }
87
- ]
88
- }
89
- }
90
- ```
91
-
92
- ### POST /suite/{code}
93
-
94
- Create a test suite.
95
-
96
- **Request body:**
97
- ```json
98
- {
99
- "title": "Login",
100
- "description": "Login flow tests",
101
- "parent_id": null
102
- }
103
- ```
104
-
105
- **Response 200:**
106
- ```json
107
- {
108
- "status": true,
109
- "result": {
110
- "id": 1
111
- }
112
- }
113
- ```
114
-
115
- ---
116
-
117
- ## Test Cases
118
-
119
- ### GET /case/{code}
120
-
121
- List test cases. `{code}` = project code.
122
-
123
- **Query params:** `limit`, `offset`, `suite_id`, `search`, `milestone_id`, `severity`, `priority`, `type`, `automation`
124
-
125
- **Response 200:**
126
- ```json
127
- {
128
- "status": true,
129
- "result": {
130
- "total": 42,
131
- "entities": [
132
- {
133
- "id": 1,
134
- "title": "Valid login",
135
- "description": "User can login with valid credentials",
136
- "preconditions": "User is on login page",
137
- "postconditions": null,
138
- "severity": 2,
139
- "priority": 2,
140
- "type": 1,
141
- "automation": 1,
142
- "suite_id": 1,
143
- "steps": [
144
- {
145
- "action": "Enter valid email and password",
146
- "expected_result": "User is logged in"
147
- }
148
- ]
149
- }
150
- ]
151
- }
152
- }
153
- ```
154
-
155
- ### POST /case/{code}
156
-
157
- Create a test case.
158
-
159
- **Request body:**
160
- ```json
161
- {
162
- "title": "Valid login",
163
- "description": "User can login with valid credentials",
164
- "preconditions": "User is on login page",
165
- "postconditions": null,
166
- "severity": 2,
167
- "priority": 2,
168
- "type": 1,
169
- "automation": 1,
170
- "suite_id": 1,
171
- "steps": [
172
- {
173
- "action": "Enter valid email and password",
174
- "expected_result": "User is logged in"
175
- }
176
- ],
177
- "tags": ["login", "smoke"]
178
- }
179
- ```
180
-
181
- **Response 200:**
182
- ```json
183
- {
184
- "status": true,
185
- "result": {
186
- "id": 1
187
- }
188
- }
189
- ```
190
-
191
- ### PATCH /case/{code}/{id}
192
-
193
- Update a test case. `{id}` = case ID.
194
-
195
- ---
196
-
197
- ## Test Runs
198
-
199
- ### GET /run/{code}
200
-
201
- List test runs. `{code}` = project code.
202
-
203
- **Query params:** `limit`, `offset`, `status`, `milestone_id`, `environment_id`
204
-
205
- **Response 200:**
206
- ```json
207
- {
208
- "status": true,
209
- "result": {
210
- "total": 10,
211
- "entities": [
212
- {
213
- "id": 1,
214
- "title": "Regression Run 2024-01-15",
215
- "status": "active",
216
- "is_autotest": true
217
- }
218
- ]
219
- }
220
- }
221
- ```
222
-
223
- ### POST /run/{code}
224
-
225
- Create a test run.
226
-
227
- **Request body:**
228
- ```json
229
- {
230
- "title": "Regression Run 2024-01-15",
231
- "description": "Full regression",
232
- "include_all_cases": false,
233
- "cases": [1, 2, 3],
234
- "is_autotest": true,
235
- "environment_id": 1,
236
- "milestone_id": 1,
237
- "tags": ["regression", "ci"]
238
- }
239
- ```
240
-
241
- **Response 200:**
242
- ```json
243
- {
244
- "status": true,
245
- "result": {
246
- "id": 1
247
- }
248
- }
249
- ```
250
-
251
- ---
252
-
253
- ## Test Results
254
-
255
- ### POST /result/{code}/{id}
256
-
257
- Create a test result. `{code}` = project code, `{id}` = run ID.
258
-
259
- **Request body:**
260
- ```json
261
- {
262
- "case_id": 1,
263
- "status": "passed",
264
- "time_ms": 1500,
265
- "comment": "Optional comment",
266
- "stacktrace": "Optional stack trace for failures",
267
- "defect": false,
268
- "attachments": []
269
- }
270
- ```
271
-
272
- **Status values:** `passed`, `failed`, `blocked`, `skipped`, `invalid` (+ custom)
273
-
274
- **Alternative (create case on-the-fly):**
275
- ```json
276
- {
277
- "case": {
278
- "title": "New test case title",
279
- "suite_title": "Suite Name",
280
- "description": "Description",
281
- "preconditions": "Preconditions",
282
- "severity": "major",
283
- "priority": "high"
284
- },
285
- "status": "failed",
286
- "comment": "Assertion failed",
287
- "stacktrace": "Error: expected..."
288
- }
289
- ```
290
-
291
- **Response 200:**
292
- ```json
293
- {
294
- "status": true,
295
- "result": {
296
- "case_id": 1,
297
- "hash": "abc123"
298
- }
299
- }
300
- ```
301
-
302
- ### POST /result/{code}/{id}/bulk
303
-
304
- Bulk create results. Same structure with array of result objects.
305
-
306
- ---
307
-
308
- ## Defects
309
-
310
- ### GET /defect/{code}
311
-
312
- List defects. `{code}` = project code.
313
-
314
- **Query params:** `limit`, `offset`, `status`, `milestone_id`
315
-
316
- ### POST /defect/{code}
317
-
318
- Create a defect.
319
-
320
- **Request body:**
321
- ```json
322
- {
323
- "title": "Login fails with special characters",
324
- "actual_result": "Error 500",
325
- "severity": 2,
326
- "priority": 2,
327
- "description": "When password contains @#$...",
328
- "steps": ["Step 1", "Step 2"],
329
- "attachments": []
330
- }
331
- ```
332
-
333
- **Response 200:**
334
- ```json
335
- {
336
- "status": true,
337
- "result": {
338
- "id": 1
339
- }
340
- }
341
- ```
342
-
343
- ---
344
-
345
- ## Error Codes
346
-
347
- | Code | Meaning |
348
- | ---- | ------- |
349
- | 400 | Bad Request |
350
- | 401 | Unauthorized (invalid/missing token) |
351
- | 403 | Forbidden (insufficient permissions) |
352
- | 404 | Not Found |
353
- | 422 | Unprocessable Entity (validation errors) |
354
- | 429 | Too Many Requests (rate limit; check Retry-After) |
@@ -1,196 +0,0 @@
1
- # CI/CD Integration with Qase.io
2
-
3
- ## Overview
4
-
5
- Push test execution results from CI/CD pipelines to Qase.io. Two main approaches:
6
-
7
- 1. **qase-api reporter** — Native reporter that sends results directly to Qase during test execution
8
- 2. **JUnit XML → Qase** — Parse JUnit XML artifacts and push via REST API (e.g., in a separate job)
9
-
10
- ## Option 1: qase-api Reporter
11
-
12
- ### Supported Frameworks
13
-
14
- - **Jest** — `@qase/jest`
15
- - **Playwright** — `@qase/playwright`
16
- - **Cypress** — `@qase/cypress`
17
- - **Pytest** — `qase-pytest`
18
- - **Mocha** — `@qase/mocha`
19
- - **PHPUnit** — `qase-phpunit`
20
-
21
- ### Configuration
22
-
23
- Set environment variables:
24
-
25
- ```bash
26
- QASE_API_TOKEN=your_api_token
27
- QASE_PROJECT_CODE=MP
28
- QASE_RUN_ID=123 # Optional: append to existing run
29
- QASE_RUN_NAME="CI Run $(date +%Y-%m-%d)"
30
- ```
31
-
32
- ### Jest Example
33
-
34
- ```javascript
35
- // jest.config.js
36
- module.exports = {
37
- reporters: [
38
- 'default',
39
- ['@qase/jest', {
40
- apiToken: process.env.QASE_API_TOKEN,
41
- projectCode: process.env.QASE_PROJECT_CODE,
42
- runId: process.env.QASE_RUN_ID,
43
- runName: process.env.QASE_RUN_NAME,
44
- logging: true
45
- }]
46
- ]
47
- };
48
- ```
49
-
50
- ### Playwright Example
51
-
52
- ```typescript
53
- // playwright.config.ts
54
- import { defineConfig } from '@playwright/test';
55
-
56
- export default defineConfig({
57
- reporter: [
58
- ['html'],
59
- ['@qase/playwright', {
60
- apiToken: process.env.QASE_API_TOKEN,
61
- projectCode: process.env.QASE_PROJECT_CODE,
62
- runId: process.env.QASE_RUN_ID,
63
- runName: process.env.QASE_RUN_NAME
64
- }]
65
- ]
66
- });
67
- ```
68
-
69
- ### Pytest Example
70
-
71
- ```python
72
- # pytest.ini or pyproject.toml
73
- [pytest]
74
- addopts = -v --qase --qase-api-token=${QASE_API_TOKEN} --qase-project=${QASE_PROJECT_CODE} --qase-run-id=${QASE_RUN_ID}
75
- ```
76
-
77
- Or in `conftest.py`:
78
-
79
- ```python
80
- def pytest_configure(config):
81
- config.addinivalue_line("addopts", "--qase")
82
- config.addinivalue_line("addopts", f"--qase-api-token={os.environ.get('QASE_API_TOKEN')}")
83
- config.addinivalue_line("addopts", f"--qase-project={os.environ.get('QASE_PROJECT_CODE')}")
84
- ```
85
-
86
- ### Case ID Mapping
87
-
88
- Reporters map test names to Qase cases. Options:
89
-
90
- - **Case ID in test name** — e.g., `C1` or `C123` prefix
91
- - **Decorator/annotation** — `@qase.id(123)` or `@qase.id("C123")`
92
- - **Title matching** — Match by test title (less reliable)
93
-
94
- ---
95
-
96
- ## Option 2: GitHub Actions + JUnit XML
97
-
98
- Push JUnit XML results to Qase.io in a separate step.
99
-
100
- ### Workflow Example
101
-
102
- ```yaml
103
- name: Tests + Qase Sync
104
-
105
- on:
106
- push:
107
- branches: [main]
108
- pull_request:
109
- branches: [main]
110
-
111
- jobs:
112
- test:
113
- runs-on: ubuntu-latest
114
- steps:
115
- - uses: actions/checkout@v4
116
-
117
- - name: Setup Node
118
- uses: actions/setup-node@v4
119
- with:
120
- node-version: '20'
121
-
122
- - name: Install dependencies
123
- run: npm ci
124
-
125
- - name: Run tests
126
- run: npm test -- --ci --reporters=default --reporters=jest-junit
127
- env:
128
- JEST_JUNIT_OUTPUT_DIR: ./test-results
129
-
130
- - name: Upload JUnit results
131
- uses: actions/upload-artifact@v4
132
- with:
133
- name: junit-results
134
- path: test-results/
135
-
136
- qase-push:
137
- needs: test
138
- runs-on: ubuntu-latest
139
- steps:
140
- - uses: actions/checkout@v4
141
-
142
- - name: Download JUnit results
143
- uses: actions/download-artifact@v4
144
- with:
145
- name: junit-results
146
-
147
- - name: Push to Qase.io
148
- uses: qase-io/qase-report-action@v1
149
- with:
150
- api-token: ${{ secrets.QASE_API_TOKEN }}
151
- project-code: ${{ vars.QASE_PROJECT_CODE }}
152
- results-path: ./
153
- run-name: "CI Run ${{ github.run_number }}"
154
- run-complete: true
155
- ```
156
-
157
- ### Alternative: Custom Script
158
-
159
- If no ready-made action fits, use a script that:
160
-
161
- 1. Parses JUnit XML
162
- 2. Creates a run via `POST /run/{code}`
163
- 3. Maps each `<testcase>` to a Qase case (by title or external ID)
164
- 4. Posts results via `POST /result/{code}/{run_id}` or bulk endpoint
165
-
166
- ```bash
167
- # Example: using qase-api CLI or custom Node/Python script
168
- npx qase-api push-results \
169
- --token $QASE_API_TOKEN \
170
- --project $QASE_PROJECT_CODE \
171
- --results ./test-results/junit.xml \
172
- --run-name "CI Run"
173
- ```
174
-
175
- ---
176
-
177
- ## Environment Variables
178
-
179
- | Variable | Required | Description |
180
- | -------- | -------- | ----------- |
181
- | `QASE_API_TOKEN` | Yes | API token from app.qase.io/user/api/token |
182
- | `QASE_PROJECT_CODE` | Yes | Project code (2–10 chars) |
183
- | `QASE_RUN_ID` | No | Append to existing run |
184
- | `QASE_RUN_NAME` | No | Name for new run |
185
- | `QASE_ENVIRONMENT_ID` | No | Environment for the run |
186
-
187
- ---
188
-
189
- ## Best Practices
190
-
191
- 1. **Secrets** — Store `QASE_API_TOKEN` in GitHub Secrets (or equivalent); never in code
192
- 2. **Run naming** — Include build ID, branch, or date for traceability
193
- 3. **Case mapping** — Use consistent test naming or `@qase.id()` for reliable mapping
194
- 4. **Bulk results** — Use `POST /result/{code}/{id}/bulk` for large result sets
195
- 5. **Run completion** — Call run complete endpoint when all results are posted
196
- 6. **Retries** — Handle 429; implement exponential backoff for rate limits
@@ -1,157 +0,0 @@
1
- # Field Mapping: Local QA Skills ↔ Qase.io
2
-
3
- ## Test Case Fields
4
-
5
- | Local (QA Skills) | Qase.io Field | Notes |
6
- | ----------------- | ------------- | ----- |
7
- | ID | — | Local identifier; use for traceability; Qase assigns its own `id` |
8
- | Title | `title` | Required; max 255 chars |
9
- | Description | `description` | Free text |
10
- | Module / Component | `suite_id` or `suite_title` | Map to Qase suite |
11
- | Preconditions | `preconditions` | Free text |
12
- | Steps (Action \| Expected) | `steps[].action`, `steps[].expected_result` | See steps format below |
13
- | Postconditions | `postconditions` | Free text |
14
- | Test Data | `steps[].data` or in description | Optional |
15
- | Traceability (Req ID) | `tags` or custom field | e.g., tag `req:REQ-FN-001` |
16
- | Priority | `priority` | See Priority enum |
17
- | Severity | `severity` | See Severity enum |
18
- | Type | `type` | See Type enum |
19
- | Automation status | `automation` | See Automation enum |
20
-
21
- ## Steps Format
22
-
23
- **Local (QA Skills):**
24
- ```
25
- | Step# | Action | Expected Result |
26
- | 1 | Enter valid email | Email accepted |
27
- | 2 | Enter valid password | Password accepted |
28
- | 3 | Click Login | User is logged in |
29
- ```
30
-
31
- **Qase.io:**
32
- ```json
33
- {
34
- "steps": [
35
- {
36
- "action": "Enter valid email",
37
- "expected_result": "Email accepted"
38
- },
39
- {
40
- "action": "Enter valid password",
41
- "expected_result": "Password accepted"
42
- },
43
- {
44
- "action": "Click Login",
45
- "expected_result": "User is logged in"
46
- }
47
- ]
48
- }
49
- ```
50
-
51
- ## Priority Enum
52
-
53
- | Local | Qase.io (integer) | Qase.io (slug) |
54
- | ----- | ----------------- | -------------- |
55
- | Critical / P1 | 1 | `critical` |
56
- | High / P2 | 2 | `high` |
57
- | Medium / P3 | 3 | `medium` |
58
- | Low / P4 | 4 | `low` |
59
- | Not set | 5 | `not_set` |
60
-
61
- ## Severity Enum
62
-
63
- | Local | Qase.io (integer) | Qase.io (slug) |
64
- | ----- | ----------------- | -------------- |
65
- | Blocker | 1 | `blocker` |
66
- | Critical | 2 | `critical` |
67
- | Major | 3 | `major` |
68
- | Minor | 4 | `minor` |
69
- | Trivial | 5 | `trivial` |
70
- | Not set | 6 | `not_set` |
71
-
72
- ## Type Enum
73
-
74
- | Local | Qase.io (integer) |
75
- | ----- | ----------------- |
76
- | functional | 1 |
77
- | smoke | 2 |
78
- | regression | 3 |
79
- | security | 4 |
80
- | usability | 5 |
81
- | performance | 6 |
82
- | other | 7 |
83
-
84
- ## Automation Enum
85
-
86
- | Local | Qase.io (integer) |
87
- | ----- | ----------------- |
88
- | Manual / Not automated | 0 |
89
- | Automated | 1 |
90
- | To be automated | 2 |
91
-
92
- ## Test Result Status
93
-
94
- | JUnit / Source | Qase.io `status` |
95
- | -------------- | ---------------- |
96
- | passed / success | `passed` |
97
- | failed / failure | `failed` |
98
- | skipped | `skipped` |
99
- | error / blocked | `blocked` |
100
- | (invalid) | `invalid` |
101
-
102
- ## Local Test Case JSON Example
103
-
104
- ```json
105
- {
106
- "id": "TC-LOGIN-001",
107
- "title": "Valid login",
108
- "module": "Auth",
109
- "priority": "High",
110
- "severity": "Major",
111
- "type": "functional",
112
- "automation": "Planned",
113
- "preconditions": "User is on login page",
114
- "steps": [
115
- { "action": "Enter valid email", "expected": "Email accepted" },
116
- { "action": "Enter valid password", "expected": "Password accepted" },
117
- { "action": "Click Login", "expected": "User is logged in" }
118
- ],
119
- "traceability": ["REQ-FN-001"]
120
- }
121
- ```
122
-
123
- ## Mapped Qase.io Payload
124
-
125
- ```json
126
- {
127
- "title": "Valid login",
128
- "description": "",
129
- "preconditions": "User is on login page",
130
- "suite_id": 1,
131
- "priority": 2,
132
- "severity": 3,
133
- "type": 1,
134
- "automation": 2,
135
- "tags": ["req:REQ-FN-001", "Auth"],
136
- "steps": [
137
- { "action": "Enter valid email", "expected_result": "Email accepted" },
138
- { "action": "Enter valid password", "expected_result": "Password accepted" },
139
- { "action": "Click Login", "expected_result": "User is logged in" }
140
- ]
141
- }
142
- ```
143
-
144
- ## Custom Fields
145
-
146
- Qase.io supports custom fields. Map local fields to `custom_field` object:
147
-
148
- ```json
149
- {
150
- "custom_field": {
151
- "1": "REQ-FN-001",
152
- "2": "2024-Q1"
153
- }
154
- }
155
- ```
156
-
157
- Field IDs come from Qase project settings. Configure mapping per project.