bmad-method-test-architecture-enterprise 1.2.2 → 1.2.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.
- package/README.md +14 -12
- package/docs/how-to/workflows/setup-ci.md +3 -1
- package/docs/how-to/workflows/setup-test-framework.md +29 -6
- package/docs/reference/configuration.md +97 -0
- package/docs/reference/knowledge-base.md +15 -6
- package/package.json +1 -1
- package/release_notes.md +6 -4
- package/src/agents/tea.agent.yaml +2 -2
- package/src/module.yaml +78 -5
- package/src/testarch/knowledge/adr-quality-readiness-checklist.md +9 -9
- package/src/testarch/tea-index.csv +36 -36
- package/src/workflows/testarch/atdd/atdd-checklist-template.md +2 -0
- package/src/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +65 -12
- package/src/workflows/testarch/atdd/steps-c/step-02-generation-mode.md +5 -0
- package/src/workflows/testarch/atdd/steps-c/step-03-test-strategy.md +10 -1
- package/src/workflows/testarch/atdd/steps-c/step-05-validate-and-complete.md +13 -2
- package/src/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +46 -2
- package/src/workflows/testarch/automate/steps-c/step-02-identify-targets.md +12 -0
- package/src/workflows/testarch/automate/steps-c/step-03-generate-tests.md +110 -31
- package/src/workflows/testarch/automate/steps-c/step-03b-subprocess-backend.md +246 -0
- package/src/workflows/testarch/automate/steps-c/step-03c-aggregate.md +90 -38
- package/src/workflows/testarch/automate/steps-c/step-04-validate-and-summarize.md +13 -2
- package/src/workflows/testarch/ci/azure-pipelines-template.yaml +155 -0
- package/src/workflows/testarch/ci/checklist.md +48 -7
- package/src/workflows/testarch/ci/github-actions-template.yaml +22 -10
- package/src/workflows/testarch/ci/gitlab-ci-template.yaml +21 -12
- package/src/workflows/testarch/ci/harness-pipeline-template.yaml +159 -0
- package/src/workflows/testarch/ci/jenkins-pipeline-template.groovy +129 -0
- package/src/workflows/testarch/ci/steps-c/step-01-preflight.md +58 -17
- package/src/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +21 -10
- package/src/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +5 -0
- package/src/workflows/testarch/ci/workflow.yaml +5 -3
- package/src/workflows/testarch/framework/checklist.md +11 -10
- package/src/workflows/testarch/framework/steps-c/step-01-preflight.md +34 -2
- package/src/workflows/testarch/framework/steps-c/step-02-select-framework.md +20 -1
- package/src/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +56 -5
- package/src/workflows/testarch/framework/steps-c/step-04-docs-and-scripts.md +16 -4
- package/src/workflows/testarch/nfr-assess/nfr-report-template.md +3 -1
- package/src/workflows/testarch/nfr-assess/steps-c/step-01-load-context.md +12 -0
- package/src/workflows/testarch/nfr-assess/steps-c/step-05-generate-report.md +14 -3
- package/src/workflows/testarch/test-design/checklist.md +20 -9
- package/src/workflows/testarch/test-design/instructions.md +3 -3
- package/src/workflows/testarch/test-design/steps-c/step-02-load-context.md +34 -0
- package/src/workflows/testarch/test-design/steps-c/step-05-generate-output.md +29 -2
- package/src/workflows/testarch/test-design/test-design-architecture-template.md +16 -14
- package/src/workflows/testarch/test-design/test-design-handoff-template.md +70 -0
- package/src/workflows/testarch/test-design/test-design-qa-template.md +11 -9
- package/src/workflows/testarch/test-design/workflow.yaml +8 -1
- package/src/workflows/testarch/test-review/steps-c/step-01-load-context.md +34 -1
- package/src/workflows/testarch/test-review/steps-c/step-04-generate-report.md +14 -3
- package/src/workflows/testarch/test-review/test-review-template.md +4 -2
- package/src/workflows/testarch/test-review/workflow.yaml +1 -0
- package/src/workflows/testarch/trace/trace-template.md +7 -5
- package/test/test-installation-components.js +1 -1
- package/test/test-knowledge-base.js +10 -1
|
@@ -79,7 +79,34 @@ If any checklist criteria are missing, fix before completion.
|
|
|
79
79
|
|
|
80
80
|
---
|
|
81
81
|
|
|
82
|
-
## 4.
|
|
82
|
+
## 4. Generate BMAD Handoff Document (System-Level Mode Only)
|
|
83
|
+
|
|
84
|
+
**If this is a system-level test design** (not component/feature level):
|
|
85
|
+
|
|
86
|
+
1. Copy `test-design-handoff-template.md` to `{test_artifacts}/test-design/{project_name}-handoff.md`
|
|
87
|
+
2. Populate all sections from the test design output:
|
|
88
|
+
- Fill TEA Artifacts Inventory with actual paths
|
|
89
|
+
- Extract P0/P1 risks into Epic-Level guidance
|
|
90
|
+
- Map critical test scenarios to Story-Level guidance
|
|
91
|
+
- Build risk-to-story mapping table from risk register
|
|
92
|
+
3. Save alongside the test design document
|
|
93
|
+
|
|
94
|
+
> **Note**: The handoff document is designed for consumption by BMAD's `create-epics-and-stories` workflow. It is only generated for system-level test designs where epic/story decomposition is relevant.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 5. Polish Output
|
|
99
|
+
|
|
100
|
+
Before finalizing, review the complete output document for quality:
|
|
101
|
+
|
|
102
|
+
1. **Remove duplication**: Progressive-append workflow may have created repeated sections — consolidate
|
|
103
|
+
2. **Verify consistency**: Ensure terminology, risk scores, and references are consistent throughout
|
|
104
|
+
3. **Check completeness**: All template sections should be populated or explicitly marked N/A
|
|
105
|
+
4. **Format cleanup**: Ensure markdown formatting is clean (tables aligned, headers consistent, no orphaned references)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 6. Completion Report
|
|
83
110
|
|
|
84
111
|
Summarize:
|
|
85
112
|
|
|
@@ -90,7 +117,7 @@ Summarize:
|
|
|
90
117
|
|
|
91
118
|
---
|
|
92
119
|
|
|
93
|
-
###
|
|
120
|
+
### 7. Save Progress
|
|
94
121
|
|
|
95
122
|
**Save this step's accumulated work to `{progressFile}`.**
|
|
96
123
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
stepsCompleted: []
|
|
3
3
|
lastStep: ''
|
|
4
4
|
lastSaved: ''
|
|
5
|
+
workflowType: 'testarch-test-design'
|
|
6
|
+
inputDocuments: []
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Test Design for Architecture: {Feature Name}
|
|
@@ -49,21 +51,21 @@ lastSaved: ''
|
|
|
49
51
|
|
|
50
52
|
### 🚨 BLOCKERS - Team Must Decide (Can't Proceed Without)
|
|
51
53
|
|
|
52
|
-
**
|
|
54
|
+
**Pre-Implementation Critical Path** - These MUST be completed before QA can write integration tests:
|
|
53
55
|
|
|
54
56
|
1. **{Blocker ID}: {Blocker Title}** - {What architecture must provide} (recommended owner: {Team/Role})
|
|
55
57
|
2. **{Blocker ID}: {Blocker Title}** - {What architecture must provide} (recommended owner: {Team/Role})
|
|
56
58
|
3. **{Blocker ID}: {Blocker Title}** - {What architecture must provide} (recommended owner: {Team/Role})
|
|
57
59
|
|
|
58
|
-
**What we need from team:** Complete these {N} items
|
|
60
|
+
**What we need from team:** Complete these {N} items pre-implementation or test development is blocked.
|
|
59
61
|
|
|
60
62
|
---
|
|
61
63
|
|
|
62
64
|
### ⚠️ HIGH PRIORITY - Team Should Validate (We Provide Recommendation, You Approve)
|
|
63
65
|
|
|
64
|
-
1. **{Risk ID}: {Title}** - {Recommendation + who should approve} (
|
|
65
|
-
2. **{Risk ID}: {Title}** - {Recommendation + who should approve} (
|
|
66
|
-
3. **{Risk ID}: {Title}** - {Recommendation + who should approve} (
|
|
66
|
+
1. **{Risk ID}: {Title}** - {Recommendation + who should approve} (implementation phase)
|
|
67
|
+
2. **{Risk ID}: {Title}** - {Recommendation + who should approve} (implementation phase)
|
|
68
|
+
3. **{Risk ID}: {Title}** - {Recommendation + who should approve} (implementation phase)
|
|
67
69
|
|
|
68
70
|
**What we need from team:** Review recommendations and approve (or suggest changes).
|
|
69
71
|
|
|
@@ -124,13 +126,13 @@ lastSaved: ''
|
|
|
124
126
|
|
|
125
127
|
#### 1. Blockers to Fast Feedback (WHAT WE NEED FROM ARCHITECTURE)
|
|
126
128
|
|
|
127
|
-
| Concern | Impact | What Architecture Must Provide | Owner | Timeline
|
|
128
|
-
| ------------------ | ------------------- | -------------------------------------- | ------ |
|
|
129
|
-
| **{Concern name}** | {Impact on testing} | {Specific architectural change needed} | {Team} | {
|
|
129
|
+
| Concern | Impact | What Architecture Must Provide | Owner | Timeline |
|
|
130
|
+
| ------------------ | ------------------- | -------------------------------------- | ------ | ----------- |
|
|
131
|
+
| **{Concern name}** | {Impact on testing} | {Specific architectural change needed} | {Team} | {Milestone} |
|
|
130
132
|
|
|
131
133
|
**Example:**
|
|
132
134
|
|
|
133
|
-
- **No API for test data seeding** → Cannot parallelize tests → Provide POST /test/seed endpoint (Backend,
|
|
135
|
+
- **No API for test data seeding** → Cannot parallelize tests → Provide POST /test/seed endpoint (Backend, pre-implementation)
|
|
134
136
|
|
|
135
137
|
#### 2. Architectural Improvements Needed (WHAT SHOULD BE CHANGED)
|
|
136
138
|
|
|
@@ -141,7 +143,7 @@ lastSaved: ''
|
|
|
141
143
|
- **Required change**: {What architecture must do}
|
|
142
144
|
- **Impact if not fixed**: {Consequences}
|
|
143
145
|
- **Owner**: {Team}
|
|
144
|
-
- **Timeline**: {
|
|
146
|
+
- **Timeline**: {Milestone}
|
|
145
147
|
|
|
146
148
|
---
|
|
147
149
|
|
|
@@ -181,7 +183,7 @@ For {Feature} Phase 1, the following trade-offs are acceptable:
|
|
|
181
183
|
3. {Step 3}
|
|
182
184
|
|
|
183
185
|
**Owner:** {Owner}
|
|
184
|
-
**Timeline:** {
|
|
186
|
+
**Timeline:** {Milestone or date}
|
|
185
187
|
**Status:** Planned / In Progress / Complete
|
|
186
188
|
**Verification:** {How to verify mitigation is effective}
|
|
187
189
|
|
|
@@ -201,8 +203,8 @@ For {Feature} Phase 1, the following trade-offs are acceptable:
|
|
|
201
203
|
|
|
202
204
|
#### Dependencies
|
|
203
205
|
|
|
204
|
-
1. {Dependency} - Required by {date/
|
|
205
|
-
2. {Dependency} - Required by {date/
|
|
206
|
+
1. {Dependency} - Required by {date/milestone}
|
|
207
|
+
2. {Dependency} - Required by {date/milestone}
|
|
206
208
|
|
|
207
209
|
#### Risks to Plan
|
|
208
210
|
|
|
@@ -223,6 +225,6 @@ For {Feature} Phase 1, the following trade-offs are acceptable:
|
|
|
223
225
|
|
|
224
226
|
**Next Steps for QA Team:**
|
|
225
227
|
|
|
226
|
-
1. Wait for
|
|
228
|
+
1. Wait for pre-implementation blockers to be resolved
|
|
227
229
|
2. Refer to companion QA doc (test-design-qa.md) for test scenarios
|
|
228
230
|
3. Begin test infrastructure setup (factories, fixtures, environments)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'TEA Test Design → BMAD Handoff Document'
|
|
3
|
+
version: '1.0'
|
|
4
|
+
workflowType: 'testarch-test-design-handoff'
|
|
5
|
+
inputDocuments: []
|
|
6
|
+
sourceWorkflow: 'testarch-test-design'
|
|
7
|
+
generatedBy: 'TEA Master Test Architect'
|
|
8
|
+
generatedAt: '{timestamp}'
|
|
9
|
+
projectName: '{project_name}'
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# TEA → BMAD Integration Handoff
|
|
13
|
+
|
|
14
|
+
## Purpose
|
|
15
|
+
|
|
16
|
+
This document bridges TEA's test design outputs with BMAD's epic/story decomposition workflow (`create-epics-and-stories`). It provides structured integration guidance so that quality requirements, risk assessments, and test strategies flow into implementation planning.
|
|
17
|
+
|
|
18
|
+
## TEA Artifacts Inventory
|
|
19
|
+
|
|
20
|
+
| Artifact | Path | BMAD Integration Point |
|
|
21
|
+
| -------------------- | ------------------------- | ---------------------------------------------------- |
|
|
22
|
+
| Test Design Document | `{test_design_path}` | Epic quality requirements, story acceptance criteria |
|
|
23
|
+
| Risk Assessment | (embedded in test design) | Epic risk classification, story priority |
|
|
24
|
+
| Coverage Strategy | (embedded in test design) | Story test requirements |
|
|
25
|
+
|
|
26
|
+
## Epic-Level Integration Guidance
|
|
27
|
+
|
|
28
|
+
### Risk References
|
|
29
|
+
|
|
30
|
+
<!-- TEA will populate: P0/P1 risks that should appear as epic-level quality gates -->
|
|
31
|
+
|
|
32
|
+
### Quality Gates
|
|
33
|
+
|
|
34
|
+
<!-- TEA will populate: recommended quality gates per epic based on risk assessment -->
|
|
35
|
+
|
|
36
|
+
## Story-Level Integration Guidance
|
|
37
|
+
|
|
38
|
+
### P0/P1 Test Scenarios → Story Acceptance Criteria
|
|
39
|
+
|
|
40
|
+
<!-- TEA will populate: critical test scenarios that MUST be acceptance criteria -->
|
|
41
|
+
|
|
42
|
+
### Data-TestId Requirements
|
|
43
|
+
|
|
44
|
+
<!-- TEA will populate: recommended data-testid attributes for testability -->
|
|
45
|
+
|
|
46
|
+
## Risk-to-Story Mapping
|
|
47
|
+
|
|
48
|
+
| Risk ID | Category | P×I | Recommended Story/Epic | Test Level |
|
|
49
|
+
| ------- | -------- | --- | ---------------------- | ---------- |
|
|
50
|
+
|
|
51
|
+
<!-- TEA will populate from risk assessment -->
|
|
52
|
+
|
|
53
|
+
## Recommended BMAD → TEA Workflow Sequence
|
|
54
|
+
|
|
55
|
+
1. **TEA Test Design** (`TD`) → produces this handoff document
|
|
56
|
+
2. **BMAD Create Epics & Stories** → consumes this handoff, embeds quality requirements
|
|
57
|
+
3. **TEA ATDD** (`AT`) → generates acceptance tests per story
|
|
58
|
+
4. **BMAD Implementation** → developers implement with test-first guidance
|
|
59
|
+
5. **TEA Automate** (`TA`) → generates full test suite
|
|
60
|
+
6. **TEA Trace** (`TR`) → validates coverage completeness
|
|
61
|
+
|
|
62
|
+
## Phase Transition Quality Gates
|
|
63
|
+
|
|
64
|
+
| From Phase | To Phase | Gate Criteria |
|
|
65
|
+
| ------------------- | ------------------- | ------------------------------------------------------ |
|
|
66
|
+
| Test Design | Epic/Story Creation | All P0 risks have mitigation strategy |
|
|
67
|
+
| Epic/Story Creation | ATDD | Stories have acceptance criteria from test design |
|
|
68
|
+
| ATDD | Implementation | Failing acceptance tests exist for all P0/P1 scenarios |
|
|
69
|
+
| Implementation | Test Automation | All acceptance tests pass |
|
|
70
|
+
| Test Automation | Release | Trace matrix shows ≥80% coverage of P0/P1 requirements |
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
stepsCompleted: []
|
|
3
3
|
lastStep: ''
|
|
4
4
|
lastSaved: ''
|
|
5
|
+
workflowType: 'testarch-test-design'
|
|
6
|
+
inputDocuments: []
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Test Design for QA: {Feature Name}
|
|
@@ -52,7 +54,7 @@ lastSaved: ''
|
|
|
52
54
|
|
|
53
55
|
**CRITICAL:** QA cannot proceed without these items from other teams.
|
|
54
56
|
|
|
55
|
-
### Backend/Architecture Dependencies (
|
|
57
|
+
### Backend/Architecture Dependencies (Pre-Implementation)
|
|
56
58
|
|
|
57
59
|
**Source:** See Architecture doc "Quick Guide" for detailed mitigation plans
|
|
58
60
|
|
|
@@ -64,7 +66,7 @@ lastSaved: ''
|
|
|
64
66
|
- {What QA needs}
|
|
65
67
|
- {Why it blocks testing}
|
|
66
68
|
|
|
67
|
-
### QA Infrastructure Setup (
|
|
69
|
+
### QA Infrastructure Setup (Pre-Implementation)
|
|
68
70
|
|
|
69
71
|
1. **Test Data Factories** - QA
|
|
70
72
|
- {Entity} factory with faker-based randomization
|
|
@@ -125,7 +127,7 @@ test('example test @p0', async ({ apiRequest }) => {
|
|
|
125
127
|
- [ ] All requirements and assumptions agreed upon by QA, Dev, PM
|
|
126
128
|
- [ ] Test environments provisioned and accessible
|
|
127
129
|
- [ ] Test data factories ready or seed data available
|
|
128
|
-
- [ ]
|
|
130
|
+
- [ ] Pre-implementation blockers resolved (see Dependencies section)
|
|
129
131
|
- [ ] Feature deployed to test environment
|
|
130
132
|
- [ ] {Additional project-specific entry criteria}
|
|
131
133
|
|
|
@@ -276,16 +278,16 @@ test('example test @p0', async ({ apiRequest }) => {
|
|
|
276
278
|
|
|
277
279
|
---
|
|
278
280
|
|
|
279
|
-
##
|
|
281
|
+
## Implementation Planning Handoff (Optional)
|
|
280
282
|
|
|
281
283
|
**Include only if this test design produces implementation tasks that must be scheduled.**
|
|
282
284
|
|
|
283
|
-
**Use this to inform
|
|
285
|
+
**Use this to inform implementation planning; if no dedicated QA, assign to Dev owners.**
|
|
284
286
|
|
|
285
|
-
| Work Item | Owner | Target
|
|
286
|
-
| ----------- | ------------ |
|
|
287
|
-
| {Work item} | {QA/Dev/etc} | {
|
|
288
|
-
| {Work item} | {QA/Dev/etc} | {
|
|
287
|
+
| Work Item | Owner | Target Milestone (Optional) | Dependencies/Notes |
|
|
288
|
+
| ----------- | ------------ | --------------------------- | ------------------ |
|
|
289
|
+
| {Work item} | {QA/Dev/etc} | {Milestone or date} | {Notes} |
|
|
290
|
+
| {Work item} | {QA/Dev/etc} | {Milestone or date} | {Notes} |
|
|
289
291
|
|
|
290
292
|
---
|
|
291
293
|
|
|
@@ -25,6 +25,7 @@ template: "{installed_path}/test-design-template.md"
|
|
|
25
25
|
variables:
|
|
26
26
|
design_level: "full" # full, targeted, minimal - scope of design effort
|
|
27
27
|
mode: "auto-detect" # auto-detect (default), system-level, epic-level
|
|
28
|
+
test_stack_type: "auto" # auto, frontend, backend, fullstack - from config or auto-detected
|
|
28
29
|
|
|
29
30
|
# Output configuration
|
|
30
31
|
# Note: Actual output file determined dynamically based on mode detection
|
|
@@ -38,11 +39,17 @@ outputs:
|
|
|
38
39
|
audience: architecture
|
|
39
40
|
|
|
40
41
|
- id: test-design-qa
|
|
41
|
-
description: "System-level test design: Test execution recipe, coverage plan,
|
|
42
|
+
description: "System-level test design: Test execution recipe, coverage plan, pre-implementation setup for QA team"
|
|
42
43
|
path: "{test_artifacts}/test-design-qa.md"
|
|
43
44
|
mode: system-level
|
|
44
45
|
audience: qa
|
|
45
46
|
|
|
47
|
+
- id: test-design-handoff
|
|
48
|
+
description: "TEA → BMAD handoff document: Bridges test design outputs with epic/story decomposition"
|
|
49
|
+
path: "{test_artifacts}/test-design/{project_name}-handoff.md"
|
|
50
|
+
mode: system-level
|
|
51
|
+
audience: bmad-integration
|
|
52
|
+
|
|
46
53
|
# Epic-Level Mode (Phase 4) - ONE document (unchanged)
|
|
47
54
|
- id: epic-level
|
|
48
55
|
description: "Epic-level test plan (Phase 4)"
|
|
@@ -36,7 +36,7 @@ Determine review scope, load required knowledge fragments, and gather related ar
|
|
|
36
36
|
|
|
37
37
|
**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
|
|
38
38
|
|
|
39
|
-
## 1. Determine Scope
|
|
39
|
+
## 1. Determine Scope and Stack
|
|
40
40
|
|
|
41
41
|
Use `review_scope`:
|
|
42
42
|
|
|
@@ -46,8 +46,39 @@ Use `review_scope`:
|
|
|
46
46
|
|
|
47
47
|
If unclear, ask the user.
|
|
48
48
|
|
|
49
|
+
**Stack Detection** (for context-aware loading):
|
|
50
|
+
|
|
51
|
+
Read `test_stack_type` from `{config_source}`. If `"auto"` or not configured, infer `{detected_stack}` by scanning `{project-root}`:
|
|
52
|
+
|
|
53
|
+
- **Frontend indicators**: `playwright.config.*`, `cypress.config.*`, `package.json` with react/vue/angular
|
|
54
|
+
- **Backend indicators**: `pyproject.toml`, `pom.xml`/`build.gradle`, `go.mod`, `*.csproj`, `Gemfile`, `Cargo.toml`
|
|
55
|
+
- **Both present** → `fullstack`; only frontend → `frontend`; only backend → `backend`
|
|
56
|
+
- Explicit `test_stack_type` overrides auto-detection
|
|
57
|
+
|
|
49
58
|
---
|
|
50
59
|
|
|
60
|
+
### Tiered Knowledge Loading
|
|
61
|
+
|
|
62
|
+
Load fragments based on their `tier` classification in `tea-index.csv`:
|
|
63
|
+
|
|
64
|
+
1. **Core tier** (always load): Foundational fragments required for this workflow
|
|
65
|
+
2. **Extended tier** (load on-demand): Load when deeper analysis is needed or when the user's context requires it
|
|
66
|
+
3. **Specialized tier** (load only when relevant): Load only when the specific use case matches (e.g., contract-testing only for microservices, email-auth only for email flows)
|
|
67
|
+
|
|
68
|
+
> **Context Efficiency**: Loading only core fragments reduces context usage by 40-50% compared to loading all fragments.
|
|
69
|
+
|
|
70
|
+
### Playwright Utils Loading Profiles
|
|
71
|
+
|
|
72
|
+
**If `tea_use_playwright_utils` is enabled**, select the appropriate loading profile:
|
|
73
|
+
|
|
74
|
+
- **API-only profile** (when `{detected_stack}` is `backend` or no `page.goto`/`page.locator` found in test files):
|
|
75
|
+
Load: `overview`, `api-request`, `auth-session`, `recurse` (~1,800 lines)
|
|
76
|
+
|
|
77
|
+
- **Full UI+API profile** (when `{detected_stack}` is `frontend`/`fullstack` or browser tests detected):
|
|
78
|
+
Load: all Playwright Utils core fragments (~4,500 lines)
|
|
79
|
+
|
|
80
|
+
**Detection**: Scan `{test_dir}` for files containing `page.goto` or `page.locator`. If none found, use API-only profile.
|
|
81
|
+
|
|
51
82
|
## 2. Load Knowledge Base
|
|
52
83
|
|
|
53
84
|
From `{knowledgeIndex}` load:
|
|
@@ -122,6 +153,8 @@ Coverage mapping and coverage gates are out of scope in `test-review`. Route tho
|
|
|
122
153
|
- Set `lastSaved: '{date}'`
|
|
123
154
|
- Append this step's output to the appropriate section of the document.
|
|
124
155
|
|
|
156
|
+
**Update `inputDocuments`**: Set `inputDocuments` in the output template frontmatter to the list of artifact paths loaded in this step (e.g., knowledge fragments, test design documents, configuration files).
|
|
157
|
+
|
|
125
158
|
Load next step: `{nextStepFile}`
|
|
126
159
|
|
|
127
160
|
## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
|
|
@@ -46,7 +46,18 @@ Use `test-review-template.md` to produce `{outputFile}` including:
|
|
|
46
46
|
|
|
47
47
|
---
|
|
48
48
|
|
|
49
|
-
## 2.
|
|
49
|
+
## 2. Polish Output
|
|
50
|
+
|
|
51
|
+
Before finalizing, review the complete output document for quality:
|
|
52
|
+
|
|
53
|
+
1. **Remove duplication**: Progressive-append workflow may have created repeated sections — consolidate
|
|
54
|
+
2. **Verify consistency**: Ensure terminology, risk scores, and references are consistent throughout
|
|
55
|
+
3. **Check completeness**: All template sections should be populated or explicitly marked N/A
|
|
56
|
+
4. **Format cleanup**: Ensure markdown formatting is clean (tables aligned, headers consistent, no orphaned references)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. Validation
|
|
50
61
|
|
|
51
62
|
Validate against `checklist.md` and fix any gaps.
|
|
52
63
|
|
|
@@ -55,7 +66,7 @@ Validate against `checklist.md` and fix any gaps.
|
|
|
55
66
|
|
|
56
67
|
---
|
|
57
68
|
|
|
58
|
-
##
|
|
69
|
+
## 4. Save Progress
|
|
59
70
|
|
|
60
71
|
**Save this step's accumulated work to `{outputFile}`.**
|
|
61
72
|
|
|
@@ -79,7 +90,7 @@ Validate against `checklist.md` and fix any gaps.
|
|
|
79
90
|
|
|
80
91
|
---
|
|
81
92
|
|
|
82
|
-
##
|
|
93
|
+
## 5. Completion Summary
|
|
83
94
|
|
|
84
95
|
Report:
|
|
85
96
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
stepsCompleted: []
|
|
3
3
|
lastStep: ''
|
|
4
4
|
lastSaved: ''
|
|
5
|
+
workflowType: 'testarch-test-review'
|
|
6
|
+
inputDocuments: []
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Test Quality Review: {test_filename}
|
|
@@ -289,11 +291,11 @@ See [tea-index.csv](../../../testarch/tea-index.csv) for complete knowledge base
|
|
|
289
291
|
|
|
290
292
|
1. **{action_1}** - {description}
|
|
291
293
|
- Priority: {P2 | P3}
|
|
292
|
-
- Target: {
|
|
294
|
+
- Target: {next_milestone | backlog}
|
|
293
295
|
|
|
294
296
|
2. **{action_2}** - {description}
|
|
295
297
|
- Priority: {P2 | P3}
|
|
296
|
-
- Target: {
|
|
298
|
+
- Target: {next_milestone | backlog}
|
|
297
299
|
|
|
298
300
|
### Re-Review Needed?
|
|
299
301
|
|
|
@@ -22,6 +22,7 @@ template: "{installed_path}/test-review-template.md"
|
|
|
22
22
|
variables:
|
|
23
23
|
test_dir: "{project-root}/tests" # Root test directory
|
|
24
24
|
review_scope: "single" # single (one file), directory (folder), suite (all tests)
|
|
25
|
+
test_stack_type: "auto" # auto, frontend, backend, fullstack - from config or auto-detected
|
|
25
26
|
|
|
26
27
|
# Output configuration
|
|
27
28
|
default_output_file: "{test_artifacts}/test-review.md"
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
stepsCompleted: []
|
|
3
3
|
lastStep: ''
|
|
4
4
|
lastSaved: ''
|
|
5
|
+
workflowType: 'testarch-trace'
|
|
6
|
+
inputDocuments: []
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Traceability Matrix & Gate Decision - Story {STORY_ID}
|
|
@@ -230,7 +232,7 @@ Note: This workflow does not generate tests. If gaps exist, run `*atdd` or `*aut
|
|
|
230
232
|
1. **{ACTION_1}** - {DESCRIPTION}
|
|
231
233
|
2. **{ACTION_2}** - {DESCRIPTION}
|
|
232
234
|
|
|
233
|
-
#### Short-term Actions (This
|
|
235
|
+
#### Short-term Actions (This Milestone)
|
|
234
236
|
|
|
235
237
|
1. **{ACTION_1}** - {DESCRIPTION}
|
|
236
238
|
2. **{ACTION_2}** - {DESCRIPTION}
|
|
@@ -248,7 +250,7 @@ Note: This workflow does not generate tests. If gaps exist, run `*atdd` or `*aut
|
|
|
248
250
|
1. **Add P1 Password Reset Tests** - Implement `1.3-API-001` for email service integration and `1.3-E2E-004` for error path validation. P1 coverage currently at 80%, target is 90%.
|
|
249
251
|
2. **Optimize Slow E2E Test** - Refactor `1.3-E2E-001` to use faster fixture setup. Currently 145s, target is <90s.
|
|
250
252
|
|
|
251
|
-
**Short-term Actions (This
|
|
253
|
+
**Short-term Actions (This Milestone)**
|
|
252
254
|
|
|
253
255
|
1. **Enhance P2 Coverage** - Add E2E validation for session timeout (`1.3-E2E-005`). Currently UNIT-ONLY coverage.
|
|
254
256
|
2. **Split Large Test File** - Break `1.3-UNIT-005` (320 lines) into multiple focused test files (<300 lines each).
|
|
@@ -439,7 +441,7 @@ List unresolved P1/P2 issues that don't block release but should be tracked:
|
|
|
439
441
|
- **Impact**: Low | Medium | High
|
|
440
442
|
- **Risk Score**: {probability × impact}
|
|
441
443
|
- **Mitigation**: {workaround or monitoring plan}
|
|
442
|
-
- **Remediation**: {fix in next
|
|
444
|
+
- **Remediation**: {fix in next milestone/release}
|
|
443
445
|
|
|
444
446
|
**Overall Residual Risk**: {LOW | MEDIUM | HIGH}
|
|
445
447
|
|
|
@@ -526,7 +528,7 @@ Top blockers requiring immediate attention:
|
|
|
526
528
|
2. **Create Remediation Backlog**
|
|
527
529
|
- Create story: "{fix_title_1}" (Priority: {priority})
|
|
528
530
|
- Create story: "{fix_title_2}" (Priority: {priority})
|
|
529
|
-
- Target
|
|
531
|
+
- Target milestone: {next_milestone}
|
|
530
532
|
|
|
531
533
|
3. **Post-Deployment Actions**
|
|
532
534
|
- Monitor {specific_areas} closely for {time_period}
|
|
@@ -583,7 +585,7 @@ Top blockers requiring immediate attention:
|
|
|
583
585
|
2. {action_2}
|
|
584
586
|
3. {action_3}
|
|
585
587
|
|
|
586
|
-
**Follow-up Actions** (next
|
|
588
|
+
**Follow-up Actions** (next milestone/release):
|
|
587
589
|
|
|
588
590
|
1. {action_1}
|
|
589
591
|
2. {action_2}
|
|
@@ -127,7 +127,7 @@ async function runTests() {
|
|
|
127
127
|
const lines = csvContent.trim().split('\n');
|
|
128
128
|
|
|
129
129
|
assert(lines.length === 36, 'tea-index.csv has 36 lines (header + 35 fragments)', `Found ${lines.length} lines`);
|
|
130
|
-
assert(lines[0].includes('id,name,description,tags,fragment_file'), 'tea-index.csv has correct header format');
|
|
130
|
+
assert(lines[0].includes('id,name,description,tags,tier,fragment_file'), 'tea-index.csv has correct header format');
|
|
131
131
|
|
|
132
132
|
// Verify no BMM references in CSV
|
|
133
133
|
assert(!csvContent.includes('bmm'), 'tea-index.csv has no BMM references');
|
|
@@ -90,9 +90,18 @@ function runTests() {
|
|
|
90
90
|
|
|
91
91
|
assert(records.length === 35, 'tea-index.csv has 35 fragment records', `Found ${records.length}`);
|
|
92
92
|
|
|
93
|
-
const requiredFields = ['id', 'name', 'description', 'tags', 'fragment_file'];
|
|
93
|
+
const requiredFields = ['id', 'name', 'description', 'tags', 'tier', 'fragment_file'];
|
|
94
94
|
const missingFields = requiredFields.filter((field) => !Object.prototype.hasOwnProperty.call(records[0] || {}, field));
|
|
95
95
|
assert(missingFields.length === 0, 'tea-index.csv has required columns', missingFields.join(', '));
|
|
96
|
+
|
|
97
|
+
// Validate tier values
|
|
98
|
+
const validTiers = new Set(['core', 'extended', 'specialized']);
|
|
99
|
+
const invalidTiers = records.filter((r) => !validTiers.has(r.tier));
|
|
100
|
+
assert(
|
|
101
|
+
invalidTiers.length === 0,
|
|
102
|
+
'All fragments have valid tier values (core/extended/specialized)',
|
|
103
|
+
invalidTiers.map((r) => `${r.id}: "${r.tier}"`).join(', '),
|
|
104
|
+
);
|
|
96
105
|
} catch (error) {
|
|
97
106
|
assert(false, 'tea-index.csv parsed successfully', error.message);
|
|
98
107
|
}
|