qaa-agent 1.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/.claude/commands/create-test.md +40 -0
- package/.claude/commands/qa-analyze.md +60 -0
- package/.claude/commands/qa-audit.md +37 -0
- package/.claude/commands/qa-blueprint.md +54 -0
- package/.claude/commands/qa-fix.md +36 -0
- package/.claude/commands/qa-from-ticket.md +88 -0
- package/.claude/commands/qa-gap.md +54 -0
- package/.claude/commands/qa-pom.md +36 -0
- package/.claude/commands/qa-pyramid.md +37 -0
- package/.claude/commands/qa-report.md +38 -0
- package/.claude/commands/qa-start.md +33 -0
- package/.claude/commands/qa-testid.md +54 -0
- package/.claude/commands/qa-validate.md +54 -0
- package/.claude/commands/update-test.md +58 -0
- package/.claude/settings.json +19 -0
- package/.claude/skills/qa-bug-detective/SKILL.md +122 -0
- package/.claude/skills/qa-repo-analyzer/SKILL.md +88 -0
- package/.claude/skills/qa-self-validator/SKILL.md +109 -0
- package/.claude/skills/qa-template-engine/SKILL.md +113 -0
- package/.claude/skills/qa-testid-injector/SKILL.md +93 -0
- package/.claude/skills/qa-workflow-documenter/SKILL.md +87 -0
- package/CLAUDE.md +543 -0
- package/README.md +418 -0
- package/agents/qa-pipeline-orchestrator.md +1217 -0
- package/agents/qaa-analyzer.md +508 -0
- package/agents/qaa-bug-detective.md +444 -0
- package/agents/qaa-executor.md +618 -0
- package/agents/qaa-planner.md +374 -0
- package/agents/qaa-scanner.md +422 -0
- package/agents/qaa-testid-injector.md +583 -0
- package/agents/qaa-validator.md +450 -0
- package/bin/install.cjs +176 -0
- package/bin/lib/commands.cjs +709 -0
- package/bin/lib/config.cjs +307 -0
- package/bin/lib/core.cjs +497 -0
- package/bin/lib/frontmatter.cjs +299 -0
- package/bin/lib/init.cjs +989 -0
- package/bin/lib/milestone.cjs +241 -0
- package/bin/lib/model-profiles.cjs +60 -0
- package/bin/lib/phase.cjs +911 -0
- package/bin/lib/roadmap.cjs +306 -0
- package/bin/lib/state.cjs +748 -0
- package/bin/lib/template.cjs +222 -0
- package/bin/lib/verify.cjs +842 -0
- package/bin/qaa-tools.cjs +607 -0
- package/package.json +34 -0
- package/templates/failure-classification.md +391 -0
- package/templates/gap-analysis.md +409 -0
- package/templates/pr-template.md +48 -0
- package/templates/qa-analysis.md +381 -0
- package/templates/qa-audit-report.md +465 -0
- package/templates/qa-repo-blueprint.md +636 -0
- package/templates/scan-manifest.md +312 -0
- package/templates/test-inventory.md +582 -0
- package/templates/testid-audit-report.md +354 -0
- package/templates/validation-report.md +243 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
---
|
|
2
|
+
template_name: scan-manifest
|
|
3
|
+
version: "1.0"
|
|
4
|
+
artifact_type: scan
|
|
5
|
+
produces: SCAN_MANIFEST.md
|
|
6
|
+
producer_agent: qa-scanner
|
|
7
|
+
consumer_agents:
|
|
8
|
+
- qa-analyzer
|
|
9
|
+
- qa-testid-injector
|
|
10
|
+
required_sections:
|
|
11
|
+
- project-detection
|
|
12
|
+
- file-list
|
|
13
|
+
- summary-statistics
|
|
14
|
+
- testable-surfaces
|
|
15
|
+
- decision-gate
|
|
16
|
+
example_domain: shopflow
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# SCAN_MANIFEST.md Template
|
|
20
|
+
|
|
21
|
+
**Purpose:** Comprehensive inventory of all source files relevant to testing, with framework detection, interaction density classification, and testable surface categorization. This is the first artifact produced in the QA pipeline and feeds all downstream agents.
|
|
22
|
+
|
|
23
|
+
**Producer:** `qa-scanner` agent
|
|
24
|
+
**Consumers:** `qa-analyzer` (reads file list and surfaces to prioritize analysis), `qa-testid-injector` (reads component files to audit for missing `data-testid` attributes)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Required Sections
|
|
29
|
+
|
|
30
|
+
### Section 1: Project Detection
|
|
31
|
+
|
|
32
|
+
**Description:** Framework, language, runtime, and tooling detected from package files, config files, and file extension analysis. This section tells downstream agents what technology stack they are dealing with.
|
|
33
|
+
|
|
34
|
+
**Fields:**
|
|
35
|
+
|
|
36
|
+
| Field | Type | Required | Description |
|
|
37
|
+
|-------|------|----------|-------------|
|
|
38
|
+
| framework | string | YES | Primary framework detected (e.g., React, Vue, Angular, Express, NestJS, Django) |
|
|
39
|
+
| language | string | YES | Primary language (e.g., TypeScript, JavaScript, Python, C#) |
|
|
40
|
+
| runtime | string | YES | Runtime environment (e.g., Node.js 20, Python 3.11, .NET 8) |
|
|
41
|
+
| component_pattern | string | YES | File extension pattern for components (e.g., `*.tsx`, `*.vue`, `*.component.ts`) |
|
|
42
|
+
| package_manager | string | YES | Package manager detected (e.g., npm, yarn, pnpm, pip, dotnet) |
|
|
43
|
+
| build_tool | string | NO | Build tool if detected (e.g., Vite, Webpack, esbuild, Turbopack) |
|
|
44
|
+
| test_framework_existing | string | NO | Existing test framework if detected (e.g., Jest, Vitest, Playwright, Cypress) |
|
|
45
|
+
| database | string | NO | Database technology if detected from ORM config or connection strings |
|
|
46
|
+
| css_approach | string | NO | CSS strategy if detected (e.g., Tailwind, CSS Modules, styled-components) |
|
|
47
|
+
|
|
48
|
+
**Detection sources:** `package.json`, `requirements.txt`, `*.csproj`, config files (`tsconfig.json`, `vite.config.ts`, `next.config.js`), file extension frequency analysis.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### Section 2: File List
|
|
53
|
+
|
|
54
|
+
**Description:** All source files relevant to testing, ordered by interaction density priority. Each file is classified by type and assigned a priority based on how much user-facing or business-critical behavior it contains.
|
|
55
|
+
|
|
56
|
+
**Fields:**
|
|
57
|
+
|
|
58
|
+
| Field | Type | Required | Description |
|
|
59
|
+
|-------|------|----------|-------------|
|
|
60
|
+
| file_path | string | YES | Relative path from project root (e.g., `src/services/orderService.ts`) |
|
|
61
|
+
| component_name | string | YES | Human-readable name extracted from filename or default export |
|
|
62
|
+
| type | enum | YES | One of: `page`, `component`, `service`, `utility`, `model`, `middleware`, `route`, `controller`, `config` |
|
|
63
|
+
| interaction_density | enum | YES | `HIGH` (forms, checkout, auth), `MEDIUM` (display, navigation), `LOW` (footer, static, utility) |
|
|
64
|
+
| priority_order | number | YES | Integer rank (1 = highest priority). Ordered by: interaction density, then business criticality |
|
|
65
|
+
| line_count | number | NO | Approximate line count for complexity estimation |
|
|
66
|
+
| exports_count | number | NO | Number of exported functions/classes for test target estimation |
|
|
67
|
+
|
|
68
|
+
**Inclusion rules:**
|
|
69
|
+
- Include: All source files that could have tests written against them
|
|
70
|
+
- Exclude: `node_modules/`, `dist/`, `build/`, `.next/`, `coverage/`, test files (`*.test.*`, `*.spec.*`, `*.stories.*`), config-only files, lockfiles, static assets
|
|
71
|
+
|
|
72
|
+
**Priority ordering rules:**
|
|
73
|
+
- Forms and interactive components with user input: HIGH
|
|
74
|
+
- Pages and views with conditional rendering: MEDIUM to HIGH
|
|
75
|
+
- Services with business logic: HIGH
|
|
76
|
+
- API route handlers and controllers: MEDIUM to HIGH
|
|
77
|
+
- Static display components: LOW to MEDIUM
|
|
78
|
+
- Pure utility functions: LOW to MEDIUM
|
|
79
|
+
- Models and type definitions: LOW
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### Section 3: Summary Statistics
|
|
84
|
+
|
|
85
|
+
**Description:** Aggregate counts providing a quick overview of the scanned codebase. Used by downstream agents to estimate scope and allocate testing effort.
|
|
86
|
+
|
|
87
|
+
**Fields:**
|
|
88
|
+
|
|
89
|
+
| Field | Type | Required | Description |
|
|
90
|
+
|-------|------|----------|-------------|
|
|
91
|
+
| total_files | number | YES | Total files in the file list |
|
|
92
|
+
| files_by_type | object | YES | Count per type (e.g., `{page: 4, component: 8, service: 5, ...}`) |
|
|
93
|
+
| files_by_priority | object | YES | Count per interaction density (e.g., `{HIGH: 7, MEDIUM: 9, LOW: 6}`) |
|
|
94
|
+
| total_line_count | number | NO | Sum of all file line counts |
|
|
95
|
+
| frameworks_detected | list | NO | All frameworks/libraries detected (e.g., `[React, Express, Prisma]`) |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### Section 4: Testable Surfaces
|
|
100
|
+
|
|
101
|
+
**Description:** Categorized groupings of testable entry points. Each category helps downstream agents focus on the right testing strategy (unit, integration, API, or E2E).
|
|
102
|
+
|
|
103
|
+
**Categories:**
|
|
104
|
+
|
|
105
|
+
1. **Pages/Views** -- User-facing routes or screens. Each entry: route path, component file, description.
|
|
106
|
+
2. **Forms** -- Data input surfaces requiring validation testing. Each entry: form name, component file, fields list, submission endpoint.
|
|
107
|
+
3. **API Endpoints** -- HTTP routes that accept requests. Each entry: method, path, controller/handler file, auth required (yes/no).
|
|
108
|
+
4. **Business Logic Modules** -- Pure functions and services containing domain rules. Each entry: module file, key functions, why testable (state transitions, calculations, validations).
|
|
109
|
+
5. **Middleware** -- Cross-cutting concerns applied to requests. Each entry: middleware file, what it does, routes it applies to.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### Section 5: Decision Gate
|
|
114
|
+
|
|
115
|
+
**Description:** Go/no-go decision based on scan results. This gate prevents downstream agents from running on repos that have no testable content.
|
|
116
|
+
|
|
117
|
+
**Rules:**
|
|
118
|
+
- If total files = 0: **STOP** with reason "No source files found"
|
|
119
|
+
- If 0 component files AND project type suggests frontend: **STOP** with reason "Expected frontend components but found none -- verify project structure"
|
|
120
|
+
- If backend-only detected (no component files, only services/routes): **PROCEED** with note "Skip testid-inject, proceed to analyze"
|
|
121
|
+
- If mixed frontend + backend: **PROCEED** with note "Full pipeline -- include testid-inject for frontend components"
|
|
122
|
+
- If only config/utility files found: **STOP** with reason "No testable surfaces detected -- only configuration files present"
|
|
123
|
+
|
|
124
|
+
**Output format:**
|
|
125
|
+
|
|
126
|
+
| Field | Type | Required | Description |
|
|
127
|
+
|-------|------|----------|-------------|
|
|
128
|
+
| decision | enum | YES | `PROCEED` or `STOP` |
|
|
129
|
+
| reason | string | YES | Why this decision was made |
|
|
130
|
+
| pipeline_note | string | NO | Guidance for downstream agents (e.g., "skip testid-inject") |
|
|
131
|
+
| confidence | enum | YES | `HIGH` (clear detection), `MEDIUM` (some ambiguity), `LOW` (uncertain stack) |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Worked Example (ShopFlow E-Commerce API)
|
|
136
|
+
|
|
137
|
+
> The following is a complete, filled SCAN_MANIFEST.md for a hypothetical ShopFlow e-commerce application. This example demonstrates the expected depth, format, and quality level.
|
|
138
|
+
|
|
139
|
+
### Project Detection
|
|
140
|
+
|
|
141
|
+
| Property | Value |
|
|
142
|
+
|----------|-------|
|
|
143
|
+
| Framework | React 18.2 + Express 4.18 |
|
|
144
|
+
| Language | TypeScript 5.3 |
|
|
145
|
+
| Runtime | Node.js 20 LTS |
|
|
146
|
+
| Component Pattern | `*.tsx` (frontend), `*.ts` (backend) |
|
|
147
|
+
| Package Manager | npm 10.x |
|
|
148
|
+
| Build Tool | Vite 5.0 |
|
|
149
|
+
| Test Framework (existing) | None detected |
|
|
150
|
+
| Database | PostgreSQL 15 via Prisma 5.7 |
|
|
151
|
+
| CSS Approach | Tailwind CSS 3.4 |
|
|
152
|
+
|
|
153
|
+
**Detection sources:** `package.json` (dependencies: react, express, prisma, stripe), `tsconfig.json` (strict mode, paths configured), `vite.config.ts` (React plugin), `prisma/schema.prisma` (PostgreSQL datasource).
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### File List
|
|
158
|
+
|
|
159
|
+
| # | File Path | Component Name | Type | Interaction Density | Priority |
|
|
160
|
+
|---|-----------|---------------|------|---------------------|----------|
|
|
161
|
+
| 1 | src/components/checkout/CheckoutForm.tsx | CheckoutForm | component | HIGH | 1 |
|
|
162
|
+
| 2 | src/components/auth/LoginForm.tsx | LoginForm | component | HIGH | 2 |
|
|
163
|
+
| 3 | src/components/auth/RegisterForm.tsx | RegisterForm | component | HIGH | 3 |
|
|
164
|
+
| 4 | src/services/orderService.ts | OrderService | service | HIGH | 4 |
|
|
165
|
+
| 5 | src/services/paymentService.ts | PaymentService | service | HIGH | 5 |
|
|
166
|
+
| 6 | src/utils/priceCalculator.ts | PriceCalculator | utility | HIGH | 6 |
|
|
167
|
+
| 7 | src/controllers/orderController.ts | OrderController | controller | HIGH | 7 |
|
|
168
|
+
| 8 | src/controllers/paymentController.ts | PaymentController | controller | HIGH | 8 |
|
|
169
|
+
| 9 | src/services/authService.ts | AuthService | service | HIGH | 9 |
|
|
170
|
+
| 10 | src/controllers/authController.ts | AuthController | controller | MEDIUM | 10 |
|
|
171
|
+
| 11 | src/controllers/productController.ts | ProductController | controller | MEDIUM | 11 |
|
|
172
|
+
| 12 | src/services/inventoryService.ts | InventoryService | service | MEDIUM | 12 |
|
|
173
|
+
| 13 | src/middleware/authMiddleware.ts | AuthMiddleware | middleware | MEDIUM | 13 |
|
|
174
|
+
| 14 | src/components/products/ProductCard.tsx | ProductCard | component | MEDIUM | 14 |
|
|
175
|
+
| 15 | src/components/products/ProductList.tsx | ProductList | component | MEDIUM | 15 |
|
|
176
|
+
| 16 | src/pages/HomePage.tsx | HomePage | page | MEDIUM | 16 |
|
|
177
|
+
| 17 | src/pages/ProductDetailPage.tsx | ProductDetailPage | page | MEDIUM | 17 |
|
|
178
|
+
| 18 | src/pages/CartPage.tsx | CartPage | page | MEDIUM | 18 |
|
|
179
|
+
| 19 | src/pages/OrderHistoryPage.tsx | OrderHistoryPage | page | MEDIUM | 19 |
|
|
180
|
+
| 20 | src/utils/validators.ts | Validators | utility | LOW | 20 |
|
|
181
|
+
| 21 | src/middleware/rateLimiter.ts | RateLimiter | middleware | LOW | 21 |
|
|
182
|
+
| 22 | src/middleware/errorHandler.ts | ErrorHandler | middleware | LOW | 22 |
|
|
183
|
+
| 23 | src/components/layout/Navbar.tsx | Navbar | component | LOW | 23 |
|
|
184
|
+
| 24 | src/components/layout/Footer.tsx | Footer | component | LOW | 24 |
|
|
185
|
+
| 25 | src/models/Product.ts | Product | model | LOW | 25 |
|
|
186
|
+
| 26 | src/models/Order.ts | Order | model | LOW | 26 |
|
|
187
|
+
| 27 | src/models/User.ts | User | model | LOW | 27 |
|
|
188
|
+
| 28 | src/models/Payment.ts | Payment | model | LOW | 28 |
|
|
189
|
+
| 29 | src/routes/api/v1/auth.ts | AuthRoutes | route | LOW | 29 |
|
|
190
|
+
| 30 | src/routes/api/v1/products.ts | ProductRoutes | route | LOW | 30 |
|
|
191
|
+
| 31 | src/routes/api/v1/orders.ts | OrderRoutes | route | LOW | 31 |
|
|
192
|
+
| 32 | src/routes/api/v1/payments.ts | PaymentRoutes | route | LOW | 32 |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### Summary Statistics
|
|
197
|
+
|
|
198
|
+
| Metric | Value |
|
|
199
|
+
|--------|-------|
|
|
200
|
+
| **Total Files Scanned** | 32 |
|
|
201
|
+
| **Files by Type** | page: 4, component: 7, service: 4, utility: 2, model: 4, middleware: 3, route: 4, controller: 4 |
|
|
202
|
+
| **Files by Interaction Density** | HIGH: 9, MEDIUM: 10, LOW: 13 |
|
|
203
|
+
| **Total Estimated Lines** | ~4,200 |
|
|
204
|
+
| **Frameworks Detected** | React 18.2, Express 4.18, Prisma 5.7, Stripe SDK 14.x |
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
### Testable Surfaces
|
|
209
|
+
|
|
210
|
+
#### Pages/Views (4)
|
|
211
|
+
|
|
212
|
+
| Route | Component File | Description |
|
|
213
|
+
|-------|---------------|-------------|
|
|
214
|
+
| `/` | src/pages/HomePage.tsx | Landing page with featured products and category navigation |
|
|
215
|
+
| `/products/:id` | src/pages/ProductDetailPage.tsx | Single product view with add-to-cart action |
|
|
216
|
+
| `/cart` | src/pages/CartPage.tsx | Shopping cart with quantity editing and checkout trigger |
|
|
217
|
+
| `/orders` | src/pages/OrderHistoryPage.tsx | User order history with status tracking |
|
|
218
|
+
|
|
219
|
+
#### Forms (3)
|
|
220
|
+
|
|
221
|
+
| Form Name | Component File | Fields | Submission Endpoint |
|
|
222
|
+
|-----------|---------------|--------|---------------------|
|
|
223
|
+
| Login Form | src/components/auth/LoginForm.tsx | email, password | POST /api/v1/auth/login |
|
|
224
|
+
| Registration Form | src/components/auth/RegisterForm.tsx | name, email, password, confirmPassword | POST /api/v1/auth/register |
|
|
225
|
+
| Checkout Form | src/components/checkout/CheckoutForm.tsx | shippingAddress, cardNumber, cardExpiry, cardCvc | POST /api/v1/payments/charge |
|
|
226
|
+
|
|
227
|
+
#### API Endpoints (12)
|
|
228
|
+
|
|
229
|
+
| Method | Path | Handler File | Auth |
|
|
230
|
+
|--------|------|-------------|------|
|
|
231
|
+
| POST | /api/v1/auth/register | src/controllers/authController.ts | No |
|
|
232
|
+
| POST | /api/v1/auth/login | src/controllers/authController.ts | No |
|
|
233
|
+
| POST | /api/v1/auth/refresh | src/controllers/authController.ts | Yes |
|
|
234
|
+
| POST | /api/v1/auth/logout | src/controllers/authController.ts | Yes |
|
|
235
|
+
| GET | /api/v1/products | src/controllers/productController.ts | No |
|
|
236
|
+
| GET | /api/v1/products/:id | src/controllers/productController.ts | No |
|
|
237
|
+
| POST | /api/v1/products | src/controllers/productController.ts | Yes |
|
|
238
|
+
| PUT | /api/v1/products/:id | src/controllers/productController.ts | Yes |
|
|
239
|
+
| DELETE | /api/v1/products/:id | src/controllers/productController.ts | Yes |
|
|
240
|
+
| POST | /api/v1/orders | src/controllers/orderController.ts | Yes |
|
|
241
|
+
| PATCH | /api/v1/orders/:id/status | src/controllers/orderController.ts | Yes |
|
|
242
|
+
| POST | /api/v1/payments/charge | src/controllers/paymentController.ts | Yes |
|
|
243
|
+
|
|
244
|
+
#### Business Logic Modules (6)
|
|
245
|
+
|
|
246
|
+
| Module File | Key Functions | Why Testable |
|
|
247
|
+
|------------|---------------|--------------|
|
|
248
|
+
| src/utils/priceCalculator.ts | calculateOrderTotal, applyDiscount, calculateTax, calculateShipping | Pure functions with arithmetic -- ideal unit test targets |
|
|
249
|
+
| src/services/orderService.ts | createOrder, transitionOrderStatus, cancelOrder, getOrderHistory | State machine transitions with validation rules |
|
|
250
|
+
| src/services/paymentService.ts | chargeCustomer, processRefund, handleWebhook | Stripe integration with error handling and idempotency |
|
|
251
|
+
| src/services/authService.ts | hashPassword, verifyPassword, generateToken, refreshToken | Security-critical functions with cryptographic operations |
|
|
252
|
+
| src/services/inventoryService.ts | reserveStock, releaseStock, checkAvailability | Concurrent access patterns with race condition potential |
|
|
253
|
+
| src/utils/validators.ts | validateEmail, validatePassword, validateAddress, validateCardNumber | Input validation with edge cases |
|
|
254
|
+
|
|
255
|
+
#### Middleware (3)
|
|
256
|
+
|
|
257
|
+
| Middleware File | Purpose | Applied To |
|
|
258
|
+
|----------------|---------|-----------|
|
|
259
|
+
| src/middleware/authMiddleware.ts | JWT token verification and user context injection | All routes except auth/register, auth/login, products (GET), payments/webhook |
|
|
260
|
+
| src/middleware/rateLimiter.ts | Rate limiting by IP and user ID | All routes (100 req/min general, 5 req/min for auth) |
|
|
261
|
+
| src/middleware/errorHandler.ts | Global error handling with structured JSON responses | All routes (catch-all) |
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
### Decision Gate
|
|
266
|
+
|
|
267
|
+
| Field | Value |
|
|
268
|
+
|-------|-------|
|
|
269
|
+
| **Decision** | **PROCEED** |
|
|
270
|
+
| **Reason** | 32 testable files found across frontend components and backend services |
|
|
271
|
+
| **Pipeline Note** | Full pipeline -- include testid-inject for 7 frontend components and 4 pages |
|
|
272
|
+
| **Confidence** | HIGH -- React + Express clearly detected from package.json and file extensions |
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Guidelines
|
|
277
|
+
|
|
278
|
+
### DO
|
|
279
|
+
|
|
280
|
+
- **DO** include every source file that could have tests written against it -- services, controllers, components, utilities, middleware, models
|
|
281
|
+
- **DO** prioritize forms and interactive components as HIGH interaction density -- they have the most user-facing behavior
|
|
282
|
+
- **DO** list all API endpoints discovered from route files, including method, path, and auth requirements
|
|
283
|
+
- **DO** record the actual detection sources (which files told you the framework, runtime, etc.)
|
|
284
|
+
- **DO** order the file list by priority so downstream agents process the most important files first
|
|
285
|
+
- **DO** include line count estimates when available -- they help estimate test generation effort
|
|
286
|
+
|
|
287
|
+
### DON'T
|
|
288
|
+
|
|
289
|
+
- **DON'T** include `node_modules/`, `dist/`, `build/`, `.next/`, `coverage/`, or other build artifacts
|
|
290
|
+
- **DON'T** include test files (`*.test.*`, `*.spec.*`, `*.stories.*`) -- those are analyzed separately
|
|
291
|
+
- **DON'T** include lockfiles (`package-lock.json`, `yarn.lock`) or config-only files (`eslint.config.js`)
|
|
292
|
+
- **DON'T** mark utility-only files (pure functions, type definitions) as HIGH interaction density
|
|
293
|
+
- **DON'T** mark static display components (Footer, badges, icons) as HIGH interaction density
|
|
294
|
+
- **DON'T** guess the framework -- if detection is ambiguous, mark confidence as LOW and list what was found
|
|
295
|
+
- **DON'T** include files from dependency directories or generated code
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## Quality Gate
|
|
300
|
+
|
|
301
|
+
Before delivering this artifact, verify all of the following:
|
|
302
|
+
|
|
303
|
+
- [ ] Project Detection section has all 5 required fields populated (framework, language, runtime, component_pattern, package_manager)
|
|
304
|
+
- [ ] File List contains every source file relevant to testing (no business logic files omitted)
|
|
305
|
+
- [ ] File List excludes all test files, build artifacts, node_modules, and config-only files
|
|
306
|
+
- [ ] Every file in the File List has a type, interaction density, and priority order assigned
|
|
307
|
+
- [ ] Priority ordering puts forms and interactive components before static/utility files
|
|
308
|
+
- [ ] Summary Statistics counts match the actual File List entries
|
|
309
|
+
- [ ] Testable Surfaces section covers all 5 categories (pages, forms, API endpoints, business logic, middleware)
|
|
310
|
+
- [ ] API Endpoints list matches the route files found in the File List
|
|
311
|
+
- [ ] Decision Gate has a clear PROCEED or STOP with justification
|
|
312
|
+
- [ ] No duplicate file paths in the File List
|