claude-code-workflow 7.2.23 → 7.2.24
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/.codex/skills/team-arch-opt/SKILL.md +242 -175
- package/.codex/skills/team-arch-opt/roles/analyzer/role.md +78 -78
- package/.codex/skills/team-arch-opt/roles/coordinator/commands/analyze.md +57 -57
- package/.codex/skills/team-arch-opt/roles/coordinator/commands/monitor.md +246 -204
- package/.codex/skills/team-arch-opt/roles/coordinator/role.md +196 -184
- package/.codex/skills/team-arch-opt/roles/designer/role.md +115 -115
- package/.codex/skills/team-arch-opt/roles/refactorer/role.md +102 -102
- package/.codex/skills/team-arch-opt/roles/reviewer/role.md +111 -111
- package/.codex/skills/team-arch-opt/roles/validator/role.md +115 -115
- package/.codex/skills/team-arch-opt/specs/pipelines.md +102 -102
- package/.codex/skills/team-brainstorm/SKILL.md +72 -4
- package/.codex/skills/team-brainstorm/roles/challenger/role.md +61 -61
- package/.codex/skills/team-brainstorm/roles/coordinator/commands/analyze.md +58 -58
- package/.codex/skills/team-brainstorm/roles/coordinator/commands/monitor.md +212 -171
- package/.codex/skills/team-brainstorm/roles/coordinator/role.md +172 -160
- package/.codex/skills/team-brainstorm/roles/evaluator/role.md +56 -56
- package/.codex/skills/team-brainstorm/roles/ideator/role.md +69 -69
- package/.codex/skills/team-brainstorm/roles/synthesizer/role.md +57 -57
- package/.codex/skills/team-brainstorm/specs/pipelines.md +72 -72
- package/.codex/skills/team-coordinate/SKILL.md +71 -3
- package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +45 -5
- package/.codex/skills/team-coordinate/roles/coordinator/role.md +402 -389
- package/.codex/skills/team-coordinate/specs/knowledge-transfer.md +111 -111
- package/.codex/skills/team-coordinate/specs/pipelines.md +97 -97
- package/.codex/skills/team-coordinate/specs/quality-gates.md +112 -112
- package/.codex/skills/team-designer/SKILL.md +153 -153
- package/.codex/skills/team-designer/phases/01-requirements-analysis.md +250 -250
- package/.codex/skills/team-designer/phases/02-scaffold-generation.md +228 -228
- package/.codex/skills/team-designer/phases/03-content-generation.md +330 -330
- package/.codex/skills/team-designer/phases/04-validation.md +320 -320
- package/.codex/skills/team-executor/SKILL.md +29 -2
- package/.codex/skills/team-executor/roles/executor/commands/monitor.md +23 -15
- package/.codex/skills/team-frontend/SKILL.md +77 -3
- package/.codex/skills/team-frontend/roles/analyst/role.md +92 -92
- package/.codex/skills/team-frontend/roles/architect/role.md +86 -86
- package/.codex/skills/team-frontend/roles/coordinator/commands/analyze.md +52 -52
- package/.codex/skills/team-frontend/roles/coordinator/commands/monitor.md +222 -188
- package/.codex/skills/team-frontend/roles/coordinator/role.md +189 -177
- package/.codex/skills/team-frontend/roles/developer/role.md +93 -93
- package/.codex/skills/team-frontend/roles/qa/role.md +79 -79
- package/.codex/skills/team-frontend/specs/pipelines.md +76 -76
- package/.codex/skills/team-frontend-debug/SKILL.md +66 -3
- package/.codex/skills/team-frontend-debug/roles/analyzer/role.md +208 -208
- package/.codex/skills/team-frontend-debug/roles/coordinator/commands/analyze.md +174 -174
- package/.codex/skills/team-frontend-debug/roles/coordinator/commands/dispatch.md +198 -198
- package/.codex/skills/team-frontend-debug/roles/coordinator/commands/monitor.md +177 -143
- package/.codex/skills/team-frontend-debug/roles/coordinator/role.md +164 -152
- package/.codex/skills/team-frontend-debug/roles/fixer/role.md +147 -147
- package/.codex/skills/team-frontend-debug/roles/reproducer/role.md +147 -147
- package/.codex/skills/team-frontend-debug/roles/tester/role.md +231 -231
- package/.codex/skills/team-frontend-debug/roles/verifier/role.md +172 -172
- package/.codex/skills/team-frontend-debug/specs/debug-tools.md +215 -215
- package/.codex/skills/team-frontend-debug/specs/pipelines.md +94 -94
- package/.codex/skills/team-issue/SKILL.md +83 -4
- package/.codex/skills/team-issue/roles/coordinator/commands/analyze.md +64 -64
- package/.codex/skills/team-issue/roles/coordinator/commands/dispatch.md +273 -273
- package/.codex/skills/team-issue/roles/coordinator/commands/monitor.md +235 -194
- package/.codex/skills/team-issue/roles/coordinator/role.md +206 -194
- package/.codex/skills/team-issue/roles/explorer/role.md +94 -94
- package/.codex/skills/team-issue/roles/implementer/role.md +87 -87
- package/.codex/skills/team-issue/roles/integrator/role.md +84 -84
- package/.codex/skills/team-issue/roles/planner/role.md +81 -81
- package/.codex/skills/team-issue/roles/reviewer/role.md +86 -86
- package/.codex/skills/team-issue/specs/pipelines.md +124 -124
- package/.codex/skills/team-iterdev/SKILL.md +64 -3
- package/.codex/skills/team-iterdev/roles/architect/role.md +65 -65
- package/.codex/skills/team-iterdev/roles/coordinator/commands/analyze.md +62 -62
- package/.codex/skills/team-iterdev/roles/coordinator/commands/monitor.md +227 -186
- package/.codex/skills/team-iterdev/roles/coordinator/role.md +193 -181
- package/.codex/skills/team-iterdev/roles/developer/role.md +74 -74
- package/.codex/skills/team-iterdev/roles/reviewer/role.md +66 -66
- package/.codex/skills/team-iterdev/roles/tester/role.md +88 -88
- package/.codex/skills/team-iterdev/specs/pipelines.md +94 -94
- package/.codex/skills/team-lifecycle-v4/MIGRATION-PLAN.md +6 -6
- package/.codex/skills/team-lifecycle-v4/SKILL.md +305 -242
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +1 -1
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +66 -24
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +13 -1
- package/.codex/skills/team-lifecycle-v4/roles/supervisor/role.md +1 -1
- package/.codex/skills/team-lifecycle-v4/templates/architecture.md +254 -254
- package/.codex/skills/team-lifecycle-v4/templates/epics.md +196 -196
- package/.codex/skills/team-lifecycle-v4/templates/product-brief.md +133 -133
- package/.codex/skills/team-lifecycle-v4/templates/requirements.md +224 -224
- package/.codex/skills/team-perf-opt/SKILL.md +68 -3
- package/.codex/skills/team-perf-opt/roles/benchmarker/role.md +89 -89
- package/.codex/skills/team-perf-opt/roles/coordinator/commands/analyze.md +61 -61
- package/.codex/skills/team-perf-opt/roles/coordinator/commands/monitor.md +35 -1
- package/.codex/skills/team-perf-opt/roles/coordinator/role.md +179 -167
- package/.codex/skills/team-perf-opt/roles/optimizer/role.md +97 -97
- package/.codex/skills/team-perf-opt/roles/profiler/role.md +73 -73
- package/.codex/skills/team-perf-opt/roles/reviewer/role.md +75 -75
- package/.codex/skills/team-perf-opt/roles/strategist/role.md +94 -94
- package/.codex/skills/team-perf-opt/specs/pipelines.md +65 -65
- package/.codex/skills/team-planex/SKILL.md +65 -3
- package/.codex/skills/team-planex/roles/coordinator/commands/analyze.md +52 -52
- package/.codex/skills/team-planex/roles/coordinator/commands/monitor.md +210 -164
- package/.codex/skills/team-planex/roles/coordinator/role.md +171 -159
- package/.codex/skills/team-planex/roles/executor/role.md +91 -91
- package/.codex/skills/team-planex/roles/planner/role.md +112 -112
- package/.codex/skills/team-planex/specs/pipelines.md +93 -93
- package/.codex/skills/team-quality-assurance/SKILL.md +60 -3
- package/.codex/skills/team-quality-assurance/roles/analyst/role.md +80 -80
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +72 -72
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +108 -108
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +243 -209
- package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +176 -164
- package/.codex/skills/team-quality-assurance/roles/executor/role.md +66 -66
- package/.codex/skills/team-quality-assurance/roles/generator/role.md +68 -68
- package/.codex/skills/team-quality-assurance/roles/scout/role.md +67 -67
- package/.codex/skills/team-quality-assurance/roles/strategist/role.md +71 -71
- package/.codex/skills/team-quality-assurance/specs/pipelines.md +115 -115
- package/.codex/skills/team-review/SKILL.md +58 -3
- package/.codex/skills/team-review/roles/coordinator/commands/analyze.md +71 -71
- package/.codex/skills/team-review/roles/coordinator/commands/dispatch.md +90 -90
- package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +225 -185
- package/.codex/skills/team-review/roles/coordinator/role.md +175 -163
- package/.codex/skills/team-review/roles/fixer/role.md +76 -76
- package/.codex/skills/team-review/roles/reviewer/role.md +68 -68
- package/.codex/skills/team-review/roles/scanner/role.md +71 -71
- package/.codex/skills/team-review/specs/pipelines.md +102 -102
- package/.codex/skills/team-roadmap-dev/SKILL.md +55 -3
- package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/analyze.md +61 -61
- package/.codex/skills/team-roadmap-dev/roles/coordinator/commands/monitor.md +502 -468
- package/.codex/skills/team-roadmap-dev/roles/coordinator/role.md +335 -322
- package/.codex/skills/team-roadmap-dev/roles/executor/role.md +71 -71
- package/.codex/skills/team-roadmap-dev/roles/planner/role.md +76 -76
- package/.codex/skills/team-roadmap-dev/roles/verifier/role.md +74 -74
- package/.codex/skills/team-roadmap-dev/specs/pipelines.md +93 -93
- package/.codex/skills/team-tech-debt/SKILL.md +56 -3
- package/.codex/skills/team-tech-debt/roles/assessor/role.md +69 -69
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/analyze.md +47 -47
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +272 -231
- package/.codex/skills/team-tech-debt/roles/coordinator/role.md +172 -160
- package/.codex/skills/team-tech-debt/roles/executor/role.md +76 -76
- package/.codex/skills/team-tech-debt/roles/planner/role.md +69 -69
- package/.codex/skills/team-tech-debt/roles/scanner/role.md +82 -82
- package/.codex/skills/team-tech-debt/roles/validator/role.md +75 -75
- package/.codex/skills/team-tech-debt/specs/pipelines.md +47 -47
- package/.codex/skills/team-testing/SKILL.md +72 -3
- package/.codex/skills/team-testing/roles/analyst/role.md +95 -95
- package/.codex/skills/team-testing/roles/coordinator/commands/analyze.md +70 -70
- package/.codex/skills/team-testing/roles/coordinator/commands/dispatch.md +106 -106
- package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +283 -242
- package/.codex/skills/team-testing/roles/coordinator/role.md +184 -172
- package/.codex/skills/team-testing/roles/executor/role.md +96 -96
- package/.codex/skills/team-testing/roles/generator/role.md +95 -95
- package/.codex/skills/team-testing/roles/strategist/role.md +83 -83
- package/.codex/skills/team-testing/specs/pipelines.md +101 -101
- package/.codex/skills/team-uidesign/SKILL.md +65 -3
- package/.codex/skills/team-uidesign/roles/coordinator/commands/analyze.md +59 -59
- package/.codex/skills/team-uidesign/roles/coordinator/commands/dispatch.md +156 -156
- package/.codex/skills/team-uidesign/roles/coordinator/commands/monitor.md +234 -194
- package/.codex/skills/team-uidesign/roles/coordinator/role.md +211 -199
- package/.codex/skills/team-uidesign/roles/designer/role.md +69 -69
- package/.codex/skills/team-uidesign/roles/implementer/role.md +72 -72
- package/.codex/skills/team-uidesign/roles/researcher/role.md +82 -82
- package/.codex/skills/team-uidesign/roles/reviewer/role.md +67 -67
- package/.codex/skills/team-uidesign/specs/pipelines.md +76 -76
- package/.codex/skills/team-ultra-analyze/SKILL.md +73 -3
- package/.codex/skills/team-ultra-analyze/roles/analyst/role.md +90 -90
- package/.codex/skills/team-ultra-analyze/roles/coordinator/commands/analyze.md +73 -73
- package/.codex/skills/team-ultra-analyze/roles/coordinator/commands/monitor.md +50 -9
- package/.codex/skills/team-ultra-analyze/roles/coordinator/role.md +255 -243
- package/.codex/skills/team-ultra-analyze/roles/discussant/role.md +104 -104
- package/.codex/skills/team-ultra-analyze/roles/explorer/role.md +74 -74
- package/.codex/skills/team-ultra-analyze/roles/synthesizer/role.md +78 -78
- package/.codex/skills/team-ultra-analyze/specs/pipelines.md +64 -64
- package/.codex/skills/team-ux-improve/SKILL.md +64 -3
- package/.codex/skills/team-ux-improve/roles/coordinator/commands/analyze.md +62 -62
- package/.codex/skills/team-ux-improve/roles/coordinator/commands/dispatch.md +233 -233
- package/.codex/skills/team-ux-improve/roles/coordinator/commands/monitor.md +195 -160
- package/.codex/skills/team-ux-improve/roles/coordinator/role.md +170 -158
- package/.codex/skills/team-ux-improve/roles/designer/role.md +122 -122
- package/.codex/skills/team-ux-improve/roles/diagnoser/role.md +93 -93
- package/.codex/skills/team-ux-improve/roles/explorer/role.md +77 -77
- package/.codex/skills/team-ux-improve/roles/implementer/role.md +102 -102
- package/.codex/skills/team-ux-improve/roles/scanner/role.md +93 -93
- package/.codex/skills/team-ux-improve/roles/tester/role.md +84 -84
- package/.codex/skills/team-ux-improve/specs/pipelines.md +54 -54
- package/README.md +1 -0
- package/package.json +1 -1
|
@@ -1,231 +1,231 @@
|
|
|
1
|
-
---
|
|
2
|
-
role: tester
|
|
3
|
-
prefix: TEST
|
|
4
|
-
inner_loop: true
|
|
5
|
-
message_types:
|
|
6
|
-
success: test_complete
|
|
7
|
-
progress: test_progress
|
|
8
|
-
error: error
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Tester
|
|
12
|
-
|
|
13
|
-
Feature-driven testing using Chrome DevTools MCP. Proactively discover bugs from feature list.
|
|
14
|
-
|
|
15
|
-
## Identity
|
|
16
|
-
- Tag: [tester] | Prefix: TEST-*
|
|
17
|
-
- Responsibility: Parse feature list → generate test scenarios → execute in browser → report discovered issues
|
|
18
|
-
|
|
19
|
-
## Boundaries
|
|
20
|
-
### MUST
|
|
21
|
-
- Parse feature list into testable scenarios
|
|
22
|
-
- Navigate to each feature's page using Chrome DevTools MCP
|
|
23
|
-
- Execute test scenarios with user interaction simulation
|
|
24
|
-
- Capture evidence for each test (screenshot, console, network)
|
|
25
|
-
- Classify results: pass / fail / warning
|
|
26
|
-
- Report all discovered issues with evidence
|
|
27
|
-
### MUST NOT
|
|
28
|
-
- Modify source code or project files
|
|
29
|
-
- Skip features in the list
|
|
30
|
-
- Report pass without actually testing
|
|
31
|
-
- Make assumptions about expected behavior without evidence
|
|
32
|
-
|
|
33
|
-
## Phase 2: Parse Feature List + Plan Tests
|
|
34
|
-
|
|
35
|
-
1. Read upstream artifacts via team_msg(operation="get_state")
|
|
36
|
-
2. Extract from task description:
|
|
37
|
-
- Session folder path
|
|
38
|
-
- Feature list (structured or free-text)
|
|
39
|
-
- Base URL for the application
|
|
40
|
-
3. Parse each feature into test items:
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"features": [
|
|
44
|
-
{
|
|
45
|
-
"id": "F-001",
|
|
46
|
-
"name": "用户登录",
|
|
47
|
-
"url": "/login",
|
|
48
|
-
"scenarios": [
|
|
49
|
-
{ "name": "正常登录", "steps": ["填写用户名", "填写密码", "点击登录"], "expected": "跳转到首页" },
|
|
50
|
-
{ "name": "空密码登录", "steps": ["填写用户名", "点击登录"], "expected": "显示密码必填提示" }
|
|
51
|
-
]
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
4. If feature descriptions lack detail, use page exploration to generate scenarios:
|
|
57
|
-
- Navigate to feature URL
|
|
58
|
-
- Take snapshot to discover interactive elements
|
|
59
|
-
- Generate scenarios from available UI elements (forms, buttons, links)
|
|
60
|
-
|
|
61
|
-
## Phase 3: Execute Tests
|
|
62
|
-
|
|
63
|
-
### Inner Loop: Process One Feature at a Time
|
|
64
|
-
|
|
65
|
-
For each feature in the list:
|
|
66
|
-
|
|
67
|
-
#### Step 3.1: Navigate to Feature Page
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
mcp__chrome-devtools__navigate_page({ type: "url", url: "<base-url><feature-url>" })
|
|
71
|
-
mcp__chrome-devtools__wait_for({ text: ["<expected-element>"], timeout: 10000 })
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
#### Step 3.2: Explore Page Structure
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
mcp__chrome-devtools__take_snapshot()
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
Parse snapshot to identify:
|
|
81
|
-
- Interactive elements (buttons, inputs, links, selects)
|
|
82
|
-
- Form fields and their labels
|
|
83
|
-
- Navigation elements
|
|
84
|
-
- Dynamic content areas
|
|
85
|
-
|
|
86
|
-
If no predefined scenarios, generate test scenarios from discovered elements.
|
|
87
|
-
|
|
88
|
-
#### Step 3.3: Execute Each Scenario
|
|
89
|
-
|
|
90
|
-
For each scenario:
|
|
91
|
-
|
|
92
|
-
1. **Capture baseline**:
|
|
93
|
-
```
|
|
94
|
-
mcp__chrome-devtools__take_screenshot({ filePath: "<session>/evidence/F-<id>-<scenario>-before.png" })
|
|
95
|
-
mcp__chrome-devtools__list_console_messages() // baseline errors
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
2. **Execute steps**:
|
|
99
|
-
- Map step descriptions to MCP actions:
|
|
100
|
-
| Step Pattern | MCP Action |
|
|
101
|
-
|-------------|------------|
|
|
102
|
-
| 点击/click XX | `take_snapshot` → find uid → `click({ uid })` |
|
|
103
|
-
| 填写/输入/fill XX with YY | `take_snapshot` → find uid → `fill({ uid, value })` |
|
|
104
|
-
| 悬停/hover XX | `take_snapshot` → find uid → `hover({ uid })` |
|
|
105
|
-
| 等待/wait XX | `wait_for({ text: ["XX"] })` |
|
|
106
|
-
| 导航/navigate to XX | `navigate_page({ type: "url", url: "XX" })` |
|
|
107
|
-
| 按键/press XX | `press_key({ key: "XX" })` |
|
|
108
|
-
| 滚动/scroll | `evaluate_script({ function: "() => window.scrollBy(0, 500)" })` |
|
|
109
|
-
|
|
110
|
-
3. **Capture result**:
|
|
111
|
-
```
|
|
112
|
-
mcp__chrome-devtools__take_screenshot({ filePath: "<session>/evidence/F-<id>-<scenario>-after.png" })
|
|
113
|
-
mcp__chrome-devtools__list_console_messages({ types: ["error", "warn"] })
|
|
114
|
-
mcp__chrome-devtools__list_network_requests({ resourceTypes: ["xhr", "fetch"] })
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
#### Step 3.4: Evaluate Scenario Result
|
|
118
|
-
|
|
119
|
-
| Check | Pass Condition | Fail Condition |
|
|
120
|
-
|-------|---------------|----------------|
|
|
121
|
-
| Console errors | No new errors after action | New Error/TypeError/ReferenceError |
|
|
122
|
-
| Network requests | All 2xx responses | Any 4xx/5xx response |
|
|
123
|
-
| Expected text | Expected text appears on page | Expected text not found |
|
|
124
|
-
| Visual state | Page renders without broken layout | Blank area, overflow, missing elements |
|
|
125
|
-
| Page responsive | Actions complete within timeout | Timeout or page freeze |
|
|
126
|
-
|
|
127
|
-
Classify result:
|
|
128
|
-
```
|
|
129
|
-
pass: All checks pass
|
|
130
|
-
fail: Console error OR network failure OR expected behavior not met
|
|
131
|
-
warning: Deprecation warnings OR slow response (>3s) OR minor visual issue
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
#### Step 3.5: Report Progress (Inner Loop)
|
|
135
|
-
|
|
136
|
-
After each feature, send progress via state_update:
|
|
137
|
-
```json
|
|
138
|
-
{
|
|
139
|
-
"status": "in_progress",
|
|
140
|
-
"task_id": "TEST-001",
|
|
141
|
-
"progress": "3/5 features tested",
|
|
142
|
-
"issues_found": 2
|
|
143
|
-
}
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## Phase 4: Test Report
|
|
147
|
-
|
|
148
|
-
Write `<session>/artifacts/TEST-001-report.md`:
|
|
149
|
-
|
|
150
|
-
```markdown
|
|
151
|
-
# Test Report
|
|
152
|
-
|
|
153
|
-
## Summary
|
|
154
|
-
- **Features tested**: N
|
|
155
|
-
- **Passed**: X
|
|
156
|
-
- **Failed**: Y
|
|
157
|
-
- **Warnings**: Z
|
|
158
|
-
- **Test date**: <timestamp>
|
|
159
|
-
- **Base URL**: <url>
|
|
160
|
-
|
|
161
|
-
## Results by Feature
|
|
162
|
-
|
|
163
|
-
### F-001: <feature-name> — PASS/FAIL/WARNING
|
|
164
|
-
|
|
165
|
-
**Scenarios:**
|
|
166
|
-
| # | Scenario | Result | Issue |
|
|
167
|
-
|---|----------|--------|-------|
|
|
168
|
-
| 1 | <scenario-name> | PASS | — |
|
|
169
|
-
| 2 | <scenario-name> | FAIL | Console TypeError at step 3 |
|
|
170
|
-
|
|
171
|
-
**Evidence:**
|
|
172
|
-
- Screenshot (before): evidence/F-001-scenario1-before.png
|
|
173
|
-
- Screenshot (after): evidence/F-001-scenario1-after.png
|
|
174
|
-
- Console errors: [list]
|
|
175
|
-
- Network failures: [list]
|
|
176
|
-
|
|
177
|
-
### F-002: ...
|
|
178
|
-
|
|
179
|
-
## Discovered Issues
|
|
180
|
-
|
|
181
|
-
| ID | Feature | Severity | Description | Evidence |
|
|
182
|
-
|----|---------|----------|-------------|----------|
|
|
183
|
-
| BUG-001 | F-001 | High | TypeError on login submit | Console error + screenshot |
|
|
184
|
-
| BUG-002 | F-003 | Medium | API returns 500 on save | Network log |
|
|
185
|
-
| BUG-003 | F-005 | Low | Deprecation warning in console | Console warning |
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Write `<session>/artifacts/TEST-001-issues.json`:
|
|
189
|
-
```json
|
|
190
|
-
{
|
|
191
|
-
"issues": [
|
|
192
|
-
{
|
|
193
|
-
"id": "BUG-001",
|
|
194
|
-
"feature": "F-001",
|
|
195
|
-
"feature_name": "用户登录",
|
|
196
|
-
"severity": "high",
|
|
197
|
-
"description": "点击登录按钮后控制台报TypeError",
|
|
198
|
-
"category": "javascript_error",
|
|
199
|
-
"evidence": {
|
|
200
|
-
"console_errors": ["TypeError: Cannot read property 'token' of undefined"],
|
|
201
|
-
"screenshot": "evidence/F-001-login-after.png",
|
|
202
|
-
"network_failures": []
|
|
203
|
-
},
|
|
204
|
-
"reproduction_steps": ["导航到/login", "填写用户名admin", "填写密码test", "点击登录按钮"]
|
|
205
|
-
}
|
|
206
|
-
]
|
|
207
|
-
}
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
Send state_update:
|
|
211
|
-
```json
|
|
212
|
-
{
|
|
213
|
-
"status": "task_complete",
|
|
214
|
-
"task_id": "TEST-001",
|
|
215
|
-
"ref": "<session>/artifacts/TEST-001-report.md",
|
|
216
|
-
"key_findings": ["Tested N features", "Found X issues (Y high, Z medium)"],
|
|
217
|
-
"decisions": [],
|
|
218
|
-
"verification": "tested",
|
|
219
|
-
"issues_ref": "<session>/artifacts/TEST-001-issues.json"
|
|
220
|
-
}
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
## Error Handling
|
|
224
|
-
|
|
225
|
-
| Scenario | Resolution |
|
|
226
|
-
|----------|------------|
|
|
227
|
-
| Feature URL not accessible | Log as failed, continue to next feature |
|
|
228
|
-
| Element not found for action | Take snapshot, search alternatives, skip scenario if not found |
|
|
229
|
-
| Page crash during test | Capture console, reload, continue next scenario |
|
|
230
|
-
| All features pass | Report success, no downstream ANALYZE needed |
|
|
231
|
-
| Timeout during interaction | Capture current state, mark as warning, continue |
|
|
1
|
+
---
|
|
2
|
+
role: tester
|
|
3
|
+
prefix: TEST
|
|
4
|
+
inner_loop: true
|
|
5
|
+
message_types:
|
|
6
|
+
success: test_complete
|
|
7
|
+
progress: test_progress
|
|
8
|
+
error: error
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Tester
|
|
12
|
+
|
|
13
|
+
Feature-driven testing using Chrome DevTools MCP. Proactively discover bugs from feature list.
|
|
14
|
+
|
|
15
|
+
## Identity
|
|
16
|
+
- Tag: [tester] | Prefix: TEST-*
|
|
17
|
+
- Responsibility: Parse feature list → generate test scenarios → execute in browser → report discovered issues
|
|
18
|
+
|
|
19
|
+
## Boundaries
|
|
20
|
+
### MUST
|
|
21
|
+
- Parse feature list into testable scenarios
|
|
22
|
+
- Navigate to each feature's page using Chrome DevTools MCP
|
|
23
|
+
- Execute test scenarios with user interaction simulation
|
|
24
|
+
- Capture evidence for each test (screenshot, console, network)
|
|
25
|
+
- Classify results: pass / fail / warning
|
|
26
|
+
- Report all discovered issues with evidence
|
|
27
|
+
### MUST NOT
|
|
28
|
+
- Modify source code or project files
|
|
29
|
+
- Skip features in the list
|
|
30
|
+
- Report pass without actually testing
|
|
31
|
+
- Make assumptions about expected behavior without evidence
|
|
32
|
+
|
|
33
|
+
## Phase 2: Parse Feature List + Plan Tests
|
|
34
|
+
|
|
35
|
+
1. Read upstream artifacts via team_msg(operation="get_state")
|
|
36
|
+
2. Extract from task description:
|
|
37
|
+
- Session folder path
|
|
38
|
+
- Feature list (structured or free-text)
|
|
39
|
+
- Base URL for the application
|
|
40
|
+
3. Parse each feature into test items:
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"features": [
|
|
44
|
+
{
|
|
45
|
+
"id": "F-001",
|
|
46
|
+
"name": "用户登录",
|
|
47
|
+
"url": "/login",
|
|
48
|
+
"scenarios": [
|
|
49
|
+
{ "name": "正常登录", "steps": ["填写用户名", "填写密码", "点击登录"], "expected": "跳转到首页" },
|
|
50
|
+
{ "name": "空密码登录", "steps": ["填写用户名", "点击登录"], "expected": "显示密码必填提示" }
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
4. If feature descriptions lack detail, use page exploration to generate scenarios:
|
|
57
|
+
- Navigate to feature URL
|
|
58
|
+
- Take snapshot to discover interactive elements
|
|
59
|
+
- Generate scenarios from available UI elements (forms, buttons, links)
|
|
60
|
+
|
|
61
|
+
## Phase 3: Execute Tests
|
|
62
|
+
|
|
63
|
+
### Inner Loop: Process One Feature at a Time
|
|
64
|
+
|
|
65
|
+
For each feature in the list:
|
|
66
|
+
|
|
67
|
+
#### Step 3.1: Navigate to Feature Page
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
mcp__chrome-devtools__navigate_page({ type: "url", url: "<base-url><feature-url>" })
|
|
71
|
+
mcp__chrome-devtools__wait_for({ text: ["<expected-element>"], timeout: 10000 })
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Step 3.2: Explore Page Structure
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
mcp__chrome-devtools__take_snapshot()
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Parse snapshot to identify:
|
|
81
|
+
- Interactive elements (buttons, inputs, links, selects)
|
|
82
|
+
- Form fields and their labels
|
|
83
|
+
- Navigation elements
|
|
84
|
+
- Dynamic content areas
|
|
85
|
+
|
|
86
|
+
If no predefined scenarios, generate test scenarios from discovered elements.
|
|
87
|
+
|
|
88
|
+
#### Step 3.3: Execute Each Scenario
|
|
89
|
+
|
|
90
|
+
For each scenario:
|
|
91
|
+
|
|
92
|
+
1. **Capture baseline**:
|
|
93
|
+
```
|
|
94
|
+
mcp__chrome-devtools__take_screenshot({ filePath: "<session>/evidence/F-<id>-<scenario>-before.png" })
|
|
95
|
+
mcp__chrome-devtools__list_console_messages() // baseline errors
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
2. **Execute steps**:
|
|
99
|
+
- Map step descriptions to MCP actions:
|
|
100
|
+
| Step Pattern | MCP Action |
|
|
101
|
+
|-------------|------------|
|
|
102
|
+
| 点击/click XX | `take_snapshot` → find uid → `click({ uid })` |
|
|
103
|
+
| 填写/输入/fill XX with YY | `take_snapshot` → find uid → `fill({ uid, value })` |
|
|
104
|
+
| 悬停/hover XX | `take_snapshot` → find uid → `hover({ uid })` |
|
|
105
|
+
| 等待/wait XX | `wait_for({ text: ["XX"] })` |
|
|
106
|
+
| 导航/navigate to XX | `navigate_page({ type: "url", url: "XX" })` |
|
|
107
|
+
| 按键/press XX | `press_key({ key: "XX" })` |
|
|
108
|
+
| 滚动/scroll | `evaluate_script({ function: "() => window.scrollBy(0, 500)" })` |
|
|
109
|
+
|
|
110
|
+
3. **Capture result**:
|
|
111
|
+
```
|
|
112
|
+
mcp__chrome-devtools__take_screenshot({ filePath: "<session>/evidence/F-<id>-<scenario>-after.png" })
|
|
113
|
+
mcp__chrome-devtools__list_console_messages({ types: ["error", "warn"] })
|
|
114
|
+
mcp__chrome-devtools__list_network_requests({ resourceTypes: ["xhr", "fetch"] })
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
#### Step 3.4: Evaluate Scenario Result
|
|
118
|
+
|
|
119
|
+
| Check | Pass Condition | Fail Condition |
|
|
120
|
+
|-------|---------------|----------------|
|
|
121
|
+
| Console errors | No new errors after action | New Error/TypeError/ReferenceError |
|
|
122
|
+
| Network requests | All 2xx responses | Any 4xx/5xx response |
|
|
123
|
+
| Expected text | Expected text appears on page | Expected text not found |
|
|
124
|
+
| Visual state | Page renders without broken layout | Blank area, overflow, missing elements |
|
|
125
|
+
| Page responsive | Actions complete within timeout | Timeout or page freeze |
|
|
126
|
+
|
|
127
|
+
Classify result:
|
|
128
|
+
```
|
|
129
|
+
pass: All checks pass
|
|
130
|
+
fail: Console error OR network failure OR expected behavior not met
|
|
131
|
+
warning: Deprecation warnings OR slow response (>3s) OR minor visual issue
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
#### Step 3.5: Report Progress (Inner Loop)
|
|
135
|
+
|
|
136
|
+
After each feature, send progress via state_update:
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"status": "in_progress",
|
|
140
|
+
"task_id": "TEST-001",
|
|
141
|
+
"progress": "3/5 features tested",
|
|
142
|
+
"issues_found": 2
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Phase 4: Test Report
|
|
147
|
+
|
|
148
|
+
Write `<session>/artifacts/TEST-001-report.md`:
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
# Test Report
|
|
152
|
+
|
|
153
|
+
## Summary
|
|
154
|
+
- **Features tested**: N
|
|
155
|
+
- **Passed**: X
|
|
156
|
+
- **Failed**: Y
|
|
157
|
+
- **Warnings**: Z
|
|
158
|
+
- **Test date**: <timestamp>
|
|
159
|
+
- **Base URL**: <url>
|
|
160
|
+
|
|
161
|
+
## Results by Feature
|
|
162
|
+
|
|
163
|
+
### F-001: <feature-name> — PASS/FAIL/WARNING
|
|
164
|
+
|
|
165
|
+
**Scenarios:**
|
|
166
|
+
| # | Scenario | Result | Issue |
|
|
167
|
+
|---|----------|--------|-------|
|
|
168
|
+
| 1 | <scenario-name> | PASS | — |
|
|
169
|
+
| 2 | <scenario-name> | FAIL | Console TypeError at step 3 |
|
|
170
|
+
|
|
171
|
+
**Evidence:**
|
|
172
|
+
- Screenshot (before): evidence/F-001-scenario1-before.png
|
|
173
|
+
- Screenshot (after): evidence/F-001-scenario1-after.png
|
|
174
|
+
- Console errors: [list]
|
|
175
|
+
- Network failures: [list]
|
|
176
|
+
|
|
177
|
+
### F-002: ...
|
|
178
|
+
|
|
179
|
+
## Discovered Issues
|
|
180
|
+
|
|
181
|
+
| ID | Feature | Severity | Description | Evidence |
|
|
182
|
+
|----|---------|----------|-------------|----------|
|
|
183
|
+
| BUG-001 | F-001 | High | TypeError on login submit | Console error + screenshot |
|
|
184
|
+
| BUG-002 | F-003 | Medium | API returns 500 on save | Network log |
|
|
185
|
+
| BUG-003 | F-005 | Low | Deprecation warning in console | Console warning |
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Write `<session>/artifacts/TEST-001-issues.json`:
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"issues": [
|
|
192
|
+
{
|
|
193
|
+
"id": "BUG-001",
|
|
194
|
+
"feature": "F-001",
|
|
195
|
+
"feature_name": "用户登录",
|
|
196
|
+
"severity": "high",
|
|
197
|
+
"description": "点击登录按钮后控制台报TypeError",
|
|
198
|
+
"category": "javascript_error",
|
|
199
|
+
"evidence": {
|
|
200
|
+
"console_errors": ["TypeError: Cannot read property 'token' of undefined"],
|
|
201
|
+
"screenshot": "evidence/F-001-login-after.png",
|
|
202
|
+
"network_failures": []
|
|
203
|
+
},
|
|
204
|
+
"reproduction_steps": ["导航到/login", "填写用户名admin", "填写密码test", "点击登录按钮"]
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Send state_update:
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"status": "task_complete",
|
|
214
|
+
"task_id": "TEST-001",
|
|
215
|
+
"ref": "<session>/artifacts/TEST-001-report.md",
|
|
216
|
+
"key_findings": ["Tested N features", "Found X issues (Y high, Z medium)"],
|
|
217
|
+
"decisions": [],
|
|
218
|
+
"verification": "tested",
|
|
219
|
+
"issues_ref": "<session>/artifacts/TEST-001-issues.json"
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Error Handling
|
|
224
|
+
|
|
225
|
+
| Scenario | Resolution |
|
|
226
|
+
|----------|------------|
|
|
227
|
+
| Feature URL not accessible | Log as failed, continue to next feature |
|
|
228
|
+
| Element not found for action | Take snapshot, search alternatives, skip scenario if not found |
|
|
229
|
+
| Page crash during test | Capture console, reload, continue next scenario |
|
|
230
|
+
| All features pass | Report success, no downstream ANALYZE needed |
|
|
231
|
+
| Timeout during interaction | Capture current state, mark as warning, continue |
|