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.
- package/README.md +168 -0
- package/bin/cli.js +42 -0
- package/dist/agents/registry.d.ts +5 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +101 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/types.d.ts +9 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/dependencies.d.ts +21 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +125 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/installer.d.ts +25 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +437 -0
- package/dist/installer.js.map +1 -0
- package/dist/scaffold.d.ts +27 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +182 -0
- package/dist/scaffold.js.map +1 -0
- package/package.json +40 -0
- package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
- package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
- package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
- package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
- package/skills/qa-api-contract-curator/SKILL.md +104 -0
- package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
- package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
- package/skills/qa-browser-data-collector/SKILL.md +132 -0
- package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
- package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
- package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
- package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
- package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
- package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
- package/skills/qa-changelog-analyzer/SKILL.md +134 -0
- package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
- package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
- package/skills/qa-clickup-integration/SKILL.md +166 -0
- package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
- package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
- package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
- package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
- package/skills/qa-codeceptjs-writer/references/config.md +255 -0
- package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
- package/skills/qa-coverage-analyzer/SKILL.md +166 -0
- package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
- package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
- package/skills/qa-coverage-analyzer/references/tools.md +204 -0
- package/skills/qa-cypress-writer/SKILL.md +134 -0
- package/skills/qa-cypress-writer/references/assertions.md +121 -0
- package/skills/qa-cypress-writer/references/best-practices.md +82 -0
- package/skills/qa-cypress-writer/references/config.md +121 -0
- package/skills/qa-cypress-writer/references/patterns.md +170 -0
- package/skills/qa-data-factory/SKILL.md +126 -0
- package/skills/qa-data-factory/references/factory-patterns.md +164 -0
- package/skills/qa-data-factory/references/faker-guide.md +131 -0
- package/skills/qa-diagram-generator/SKILL.md +125 -0
- package/skills/qa-diagram-generator/references/c4-model.md +53 -0
- package/skills/qa-diagram-generator/references/charts.md +58 -0
- package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
- package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
- package/skills/qa-diagram-generator/references/flowchart.md +92 -0
- package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
- package/skills/qa-diagram-generator/references/gantt.md +49 -0
- package/skills/qa-diagram-generator/references/journey.md +50 -0
- package/skills/qa-diagram-generator/references/mindmap.md +75 -0
- package/skills/qa-diagram-generator/references/sequence.md +69 -0
- package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
- package/skills/qa-discovery-interview/SKILL.md +182 -0
- package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
- package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
- package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
- package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
- package/skills/qa-environment-checker/SKILL.md +142 -0
- package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
- package/skills/qa-environment-checker/references/health-checks.md +209 -0
- package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
- package/skills/qa-flaky-detector/SKILL.md +153 -0
- package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
- package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
- package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
- package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
- package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
- package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
- package/skills/qa-httpx-writer/SKILL.md +138 -0
- package/skills/qa-httpx-writer/references/assertions.md +195 -0
- package/skills/qa-httpx-writer/references/best-practices.md +140 -0
- package/skills/qa-httpx-writer/references/config.md +212 -0
- package/skills/qa-httpx-writer/references/patterns.md +262 -0
- package/skills/qa-jest-writer/SKILL.md +131 -0
- package/skills/qa-jest-writer/references/assertions.md +125 -0
- package/skills/qa-jest-writer/references/best-practices.md +136 -0
- package/skills/qa-jest-writer/references/config.md +134 -0
- package/skills/qa-jest-writer/references/patterns.md +172 -0
- package/skills/qa-jira-integration/SKILL.md +135 -0
- package/skills/qa-jira-integration/references/api-patterns.md +143 -0
- package/skills/qa-jira-integration/references/field-mapping.md +79 -0
- package/skills/qa-jira-integration/references/xray-integration.md +85 -0
- package/skills/qa-jmeter-writer/SKILL.md +171 -0
- package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
- package/skills/qa-jmeter-writer/references/config.md +204 -0
- package/skills/qa-jmeter-writer/references/patterns.md +242 -0
- package/skills/qa-junit5-writer/SKILL.md +157 -0
- package/skills/qa-junit5-writer/references/assertions.md +118 -0
- package/skills/qa-junit5-writer/references/config.md +97 -0
- package/skills/qa-junit5-writer/references/patterns.md +162 -0
- package/skills/qa-k6-writer/SKILL.md +155 -0
- package/skills/qa-k6-writer/references/best-practices.md +236 -0
- package/skills/qa-k6-writer/references/config.md +219 -0
- package/skills/qa-k6-writer/references/patterns.md +304 -0
- package/skills/qa-linear-integration/SKILL.md +137 -0
- package/skills/qa-linear-integration/references/api-patterns.md +249 -0
- package/skills/qa-linear-integration/references/field-mapping.md +121 -0
- package/skills/qa-locust-writer/SKILL.md +151 -0
- package/skills/qa-locust-writer/references/best-practices.md +126 -0
- package/skills/qa-locust-writer/references/config.md +170 -0
- package/skills/qa-locust-writer/references/patterns.md +235 -0
- package/skills/qa-manual-test-designer/SKILL.md +145 -0
- package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
- package/skills/qa-manual-test-designer/references/personas.md +146 -0
- package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
- package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
- package/skills/qa-mobile-test-writer/SKILL.md +144 -0
- package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
- package/skills/qa-mobile-test-writer/references/config.md +309 -0
- package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
- package/skills/qa-nfr-analyst/SKILL.md +177 -0
- package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
- package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
- package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
- package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
- package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
- package/skills/qa-orchestrator/SKILL.md +132 -0
- package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
- package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
- package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
- package/skills/qa-pact-writer/SKILL.md +133 -0
- package/skills/qa-pact-writer/references/best-practices.md +100 -0
- package/skills/qa-pact-writer/references/config.md +135 -0
- package/skills/qa-pact-writer/references/patterns.md +161 -0
- package/skills/qa-plan-creator/SKILL.md +139 -0
- package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
- package/skills/qa-plan-creator/references/migration-plan.md +44 -0
- package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
- package/skills/qa-plan-creator/references/performance-plan.md +44 -0
- package/skills/qa-plan-creator/references/regression-plan.md +45 -0
- package/skills/qa-plan-creator/references/release-plan.md +45 -0
- package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
- package/skills/qa-plan-creator/references/test-plan.md +59 -0
- package/skills/qa-plan-creator/references/uat-plan.md +43 -0
- package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
- package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
- package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
- package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
- package/skills/qa-playwright-py-writer/SKILL.md +156 -0
- package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
- package/skills/qa-playwright-py-writer/references/config.md +195 -0
- package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
- package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
- package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
- package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
- package/skills/qa-playwright-ts-writer/references/config.md +144 -0
- package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
- package/skills/qa-pytest-writer/SKILL.md +145 -0
- package/skills/qa-pytest-writer/references/assertions.md +149 -0
- package/skills/qa-pytest-writer/references/best-practices.md +97 -0
- package/skills/qa-pytest-writer/references/config.md +176 -0
- package/skills/qa-pytest-writer/references/patterns.md +251 -0
- package/skills/qa-qase-integration/SKILL.md +149 -0
- package/skills/qa-qase-integration/references/api-reference.md +354 -0
- package/skills/qa-qase-integration/references/ci-integration.md +196 -0
- package/skills/qa-qase-integration/references/field-mapping.md +157 -0
- package/skills/qa-requirements-generator/SKILL.md +152 -0
- package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
- package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
- package/skills/qa-rest-assured-writer/SKILL.md +137 -0
- package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
- package/skills/qa-rest-assured-writer/references/config.md +124 -0
- package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
- package/skills/qa-risk-analyzer/SKILL.md +158 -0
- package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
- package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
- package/skills/qa-robot-framework-writer/SKILL.md +147 -0
- package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
- package/skills/qa-robot-framework-writer/references/config.md +204 -0
- package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
- package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
- package/skills/qa-security-test-writer/SKILL.md +123 -0
- package/skills/qa-security-test-writer/references/best-practices.md +155 -0
- package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
- package/skills/qa-security-test-writer/references/zap-config.md +258 -0
- package/skills/qa-selenium-java-writer/SKILL.md +143 -0
- package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
- package/skills/qa-selenium-java-writer/references/config.md +143 -0
- package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
- package/skills/qa-selenium-py-writer/SKILL.md +150 -0
- package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
- package/skills/qa-selenium-py-writer/references/config.md +224 -0
- package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
- package/skills/qa-shortcut-integration/SKILL.md +143 -0
- package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
- package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
- package/skills/qa-spec-auditor/SKILL.md +162 -0
- package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
- package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
- package/skills/qa-spec-writer/SKILL.md +143 -0
- package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
- package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
- package/skills/qa-spring-test-writer/SKILL.md +170 -0
- package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
- package/skills/qa-spring-test-writer/references/config.md +179 -0
- package/skills/qa-spring-test-writer/references/patterns.md +235 -0
- package/skills/qa-supertest-writer/SKILL.md +150 -0
- package/skills/qa-supertest-writer/references/assertions.md +192 -0
- package/skills/qa-supertest-writer/references/best-practices.md +102 -0
- package/skills/qa-supertest-writer/references/config.md +166 -0
- package/skills/qa-supertest-writer/references/patterns.md +242 -0
- package/skills/qa-task-creator/SKILL.md +142 -0
- package/skills/qa-task-creator/references/linking-patterns.md +127 -0
- package/skills/qa-task-creator/references/task-types.md +169 -0
- package/skills/qa-task-creator/templates/task-template.md +24 -0
- package/skills/qa-test-doc-compiler/SKILL.md +114 -0
- package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
- package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
- package/skills/qa-test-healer/SKILL.md +101 -0
- package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
- package/skills/qa-test-healer/references/fix-strategies.md +177 -0
- package/skills/qa-test-reporter/SKILL.md +130 -0
- package/skills/qa-test-reporter/references/best-practices.md +162 -0
- package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
- package/skills/qa-test-reporter/references/report-formats.md +287 -0
- package/skills/qa-test-reviewer/SKILL.md +142 -0
- package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
- package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
- package/skills/qa-test-strategy/SKILL.md +133 -0
- package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
- package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
- package/skills/qa-test-strategy/references/testing-types.md +143 -0
- package/skills/qa-testcase-from-docs/SKILL.md +161 -0
- package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
- package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
- package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
- package/skills/qa-testcase-from-ui/SKILL.md +109 -0
- package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
- package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
- package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
- package/skills/qa-visual-regression-writer/SKILL.md +175 -0
- package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
- package/skills/qa-visual-regression-writer/references/config.md +220 -0
- package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
- package/skills/qa-vitest-writer/SKILL.md +141 -0
- package/skills/qa-vitest-writer/references/assertions.md +105 -0
- package/skills/qa-vitest-writer/references/best-practices.md +62 -0
- package/skills/qa-vitest-writer/references/config.md +127 -0
- package/skills/qa-vitest-writer/references/patterns.md +141 -0
- package/skills/qa-webdriverio-writer/SKILL.md +145 -0
- package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
- package/skills/qa-webdriverio-writer/references/config.md +240 -0
- package/skills/qa-webdriverio-writer/references/patterns.md +269 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Playwright MCP Patterns for Data Collection
|
|
2
|
+
|
|
3
|
+
Common patterns for using Playwright MCP to collect browser data. Adapt tool names to the specific Playwright MCP server in use (e.g., `@playwright/mcp`, cursor-ide-browser).
|
|
4
|
+
|
|
5
|
+
## Navigation
|
|
6
|
+
|
|
7
|
+
| Goal | Pattern |
|
|
8
|
+
|------|---------|
|
|
9
|
+
| Open URL | `browser_navigate` or `playwright_navigate` with target URL |
|
|
10
|
+
| New tab | Use `newTab: true` or equivalent when opening a new context |
|
|
11
|
+
| Back/forward | `browser_navigate_back`, `browser_navigate_forward` |
|
|
12
|
+
| Reload | `browser_reload` after state changes |
|
|
13
|
+
|
|
14
|
+
**Best practice:** Lock the browser before a sequence of actions; unlock when done to avoid user interference.
|
|
15
|
+
|
|
16
|
+
## Snapshots
|
|
17
|
+
|
|
18
|
+
| Goal | Pattern |
|
|
19
|
+
|------|---------|
|
|
20
|
+
| Page structure | `browser_snapshot` — returns accessibility tree (headings, landmarks, interactive elements) |
|
|
21
|
+
| Interactive only | Use `interactive: true` to filter to clickable/focusable elements |
|
|
22
|
+
| Scoped snapshot | Use `selector` to snapshot a subtree (e.g., a form or modal) |
|
|
23
|
+
| Compact output | Use `compact: true` for smaller payloads |
|
|
24
|
+
|
|
25
|
+
**Best practice:** Take a snapshot after each navigation and after modals open. Use snapshots as the primary source for form fields, links, and buttons.
|
|
26
|
+
|
|
27
|
+
## Waiting
|
|
28
|
+
|
|
29
|
+
| Goal | Pattern |
|
|
30
|
+
|------|---------|
|
|
31
|
+
| Fixed delay | `browser_wait_for` with `time` (seconds) |
|
|
32
|
+
| Text appears | `browser_wait_for` with `text` and optional `timeout` |
|
|
33
|
+
| Text disappears | `browser_wait_for` with `textGone` |
|
|
34
|
+
|
|
35
|
+
**Best practice:** Prefer short incremental waits (1–3 seconds) with snapshot checks rather than one long wait. Proceed as soon as content is ready.
|
|
36
|
+
|
|
37
|
+
## Form Inspection
|
|
38
|
+
|
|
39
|
+
| Goal | Pattern |
|
|
40
|
+
|------|---------|
|
|
41
|
+
| Read input value | `browser_get_input_value` with element ref from snapshot |
|
|
42
|
+
| Check checkbox/radio | `browser_is_checked` |
|
|
43
|
+
| List options | Use snapshot with `selector` on `<select>` to see options |
|
|
44
|
+
| Trigger validation | `browser_click` submit with empty/invalid data; capture error text from snapshot |
|
|
45
|
+
|
|
46
|
+
**Best practice:** Do not submit forms with real data. Use placeholders or leave empty to trigger validation only.
|
|
47
|
+
|
|
48
|
+
## Network Interception
|
|
49
|
+
|
|
50
|
+
| Goal | Pattern |
|
|
51
|
+
|------|---------|
|
|
52
|
+
| List requests | `browser_network_requests` — returns requests since page load |
|
|
53
|
+
| Filter by type | Inspect returned list for XHR, fetch, document |
|
|
54
|
+
| Capture timing | Note request/response timing if available |
|
|
55
|
+
|
|
56
|
+
**Best practice:** Start network capture (or ensure it's active) before navigating. Re-navigate if needed to get a clean request list.
|
|
57
|
+
|
|
58
|
+
## Screenshots
|
|
59
|
+
|
|
60
|
+
| Goal | Pattern |
|
|
61
|
+
|------|---------|
|
|
62
|
+
| Viewport | `browser_take_screenshot` |
|
|
63
|
+
| Full page | Use `fullPage: true` if supported |
|
|
64
|
+
| Element | Use `ref` or `selector` for element-specific screenshots |
|
|
65
|
+
|
|
66
|
+
**Best practice:** Take screenshots after key state changes (e.g., after login, after modal open).
|
|
67
|
+
|
|
68
|
+
## Element Interaction (Read-Only)
|
|
69
|
+
|
|
70
|
+
| Goal | Pattern |
|
|
71
|
+
|------|---------|
|
|
72
|
+
| Click (e.g., open modal) | `browser_click` with ref from snapshot |
|
|
73
|
+
| Hover | `browser_hover` to reveal tooltips or dropdowns |
|
|
74
|
+
| Scroll into view | `browser_scroll` with `scrollIntoView: true` before interacting |
|
|
75
|
+
| Read attribute | `browser_get_attribute` for href, aria-*, data-* |
|
|
76
|
+
|
|
77
|
+
**Best practice:** Use interactions only to reveal data (open modals, expand sections). Do not submit forms or change persistent data.
|
|
78
|
+
|
|
79
|
+
## Lock/Unlock Workflow
|
|
80
|
+
|
|
81
|
+
1. Navigate to the page (or use existing tab).
|
|
82
|
+
2. Call `browser_lock` before a sequence of automated actions.
|
|
83
|
+
3. Perform snapshot, network capture, form inspection, screenshots.
|
|
84
|
+
4. Call `browser_unlock` when done.
|
|
85
|
+
|
|
86
|
+
## Typical Collection Sequence
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
1. browser_navigate(url)
|
|
90
|
+
2. browser_wait_for(time: 2)
|
|
91
|
+
3. browser_snapshot()
|
|
92
|
+
4. browser_network_requests()
|
|
93
|
+
5. [For each form] Inspect snapshot for fields; optionally trigger validation
|
|
94
|
+
6. [For modals] browser_click(trigger) → wait → snapshot
|
|
95
|
+
7. browser_take_screenshot()
|
|
96
|
+
8. browser_unlock()
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Tool Name Mapping
|
|
100
|
+
|
|
101
|
+
If using a different Playwright MCP implementation, map concepts:
|
|
102
|
+
|
|
103
|
+
| Concept | cursor-ide-browser | @playwright/mcp (typical) |
|
|
104
|
+
|---------|--------------------|---------------------------|
|
|
105
|
+
| Navigate | browser_navigate | playwright_navigate / goto |
|
|
106
|
+
| Snapshot | browser_snapshot | accessibility_snapshot / getTree |
|
|
107
|
+
| Wait | browser_wait_for | wait_for_selector / wait |
|
|
108
|
+
| Network | browser_network_requests | network_requests / har |
|
|
109
|
+
| Screenshot | browser_take_screenshot | screenshot |
|
|
110
|
+
| Click | browser_click | click |
|
|
111
|
+
| Lock | browser_lock | (session-scoped) |
|
|
112
|
+
|
|
113
|
+
Refer to your MCP server's documentation for exact tool names and parameters.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-bug-ticket-creator
|
|
3
|
+
description: Generate structured bug reports from test failures with expected/actual results, reproduction steps, evidence, severity/priority, and auto-create GitHub Issues via GitHub MCP with duplicate detection.
|
|
4
|
+
output_dir: docs/bug-tickets
|
|
5
|
+
dependencies:
|
|
6
|
+
recommended:
|
|
7
|
+
- qa-task-creator
|
|
8
|
+
- qa-github-issues-enhanced
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# QA Bug Ticket Creator
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Create structured bug reports from test failures, manual findings, or defect descriptions. Transform raw failure data into ISO 29119-3 compliant incident reports and auto-create GitHub Issues via GitHub MCP with duplicate detection and smart assignment.
|
|
16
|
+
|
|
17
|
+
## Primary Target
|
|
18
|
+
|
|
19
|
+
**GitHub Issues** via GitHub MCP. Extensible to Jira, Linear, Azure DevOps via adapters (see `references/` for future patterns).
|
|
20
|
+
|
|
21
|
+
## Bug Report Template
|
|
22
|
+
|
|
23
|
+
Every bug report includes:
|
|
24
|
+
|
|
25
|
+
| Field | Description |
|
|
26
|
+
| ----- | ----------- |
|
|
27
|
+
| **Title** | Concise, actionable summary (e.g., "Login fails when password contains special chars") |
|
|
28
|
+
| **Expected Result** | What should happen per spec/requirements |
|
|
29
|
+
| **Actual Result** | What actually happens |
|
|
30
|
+
| **Steps to Reproduce** | Numbered, minimal steps |
|
|
31
|
+
| **Environment** | OS, browser, app version, test framework |
|
|
32
|
+
| **Evidence** | Screenshots, logs, stack traces, HAR files |
|
|
33
|
+
| **Severity** | Blocker / Critical / Major / Minor / Trivial |
|
|
34
|
+
| **Priority** | P1–P5 or equivalent |
|
|
35
|
+
| **Component/Module** | Affected area (e.g., auth, checkout, API) |
|
|
36
|
+
|
|
37
|
+
See `references/bug-report-format.md` for detailed format and examples.
|
|
38
|
+
|
|
39
|
+
## Auto-Assignment
|
|
40
|
+
|
|
41
|
+
When creating GitHub Issues, auto-assign based on component:
|
|
42
|
+
|
|
43
|
+
- **Labels** — Map component to labels (e.g., `auth`, `frontend`, `api`)
|
|
44
|
+
- **Milestones** — Map to sprint/release milestone when provided
|
|
45
|
+
- **Assignees** — Map component to team member when mapping is configured
|
|
46
|
+
|
|
47
|
+
## Duplicate Detection
|
|
48
|
+
|
|
49
|
+
Before creating a new issue:
|
|
50
|
+
|
|
51
|
+
1. **Search** existing open issues via GitHub MCP (search by title keywords, component, error message)
|
|
52
|
+
2. **Compare** — If similar issue exists (same failure, same component, same root cause), link to it instead of creating duplicate
|
|
53
|
+
3. **Create** — Only create new issue when no suitable duplicate found
|
|
54
|
+
|
|
55
|
+
## ISO 29119-3 Compliance
|
|
56
|
+
|
|
57
|
+
Structure aligns with ISO/IEC/IEEE 29119-3 incident report:
|
|
58
|
+
|
|
59
|
+
- Incident identifier
|
|
60
|
+
- Summary and description
|
|
61
|
+
- Expected vs actual results
|
|
62
|
+
- Steps to reproduce
|
|
63
|
+
- Severity and priority
|
|
64
|
+
- Status and lifecycle
|
|
65
|
+
- Related test cases / requirements
|
|
66
|
+
|
|
67
|
+
## Pairing with qa-task-creator
|
|
68
|
+
|
|
69
|
+
When a bug is created, optionally auto-create a linked **fix task** via qa-task-creator:
|
|
70
|
+
|
|
71
|
+
- Bug → Fix task (development)
|
|
72
|
+
- Bug → Verification task (QA re-test)
|
|
73
|
+
|
|
74
|
+
See `references/linking-patterns.md` in qa-task-creator for patterns.
|
|
75
|
+
|
|
76
|
+
## Trigger Phrases
|
|
77
|
+
|
|
78
|
+
- "Create bug report from [test failure / JUnit output / error log]"
|
|
79
|
+
- "File a GitHub issue for this failure"
|
|
80
|
+
- "Generate bug ticket from Playwright/pytest/Jest failure"
|
|
81
|
+
- "Incident report for [defect description]"
|
|
82
|
+
- "Check for duplicate before creating bug"
|
|
83
|
+
- "Bug report with severity and priority"
|
|
84
|
+
|
|
85
|
+
## Workflow
|
|
86
|
+
|
|
87
|
+
1. **Input** — Test failure (JUnit, Playwright, pytest output), manual description, or error log
|
|
88
|
+
2. **Parse** — Extract test name, failure message, stack trace, environment
|
|
89
|
+
3. **Structure** — Map to bug report template; assign severity/priority per `references/severity-guide.md`
|
|
90
|
+
4. **Duplicate check** — Search GitHub Issues for similar open issues
|
|
91
|
+
5. **Create or link** — Create new issue or comment on duplicate with additional context
|
|
92
|
+
6. **Optional** — Invoke qa-task-creator for linked fix task
|
|
93
|
+
|
|
94
|
+
## Integrations
|
|
95
|
+
|
|
96
|
+
| Integration | Use |
|
|
97
|
+
| ----------- | --- |
|
|
98
|
+
| **GitHub MCP** | Create issues, search for duplicates, add labels/milestones/assignees |
|
|
99
|
+
| **qa-task-creator** | Create linked fix/verification tasks |
|
|
100
|
+
| **qa-test-reporter** | Consume failure data from aggregated reports |
|
|
101
|
+
|
|
102
|
+
## Scope
|
|
103
|
+
|
|
104
|
+
**Can do (autonomous):**
|
|
105
|
+
- Parse test failures from JUnit XML, Playwright JSON, pytest output, or free-text description
|
|
106
|
+
- Generate structured bug reports per template
|
|
107
|
+
- Search GitHub for duplicate issues before creating
|
|
108
|
+
- Create GitHub Issues with full body, labels, milestones
|
|
109
|
+
- Assign severity/priority per `references/severity-guide.md`
|
|
110
|
+
- Invoke qa-task-creator for linked fix tasks when requested
|
|
111
|
+
|
|
112
|
+
**Cannot do (requires confirmation):**
|
|
113
|
+
- Create issues in repos without write access
|
|
114
|
+
- Override user-specified severity/priority
|
|
115
|
+
- Assign assignees without configured mapping
|
|
116
|
+
|
|
117
|
+
**Will not do (out of scope):**
|
|
118
|
+
- Modify production code or test code
|
|
119
|
+
- Close or resolve issues (user/stakeholder responsibility)
|
|
120
|
+
- Create issues in Jira/Linear/Azure DevOps (future adapter; use references)
|
|
121
|
+
|
|
122
|
+
## Quality Checklist
|
|
123
|
+
|
|
124
|
+
- [ ] Bug report includes all template fields (title, expected/actual, steps, environment, evidence)
|
|
125
|
+
- [ ] Severity and priority assigned per `references/severity-guide.md`
|
|
126
|
+
- [ ] Duplicate search performed before creating new issue
|
|
127
|
+
- [ ] GitHub Issue body formatted for readability (headers, code blocks, lists)
|
|
128
|
+
- [ ] Labels and component correctly mapped
|
|
129
|
+
- [ ] No hardcoded secrets; repo/org from user input or env
|
|
130
|
+
- [ ] ISO 29119-3 incident structure present where applicable
|
|
131
|
+
|
|
132
|
+
## Troubleshooting
|
|
133
|
+
|
|
134
|
+
| Symptom | Likely Cause | Fix |
|
|
135
|
+
| ------- | ------------ | --- |
|
|
136
|
+
| GitHub MCP create fails | Token missing, no repo access | Check `GITHUB_PERSONAL_ACCESS_TOKEN`; verify repo permissions |
|
|
137
|
+
| Duplicate not detected | Search query too narrow | Broaden keywords; search by component + error snippet |
|
|
138
|
+
| Severity wrong | Default mapping doesn't fit project | Use project-specific severity guide; ask user to confirm |
|
|
139
|
+
| Missing stack trace | Parser doesn't support format | Add parser for framework; request raw output from user |
|
|
140
|
+
| Issue body truncated | GitHub body length limit | Split evidence into comments or attach as file |
|
|
141
|
+
| Wrong labels applied | Component mapping missing | Add component→label mapping; ask user for mapping |
|
|
142
|
+
|
|
143
|
+
## Reference Files
|
|
144
|
+
|
|
145
|
+
| Topic | File |
|
|
146
|
+
| ----- | ---- |
|
|
147
|
+
| Bug report format with examples | `references/bug-report-format.md` |
|
|
148
|
+
| Severity and priority classification | `references/severity-guide.md` |
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Bug Report Format Reference
|
|
2
|
+
|
|
3
|
+
*Detailed format for structured bug reports per ISO 29119-3 incident report structure.*
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template Structure
|
|
8
|
+
|
|
9
|
+
### 1. Title
|
|
10
|
+
|
|
11
|
+
- **Format:** `[Component] Brief description of the failure`
|
|
12
|
+
- **Example:** `[Auth] Login fails when password contains special characters`
|
|
13
|
+
- **Rules:** Concise, actionable, no jargon; include component when known
|
|
14
|
+
|
|
15
|
+
### 2. Expected Result
|
|
16
|
+
|
|
17
|
+
- What **should** happen per specification, requirements, or design
|
|
18
|
+
- Reference requirement/spec ID when available
|
|
19
|
+
- **Example:** "User should be able to log in with a password containing `!@#$%^&*()` per REQ-AUTH-001"
|
|
20
|
+
|
|
21
|
+
### 3. Actual Result
|
|
22
|
+
|
|
23
|
+
- What **actually** happens
|
|
24
|
+
- Include error messages, HTTP status codes, UI state
|
|
25
|
+
- **Example:** "Login returns 500 Internal Server Error; UI shows 'Something went wrong'"
|
|
26
|
+
|
|
27
|
+
### 4. Steps to Reproduce
|
|
28
|
+
|
|
29
|
+
- Numbered, minimal steps
|
|
30
|
+
- Include test data (e.g., username, input values) when relevant
|
|
31
|
+
- **Example:**
|
|
32
|
+
1. Navigate to /login
|
|
33
|
+
2. Enter username `test@example.com`
|
|
34
|
+
3. Enter password `P@ssw0rd!`
|
|
35
|
+
4. Click "Sign In"
|
|
36
|
+
|
|
37
|
+
### 5. Environment
|
|
38
|
+
|
|
39
|
+
| Field | Example |
|
|
40
|
+
| ----- | ------- |
|
|
41
|
+
| OS | Windows 11, macOS 14, Ubuntu 22.04 |
|
|
42
|
+
| Browser/App | Chrome 120, Firefox 121, Safari 17 |
|
|
43
|
+
| App Version | 2.3.1 |
|
|
44
|
+
| Test Framework | Playwright 1.40, pytest 7.4 |
|
|
45
|
+
|
|
46
|
+
### 6. Evidence
|
|
47
|
+
|
|
48
|
+
- **Screenshots** — UI state, error dialogs
|
|
49
|
+
- **Logs** — Application logs, test runner output
|
|
50
|
+
- **Stack traces** — Full trace for exceptions
|
|
51
|
+
- **HAR / Network** — When API or network-related
|
|
52
|
+
|
|
53
|
+
Use code blocks for logs and stack traces:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
AssertionError: Expected status 200, got 500
|
|
57
|
+
at LoginPage.submit (login.spec.ts:42)
|
|
58
|
+
at test (login.spec.ts:38)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 7. Severity
|
|
62
|
+
|
|
63
|
+
See `references/severity-guide.md` for classification.
|
|
64
|
+
|
|
65
|
+
### 8. Priority
|
|
66
|
+
|
|
67
|
+
P1 (Critical) through P5 (Low) or equivalent.
|
|
68
|
+
|
|
69
|
+
### 9. Component/Module
|
|
70
|
+
|
|
71
|
+
- Affected area: `auth`, `checkout`, `api`, `frontend`, `backend`, etc.
|
|
72
|
+
- Used for labels, routing, and duplicate search
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Example: Full Bug Report (Markdown)
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
## [Auth] Login fails when password contains special characters
|
|
80
|
+
|
|
81
|
+
### Expected Result
|
|
82
|
+
User should be able to log in with a password containing special characters `!@#$%^&*()` per REQ-AUTH-001.
|
|
83
|
+
|
|
84
|
+
### Actual Result
|
|
85
|
+
Login returns HTTP 500; UI displays "Something went wrong". No error details shown to user.
|
|
86
|
+
|
|
87
|
+
### Steps to Reproduce
|
|
88
|
+
1. Navigate to https://app.example.com/login
|
|
89
|
+
2. Enter username: `test@example.com`
|
|
90
|
+
3. Enter password: `P@ssw0rd!`
|
|
91
|
+
4. Click "Sign In"
|
|
92
|
+
|
|
93
|
+
### Environment
|
|
94
|
+
- OS: Windows 11
|
|
95
|
+
- Browser: Chrome 120
|
|
96
|
+
- App Version: 2.3.1
|
|
97
|
+
- Test: Playwright 1.40
|
|
98
|
+
|
|
99
|
+
### Evidence
|
|
100
|
+
```
|
|
101
|
+
POST /api/auth/login → 500 Internal Server Error
|
|
102
|
+
Response: {"error":"Internal server error"}
|
|
103
|
+
|
|
104
|
+
Stack trace:
|
|
105
|
+
at AuthService.login (auth.service.ts:45)
|
|
106
|
+
at LoginController.handle (login.controller.ts:22)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Severity
|
|
110
|
+
**Major** — Core functionality affected; workaround exists (avoid special chars)
|
|
111
|
+
|
|
112
|
+
### Priority
|
|
113
|
+
P2
|
|
114
|
+
|
|
115
|
+
### Component
|
|
116
|
+
auth
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Mapping from Test Failure Formats
|
|
122
|
+
|
|
123
|
+
### JUnit XML
|
|
124
|
+
|
|
125
|
+
| JUnit Field | Bug Report Field |
|
|
126
|
+
| ----------- | ---------------- |
|
|
127
|
+
| `testcase.name` | Title (sanitized) |
|
|
128
|
+
| `testcase.classname` | Component (derived) |
|
|
129
|
+
| `failure.message` | Actual result |
|
|
130
|
+
| `failure` (text) | Evidence (stack trace) |
|
|
131
|
+
| `testsuite.name` | Component / Module |
|
|
132
|
+
|
|
133
|
+
### Playwright JSON
|
|
134
|
+
|
|
135
|
+
| Playwright Field | Bug Report Field |
|
|
136
|
+
| ---------------- | ---------------- |
|
|
137
|
+
| `test.title` | Title |
|
|
138
|
+
| `test.file` | Component (from path) |
|
|
139
|
+
| `result.error.message` | Actual result |
|
|
140
|
+
| `result.error.stack` | Evidence |
|
|
141
|
+
| `attachments` | Evidence (screenshots, traces) |
|
|
142
|
+
|
|
143
|
+
### pytest
|
|
144
|
+
|
|
145
|
+
| pytest Field | Bug Report Field |
|
|
146
|
+
| ------------ | ---------------- |
|
|
147
|
+
| `nodeid` | Title, Component |
|
|
148
|
+
| `longrepr` | Actual result, Evidence |
|
|
149
|
+
| `call` (traceback) | Evidence |
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Severity and Priority Classification Guide
|
|
2
|
+
|
|
3
|
+
*Reference for assigning severity and priority to bug reports.*
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Severity (Impact)
|
|
8
|
+
|
|
9
|
+
Severity reflects the **impact** of the defect on the system or user.
|
|
10
|
+
|
|
11
|
+
| Severity | Definition | Examples |
|
|
12
|
+
| -------- | ---------- | -------- |
|
|
13
|
+
| **Blocker** | System unusable; blocks testing or deployment | App crashes on launch, login completely broken, data loss |
|
|
14
|
+
| **Critical** | Major feature broken; no workaround | Checkout fails for all users, API returns 500 for core endpoint |
|
|
15
|
+
| **Major** | Significant feature impaired; workaround exists | Login fails with special chars, search returns wrong results |
|
|
16
|
+
| **Minor** | Small defect; limited impact | Typo, minor UI misalignment, non-critical validation |
|
|
17
|
+
| **Trivial** | Cosmetic or negligible | Font size off by 1px, redundant message |
|
|
18
|
+
|
|
19
|
+
### Severity Decision Tree
|
|
20
|
+
|
|
21
|
+
1. **Blocks deployment or testing?** → Blocker
|
|
22
|
+
2. **Core feature completely broken?** → Critical
|
|
23
|
+
3. **Core feature impaired with workaround?** → Major
|
|
24
|
+
4. **Non-core feature affected?** → Minor
|
|
25
|
+
5. **Cosmetic only?** → Trivial
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Priority (Urgency)
|
|
30
|
+
|
|
31
|
+
Priority reflects **when** the defect should be fixed (business/urgency).
|
|
32
|
+
|
|
33
|
+
| Priority | Definition | Typical Use |
|
|
34
|
+
| -------- | ---------- | ----------- |
|
|
35
|
+
| **P1** | Fix immediately | Production down, security vulnerability |
|
|
36
|
+
| **P2** | Fix in current sprint | Critical for release |
|
|
37
|
+
| **P3** | Fix in next sprint | Important but not blocking |
|
|
38
|
+
| **P4** | Fix when possible | Low impact |
|
|
39
|
+
| **P5** | Backlog / wishlist | Trivial, nice-to-have |
|
|
40
|
+
|
|
41
|
+
### Priority vs Severity
|
|
42
|
+
|
|
43
|
+
- **High severity** usually implies **high priority**, but not always
|
|
44
|
+
- Example: Blocker in deprecated feature → P3
|
|
45
|
+
- **Low severity** can be **high priority**
|
|
46
|
+
- Example: Legal/compliance typo → P1
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Default Mapping (Test Failures)
|
|
51
|
+
|
|
52
|
+
When deriving from test failures without explicit user input:
|
|
53
|
+
|
|
54
|
+
| Failure Type | Default Severity | Default Priority |
|
|
55
|
+
| ------------ | ---------------- | ----------------- |
|
|
56
|
+
| E2E test failure (core flow) | Major | P2 |
|
|
57
|
+
| E2E test failure (edge flow) | Minor | P3 |
|
|
58
|
+
| Unit test failure | Major | P2 |
|
|
59
|
+
| API test failure (4xx/5xx) | Critical if 5xx, Major if 4xx | P2 |
|
|
60
|
+
| Visual regression | Minor | P3 |
|
|
61
|
+
| Accessibility failure | Major (WCAG) | P2 |
|
|
62
|
+
| Performance threshold breach | Major | P2 |
|
|
63
|
+
|
|
64
|
+
Override when user provides explicit severity/priority.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Component → Label Mapping (GitHub)
|
|
69
|
+
|
|
70
|
+
Suggested label mapping by component:
|
|
71
|
+
|
|
72
|
+
| Component | Labels |
|
|
73
|
+
| --------- | ------ |
|
|
74
|
+
| auth | `bug`, `auth`, `security` |
|
|
75
|
+
| api | `bug`, `api`, `backend` |
|
|
76
|
+
| frontend | `bug`, `frontend`, `ui` |
|
|
77
|
+
| checkout | `bug`, `checkout`, `critical` |
|
|
78
|
+
| search | `bug`, `search` |
|
|
79
|
+
| mobile | `bug`, `mobile` |
|
|
80
|
+
|
|
81
|
+
Customize per project; store in skill config or user input.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Bug Report
|
|
2
|
+
|
|
3
|
+
## [BUG-{ID}] {Title}
|
|
4
|
+
|
|
5
|
+
**Severity:** {Blocker | Critical | Major | Minor | Trivial}
|
|
6
|
+
**Priority:** {P1 | P2 | P3 | P4 | P5}
|
|
7
|
+
**Component:** {component name}
|
|
8
|
+
**Environment:** {browser, OS, version, URL}
|
|
9
|
+
**Reporter:** {name}
|
|
10
|
+
**Assignee:** {name or unassigned}
|
|
11
|
+
**Date:** {YYYY-MM-DD}
|
|
12
|
+
|
|
13
|
+
## Description
|
|
14
|
+
{Brief description of the bug}
|
|
15
|
+
|
|
16
|
+
## Steps to Reproduce
|
|
17
|
+
1. {Step 1}
|
|
18
|
+
2. {Step 2}
|
|
19
|
+
3. {Step 3}
|
|
20
|
+
|
|
21
|
+
## Expected Result
|
|
22
|
+
{What should happen}
|
|
23
|
+
|
|
24
|
+
## Actual Result
|
|
25
|
+
{What actually happens}
|
|
26
|
+
|
|
27
|
+
## Evidence
|
|
28
|
+
- Screenshots: {attach or path}
|
|
29
|
+
- Logs: {relevant log output}
|
|
30
|
+
- Video: {link if available}
|
|
31
|
+
|
|
32
|
+
## Additional Context
|
|
33
|
+
- Related requirement: [REQ-{ID}]
|
|
34
|
+
- Related test case: [TC-{ID}]
|
|
35
|
+
- Regression: {Yes/No}
|
|
36
|
+
- Frequency: {Always | Sometimes | Rarely | Once}
|
|
37
|
+
|
|
38
|
+
## Labels
|
|
39
|
+
`type/bug` `priority/{level}` `component/{name}`
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-changelog-analyzer
|
|
3
|
+
description: Analyze git diff and commit history to recommend which tests to add, update, or run based on code changes.
|
|
4
|
+
output_dir: reports/changelog
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# QA Changelog Analyzer
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Analyze code changes (git diff, commit history, branch comparisons) to determine testing impact. Map changed files to modules/components, identify affected tests, and produce actionable recommendations: **tests to run** (regression scope), **tests to update** (if source changed), and **tests to add** (if new code uncovered).
|
|
12
|
+
|
|
13
|
+
## Trigger Phrases
|
|
14
|
+
|
|
15
|
+
- "What tests should I run for this PR?"
|
|
16
|
+
- "Analyze git diff for test impact"
|
|
17
|
+
- "Changelog analysis" / "Change impact report"
|
|
18
|
+
- "Which tests are affected by [branch/commit]?"
|
|
19
|
+
- "Recommend regression scope for [changes]"
|
|
20
|
+
- "Tests to add/update for recent commits"
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
1. **Read git diff** — Staged (`git diff --cached`), committed (`git diff HEAD~1..HEAD`), or between branches (`git diff base..HEAD`)
|
|
25
|
+
2. **Map changed files to modules** — Use directory structure, package/import conventions, or config (see `references/git-analysis-patterns.md`)
|
|
26
|
+
3. **Identify affected test files** — Coverage-based, path-based, or import-based mapping
|
|
27
|
+
4. **Recommend:**
|
|
28
|
+
- **Tests to run** — Regression scope (must run, should run, optional)
|
|
29
|
+
- **Tests to update** — If source changed and tests may be outdated
|
|
30
|
+
- **Tests to add** — If new code has no coverage
|
|
31
|
+
|
|
32
|
+
## Change Analysis
|
|
33
|
+
|
|
34
|
+
| Change Type | Action | Recommendation |
|
|
35
|
+
|-------------|--------|-----------------|
|
|
36
|
+
| **New files** | Need new tests | Add unit/integration tests; flag for qa-task-creator |
|
|
37
|
+
| **Modified files** | Check existing coverage | Run existing tests; update if assertions/source diverged |
|
|
38
|
+
| **Deleted files** | Remove/update related tests | Remove obsolete tests; update imports in remaining tests |
|
|
39
|
+
| **Renamed/moved files** | Update imports in tests | Fix import paths; run affected tests |
|
|
40
|
+
| **Config changes** | Validate environment | Run env-specific/smoke tests; verify config loading |
|
|
41
|
+
|
|
42
|
+
See `references/impact-mapping.md` for mapping strategies.
|
|
43
|
+
|
|
44
|
+
## Output Deliverables
|
|
45
|
+
|
|
46
|
+
1. **Change Impact Report** — Summary of changed files, modules affected, and impact level
|
|
47
|
+
2. **Recommended Regression Scope** — Must run / Should run / Optional test lists
|
|
48
|
+
3. **Task Suggestions for qa-task-creator** — Add tests, update tests, remove obsolete tests
|
|
49
|
+
|
|
50
|
+
### Change Impact Report Template
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
# Change Impact Report — [Branch/PR/Commit]
|
|
54
|
+
|
|
55
|
+
## Summary
|
|
56
|
+
| Change Type | Count | Modules Affected |
|
|
57
|
+
|-------------|-------|------------------|
|
|
58
|
+
| Added | N | [list] |
|
|
59
|
+
| Modified | N | [list] |
|
|
60
|
+
| Deleted | N | [list] |
|
|
61
|
+
|
|
62
|
+
## Regression Scope
|
|
63
|
+
|
|
64
|
+
### Must Run (High Impact)
|
|
65
|
+
- [test file paths]
|
|
66
|
+
|
|
67
|
+
### Should Run (Medium Impact)
|
|
68
|
+
- [test file paths]
|
|
69
|
+
|
|
70
|
+
### Optional (Low Impact)
|
|
71
|
+
- [test file paths]
|
|
72
|
+
|
|
73
|
+
## Task Suggestions
|
|
74
|
+
- **Add:** [new modules/files needing tests]
|
|
75
|
+
- **Update:** [tests that may need assertion/import updates]
|
|
76
|
+
- **Remove:** [obsolete tests for deleted code]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Integration with Other Skills
|
|
80
|
+
|
|
81
|
+
| Need | Skill | Usage |
|
|
82
|
+
|------|-------|-------|
|
|
83
|
+
| Create tasks from recommendations | qa-task-creator | Pass task suggestions for add/update/remove |
|
|
84
|
+
| Coverage data for mapping | qa-coverage-analyzer | Which tests cover changed files |
|
|
85
|
+
| Risk prioritization | qa-risk-analyzer | Combine with risk scores for regression order |
|
|
86
|
+
| Git diff patterns | — | `references/git-analysis-patterns.md` |
|
|
87
|
+
| Impact mapping | — | `references/impact-mapping.md` |
|
|
88
|
+
|
|
89
|
+
## Scope
|
|
90
|
+
|
|
91
|
+
**Can do (autonomous):**
|
|
92
|
+
- Parse git diff (staged, committed, between branches)
|
|
93
|
+
- Map changed files to modules/components
|
|
94
|
+
- Identify affected test files (path, import, or coverage-based)
|
|
95
|
+
- Produce change impact report and regression scope
|
|
96
|
+
- Generate task suggestions for qa-task-creator
|
|
97
|
+
|
|
98
|
+
**Cannot do (requires confirmation):**
|
|
99
|
+
- Run tests or generate coverage (consume existing data)
|
|
100
|
+
- Modify source or test code
|
|
101
|
+
- Exclude files from analysis without justification
|
|
102
|
+
|
|
103
|
+
**Will not do (out of scope):**
|
|
104
|
+
- Execute tests or deployments
|
|
105
|
+
- Modify git history or branches
|
|
106
|
+
- Override project-specific mapping without config
|
|
107
|
+
|
|
108
|
+
## Quality Checklist
|
|
109
|
+
|
|
110
|
+
- [ ] Git diff correctly parsed (staged/committed/branch)
|
|
111
|
+
- [ ] Changed files mapped to modules
|
|
112
|
+
- [ ] Affected tests identified (path, import, or coverage)
|
|
113
|
+
- [ ] Regression scope categorized (must/should/optional)
|
|
114
|
+
- [ ] Task suggestions actionable for qa-task-creator
|
|
115
|
+
- [ ] No hardcoded paths; respect project structure
|
|
116
|
+
- [ ] Config changes flagged for env validation
|
|
117
|
+
|
|
118
|
+
## Troubleshooting
|
|
119
|
+
|
|
120
|
+
| Symptom | Likely Cause | Fix |
|
|
121
|
+
|---------|--------------|-----|
|
|
122
|
+
| No changed files | Wrong diff range or branch | Verify `git diff` range; check branch names |
|
|
123
|
+
| Module mapping empty | Unclear structure | Use directory convention; add `impact-mapping` config |
|
|
124
|
+
| Too many tests in scope | Broad imports or coverage | Narrow to direct tests first; use risk prioritization |
|
|
125
|
+
| Missing coverage data | qa-coverage-analyzer not run | Use path/import mapping as fallback |
|
|
126
|
+
| Renamed files not detected | Git rename detection off | Use `git diff -M` or `--find-renames` |
|
|
127
|
+
| Config changes missed | Only tracking source files | Include config paths in analysis (e.g. `.env`, `config/`) |
|
|
128
|
+
|
|
129
|
+
## Reference Files
|
|
130
|
+
|
|
131
|
+
| Topic | Reference |
|
|
132
|
+
|-------|-----------|
|
|
133
|
+
| Git diff parsing, file-to-module mapping | `references/git-analysis-patterns.md` |
|
|
134
|
+
| Mapping code changes to test recommendations | `references/impact-mapping.md` |
|