testeiya 0.3.9 → 0.3.14

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 (180) hide show
  1. package/README.md +353 -27
  2. package/dist/prompt/index.js +6 -2
  3. package/dist/prompt/index.js.map +1 -1
  4. package/dist/prompt/print.js +8 -0
  5. package/dist/prompt/print.js.map +1 -1
  6. package/dist/prompt/system-prompt.js +14 -4
  7. package/dist/prompt/system-prompt.js.map +1 -1
  8. package/dist/prompt/testomatio.js +3 -3
  9. package/dist/prompt/tools.js +28 -7
  10. package/dist/prompt/tools.js.map +1 -1
  11. package/dist/src/args.js +198 -46
  12. package/dist/src/args.js.map +1 -1
  13. package/dist/src/cli.js +64 -20
  14. package/dist/src/cli.js.map +1 -1
  15. package/dist/src/doctor.js +171 -0
  16. package/dist/src/doctor.js.map +1 -0
  17. package/dist/src/env.js +39 -5
  18. package/dist/src/env.js.map +1 -1
  19. package/dist/src/mcp.js +3 -3
  20. package/dist/src/mcp.js.map +1 -1
  21. package/dist/src/model.js +15 -10
  22. package/dist/src/model.js.map +1 -1
  23. package/dist/src/models.js +38 -0
  24. package/dist/src/models.js.map +1 -0
  25. package/dist/src/output.js +216 -0
  26. package/dist/src/output.js.map +1 -0
  27. package/dist/src/run.js +141 -27
  28. package/dist/src/run.js.map +1 -1
  29. package/dist/src/session.js +46 -25
  30. package/dist/src/session.js.map +1 -1
  31. package/dist/src/sessions.js +72 -0
  32. package/dist/src/sessions.js.map +1 -0
  33. package/dist/src/skills.js +130 -0
  34. package/dist/src/skills.js.map +1 -0
  35. package/package.json +7 -3
  36. package/prompt/index.ts +11 -2
  37. package/prompt/print.ts +9 -0
  38. package/prompt/system-prompt.ts +18 -4
  39. package/prompt/testomatio.ts +3 -3
  40. package/prompt/tools.ts +30 -7
  41. package/skills/codeceptjs/ci-fix-tests/SKILL.md +119 -0
  42. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +141 -0
  43. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +100 -0
  44. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +196 -0
  45. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +83 -0
  46. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +126 -0
  47. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +109 -0
  48. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +295 -0
  49. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +339 -0
  50. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +459 -0
  51. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +338 -0
  52. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +78 -0
  53. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +102 -0
  54. package/skills/playwright/playwright-best-practices/SKILL.md +303 -0
  55. package/skills/playwright/playwright-best-practices/advanced/authentication-flows.md +360 -0
  56. package/skills/playwright/playwright-best-practices/advanced/authentication.md +871 -0
  57. package/skills/playwright/playwright-best-practices/advanced/clock-mocking.md +364 -0
  58. package/skills/playwright/playwright-best-practices/advanced/mobile-testing.md +409 -0
  59. package/skills/playwright/playwright-best-practices/advanced/multi-context.md +288 -0
  60. package/skills/playwright/playwright-best-practices/advanced/multi-user.md +393 -0
  61. package/skills/playwright/playwright-best-practices/advanced/network-advanced.md +452 -0
  62. package/skills/playwright/playwright-best-practices/advanced/third-party.md +464 -0
  63. package/skills/playwright/playwright-best-practices/architecture/pom-vs-fixtures.md +363 -0
  64. package/skills/playwright/playwright-best-practices/architecture/test-architecture.md +369 -0
  65. package/skills/playwright/playwright-best-practices/architecture/when-to-mock.md +383 -0
  66. package/skills/playwright/playwright-best-practices/browser-apis/browser-apis.md +391 -0
  67. package/skills/playwright/playwright-best-practices/browser-apis/iframes.md +403 -0
  68. package/skills/playwright/playwright-best-practices/browser-apis/service-workers.md +504 -0
  69. package/skills/playwright/playwright-best-practices/browser-apis/websockets.md +403 -0
  70. package/skills/playwright/playwright-best-practices/core/annotations.md +424 -0
  71. package/skills/playwright/playwright-best-practices/core/assertions-waiting.md +361 -0
  72. package/skills/playwright/playwright-best-practices/core/configuration.md +452 -0
  73. package/skills/playwright/playwright-best-practices/core/fixtures-hooks.md +417 -0
  74. package/skills/playwright/playwright-best-practices/core/global-setup.md +434 -0
  75. package/skills/playwright/playwright-best-practices/core/locators.md +242 -0
  76. package/skills/playwright/playwright-best-practices/core/page-object-model.md +315 -0
  77. package/skills/playwright/playwright-best-practices/core/projects-dependencies.md +453 -0
  78. package/skills/playwright/playwright-best-practices/core/test-data.md +492 -0
  79. package/skills/playwright/playwright-best-practices/core/test-suite-structure.md +361 -0
  80. package/skills/playwright/playwright-best-practices/core/test-tags.md +298 -0
  81. package/skills/playwright/playwright-best-practices/debugging/console-errors.md +420 -0
  82. package/skills/playwright/playwright-best-practices/debugging/debugging.md +504 -0
  83. package/skills/playwright/playwright-best-practices/debugging/error-testing.md +360 -0
  84. package/skills/playwright/playwright-best-practices/debugging/flaky-tests.md +496 -0
  85. package/skills/playwright/playwright-best-practices/frameworks/angular.md +530 -0
  86. package/skills/playwright/playwright-best-practices/frameworks/nextjs.md +469 -0
  87. package/skills/playwright/playwright-best-practices/frameworks/react.md +531 -0
  88. package/skills/playwright/playwright-best-practices/frameworks/vue.md +574 -0
  89. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/ci-cd.md +468 -0
  90. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/docker.md +283 -0
  91. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/github-actions.md +546 -0
  92. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/gitlab.md +397 -0
  93. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/other-providers.md +521 -0
  94. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/parallel-sharding.md +371 -0
  95. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/performance.md +453 -0
  96. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/reporting.md +424 -0
  97. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/test-coverage.md +497 -0
  98. package/skills/playwright/playwright-best-practices/testing-patterns/accessibility.md +359 -0
  99. package/skills/playwright/playwright-best-practices/testing-patterns/api-testing.md +719 -0
  100. package/skills/playwright/playwright-best-practices/testing-patterns/browser-extensions.md +506 -0
  101. package/skills/playwright/playwright-best-practices/testing-patterns/canvas-webgl.md +493 -0
  102. package/skills/playwright/playwright-best-practices/testing-patterns/component-testing.md +500 -0
  103. package/skills/playwright/playwright-best-practices/testing-patterns/drag-drop.md +576 -0
  104. package/skills/playwright/playwright-best-practices/testing-patterns/electron.md +509 -0
  105. package/skills/playwright/playwright-best-practices/testing-patterns/file-operations.md +377 -0
  106. package/skills/playwright/playwright-best-practices/testing-patterns/file-upload-download.md +562 -0
  107. package/skills/playwright/playwright-best-practices/testing-patterns/forms-validation.md +561 -0
  108. package/skills/playwright/playwright-best-practices/testing-patterns/graphql-testing.md +331 -0
  109. package/skills/playwright/playwright-best-practices/testing-patterns/i18n.md +508 -0
  110. package/skills/playwright/playwright-best-practices/testing-patterns/performance-testing.md +476 -0
  111. package/skills/playwright/playwright-best-practices/testing-patterns/security-testing.md +430 -0
  112. package/skills/playwright/playwright-best-practices/testing-patterns/visual-regression.md +634 -0
  113. package/skills/playwright/playwright-cli/SKILL.md +420 -0
  114. package/skills/playwright/playwright-cli/references/element-attributes.md +23 -0
  115. package/skills/playwright/playwright-cli/references/playwright-tests.md +39 -0
  116. package/skills/playwright/playwright-cli/references/request-mocking.md +87 -0
  117. package/skills/playwright/playwright-cli/references/running-code.md +241 -0
  118. package/skills/playwright/playwright-cli/references/session-management.md +225 -0
  119. package/skills/playwright/playwright-cli/references/storage-state.md +275 -0
  120. package/skills/playwright/playwright-cli/references/test-generation.md +433 -0
  121. package/skills/playwright/playwright-cli/references/tracing.md +139 -0
  122. package/skills/playwright/playwright-cli/references/video-recording.md +143 -0
  123. package/skills/skills.lock.json +41 -37
  124. package/skills/skills.yaml +1 -0
  125. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +76 -0
  126. package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +36 -0
  127. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +108 -0
  128. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +86 -0
  129. package/skills/testomatio/explorbot/prima/SKILL.md +87 -0
  130. package/skills/testomatio/qa-process/qa-explain-behavior/SKILL.md +111 -0
  131. package/skills/testomatio/qa-process/qa-explain-behavior/references/answer-shapes.md +116 -0
  132. package/skills/testomatio/qa-process/qa-explain-behavior/references/examples.md +157 -0
  133. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/SKILL.md +91 -0
  134. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/references/output-format.md +71 -0
  135. package/skills/testomatio/qa-process/testing-workflow/SKILL.md +227 -0
  136. package/skills/testomatio/test-automation/automate-manual-test-cases/CLAUDE.md +56 -0
  137. package/skills/testomatio/test-automation/automate-manual-test-cases/SKILL.md +242 -0
  138. package/skills/testomatio/test-automation/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +182 -0
  139. package/skills/testomatio/test-automation/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +22 -0
  140. package/skills/testomatio/test-automation/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +90 -0
  141. package/skills/testomatio/test-automation/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +53 -0
  142. package/skills/testomatio/test-automation/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +52 -0
  143. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/SKILL.md +107 -0
  144. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +113 -0
  145. package/skills/testomatio/test-automation/qa-automation-test-consolidation/SKILL.md +29 -0
  146. package/skills/testomatio/test-automation/qa-data-seeder/SKILL.md +83 -0
  147. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +153 -0
  148. package/skills/testomatio/test-automation/setup-change-aware-pr-testing/SKILL.md +190 -0
  149. package/skills/testomatio/test-automation/setup-ci-automation/SKILL.md +76 -0
  150. package/skills/testomatio/test-automation/testomat-allure-adapter/SKILL.md +289 -0
  151. package/skills/testomatio/test-management/detect-duplicate-test-cases/SKILL.md +86 -0
  152. package/skills/testomatio/test-management/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +54 -0
  153. package/skills/testomatio/test-management/improve-test-cases/SKILL.md +114 -0
  154. package/skills/testomatio/test-management/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +66 -0
  155. package/skills/testomatio/test-management/pull-request-diff-analyzer/SKILL.md +141 -0
  156. package/skills/testomatio/test-management/qa-e2e-tests-reporting/SKILL.md +354 -0
  157. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +82 -0
  158. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +37 -0
  159. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +118 -0
  160. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/SKILL.md +149 -0
  161. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/references/summary-example.md +54 -0
  162. package/skills/testomatio/test-management/qa-requirement-reviewer/SKILL.md +126 -0
  163. package/skills/testomatio/test-management/qa-requirement-reviewer/references/requirements_reviewer_examples.md +128 -0
  164. package/skills/testomatio/test-management/qa-split-testing-levels-pyramid/SKILL.md +55 -0
  165. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/SKILL.md +220 -0
  166. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +126 -0
  167. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +174 -0
  168. package/skills/testomatio/test-management/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +138 -0
  169. package/skills/testomatio/test-management/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +65 -0
  170. package/skills/testomatio/test-management/qa-test-code-coverage/scripts/check-coverage.mjs +40 -0
  171. package/skills/testomatio/test-management/qa-thinking/SKILL.md +36 -0
  172. package/skills/testomatio/test-management/qa-write-test-cases/SKILL.md +267 -0
  173. package/skills/testomatio/test-management/qa-write-test-cases/references/test-case-format.md +387 -0
  174. package/skills/testomatio/test-management/qa-write-test-cases/references/testomat-tms-guide.md +72 -0
  175. package/skills/testomatio/test-management/qa-write-test-cases/references/writing-rule.md +159 -0
  176. package/skills/testomatio/test-management/scan-automation-project/SKILL.md +152 -0
  177. package/skills/testomatio/test-management/sync-test-cases-with-tms/SKILL.md +107 -0
  178. package/skills/testomatio/test-management/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +140 -0
  179. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +195 -0
  180. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +177 -0
@@ -0,0 +1,118 @@
1
+ # Testomat.io Reporters Configuration
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ npm install @testomatio/reporter --save-dev
7
+ # or pnpm install @testomatio/reporter --save-dev
8
+ # or yarn add @testomatio/reporter --dev
9
+ ```
10
+
11
+ ## Environment Variables
12
+
13
+ | Variable | Description | Required |
14
+ |----------|-------------|----------|
15
+ | `TESTOMATIO` | API key (format: `tstmt_xxxxx`) | Yes (for sync) |
16
+ | `TESTOMATIO_WORKDIR` | Working directory for relative paths | No |
17
+
18
+ ## Configuration File (Recommended)
19
+
20
+ Create `.env` file in project root to store credentials securely:
21
+
22
+ ```env
23
+ TESTOMATIO=tstmt_xxx
24
+ ...
25
+ ```
26
+
27
+ > **Best Practice:** Use `.env` file instead of passing `TESTOMATIO` token as command variable. Keep `.env` in `.gitignore`.
28
+
29
+ ## Framework Configuration
30
+
31
+ ### Playwright
32
+
33
+ **Config:**
34
+ ```js
35
+ reporter: [
36
+ ['@testomatio/reporter/playwright'],
37
+ ],
38
+ ```
39
+
40
+ **Run:**
41
+ - `npx playwright test` (if token configured in .env).
42
+ - `TESTOMATIO={API_KEY} npx playwright test` (if no token configured in .env).
43
+
44
+ ### CodeceptJS
45
+
46
+ **Config:**
47
+ ```js
48
+ plugins: {
49
+ testomatio: {
50
+ enabled: true,
51
+ require: '@testomatio/reporter/codecept',
52
+ }
53
+ }
54
+ ```
55
+
56
+ **Run:**
57
+ - `npx codeceptjs run` (if token configured in .env).
58
+ - `TESTOMATIO={API_KEY} npx codeceptjs run` (if no token configured in .env).
59
+
60
+ ### Mocha
61
+
62
+ **Run:**
63
+ ```bash
64
+ mocha --reporter @testomatio/reporter/mocha --reporter-options apiKey=tstmt_xxx
65
+ ```
66
+
67
+ ### WebdriverIO
68
+
69
+ **Config (wdio.conf.js):**
70
+ ```js
71
+ const testomatio = require('@testomatio/reporter/webdriver');
72
+ // or
73
+ // const testomatio = require('@testomatio/reporter/wdio');
74
+
75
+ exports.config = {
76
+ // ...
77
+ reporters: [
78
+ [
79
+ testomatio,
80
+ {
81
+ apiKey: process.env.TESTOMATIO,
82
+ },
83
+ ],
84
+ ],
85
+ };
86
+ ```
87
+
88
+ **Run:** `npx @testomatio/reporter run 'npx wdio wdio.conf.js'`
89
+
90
+ ### Jest
91
+
92
+ **Config (jest.config.js):**
93
+ ```js
94
+ reporters: ['default', ['@testomatio/reporter/jest', { apiKey: process.env.TESTOMATIO }]],
95
+ ```
96
+
97
+ **Run:** `npx jest`
98
+
99
+ ## Import Tests to TMS
100
+
101
+ ```bash
102
+ npx check-tests <framework> "<glob-pattern>"
103
+ ```
104
+
105
+ Examples:
106
+ ```bash
107
+ npx check-tests playwright "tests/**/*.spec.js"
108
+ npx check-tests playwright "tests/**/*.spec.ts" --typescript --update-ids
109
+ npx check-tests jest "tests/**/*.test.js" --require-ids
110
+ npx check-tests mocha "test/**/*_test.js"
111
+ npx check-tests codeceptjs "tests/**_test.js"
112
+ ```
113
+
114
+ Example using the `TESTOMATIO` token in the exec command:
115
+ ```bash
116
+ # Not recommended, but can be used for testing
117
+ TESTOMATIO=tstmt_xxx npx check-tests playwright "tests/**/*.spec.js"
118
+ ```
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: qa-pr-requirements-analyzer
3
+ description: Analyze a pull request's context - title, description, comments, linked issues, attached schemas/images — to understand the original intent, verify scope against the linked ticket, surface ambiguities and edge cases, and produce a structured requirements summary with testable acceptance criteria. Use this skill when the user wants to understand WHAT a PR is supposed to do (not just what code changed), check whether the PR matches its linked ticket/task or generate acceptance criteria from PR/ticket context rather than from code.
4
+ license: MIT
5
+ metadata:
6
+ author: Testomat.io
7
+ version: 1.1.0
8
+ ---
9
+
10
+ # QA PR Requirements Analyzer
11
+
12
+ Reviews a pull request's human-written context — title, description, comments, linked tickets, attached images — to extract the original requirements, verify scope, and produce a requirements summary that downstream skills (`qa-write-test-cases`) can consume.
13
+
14
+ Complement of `pull-request-diff-analyzer`:
15
+
16
+ | Skill | Input | Output | Focus |
17
+ |-------|-------|--------|-------|
18
+ | `pull-request-diff-analyzer` | git diff, changed files | AC from code changes | "what the code does" |
19
+ | `qa-pr-requirements-analyzer` | PR title, description, comments, linked issue | summary of requirements with scope verification, AC | "what the PR is supposed to do" |
20
+
21
+ - Use them together for a full picture.
22
+ - If the user only wants to know what code changed, use `pull-request-diff-analyzer` instead.
23
+
24
+ ## Step 1: Detect PR Context
25
+
26
+ Accept, in priority order:
27
+ 1. A PR number or URL from the user prompt (e.g. `https://github.com/org/repo/pull/1234`).
28
+ 2. The open PR for the current branch: `gh pr view --json number,title,baseRefName,headRefName,url`.
29
+ 3. A ticket key only (Jira `PRJ-123`, Linear, etc) — analyze the ticket, then check for any open PR referencing it.
30
+
31
+ - If none are detectable, ask the user for a PR number/URL, branch name, or ticket key.
32
+ - If the branch exists only locally, ask the user to push it or provide the PR details directly.
33
+
34
+ ## Step 2: Read PR Context
35
+
36
+ Collect what the developer and team wrote — not the code. Detect available MCP/CLI tools and pull:
37
+ - PR metadata (title, description, comments, labels, milestone, assignees) — via Jira/Linear/GitHub MCP if enabled, else `gh` CLI.
38
+ - Embedded images/diagrams in the body — read them (vision-capable agent or `fetch` + describe); they often capture UI changes, error states, or flows that text misses.
39
+ - Linked tickets — parse the PR body and branch name for ticket references.
40
+
41
+ **Do not fabricate ticket content or add incorrect information.**
42
+
43
+ ## Step 3: Resolve Linked Tickets
44
+
45
+ The PR description is often a thin summary; the ticket has the real requirements. Use the first available tool:
46
+
47
+ 1. Jira/Linear MCP if enabled — fetch issue summary, description, AC, comments, linked issues, attachments.
48
+ 2. GitHub MCP if enabled — fetch the linked issue.
49
+ 3. `gh` CLI fallback — `gh issue view {N} --json title,body,comments,labels`. For Jira/Linear without an MCP, ask the user to paste the issue content.
50
+ 4. No access — note the gap explicitly in the output and continue with what you have.
51
+
52
+ ## Step 4: Verify Scope and Detect Ambiguities
53
+
54
+ Compare what the PR does against what the ticket asked for. These are questions to raise, not assertions that the code is wrong.
55
+
56
+ Scope verification — build three lists:
57
+ - In scope — ticket requirements addressed by the PR (description or code, see Step 5).
58
+ - Out of scope — ticket requirements with no corresponding PR change. These are the most valuable output of this skill.
59
+ - Extra (not in ticket) — PR changes not mentioned in the ticket. Flag for review (intentional or accidental?).
60
+
61
+ Ambiguities, edge cases, open questions — surface only issues supported by the available context. **Do not invent new requirements** or assume the product should handle a scenario unless the ticket, PR description, comments, or surrounding context suggest it is relevant. Look for:
62
+ - Underspecified behavior — the ticket describes a capability but omits important details (e.g. export is required, but format, naming, permissions, or empty-state behavior are not defined).
63
+ - Unanswered comments — questions in PR or ticket comments with no visible resolution.
64
+ - Conflicting requirements — different parts of the ticket, comments, or PR description disagree.
65
+ - Potentially relevant edge cases — scenarios related to the stated requirements whose expected behavior is not specified. Present these as questions, not requirements.
66
+ - **Never report an edge case solely because it is a common software concern.**
67
+ - Only raise an edge case when the ticket, PR description, affected domain, or discussion suggests it may be relevant.
68
+
69
+ ## Step 5: Identify Affected Files
70
+
71
+ Do not do a deep code review — that is `pull-request-diff-analyzer`. Prefer files mentioned in the PR description or ticket; cross-check with `git diff {base}...HEAD --name-only` only if the description doesn't enumerate them.
72
+
73
+ **Short-circuit (no source behavior):** if every changed file is non-source (`*.md`, `docs/**`, `tests/**`, configs, CI, deps, lock files):
74
+ - Do not invent AC. Do not invoke `pull-request-diff-analyzer`.
75
+ - Produce a short summary: PR title, type (`docs`/`chore`/`ci`/`deps`), one-sentence `Changes`, full file list.
76
+ - Add the note `> No source code behavior changed. Acceptance criteria generation is not applicable for this PR.`
77
+ - Stop here.
78
+
79
+ **Empty PR description:** if there is no body and the branch name doesn't encode intent:
80
+ - Pull `git log {base}..HEAD --pretty=format:"%s%n%b"`.
81
+ - Combine with changed files and branch name into a tentative one-sentence `Changes`.
82
+ - Mark `> PR description was empty. Summary derived from branch name, commits, and changed files only.`
83
+ - If a linked ticket exists, prefer the ticket as source of truth and note the empty body under "Ambiguities".
84
+
85
+ ## Step 6: Generate the Requirements Summary
86
+
87
+ **Save to a `.md` file only if the original prompt explicitly requests saving.** Write it to the user-specified folder.
88
+
89
+ Filename: slugify the PR title (lowercase, dashes, no special chars, max 40 chars), append the PR number. Example: `Add user export to CSV` → `add-user-export-to-csv-pr-1234.md`.
90
+
91
+ Output template (filled example: [summary-example.md](./references/summary-example.md)):
92
+
93
+ ```md
94
+ ## PR Requirements Summary
95
+
96
+ **PR:** {title}
97
+ **Branch:** {headRefName} → {baseRefName}
98
+ **Type:** {feature | bugfix | refactor | deps}
99
+ **Linked Tickets:** ... (only if any exist)
100
+
101
+ **Source of Truth:**
102
+ - PR description: {present | empty — derived from commits/branch}
103
+ - Jira/GitHub ticket: {resolved | not resolved — no MCP available}
104
+ - Most reliable source: {PR description | ticket | commits}
105
+
106
+ **Changes Overview:** ... (1-2 sentences — intent, not implementation)
107
+
108
+ **Impacted Areas:**
109
+ - Payment processing (6 source files)
110
+ - Billing configuration (2 config files)
111
+ - ... (bullet list, only meaningful business/technical impact; omit if empty)
112
+
113
+ **High Level Key files (up to 5):**
114
+ - `path/to/file.ts` — source
115
+ - ... (categorized: source | config | test | docs | migration | deps)
116
+
117
+ **Scope Verification:**
118
+ - ✅ In scope: {ticket requirement → where in PR it is addressed}
119
+ - ⚠️ Out of scope: {ticket requirement not addressed in PR}
120
+ - ➕ Extra (not in ticket): {change present in PR but not in ticket}
121
+
122
+ **Ambiguities, Edge Cases & Open Questions:**
123
+ - ... (underspecified behavior / unanswered comment / conflicting requirement / missing edge case)
124
+ - ... (empty input / permissions / error path / performance / backward compatibility / ...)
125
+ - ...
126
+
127
+ **Acceptance Criteria:**
128
+ - {action to perform} → {expected result}
129
+ - ...
130
+ ```
131
+
132
+ Summary rules:
133
+ - Concise, high-level, requirements-not-implementation — this is a requirements document, not a code review.
134
+ - `Changes Overview` is 1-2 sentences.
135
+ - `Impacted Areas` — meaningful bullets; omit the section if empty.
136
+ - `Source of Truth` is required — tells downstream skills what to trust when sources disagree.
137
+ - `Acceptance Criteria` — testable, user-oriented, written as "action → expected result". If no source-code behavior changed, replace this section with the explicit "not applicable" note from Step 5.
138
+ - Omit empty sections instead of writing `None`/`N/A` — except the "no source code changed" note, which must be explicit.
139
+ - Avoid generic statements like "code cleanup", "minor fixes", "various improvements" — name what changed or omit it.
140
+
141
+ ## References
142
+
143
+ | Description | File |
144
+ |-------------|------|
145
+ | Filled example of the output summary | [summary-example.md](./references/summary-example.md) |
146
+ | `.testeiya/` directory convention | `../scan-automation-project/SKILL.md` |
147
+ | Code-focused PR analysis (companion skill) | `../pull-request-diff-analyzer/SKILL.md` |
148
+ | Downstream: generate test cases from requirements | `../qa-write-test-cases/SKILL.md` |
149
+ | Downstream: sync generated cases to Testomat.io | `../sync-test-cases-with-tms/SKILL.md` |
@@ -0,0 +1,54 @@
1
+ # PR Requirements Summary — Example
2
+
3
+ A filled-in example of the artifact produced by the `qa-pr-requirements-analyzer` skill.
4
+
5
+ ---
6
+
7
+ ## PR Requirements Summary
8
+
9
+ **PR:** Add user export to CSV
10
+ **Branch:** feature/PRJ-789-user-export → main
11
+ **Type:** feature
12
+ **Linked Tickets:** PRJ-789
13
+
14
+ **Source of Truth:**
15
+ - PR description: present (detailed, includes AC checklist and screenshot of the export modal)
16
+ - Jira/GitHub ticket: resolved (PRJ-789)
17
+ - Most reliable source: PR description + ticket (consistent, no conflicts)
18
+
19
+ **Changes Overview:** Adds a CSV export action on the user list page that streams all currently filtered users to a downloadable file, with an email notification when exports exceed 10k rows.
20
+
21
+ **Impacted Areas:**
22
+ - User list page UI (new "Export" action).
23
+ - User data export pipeline (CSV generation, streaming, email delivery).
24
+ - Permission checks for export (admin-only).
25
+
26
+ **High Level Key files (up to 5):**
27
+ - `src/pages/UserList.tsx` — source
28
+ - `src/services/ExportService.ts` — source
29
+ - `src/api/export.ts` — source
30
+ - `src/components/ExportModal.tsx` — source
31
+ - `i18n/en.json` — config
32
+
33
+ **Scope Verification:**
34
+ - ✅ In scope: PRJ-789 AC1 (export button on the user list) — addressed in `src/pages/UserList.tsx` and `src/components/ExportModal.tsx`
35
+ - ✅ In scope: PRJ-789 AC2 (admin-only) — addressed in `ExportService.ts` permission check
36
+ - ⚠️ Out of scope: PRJ-789 AC3 (email notification for >10k exports) — no implementation found
37
+ - ➕ Extra (not in ticket): i18n strings for German locale (`i18n/de.json`) — ticket only mentioned English
38
+
39
+ **Ambiguities, Edge Cases & Open Questions:**
40
+ - CSV column order not specified — needs product confirmation.
41
+ - Concurrent exports by the same admin — no rate limiting or deduplication specified.
42
+ - 50k+ user export (memory/timeout) — no performance budget in the ticket.
43
+ - CSV date/time localization (UTC vs. user locale) — not specified.
44
+ - Backward compatibility with existing scheduled exports (if any) — not addressed.
45
+
46
+ **Acceptance Criteria:**
47
+ - Admin opens user list with filters and clicks "Export" → modal appears with row count estimate
48
+ - Admin starts export with <10k matching users → CSV downloads with columns `id, name, email, created_at` in that order
49
+ - Non-admin opens user list → "Export" action is hidden (or returns 403 via API)
50
+ - Admin triggers >10k user export → export is queued, email sent when ready *(NOT IMPLEMENTED — see Scope Verification)*
51
+ - User without email is included → email field is empty string in CSV
52
+ - Empty filtered list → button disabled OR empty CSV with header only
53
+ - 50k+ user export completes without server timeout or OOM
54
+ - German admin sees the export modal translated
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: qa-requirement-reviewer
3
+ description: Review requirements before development. Identify ambiguity, missing information, contradictions, unclear acceptance criteria, logical gaps, edge cases, and testability issues. Determine whether the requirements are sufficiently clear for development and QA. Use this skill when a user provides requirements (BRD, user story, use case, feature ticket, specification, or prose) and asks for feedback, validation, review, or readiness assessment before implementation.
4
+ license: MIT
5
+ metadata:
6
+ author: Testomat.io
7
+ version: 1.0.0
8
+ ---
9
+
10
+ # QA Requirement Reviewer
11
+
12
+ Review requirements as written. Report issues, gaps, risks, and open questions so stakeholders can decide whether the requirements are ready for development and testing.
13
+
14
+ Rules:
15
+ - **Work with the input as-is — do not rewrite it.**
16
+ - **Do not make assumptions or silently fill in missing information.**
17
+ - Suggest improved wording or acceptance criteria where useful.
18
+ - **Suggested improvements must not hide missing information or assumptions.**
19
+ - Accept any format: BRD, user story, use case, feature ticket, specification, acceptance criteria, email, or free-form text.
20
+
21
+ ## Review Criteria
22
+
23
+ Evaluate each requirement against:
24
+
25
+ | Criterion | What it means | Failure signals |
26
+ | -------------- | ------------------------- | --------------- |
27
+ | **Atomic** | Describes a single behavior, rule, or capability | Multiple behaviors combined in one requirement; difficult to verify independently |
28
+ | **Clear** | Meaning is understandable and specific | Vague language, undefined terms, subjective wording, multiple possible interpretations |
29
+ | **Complete** | Contains enough information for implementation and testing | Missing business rules, acceptance criteria, inputs, outputs, error handling, or edge cases |
30
+ | **Consistent** | Does not conflict with related requirements | Contradictory behavior, terminology, workflows, rules, or constraints |
31
+ | **Testable** | Can be objectively verified | No measurable outcome, unclear success criteria, impossible to determine pass or fail |
32
+
33
+ ## Workflow
34
+
35
+ ### Step 1: Gather Requirements
36
+
37
+ Accept requirements as:
38
+ - A document or file.
39
+ - A directory, repository, or collection of documents and files.
40
+ - Raw text provided in the conversation.
41
+
42
+ If the requirements are incomplete, inaccessible, or unclear, ask the user for clarification.
43
+
44
+ ### Step 2: Identify Requirements
45
+
46
+ - Identify individual requirements, rules, behaviors, and acceptance criteria.
47
+ - Assign identifiers where helpful (`R1`, `R2`, ...), or reuse existing IDs.
48
+ - Separate requirements from background, rationale, implementation details, and design discussion.
49
+
50
+ ### Step 3: Review Each Requirement
51
+
52
+ Evaluate each requirement against the review criteria. For each issue found:
53
+ 1. Identify the affected requirement.
54
+ 2. Explain the issue and its consequence.
55
+ 3. Classify it (clarity, completeness, consistency, testability, etc.).
56
+ 4. Ask the clarification question needed to resolve it.
57
+ 5. Optionally suggest improved wording.
58
+
59
+ ### Step 4: Review the Requirement Set
60
+
61
+ Evaluate the requirements as a whole for:
62
+ - Missing requirements, scenarios, or business rules.
63
+ - Missing acceptance criteria or expected outcomes.
64
+ - Missing actors, roles, states, dependencies, or constraints.
65
+ - Missing edge cases, alternative flows, or error conditions.
66
+ - Contradictions, overlaps, or inconsistencies between requirements.
67
+
68
+ ### Step 5: Produce the Review Report
69
+
70
+ Use this exact structure:
71
+
72
+ ```markdown
73
+ ## Requirements Review
74
+
75
+ ### Readiness Assessment
76
+
77
+ **Decision:** ✅ Ready for Development | ⚠️ Needs Clarification | ❌ Not Ready
78
+
79
+ **Summary:** ... (Brief assessment of overall requirement quality and readiness. 1-3 sentence verdict)
80
+
81
+ ### Key Findings
82
+
83
+ | Requirement | Issue Type | Finding | Question / Recommendation |
84
+ | ----------- | ------------ | ------- | ------------------------- |
85
+ | R1 | Completeness | ... | ... |
86
+ | R2 | Clarity | ... | ... |
87
+
88
+ (**Consolidation "Key Findings" table rule:** When multiple findings share the same "Issue Type" for one requirement, use numbered lists within Finding and Question/Recommendation columns to match issues by number (e.g., `1. Finding 1 2. Finding 2 | 1. Question 1 2. Question 2`). This avoids duplicate rows and keeps the table compact while preserving 1:1 correspondence)
89
+
90
+ ### Ambiguities & Open Questions
91
+
92
+ * ...
93
+ * ...
94
+
95
+ (Bullet list of Questions that should be answered before approval, implementation, or testing)
96
+
97
+ ### Gaps & Issues
98
+
99
+ * ...
100
+ * ...
101
+
102
+ (Missing information, scenarios, business rules, constraints, dependencies, edge cases, or error conditions)
103
+
104
+ ### Acceptance Criteria Review (optional)
105
+
106
+ * Assess whether acceptance criteria are clear, complete, and testable.
107
+ * Identify missing acceptance criteria where needed.
108
+
109
+ (Include **only if acceptance criteria exist** or are expected)
110
+
111
+ ### Risks & Impact
112
+
113
+ * ...
114
+ * ...
115
+
116
+ (Potential consequences of proceeding without clarification).
117
+
118
+ ### Recommendation
119
+
120
+ ... (Recommended next action before approval or implementation)
121
+
122
+ ```
123
+
124
+ ## Examples
125
+
126
+ See `references/requirements_reviewer_examples.md` for two worked examples: a flawed draft BRD and a set of user stories, each with input and review output.
@@ -0,0 +1,128 @@
1
+ # Requirements Review — Examples
2
+
3
+ A small, deliberately flawed draft — the kind of thing that lands in review — turned into a requirements review. The input has loose structure and mixed quality; the review works with it as-is and does not rewrite it.
4
+
5
+ ## Example 1: Draft BRD
6
+
7
+ ### Input (draft BRD excerpt)
8
+
9
+ ```
10
+ Search Feature — Business Requirements (draft)
11
+
12
+ 1. The search must be fast and return relevant results.
13
+ 2. Users can search by keyword and filter by date, and results should be exportable.
14
+ 3. The system should handle a large number of users.
15
+ 4. Search results are stored for reporting.
16
+ ```
17
+
18
+ ### Output
19
+
20
+ ```markdown
21
+ ## Requirements Review
22
+
23
+ ### Readiness Assessment
24
+
25
+ **Decision:** ❌ Not Ready
26
+
27
+ **Summary:** None of the four requirements is testable as written. R1 lacks a measurable threshold, R2 bundles three separate behaviors, and the set has no error-path coverage or acceptance criteria.
28
+
29
+ ### Key Findings
30
+
31
+ | Requirement | Issue Type | Finding | Question / Recommendation |
32
+ | ----------- | ------------ | ------- | ------------------------- |
33
+ | R1 | Testability | "fast" has no measurable threshold | What is the maximum acceptable response time, and at what data volume? |
34
+ | R2 | Atomicity | Three behaviors combined (search, filter, export) | Split into separate requirements for keyword search, date filter, and export |
35
+ | R3 | Clarity | "large number of users" is undefined | What concurrent-user count must search support? |
36
+ | R4 | Completeness | Storage scope and retention not defined | What exactly is stored, for how long, and who can see it? |
37
+
38
+ ### Ambiguities & Open Questions
39
+
40
+ * R1: What is the maximum acceptable response time, and at what data volume?
41
+ * R2: Should this be three separate requirements (keyword search, date filter, export)?
42
+ * R3: What concurrent-user count must search support?
43
+ * R4: What exactly is stored, for how long, and who can see it?
44
+
45
+ ### Gaps & Issues
46
+
47
+ * R1: No measurable threshold for "fast"
48
+ * R2: Compound requirement — three behaviors cannot pass/fail independently
49
+ * R3: "Large number of users" has no target
50
+ * R4: Storage scope and retention not defined
51
+ * No error-state or empty-state behavior defined across all requirements
52
+
53
+ ### Acceptance Criteria Review
54
+
55
+ No acceptance criteria found. Suggest:
56
+ - Response time: Search should return results within 1 second for queries under 50 characters
57
+ - Recall: Top results match expected set for known queries
58
+ - Empty state: Display "No results found" message when search returns zero matches
59
+ - Error state: Handle special characters and empty queries gracefully
60
+
61
+ ### Risks & Impact
62
+
63
+ * Implementation risk: Medium — ambiguous performance targets may lead to rework
64
+ * Testing risk: High — no measurable acceptance criteria blocks test case design
65
+ * Business impact risk: Low — core functionality is defined but not verifiable
66
+
67
+ ### Recommendation
68
+
69
+ Resolve all open questions before approval. Add measurable acceptance criteria to each requirement. Split compound requirement R2 into atomic requirements.
70
+ ```
71
+
72
+ ## Example 2: User Stories
73
+
74
+ ### Input (user stories)
75
+
76
+ ```
77
+ As a user, I want to search for products by name so I can find what I'm looking for.
78
+ As a user, I want to filter search results by category so I can narrow down choices.
79
+ As a user, I want to export search results to PDF so I can share them with others.
80
+ ```
81
+
82
+ ### Output
83
+
84
+ ```markdown
85
+ ## Requirements Review
86
+
87
+ ### Readiness Assessment
88
+
89
+ **Decision:** ⚠️ Needs Clarification
90
+
91
+ **Summary:** Stories are well-structured and pass most criteria. Minor clarification needed on export scope and empty-state behavior before approval.
92
+
93
+ ### Key Findings
94
+
95
+ | Requirement | Issue Type | Finding | Question / Recommendation |
96
+ | ----------- | ------------ | ------- | ------------------------- |
97
+ | US1 | Completeness | 1. No empty-state behavior defined | 1. What should the user see when search returns zero results? |
98
+ | US2 | Completeness | 1. No error-state behavior defined | 1. How are invalid filter values handled? |
99
+ | US3 | Clarity | 1. Export scope and format not fully specified | 1. Should export include current page or full result set? |
100
+
101
+ ### Ambiguities & Open Questions
102
+
103
+ * Export: Which format(s) — PDF only? What content — current page or full result set?
104
+ * Empty search results: What should the user see?
105
+ * Invalid input (special characters, empty query): How is this handled?
106
+
107
+ ### Gaps & Issues
108
+
109
+ * No error-state or empty-state behavior defined across all stories
110
+ * Export: scope (page vs all results) and format not specified
111
+
112
+ ### Acceptance Criteria Review
113
+
114
+ No formal acceptance criteria present. Suggest:
115
+ - Search returns results within 500ms for queries under 50 characters
116
+ - Filter reduces result set to only matching category
117
+ - Export produces valid PDF containing full result set (or specify page vs all)
118
+
119
+ ### Risks & Impact
120
+
121
+ * Implementation risk: Low — stories are independent and estimable
122
+ * Testing risk: Medium — export scope ambiguity may cause rework
123
+ * Business impact risk: Low — core search value is clear
124
+
125
+ ### Recommendation
126
+
127
+ Clarify export scope and add empty-state acceptance criteria. Otherwise ready for sprint planning.
128
+ ```
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: qa-split-testing-levels-pyramid
3
+ description: Apply the testing pyramid to a feature — divide test scenarios across levels (unit, integration, e2e), assign each scenario to the cheapest sufficient level, and produce a coverage split per level. Use when asked "unit, integration or e2e?", "what level should this test be?", "how should we test this feature?", "what test coverage do we need?", or to apply the test pyramid to a feature or project.
4
+ license: MIT
5
+ metadata:
6
+ author: Testomat.io
7
+ version: 1.0.0
8
+ ---
9
+
10
+ # QA Split Testing Levels — Test Pyramid
11
+
12
+ Applies the testing pyramid to a feature: each scenario goes to the cheapest level that can still catch its failure.
13
+ Input: a feature description, or risk scenarios from a prior QA analysis.
14
+
15
+ ## Testing levels
16
+
17
+ Default layers, bottom to top:
18
+
19
+ - **unit + integration**
20
+ - **e2e**
21
+ - **manual**
22
+
23
+ A layer can hold several kinds of tests with separate runners: `e2e api` / `e2e web` / `e2e mobile`.
24
+ Other testing layers a project may have instead: component, functional, contract, visual.
25
+ **Take the testing layers and kinds from the project; use the default only when the scan finds nothing.**
26
+
27
+ ## Workflow
28
+
29
+ 1. Inventory existing tests with the `scan-automation-project` skill.
30
+ 2. Detect the project's testing layers and the kinds of tests inside them.
31
+ 3. Assign each scenario to the lowest layer that catches its failure, and to a kind within it.
32
+ 4. Recommend a coverage split per layer and kind.
33
+
34
+ ## Rules
35
+
36
+ - Do not recommend manual verification for scenarios already covered by automated tests.
37
+ - Explain why a scenario cannot sit at a lower layer when assigning it upward.
38
+ - A kind never covers another kind of the same layer: `e2e web` does not cover `e2e api`.
39
+ - Generalize existing automated scenarios; expand only when the user asks.
40
+
41
+ ## Output
42
+
43
+ - Section `📐 Testing levels`: the layers and kinds used, when they differ from the default.
44
+ - Section `☑️ What is already tested`: number and scope of existing tests per layer and kind.
45
+ - Section `🧪 Testing plan`: scenario → layer and kind (`e2e / api`), with reasoning.
46
+ - When the environment can render charts, add a pie chart or test pyramid: test count and share per layer and kind. Skip the diagram in plain terminal output.
47
+ - For manual items: how to verify (`action → expected result`).
48
+
49
+ ## Next actions
50
+
51
+ Offer after the plan:
52
+
53
+ - Write manual test cases or a checklist → `qa-write-test-cases` skill.
54
+ - Automate manual cases into autotests → `automate-manual-test-cases` skill.
55
+ - Map tests to source files for change-aware runs → `qa-test-code-coverage` skill.