jarvis-agent-factory 4.7.39 → 4.7.40
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/dist/package.json +1 -1
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/plugin.json +1 -1
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/behavioral-guidelines/SKILL.md +212 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/browser-testing/SKILL.md +270 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/chinese-documentation/SKILL.md +450 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/code-quality-gate/SKILL.md +83 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/code-review-and-quality/SKILL.md +317 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/code-simplification/SKILL.md +165 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/code-standards/SKILL.md +82 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/concurrency-policy/SKILL.md +109 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/context-engineering/SKILL.md +248 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/debugging-and-error-recovery/SKILL.md +211 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/debugging-deep/SKILL.md +271 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/documentation-and-adrs/SKILL.md +508 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/find-docs/SKILL.md +60 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/finishing-a-development-branch/SKILL.md +168 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/frontend-design/SKILL.md +47 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/git-workflow-and-versioning/SKILL.md +221 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/idea-refine/SKILL.md +135 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/incremental-implementation/SKILL.md +147 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/mcp-builder/SKILL.md +257 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/perf-testing/SKILL.md +227 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/planning-and-task-breakdown/SKILL.md +215 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/refactoring/SKILL.md +204 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/security-and-hardening/SKILL.md +358 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/security-testing/SKILL.md +231 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/session-memory/SKILL.md +50 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/shipping-and-launch/SKILL.md +496 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/source-driven-development/SKILL.md +162 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/spec-driven-development/SKILL.md +221 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/test-data-factory/SKILL.md +194 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/test-driven-development/SKILL.md +170 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/using-agent-skills/SKILL.md +212 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/verification-before-completion/SKILL.md +165 -0
- package/dist/src/templates/platforms/claude/plugins/jarvis-agent-factory/skills/writing-skills/SKILL.md +656 -0
- package/package.json +1 -1
package/dist/package.json
CHANGED
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
"repository": "https://github.com/Wjl1224734792/Jarvis-Agent-Factory",
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"keywords": ["jarvis", "agent", "multi-agent", "orchestration", "pipeline"],
|
|
10
|
-
"skills": ["./skills/
|
|
10
|
+
"skills": ["./skills/"],
|
|
11
11
|
"commands": ["./commands/"]
|
|
12
12
|
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: behavioral-guidelines
|
|
3
|
+
description: "所有智能体的通用行为准则——减少 LLM 编码常见错误。以谨慎为默认姿态,在编码前先思考、保持简洁、精准修改、目标驱动执行。"
|
|
4
|
+
version: "4.3.8"
|
|
5
|
+
updated: "2026-05-14"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
此技能面向所有智能体(编排者、实现者、审查者、规划者、探索者),无论角色,均须遵守。
|
|
9
|
+
|
|
10
|
+
**权衡:以下准则偏向谨慎而非速度。对简单任务可自行判断。**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 何时使用 / 何时不使用
|
|
15
|
+
|
|
16
|
+
**何时使用:** 此技能适用于一切涉及代码修改、决策、审查或规划的任务。无论复杂度。
|
|
17
|
+
|
|
18
|
+
**何时不使用:** 纯信息查询("这个函数怎么用?")、现状确认("现在有几个模块?")——但仍需遵守"先思考再编码"的精神。对于真正简单单一行的修改,准则 3(精准修改)依然适用。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 准则 1:先思考,再编码
|
|
23
|
+
|
|
24
|
+
**不假设。不隐藏困惑。主动暴露权衡。**
|
|
25
|
+
|
|
26
|
+
实现前:
|
|
27
|
+
- 明确陈述你的假设。如有疑问,立即提出。
|
|
28
|
+
- 若存在多种理解,全部列出——不要默默选择一个。
|
|
29
|
+
- 若存在更简单的方案,直接指出。在合理时提出异议。
|
|
30
|
+
- 若某事不清晰,立即停止。明确说出困惑所在。主动询问。
|
|
31
|
+
|
|
32
|
+
**反模式:** 看到一个模棱两可的需求后,不提问就挑选一个看似合理的解释去实现。
|
|
33
|
+
|
|
34
|
+
### 常见合理化借口
|
|
35
|
+
|
|
36
|
+
| 合理化借口 | 现实 |
|
|
37
|
+
|-----------|------|
|
|
38
|
+
| "我大概理解了,先开始做" | 模糊的理解 = 代码不符合预期 = 重写。10 秒确认比 10 分钟重写划算。 |
|
|
39
|
+
| "已经有很多上下文了,我能推断" | 推断 = 猜测。用户没说出来的,默认不存在。 |
|
|
40
|
+
| "问太多显得不专业" | 不问就实现错才不专业。澄清问题是专业工程师的标志。 |
|
|
41
|
+
| "这只是一种可能的理解,我按最常见的做" | 列出其他理解。让用户选择。不要替用户做假设。 |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 准则 2:简单优先
|
|
46
|
+
|
|
47
|
+
**用最少代码解决问题。不做投机性工作。**
|
|
48
|
+
|
|
49
|
+
- 不添加需求之外的功能。
|
|
50
|
+
- 不为单一用途代码创建抽象。
|
|
51
|
+
- 不实现未被要求的"灵活性"或"可配置性"。
|
|
52
|
+
- 不为不可能发生的场景做错误处理。
|
|
53
|
+
- 如果写了 200 行但 50 行就够了,重写它。
|
|
54
|
+
|
|
55
|
+
自问:**"高级工程师会说这是过度设计吗?"** 若是,简化。
|
|
56
|
+
|
|
57
|
+
**反模式:** 为了"将来可能需要"而添加一个扩展点、配置项或抽象层。
|
|
58
|
+
|
|
59
|
+
### 常见合理化借口
|
|
60
|
+
|
|
61
|
+
| 合理化借口 | 现实 |
|
|
62
|
+
|-----------|------|
|
|
63
|
+
| "加个配置选项,以后可能会用到" | YAGNI。没被要求的功能 = 没有价值。加代码容易删代码难。 |
|
|
64
|
+
| "抽象出来以后好扩展" | 单一用途的抽象 = 过度设计。只有在第二种用途出现时才抽象。 |
|
|
65
|
+
| "这样子更'灵活'" | 灵活性不是免费的。每条 if 分支都是测试成本和维护成本。 |
|
|
66
|
+
| "200 行也没关系,分得很清楚" | 如果 50 行能说清楚,200 行就是过度。清晰 ≠ 冗长。 |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 准则 3:精准修改
|
|
71
|
+
|
|
72
|
+
**只动必须动的。只清理自己造成的混乱。**
|
|
73
|
+
|
|
74
|
+
编辑现有代码时:
|
|
75
|
+
- 不"优化"相邻代码、注释或格式。
|
|
76
|
+
- 不重构没有问题的东西。
|
|
77
|
+
- 遵循现有风格,即使你个人会写得不一致。
|
|
78
|
+
- 若发现无关的遗留死代码,提及它——但不要删除。
|
|
79
|
+
|
|
80
|
+
当你的改动造成孤儿代码时:
|
|
81
|
+
- 移除因你的改动而变得无用的 import/变量/函数。
|
|
82
|
+
- 不要删除预先存在的死代码,除非被要求。
|
|
83
|
+
|
|
84
|
+
**检验标准:** 每个改动行都应能直接追溯到用户的请求。
|
|
85
|
+
|
|
86
|
+
**反模式:** 在修复一个 bug 时顺手"重构"了所在文件的导入风格。
|
|
87
|
+
|
|
88
|
+
### 常见合理化借口
|
|
89
|
+
|
|
90
|
+
| 合理化借口 | 现实 |
|
|
91
|
+
|-----------|------|
|
|
92
|
+
| "顺便把格式对齐一下,不耽误事" | 无关改动 = 增加 review 噪声 = 掩盖真正的问题。格式问题另外提 PR。 |
|
|
93
|
+
| "这个 import 没用了,顺便删了" | 如果这个 import 不是你的改动造成的,提及它但不要动手。 |
|
|
94
|
+
| "这个文件风格和项目不一致,我统一一下" | 风格一致性是好事——但不在这个 PR 里。另开一个纯粹的风格 PR。 |
|
|
95
|
+
| "只是改了一个变量名,很安全" | 变量名变更可能破坏外部引用、序列化、或文档。确认安全后再改。 |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 准则 4:目标驱动执行
|
|
100
|
+
|
|
101
|
+
**定义成功标准。循环验证直至通过。**
|
|
102
|
+
|
|
103
|
+
将任务转化为可验证的目标:
|
|
104
|
+
| 用户说的 | 转化为 |
|
|
105
|
+
|---------|--------|
|
|
106
|
+
| "添加验证" | 为无效输入编写测试,然后使其通过 |
|
|
107
|
+
| "修复 bug" | 编写能复现它的测试,然后使其通过 |
|
|
108
|
+
| "重构 X" | 确保重构前后测试均通过 |
|
|
109
|
+
|
|
110
|
+
对于多步骤任务,陈述简要计划:
|
|
111
|
+
```
|
|
112
|
+
1. [步骤] → 验证: [检查项]
|
|
113
|
+
2. [步骤] → 验证: [检查项]
|
|
114
|
+
3. [步骤] → 验证: [检查项]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
强的成功标准让你能独立循环迭代。弱的标准("让它能工作")则需要持续澄清。
|
|
118
|
+
|
|
119
|
+
**反模式:** 说"已完成"但没有运行任何验证命令来证明。
|
|
120
|
+
|
|
121
|
+
### 常见合理化借口
|
|
122
|
+
|
|
123
|
+
| 合理化借口 | 现实 |
|
|
124
|
+
|-----------|------|
|
|
125
|
+
| "测试待会再跑,我先改了再说" | 先写测试确保你理解了需求。先改代码再补测试 = 测试适配代码而非需求。 |
|
|
126
|
+
| "我看输出就知道对不对了" | 人工检查不可靠、不可重复。自动化验证 = 事实。 |
|
|
127
|
+
| "步骤很简单,不需要列计划" | 不写下来 = 可能漏步骤。3 步计划 30 秒写完。 |
|
|
128
|
+
| "我跑过测试了,都通过了" | 跑的是什么测试?展示结果。没有证据 = 没有完成。 |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 红线
|
|
133
|
+
|
|
134
|
+
以下是危险信号——当你冒出这些想法时立即停止:
|
|
135
|
+
|
|
136
|
+
| 危险信号 | 检查 |
|
|
137
|
+
|---------|------|
|
|
138
|
+
| "这个很简单,我不需要..." | 这几乎总是需要。检查行为准则。 |
|
|
139
|
+
| "我顺便也修一下..." | 不是你的任务范围。停下来,只做被要求的。 |
|
|
140
|
+
| "这样写更灵活,虽然没被要求..." | YAGNI 违规。删除未要求的灵活性。 |
|
|
141
|
+
| "我觉得已经对了..." | "觉得"不够。有什么证据? |
|
|
142
|
+
| "就改一行,不会出问题..." | 一行也能引入 bug。改了就要验证。 |
|
|
143
|
+
| "不用看现有代码,我知道怎么实现..." | 项目有历史。现有模式是你最好的指南。先读再写。 |
|
|
144
|
+
| "这看起来是死代码,删掉..." | 切斯特顿之栏。你不知道为什么它在那里。先问再删。 |
|
|
145
|
+
| "我都快做完了,补个测试就行..." | 测试不是补丁。在编码之前或同时写测试,不是之后。 |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 生效标志
|
|
152
|
+
|
|
153
|
+
**这些准则生效的标志:**
|
|
154
|
+
|
|
155
|
+
- diff 中不必要的改动减少(非用户请求的变更行 < 总变更行的 5%)
|
|
156
|
+
- 因过度设计导致的重写减少(不会出现"这个抽象层太复杂了,重写吧")
|
|
157
|
+
- 澄清性问题在实现前提出,而非出错后(问题数量在编码前 > 编码后)
|
|
158
|
+
- 每个改动都能说清楚对应哪个用户请求
|
|
159
|
+
- code review 不再标注大量"行为准则违规"类 finding
|
|
160
|
+
- 不会出现"我顺便也做了个功能但没说要"的情况
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 实施指令
|
|
165
|
+
|
|
166
|
+
### 对于编排者(Jarvis)
|
|
167
|
+
|
|
168
|
+
1. 在开始任何编排会话时加载此技能。
|
|
169
|
+
2. 在调用 Task 工具向子代理传递 Execution Packet 时,附上上述四项准则摘要。
|
|
170
|
+
3. 若有子代理的回传显示可能违反了某项准则(例如改动了无关文件),在 Gate 检查时予以纠正。
|
|
171
|
+
|
|
172
|
+
### 对于子代理
|
|
173
|
+
|
|
174
|
+
1. 在执行任何分配任务前,回顾并确认自己已理解上述四项准则。
|
|
175
|
+
2. 在输出 `Execution Acknowledgement` 时确认:"我已理解并遵守 behavioral-guidelines 各项准则。"
|
|
176
|
+
3. 若判断简单任务且准则中某项可能带来不必要的开销,可以在 acknowledge 中说明理由后简化——但必须显式说明。
|
|
177
|
+
|
|
178
|
+
### 对于审查类代理
|
|
179
|
+
|
|
180
|
+
1. 在 `Findings` 中额外标注违反行为准则的改动(标记为行为准则违规):
|
|
181
|
+
- 准则 2 违规:不必要的抽象、过度配置化
|
|
182
|
+
- 准则 3 违规:相邻代码被无关修改、无故删除死代码
|
|
183
|
+
2. 准则级违规不替代功能级缺陷——分别列出。
|
|
184
|
+
|
|
185
|
+
## 相关技能
|
|
186
|
+
|
|
187
|
+
- **[code-simplification](../code-simplification/SKILL.md)** — 准则 2 的深度实践:结构化代码简化流程、切斯特顿之栏
|
|
188
|
+
- **[context-engineering](../context-engineering/SKILL.md)** — 准则 1 的深度实践:上下文管理、混淆处理、内联规划模式
|
|
189
|
+
- **[code-standards](../code-standards/SKILL.md)** — 准则 1-4 的编码落地:注释、嵌套、不可变、模块化、设计原则、DDD、TDD、数据库外键
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 准则 5:注释语言约定
|
|
194
|
+
|
|
195
|
+
代码注释跟随项目已有语言:中文项目用中文注释,英文项目用英文注释。不确定时检查已有代码文件的注释语言。
|
|
196
|
+
|
|
197
|
+
此约定适用于所有智能体,无需在各 agent 中重复声明。
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 准则 6:多模态回退
|
|
202
|
+
|
|
203
|
+
**当模型缺乏多模态能力时,使用截图 + 文字描述作为回退方案。**
|
|
204
|
+
|
|
205
|
+
当任务涉及图像、截图或视频分析时,若当前模型不支持多模态能力:
|
|
206
|
+
1. 使用 Playwright MCP 工具 (`browser_take_screenshot`) 截取页面截图
|
|
207
|
+
2. 结合 `browser_snapshot` 获取页面可访问性快照(含元素结构和文本)
|
|
208
|
+
3. 通过页面 DOM 状态和文本内容推断视觉问题
|
|
209
|
+
|
|
210
|
+
**适用场景:** 审查 UI 布局、检查设计稿、分析浏览器截图等需要视觉理解的场景。
|
|
211
|
+
|
|
212
|
+
此约定适用于所有智能体,无需在各 agent 中重复声明。
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: browser-testing
|
|
3
|
+
description: "浏览器自动化测试方法论——混合模式测试:agent-browser(看清)+ Playwright MCP(操作)。精确获取页面结构 + 稳定执行交互操作。用于 /browser-test 和 /bug-fix 命令的执行。"
|
|
4
|
+
version: "4.7.25"
|
|
5
|
+
updated: "2026-05-25"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 浏览器自动化测试
|
|
9
|
+
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
**混合模式:agent-browser(看清)+ Playwright MCP(操作)**
|
|
13
|
+
|
|
14
|
+
本质:**精确获取 + 稳定执行**——agent-browser snapshot -i 以极低成本获取页面结构(DOM 快照 + 元素引用),Playwright MCP 负责可靠的交互操作(点击/填写/导航/截图)。
|
|
15
|
+
|
|
16
|
+
- **agent-browser snapshot -i**:廉价页面结构获取,返回元素引用(@ref),token 消耗极低
|
|
17
|
+
- **Playwright MCP**:稳定执行交互——browser_click / browser_type / browser_navigate / browser_take_screenshot 等,CI 可重复
|
|
18
|
+
- **agent-browser CLI**:补充操作——console 日志、network 请求、viewport 调整等诊断能力
|
|
19
|
+
|
|
20
|
+
**前置条件:** `agent-browser` 已安装(`npm i -g agent-browser && agent-browser install`),Playwright MCP 已配置。
|
|
21
|
+
|
|
22
|
+
## 测试用例格式
|
|
23
|
+
|
|
24
|
+
每条用例输出到 `.jarvis/YYYY-MM-DD/testing/<topic>-browser-test-cases.md`:
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
### TC-001: <用例名称>
|
|
28
|
+
- **前置条件**:<URL、登录状态、数据准备>
|
|
29
|
+
- **操作步骤**:
|
|
30
|
+
1. 导航到 <页面>
|
|
31
|
+
2. 点击/输入 <元素>
|
|
32
|
+
3. 验证 <结果>
|
|
33
|
+
- **预期结果**:<具体可验证的结果>
|
|
34
|
+
- **验证方式**:截图 / 状态检查 / 元素文本匹配
|
|
35
|
+
- **优先级**:P0(阻塞)/ P1(重要)/ P2(次要)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 执行流程
|
|
39
|
+
|
|
40
|
+
按优先级从高到低逐条执行。
|
|
41
|
+
|
|
42
|
+
### 初始化:打开浏览器
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
agent-browser open <url> # 默认无头,加 --headed 可见
|
|
46
|
+
agent-browser profile list # 若需复用 Chrome 登录态,先查 profile
|
|
47
|
+
agent-browser --profile "Default" open <url> # 使用现有 Chrome 登录态
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 每条用例的标准操作序列(混合模式)
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 1. 获取页面快照(agent-browser 精确获取元素引用)
|
|
54
|
+
agent-browser snapshot -i
|
|
55
|
+
|
|
56
|
+
# 2. 交互操作(Playwright MCP 稳定执行)
|
|
57
|
+
mcp__playwright__browser_click({target: "<element-ref>"}) # 点击元素
|
|
58
|
+
mcp__playwright__browser_type({target: "<ref>", text: "..."}) # 输入文本
|
|
59
|
+
mcp__playwright__browser_press_key({key: "Enter"}) # 按键
|
|
60
|
+
mcp__playwright__browser_navigate({url: "<URL>"}) # 导航
|
|
61
|
+
mcp__playwright__browser_hover({target: "<ref>"}) # 悬停
|
|
62
|
+
|
|
63
|
+
# 3. 截图留证(Playwright MCP)
|
|
64
|
+
mcp__playwright__browser_take_screenshot({type: "png"}) # 截图
|
|
65
|
+
mcp__playwright__browser_take_screenshot({fullPage: true}) # 全页截图
|
|
66
|
+
|
|
67
|
+
# 4. 验证(agent-browser 诊断 + Playwright 快照)
|
|
68
|
+
agent-browser snapshot -i # 确认元素引用变化
|
|
69
|
+
mcp__playwright__browser_snapshot() # Playwright 无障碍快照
|
|
70
|
+
agent-browser console # 检查控制台日志
|
|
71
|
+
agent-browser errors # 检查 JS 异常
|
|
72
|
+
agent-browser network requests --filter api # 检查 API 请求
|
|
73
|
+
agent-browser get url # 确认当前 URL
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**执行规则:**
|
|
77
|
+
- agent-browser snapshot -i 获取元素引用(看清),Playwright MCP 执行操作(执行)
|
|
78
|
+
- 每次关键交互后截图(点击按钮、提交表单、页面跳转后)
|
|
79
|
+
- 失败立即记录,截图保存失败状态
|
|
80
|
+
- 前置条件不满足则标记"跳过",写明原因
|
|
81
|
+
- 页面异常时 `agent-browser close` 清理后重试
|
|
82
|
+
- 不用硬等待;用 `agent-browser wait "<selector>"` 或 Playwright `browser_wait_for` 确认页面状态
|
|
83
|
+
|
|
84
|
+
## Bug 复现模式
|
|
85
|
+
|
|
86
|
+
接到 Bug 报告后:
|
|
87
|
+
|
|
88
|
+
1. 读取复现步骤
|
|
89
|
+
2. `agent-browser open <url>` → `agent-browser snapshot -i` → 逐步执行操作
|
|
90
|
+
3. 异常发生时立即截图:`agent-browser screenshot bug-xxx.png` + `agent-browser screenshot --annotate`
|
|
91
|
+
4. 收集证据:
|
|
92
|
+
- `agent-browser console` — JS 错误
|
|
93
|
+
- `agent-browser errors` — 未捕获异常
|
|
94
|
+
- `agent-browser network requests` — 失败的网络请求
|
|
95
|
+
- `agent-browser get text @eN` — 页面异常文本
|
|
96
|
+
5. 尝试至少 1 个变体确认触发边界
|
|
97
|
+
6. 输出复现证据:截图路径、操作步骤、实际 vs 预期
|
|
98
|
+
|
|
99
|
+
## 响应式/多视口测试
|
|
100
|
+
|
|
101
|
+
对于需要验证响应式的页面:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
agent-browser set viewport 375 812 # 移动端
|
|
105
|
+
agent-browser screenshot mobile.png
|
|
106
|
+
agent-browser set viewport 768 1024 # 平板
|
|
107
|
+
agent-browser screenshot tablet.png
|
|
108
|
+
agent-browser set viewport 1280 800 # 桌面
|
|
109
|
+
agent-browser screenshot desktop.png
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## 本地开发环境测试
|
|
113
|
+
|
|
114
|
+
### 工具可用性矩阵
|
|
115
|
+
|
|
116
|
+
| 平台/环境 | Preview MCP | agent-browser CLI | Playwright MCP | Chrome DevTools MCP |
|
|
117
|
+
|-----------|------------|-------------------|----------------|---------------------|
|
|
118
|
+
| Claude Code(桌面版) | ✅ 可用 | ✅ 可用 | ✅ 可用 | ✅ 可用 |
|
|
119
|
+
| Claude Code(终端/CLI) | ❌ 不可用 | ✅ 可用 | ✅ 可用 | ✅ 可用 |
|
|
120
|
+
| OpenCode | ❌ 不可用 | ✅ 可用 | ✅ 可用 | ✅ 可用 |
|
|
121
|
+
| Codex | ❌ 不可用 | ✅ 可用 | ✅ 可用 | ✅ 可用 |
|
|
122
|
+
|
|
123
|
+
> **混合模式**:agent-browser snapshot -i 精确获取页面结构(看清),Playwright MCP 稳定执行交互操作(操作)。Chrome DevTools MCP 用于前端调试(性能追踪/渲染分析/网络诊断/控制台调试)。
|
|
124
|
+
|
|
125
|
+
### 方案 A:有 Preview MCP 时(Claude Code 桌面版)
|
|
126
|
+
|
|
127
|
+
1. `mcp__Claude_Preview__preview_list` — 检查是否已有运行中的预览服务器
|
|
128
|
+
2. 若未运行且 `.claude/launch.json` 已配置:
|
|
129
|
+
```
|
|
130
|
+
mcp__Claude_Preview__preview_start({name: "<config-name>"})
|
|
131
|
+
```
|
|
132
|
+
3. 获取本地 URL 后使用 `agent-browser open <url>` 或 `preview_screenshot` 进行测试
|
|
133
|
+
4. 测试完成后可保留服务器供后续使用
|
|
134
|
+
|
|
135
|
+
### 方案 B:无 Preview MCP 时(Claude Code 终端 / OpenCode / Codex)
|
|
136
|
+
|
|
137
|
+
1. 通过 Bash 启动 dev server(后台运行):
|
|
138
|
+
```bash
|
|
139
|
+
npm run dev &
|
|
140
|
+
```
|
|
141
|
+
2. 用 agent-browser 打开页面:
|
|
142
|
+
```bash
|
|
143
|
+
agent-browser open http://localhost:<port>
|
|
144
|
+
```
|
|
145
|
+
3. 页面快照 + 截图验证:
|
|
146
|
+
```bash
|
|
147
|
+
agent-browser snapshot -i
|
|
148
|
+
agent-browser screenshot
|
|
149
|
+
```
|
|
150
|
+
4. 响应式多视口测试:
|
|
151
|
+
```bash
|
|
152
|
+
agent-browser set viewport 375 812 # 移动端
|
|
153
|
+
agent-browser screenshot mobile.png
|
|
154
|
+
agent-browser set viewport 768 1024 # 平板
|
|
155
|
+
agent-browser screenshot tablet.png
|
|
156
|
+
agent-browser set viewport 1280 800 # 桌面
|
|
157
|
+
agent-browser screenshot desktop.png
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## 报告模板
|
|
161
|
+
|
|
162
|
+
`.jarvis/YYYY-MM-DD/testing/<topic>-browser-test-report.md`:
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
# 浏览器自动化测试报告
|
|
166
|
+
|
|
167
|
+
## 测试概览
|
|
168
|
+
| 总用例 | 通过 | 失败 | 跳过 | 通过率 |
|
|
169
|
+
|--------|------|------|------|--------|
|
|
170
|
+
| N | N | N | N | XX% |
|
|
171
|
+
|
|
172
|
+
## 环境信息
|
|
173
|
+
- 测试 URL:<URL>
|
|
174
|
+
- 测试时间:<timestamp>
|
|
175
|
+
- 浏览器视口:<尺寸>
|
|
176
|
+
|
|
177
|
+
## 详情
|
|
178
|
+
### TC-001: <名称> — ✅ 通过
|
|
179
|
+
- 截图:<路径>
|
|
180
|
+
|
|
181
|
+
### TC-002: <名称> — ❌ 失败
|
|
182
|
+
- 预期:<结果> / 实际:<结果>
|
|
183
|
+
- 截图:<路径>
|
|
184
|
+
- 控制台错误:<错误信息>
|
|
185
|
+
- 网络异常:<失败请求>
|
|
186
|
+
- 疑似原因:<分析>
|
|
187
|
+
|
|
188
|
+
## 失败汇总
|
|
189
|
+
| 用例 | 严重度 | 故障类型 | 疑似根因 |
|
|
190
|
+
|------|--------|---------|---------|
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 修复闭环
|
|
194
|
+
|
|
195
|
+
1. 全部通过 → ✅ 闭环完成
|
|
196
|
+
2. 存在失败 → Browser Test Findings → `/review-fix` 修复 → 仅重跑失败用例 → 更新报告
|
|
197
|
+
3. 最多 2 轮,第 3 轮仍失败标记 BLOCKED
|
|
198
|
+
|
|
199
|
+
## 红线
|
|
200
|
+
|
|
201
|
+
- 不写用例直接操作浏览器(缺少可追溯的测试计划)
|
|
202
|
+
- 失败不截图、不记录控制台/网络错误(缺少证据)
|
|
203
|
+
- 跳过用例不标注原因
|
|
204
|
+
- 伪造测试结果
|
|
205
|
+
- 执行破坏性操作(删除数据、发起支付等)
|
|
206
|
+
- 用硬等待(sleep/wait)替代 `agent-browser wait` 轮询确认页面状态
|
|
207
|
+
|
|
208
|
+
## 职责分工
|
|
209
|
+
|
|
210
|
+
### 测试文档编写 vs 测试执行
|
|
211
|
+
- **test-doc-writer Agent**:负责在测试执行前根据需求文档和前端变更编写结构化测试用例文档,输出到 `.jarvis/YYYY-MM-DD/testing/<topic>-test-cases.md`
|
|
212
|
+
- **browser-test-expert**:负责读取已有测试文档中的用例并逐条执行,输出测试报告到 `.jarvis/YYYY-MM-DD/testing/<topic>-browser-test-report.md`
|
|
213
|
+
- **职责边界**:测试执行 Agent 不得自行编写或修改测试用例文档,测试文档编写 Agent 不得执行浏览器测试。测试用例必须在测试执行前由 test-doc-writer 编写完成。
|
|
214
|
+
|
|
215
|
+
## 测试报告模板
|
|
216
|
+
|
|
217
|
+
执行完成后按以下模板输出测试报告(输出到 `.jarvis/YYYY-MM-DD/testing/<topic>-browser-test-report.md`):
|
|
218
|
+
|
|
219
|
+
### 汇总
|
|
220
|
+
|
|
221
|
+
| 指标 | 数值 |
|
|
222
|
+
|------|------|
|
|
223
|
+
| 总计 | N |
|
|
224
|
+
| 通过 | N ✅ |
|
|
225
|
+
| 失败 | N ❌ |
|
|
226
|
+
| 阻塞 | N ⚠️ |
|
|
227
|
+
|
|
228
|
+
### 详细结果
|
|
229
|
+
|
|
230
|
+
#### TC-XXX: 用例标题 — ✅/❌
|
|
231
|
+
- **预期:** ...
|
|
232
|
+
- **实际:** ...
|
|
233
|
+
- **截图证据:** <路径>
|
|
234
|
+
- **可能原因:** (仅失败时)
|
|
235
|
+
- **关联代码:** <文件:行号>(仅失败时)
|
|
236
|
+
|
|
237
|
+
### 失败用例清单
|
|
238
|
+
- [ ] TC-XXX: 简短描述
|
|
239
|
+
|
|
240
|
+
## 失败用例交接格式
|
|
241
|
+
|
|
242
|
+
测试失败后,向修复 Agent 传递以下信息:
|
|
243
|
+
|
|
244
|
+
```json
|
|
245
|
+
{
|
|
246
|
+
"failedCases": [
|
|
247
|
+
{
|
|
248
|
+
"id": "TC-XXX",
|
|
249
|
+
"title": "用例标题",
|
|
250
|
+
"expected": "预期结果",
|
|
251
|
+
"actual": "实际结果",
|
|
252
|
+
"screenshot": "截图路径",
|
|
253
|
+
"possibleCause": "可能原因分析",
|
|
254
|
+
"relatedCode": "关联代码位置"
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
或 markdown 格式:
|
|
261
|
+
|
|
262
|
+
```markdown
|
|
263
|
+
## 失败用例交接
|
|
264
|
+
### TC-XXX: 用例标题
|
|
265
|
+
- **预期:** ...
|
|
266
|
+
- **实际:** ...
|
|
267
|
+
- **截图证据:** <路径>
|
|
268
|
+
- **可能原因:** <分析>
|
|
269
|
+
- **关联代码:** <文件:行号>
|
|
270
|
+
```
|