qaa-agent 1.6.2 → 1.6.3

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 (73) hide show
  1. package/.claude/commands/create-test.md +164 -164
  2. package/.claude/commands/qa-audit.md +37 -37
  3. package/.claude/commands/qa-blueprint.md +54 -54
  4. package/.claude/commands/qa-fix.md +36 -36
  5. package/.claude/commands/qa-from-ticket.md +24 -24
  6. package/.claude/commands/qa-gap.md +20 -20
  7. package/.claude/commands/qa-map.md +47 -47
  8. package/.claude/commands/qa-pom.md +36 -36
  9. package/.claude/commands/qa-pr.md +23 -23
  10. package/.claude/commands/qa-pyramid.md +37 -37
  11. package/.claude/commands/qa-report.md +38 -38
  12. package/.claude/commands/qa-research.md +33 -33
  13. package/.claude/commands/qa-start.md +22 -22
  14. package/.claude/commands/qa-testid.md +19 -19
  15. package/.claude/commands/qa-validate.md +42 -42
  16. package/.claude/commands/update-test.md +58 -58
  17. package/.claude/settings.json +20 -20
  18. package/.claude/skills/qa-bug-detective/SKILL.md +122 -122
  19. package/.claude/skills/qa-learner/SKILL.md +150 -150
  20. package/.claude/skills/qa-repo-analyzer/SKILL.md +88 -88
  21. package/.claude/skills/qa-self-validator/SKILL.md +109 -109
  22. package/.claude/skills/qa-template-engine/SKILL.md +113 -113
  23. package/.claude/skills/qa-testid-injector/SKILL.md +93 -93
  24. package/.claude/skills/qa-workflow-documenter/SKILL.md +87 -87
  25. package/.mcp.json +8 -8
  26. package/CHANGELOG.md +71 -71
  27. package/CLAUDE.md +553 -553
  28. package/agents/qa-pipeline-orchestrator.md +1378 -1378
  29. package/agents/qaa-analyzer.md +524 -524
  30. package/agents/qaa-bug-detective.md +446 -446
  31. package/agents/qaa-codebase-mapper.md +935 -935
  32. package/agents/qaa-e2e-runner.md +415 -415
  33. package/agents/qaa-executor.md +651 -651
  34. package/agents/qaa-planner.md +390 -390
  35. package/agents/qaa-project-researcher.md +319 -319
  36. package/agents/qaa-scanner.md +424 -424
  37. package/agents/qaa-testid-injector.md +585 -585
  38. package/agents/qaa-validator.md +452 -452
  39. package/bin/install.cjs +198 -198
  40. package/bin/lib/commands.cjs +709 -709
  41. package/bin/lib/config.cjs +307 -307
  42. package/bin/lib/core.cjs +497 -497
  43. package/bin/lib/frontmatter.cjs +299 -299
  44. package/bin/lib/init.cjs +989 -989
  45. package/bin/lib/milestone.cjs +241 -241
  46. package/bin/lib/model-profiles.cjs +60 -60
  47. package/bin/lib/phase.cjs +911 -911
  48. package/bin/lib/roadmap.cjs +306 -306
  49. package/bin/lib/state.cjs +748 -748
  50. package/bin/lib/template.cjs +222 -222
  51. package/bin/lib/verify.cjs +842 -842
  52. package/bin/qaa-tools.cjs +607 -607
  53. package/docs/COMMANDS.md +341 -341
  54. package/docs/DEMO.md +182 -182
  55. package/docs/TESTING.md +156 -156
  56. package/package.json +41 -41
  57. package/templates/failure-classification.md +391 -391
  58. package/templates/gap-analysis.md +409 -409
  59. package/templates/pr-template.md +48 -48
  60. package/templates/qa-analysis.md +381 -381
  61. package/templates/qa-audit-report.md +465 -465
  62. package/templates/qa-repo-blueprint.md +636 -636
  63. package/templates/scan-manifest.md +312 -312
  64. package/templates/test-inventory.md +582 -582
  65. package/templates/testid-audit-report.md +354 -354
  66. package/templates/validation-report.md +243 -243
  67. package/workflows/qa-analyze.md +296 -296
  68. package/workflows/qa-from-ticket.md +536 -536
  69. package/workflows/qa-gap.md +303 -303
  70. package/workflows/qa-pr.md +389 -389
  71. package/workflows/qa-start.md +1168 -1168
  72. package/workflows/qa-testid.md +356 -356
  73. package/workflows/qa-validate.md +295 -295
package/docs/TESTING.md CHANGED
@@ -1,156 +1,156 @@
1
- # Testing Guide
2
-
3
- How to validate the QA Automation Agent against real repositories.
4
-
5
- ## Test Repos
6
-
7
- Each workflow option requires a different type of repository to test against.
8
-
9
- ### Option 1 — Dev Only (No QA Repo)
10
-
11
- Test the full generation pipeline: scan → codebase-map → analyze → generate → validate → [e2e-run] → deliver.
12
-
13
- | Repo | Stack | Why it's good |
14
- |------|-------|---------------|
15
- | [devdbrandy/restful-ecommerce](https://github.com/devdbrandy/restful-ecommerce) | Node.js, Express | Minimalist e-commerce API. Products, orders, auth. Almost no tests — agent generates everything from scratch. |
16
- | [themodernmonk7/E-commerce-API](https://github.com/themodernmonk7/E-commerce-API) | Express, MongoDB | Full CRUD: auth, products, orders, reviews. No QA repo. Good variety of endpoints. |
17
- | [dinushchathurya/nodejs-ecommerce-api](https://github.com/dinushchathurya/nodejs-ecommerce-api) | Express, MongoDB | Full e-commerce: users, categories, products, orders, images. No tests. |
18
-
19
- **How to test:**
20
- ```bash
21
- git clone https://github.com/devdbrandy/restful-ecommerce.git /tmp/test-option1
22
- cd /tmp/test-option1
23
- # Open Claude Code in this directory, then:
24
- /qa-start --dev-repo .
25
- ```
26
-
27
- **Expected output:**
28
- - SCAN_MANIFEST.md with Node.js/Express detection
29
- - QA_ANALYSIS.md with architecture overview and risk assessment
30
- - TEST_INVENTORY.md with 30+ test cases (pyramid-driven)
31
- - QA_REPO_BLUEPRINT.md (since no QA repo exists)
32
- - Generated test files (unit, API, E2E)
33
- - VALIDATION_REPORT.md
34
- - Draft PR with all artifacts
35
-
36
- ### Option 2 — Dev + Immature QA Repo
37
-
38
- Test the gap analysis and augmentation pipeline.
39
-
40
- | DEV Repo | Stack | QA Repo |
41
- |----------|-------|---------|
42
- | [oozdal/to-do-list-api](https://github.com/oozdal/to-do-list-api) | FastAPI, SQLAlchemy | Create a crude QA repo manually (see below) |
43
- | [KenMwaura1/Fast-Api-example](https://github.com/KenMwaura1/Fast-Api-example) | FastAPI, PostgreSQL, SQLAlchemy | Create a crude QA repo manually (see below) |
44
-
45
- **Creating a crude QA repo for testing:**
46
-
47
- No open-source repos have intentionally bad tests. Create one manually:
48
-
49
- ```bash
50
- mkdir /tmp/test-option2-qa
51
- cd /tmp/test-option2-qa
52
-
53
- # Create a broken test file with hardcoded tokens
54
- cat > tests/test_api.py << 'EOF'
55
- import requests
56
-
57
- # TODO: ask Juan for new token
58
- TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.expired"
59
- BASE_URL = "http://localhost:8000"
60
-
61
- def test_get_todos():
62
- r = requests.get(f"{BASE_URL}/todos", headers={"Authorization": f"Bearer {TOKEN}"})
63
- assert r.status_code # No specific assertion!
64
-
65
- def test_create_todo():
66
- r = requests.post(f"{BASE_URL}/todos", json={"title": "test"})
67
- # No assertion at all
68
- EOF
69
-
70
- # Create a broken Selenium test
71
- cat > old_tests/test_ui.py << 'EOF'
72
- from selenium import webdriver
73
- # This import doesn't work anymore
74
- from selenium.webdriver.common.keys import Keys
75
-
76
- def test_login():
77
- driver = webdriver.Chrome() # Will fail - no ChromeDriver
78
- driver.get("http://localhost:3000/login")
79
- driver.find_element_by_class_name("login-btn").click() # Deprecated API
80
- EOF
81
-
82
- # Create empty postman collection
83
- echo '{"info": {"name": "Todo API"}, "item": []}' > postman/collection.json
84
-
85
- # Bad README
86
- echo "# QA Tests\nSome tests might need updating. Ask the team." > README.md
87
-
88
- git init && git add -A && git commit -m "initial qa setup"
89
- ```
90
-
91
- **How to test:**
92
- ```bash
93
- cd /tmp/test-option2-dev # The FastAPI dev repo
94
- /qa-start --dev-repo . --qa-repo /tmp/test-option2-qa
95
- ```
96
-
97
- **Expected output:**
98
- - Maturity score < 30 → Option 2 detected
99
- - GAP_ANALYSIS.md showing broken tests, missing coverage
100
- - Fixed test files (imports, assertions, configs)
101
- - New test cases added for uncovered features
102
- - VALIDATION_REPORT.md
103
-
104
- ### Option 3 — Dev + Mature QA Repo
105
-
106
- Test the surgical additions pipeline.
107
-
108
- | QA Repo | Stack | Why it's good |
109
- |---------|-------|---------------|
110
- | [OmonUrkinbaev/playwright-qa-automation](https://github.com/OmonUrkinbaev/playwright-qa-automation) | Playwright, TypeScript, POM | Production-style: UI + API tests, POM, data-driven, flaky handling, CI pipelines. |
111
- | [idavidov13/Playwright-Framework](https://github.com/idavidov13/Playwright-Framework) | Playwright, TypeScript, POM | Custom fixtures, API mocking, Zod validation, GitHub Actions + GitLab CI. |
112
- | [nareshnavinash/playwright-TS-pom](https://github.com/nareshnavinash/playwright-TS-pom) | Playwright, TypeScript, POM | GitLab CI, DataDog integration, ESLint, junit + HTML reporting. |
113
-
114
- **How to test:**
115
- ```bash
116
- # Clone the app being tested (the QA repo tests against a demo app)
117
- git clone https://github.com/OmonUrkinbaev/playwright-qa-automation.git /tmp/test-option3-qa
118
-
119
- # You need the DEV repo that the QA repo tests against
120
- # Check the QA repo's README for the target application URL/repo
121
-
122
- /qa-start --dev-repo /tmp/test-option3-dev --qa-repo /tmp/test-option3-qa
123
- ```
124
-
125
- **Expected output:**
126
- - Maturity score > 70 → Option 3 detected
127
- - GAP_ANALYSIS.md showing thin coverage areas only
128
- - Only missing tests added — existing tests untouched
129
- - Existing POM conventions respected
130
- - VALIDATION_REPORT.md
131
-
132
- ## Validation Checklist
133
-
134
- After each test run, verify:
135
-
136
- - [ ] Correct workflow option detected (1, 2, or 3)
137
- - [ ] SCAN_MANIFEST.md has correct framework detection
138
- - [ ] QA_ANALYSIS.md has real architecture info (not generic)
139
- - [ ] TEST_INVENTORY.md has concrete inputs and expected outcomes
140
- - [ ] Generated test files follow CLAUDE.md standards
141
- - [ ] All locators use Tier 1 (data-testid) or Tier 2 (ARIA roles)
142
- - [ ] No assertions use toBeTruthy/toBeDefined
143
- - [ ] POM has no assertions (if E2E tests generated)
144
- - [ ] VALIDATION_REPORT.md shows 4-layer check results
145
- - [ ] Draft PR created with full summary and reviewer checklist
146
- - [ ] No hardcoded credentials in any generated file
147
-
148
- ## Troubleshooting Test Runs
149
-
150
- | Issue | Fix |
151
- |-------|-----|
152
- | `gh: command not found` | Install GitHub CLI: `brew install gh` or `winget install GitHub.cli` |
153
- | `gh auth` error | Run `gh auth login` first |
154
- | Agent detects wrong framework | Check SCAN_MANIFEST.md — may need to adjust scanner detection patterns |
155
- | Maturity score seems wrong | Review the 5 scoring dimensions in init.cjs cmdInitQaStart |
156
- | Tests fail to validate | Check if the test framework is installed in the target repo |
1
+ # Testing Guide
2
+
3
+ How to validate the QA Automation Agent against real repositories.
4
+
5
+ ## Test Repos
6
+
7
+ Each workflow option requires a different type of repository to test against.
8
+
9
+ ### Option 1 — Dev Only (No QA Repo)
10
+
11
+ Test the full generation pipeline: scan → codebase-map → analyze → generate → validate → [e2e-run] → deliver.
12
+
13
+ | Repo | Stack | Why it's good |
14
+ |------|-------|---------------|
15
+ | [devdbrandy/restful-ecommerce](https://github.com/devdbrandy/restful-ecommerce) | Node.js, Express | Minimalist e-commerce API. Products, orders, auth. Almost no tests — agent generates everything from scratch. |
16
+ | [themodernmonk7/E-commerce-API](https://github.com/themodernmonk7/E-commerce-API) | Express, MongoDB | Full CRUD: auth, products, orders, reviews. No QA repo. Good variety of endpoints. |
17
+ | [dinushchathurya/nodejs-ecommerce-api](https://github.com/dinushchathurya/nodejs-ecommerce-api) | Express, MongoDB | Full e-commerce: users, categories, products, orders, images. No tests. |
18
+
19
+ **How to test:**
20
+ ```bash
21
+ git clone https://github.com/devdbrandy/restful-ecommerce.git /tmp/test-option1
22
+ cd /tmp/test-option1
23
+ # Open Claude Code in this directory, then:
24
+ /qa-start --dev-repo .
25
+ ```
26
+
27
+ **Expected output:**
28
+ - SCAN_MANIFEST.md with Node.js/Express detection
29
+ - QA_ANALYSIS.md with architecture overview and risk assessment
30
+ - TEST_INVENTORY.md with 30+ test cases (pyramid-driven)
31
+ - QA_REPO_BLUEPRINT.md (since no QA repo exists)
32
+ - Generated test files (unit, API, E2E)
33
+ - VALIDATION_REPORT.md
34
+ - Draft PR with all artifacts
35
+
36
+ ### Option 2 — Dev + Immature QA Repo
37
+
38
+ Test the gap analysis and augmentation pipeline.
39
+
40
+ | DEV Repo | Stack | QA Repo |
41
+ |----------|-------|---------|
42
+ | [oozdal/to-do-list-api](https://github.com/oozdal/to-do-list-api) | FastAPI, SQLAlchemy | Create a crude QA repo manually (see below) |
43
+ | [KenMwaura1/Fast-Api-example](https://github.com/KenMwaura1/Fast-Api-example) | FastAPI, PostgreSQL, SQLAlchemy | Create a crude QA repo manually (see below) |
44
+
45
+ **Creating a crude QA repo for testing:**
46
+
47
+ No open-source repos have intentionally bad tests. Create one manually:
48
+
49
+ ```bash
50
+ mkdir /tmp/test-option2-qa
51
+ cd /tmp/test-option2-qa
52
+
53
+ # Create a broken test file with hardcoded tokens
54
+ cat > tests/test_api.py << 'EOF'
55
+ import requests
56
+
57
+ # TODO: ask Juan for new token
58
+ TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.expired"
59
+ BASE_URL = "http://localhost:8000"
60
+
61
+ def test_get_todos():
62
+ r = requests.get(f"{BASE_URL}/todos", headers={"Authorization": f"Bearer {TOKEN}"})
63
+ assert r.status_code # No specific assertion!
64
+
65
+ def test_create_todo():
66
+ r = requests.post(f"{BASE_URL}/todos", json={"title": "test"})
67
+ # No assertion at all
68
+ EOF
69
+
70
+ # Create a broken Selenium test
71
+ cat > old_tests/test_ui.py << 'EOF'
72
+ from selenium import webdriver
73
+ # This import doesn't work anymore
74
+ from selenium.webdriver.common.keys import Keys
75
+
76
+ def test_login():
77
+ driver = webdriver.Chrome() # Will fail - no ChromeDriver
78
+ driver.get("http://localhost:3000/login")
79
+ driver.find_element_by_class_name("login-btn").click() # Deprecated API
80
+ EOF
81
+
82
+ # Create empty postman collection
83
+ echo '{"info": {"name": "Todo API"}, "item": []}' > postman/collection.json
84
+
85
+ # Bad README
86
+ echo "# QA Tests\nSome tests might need updating. Ask the team." > README.md
87
+
88
+ git init && git add -A && git commit -m "initial qa setup"
89
+ ```
90
+
91
+ **How to test:**
92
+ ```bash
93
+ cd /tmp/test-option2-dev # The FastAPI dev repo
94
+ /qa-start --dev-repo . --qa-repo /tmp/test-option2-qa
95
+ ```
96
+
97
+ **Expected output:**
98
+ - Maturity score < 30 → Option 2 detected
99
+ - GAP_ANALYSIS.md showing broken tests, missing coverage
100
+ - Fixed test files (imports, assertions, configs)
101
+ - New test cases added for uncovered features
102
+ - VALIDATION_REPORT.md
103
+
104
+ ### Option 3 — Dev + Mature QA Repo
105
+
106
+ Test the surgical additions pipeline.
107
+
108
+ | QA Repo | Stack | Why it's good |
109
+ |---------|-------|---------------|
110
+ | [OmonUrkinbaev/playwright-qa-automation](https://github.com/OmonUrkinbaev/playwright-qa-automation) | Playwright, TypeScript, POM | Production-style: UI + API tests, POM, data-driven, flaky handling, CI pipelines. |
111
+ | [idavidov13/Playwright-Framework](https://github.com/idavidov13/Playwright-Framework) | Playwright, TypeScript, POM | Custom fixtures, API mocking, Zod validation, GitHub Actions + GitLab CI. |
112
+ | [nareshnavinash/playwright-TS-pom](https://github.com/nareshnavinash/playwright-TS-pom) | Playwright, TypeScript, POM | GitLab CI, DataDog integration, ESLint, junit + HTML reporting. |
113
+
114
+ **How to test:**
115
+ ```bash
116
+ # Clone the app being tested (the QA repo tests against a demo app)
117
+ git clone https://github.com/OmonUrkinbaev/playwright-qa-automation.git /tmp/test-option3-qa
118
+
119
+ # You need the DEV repo that the QA repo tests against
120
+ # Check the QA repo's README for the target application URL/repo
121
+
122
+ /qa-start --dev-repo /tmp/test-option3-dev --qa-repo /tmp/test-option3-qa
123
+ ```
124
+
125
+ **Expected output:**
126
+ - Maturity score > 70 → Option 3 detected
127
+ - GAP_ANALYSIS.md showing thin coverage areas only
128
+ - Only missing tests added — existing tests untouched
129
+ - Existing POM conventions respected
130
+ - VALIDATION_REPORT.md
131
+
132
+ ## Validation Checklist
133
+
134
+ After each test run, verify:
135
+
136
+ - [ ] Correct workflow option detected (1, 2, or 3)
137
+ - [ ] SCAN_MANIFEST.md has correct framework detection
138
+ - [ ] QA_ANALYSIS.md has real architecture info (not generic)
139
+ - [ ] TEST_INVENTORY.md has concrete inputs and expected outcomes
140
+ - [ ] Generated test files follow CLAUDE.md standards
141
+ - [ ] All locators use Tier 1 (data-testid) or Tier 2 (ARIA roles)
142
+ - [ ] No assertions use toBeTruthy/toBeDefined
143
+ - [ ] POM has no assertions (if E2E tests generated)
144
+ - [ ] VALIDATION_REPORT.md shows 4-layer check results
145
+ - [ ] Draft PR created with full summary and reviewer checklist
146
+ - [ ] No hardcoded credentials in any generated file
147
+
148
+ ## Troubleshooting Test Runs
149
+
150
+ | Issue | Fix |
151
+ |-------|-----|
152
+ | `gh: command not found` | Install GitHub CLI: `brew install gh` or `winget install GitHub.cli` |
153
+ | `gh auth` error | Run `gh auth login` first |
154
+ | Agent detects wrong framework | Check SCAN_MANIFEST.md — may need to adjust scanner detection patterns |
155
+ | Maturity score seems wrong | Review the 5 scoring dimensions in init.cjs cmdInitQaStart |
156
+ | Tests fail to validate | Check if the test framework is installed in the target repo |
package/package.json CHANGED
@@ -1,41 +1,41 @@
1
- {
2
- "name": "qaa-agent",
3
- "version": "1.6.2",
4
- "description": "QA Automation Agent for Claude Code — multi-agent pipeline that analyzes repos, generates tests, validates, and creates PRs",
5
- "bin": {
6
- "qaa-agent": "./bin/install.cjs"
7
- },
8
- "keywords": [
9
- "qa",
10
- "automation",
11
- "testing",
12
- "claude-code",
13
- "playwright",
14
- "jest",
15
- "pytest",
16
- "ai-agent"
17
- ],
18
- "repository": {
19
- "type": "git",
20
- "url": "https://github.com/Backhaus7997/qaa-agent.git"
21
- },
22
- "author": "Backhaus7997",
23
- "license": "MIT",
24
- "dependencies": {
25
- "@playwright/mcp": "latest"
26
- },
27
- "files": [
28
- "bin/",
29
- "agents/",
30
- "workflows/",
31
- "templates/",
32
- "docs/",
33
- ".claude/commands/",
34
- ".claude/skills/",
35
- ".claude/settings.json",
36
- ".mcp.json",
37
- "CLAUDE.md",
38
- "CHANGELOG.md",
39
- "README.md"
40
- ]
41
- }
1
+ {
2
+ "name": "qaa-agent",
3
+ "version": "1.6.3",
4
+ "description": "QA Automation Agent for Claude Code — multi-agent pipeline that analyzes repos, generates tests, validates, and creates PRs",
5
+ "bin": {
6
+ "qaa-agent": "./bin/install.cjs"
7
+ },
8
+ "keywords": [
9
+ "qa",
10
+ "automation",
11
+ "testing",
12
+ "claude-code",
13
+ "playwright",
14
+ "jest",
15
+ "pytest",
16
+ "ai-agent"
17
+ ],
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/Backhaus7997/qaa-agent.git"
21
+ },
22
+ "author": "Backhaus7997",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "@playwright/mcp": "latest"
26
+ },
27
+ "files": [
28
+ "bin/",
29
+ "agents/",
30
+ "workflows/",
31
+ "templates/",
32
+ "docs/",
33
+ ".claude/commands/",
34
+ ".claude/skills/",
35
+ ".claude/settings.json",
36
+ ".mcp.json",
37
+ "CLAUDE.md",
38
+ "CHANGELOG.md",
39
+ "README.md"
40
+ ]
41
+ }