name: ralph-test-executor description: Ralph 通用测试执行器:负责执行测试计划 (05-test-plan.md),运行自动化测试命令,并更新测试状态。
Skill: ralph-test-executor
📋 技能描述 (Description)
这是 Ralph 测试与验收阶段 (Testing Phase) 的执行官。
你的职责是确保所有代码经过严格验证,并将验证结果如实记录在 05-test-plan.md 中。
使用场景 (Usage)
- Phase: Testing Phase (After Implementation)
- Action: "Run Tests", "Verify Features"
- Trigger: 当用户请求执行
05-test-plan.md中的测试项时。
指令 (Instructions)
1. 全自动执行协议 (Fully Automated Protocol)
你必须严格按照 05-test-plan.md 中的顺序,逐个自动执行测试用例。
Step 1: LOAD (加载与锁定)
- Action: 读取
05-test-plan.md。 - Strict Search: 从文件顶部开始,找到第一个状态为
[ ](Pending) 的测试用例 ID。- Constraint: 严禁跳过当前未完成的用例去执行后面的用例。必须是物理顺序上的第一个。
- Double Check: 如果 Agent 试图测试
TC-005,但TC-004仍是[ ],系统必须报错并强制回滚到TC-004。
- Focus: 锁定当前测试用例 (e.g.,
[TC-AUTH-HP-001])。
Step 2: EXECUTE (执行)
- No Manual Steps: 严禁要求用户手动操作。所有验证必须通过编写和运行脚本完成。
- Check Deps: 如果测试依赖的环境(如 DB)未就绪,执行 [阻塞协议]。
- Tool Selection:
- Unit/Integration: 运行
npm test或相关测试命令。 - E2E/UI: 优先使用 Chrome DevTools MCP 进行浏览器测试。
- Action: 调用
chrome-devtools:navigate,chrome-devtools:click,chrome-devtools:screenshot等工具。 - Reason: 相比 Playwright/Puppeteer 脚本,MCP 工具更稳定且易于 AI 控制。
- Action: 调用
- API: 使用
curl或编写脚本发送请求验证响应。
- Unit/Integration: 运行
Step 3: VERIFY (验证)
- Pass: 如果脚本执行成功且输出符合预期 -> 标记为
[x]。 - Fail: 如果脚本报错或断言失败 -> 标记为
(Failed: <Reason>)。
Step 4: LOOP (循环)
- Sync:
- Count: 重新扫描
05-test-plan.md,计算[x]的数量与总测试用例数。 - Verify: 确保
RALPH_STATE.md中的进度与实际文件一致。如果不一致,强制覆盖RALPH_STATE.md。 - Update: 更新
RALPH_STATE.md中的 "Testing Phase" 进度 (e.g.,10/50 Tests).
- Count: 重新扫描
- Next: 自动进入下一个未完成的测试用例,直到所有用例执行完毕。
2. 自动化门禁 (Automated Gates)
- 在执行具体用例前,先运行全量测试套件 (e.g.,
npm run test:all)。 - 如果全量测试失败,优先修复代码,再进行逐个验证。
3. 阻塞协议 (Blocking Protocol)
当且仅当当前测试用例因客观原因无法执行时:
- Mark: 将用例标记为
[-](Blocked)。 - Comment: 在用例后追加注释
(Blocked by: <Reason>)。 - Notify: 告知用户被阻塞的原因。
- Skip: 允许暂时跳过,进入 LOAD 步骤寻找下一个。
4. 缺陷处理 (Defect Handling)
- Auto-Fix Attempt: 如果测试失败,尝试自动分析错误日志并修复代码(最多尝试 3 次)。
- Critical Fail: 如果无法自动修复,停止循环,向用户报告详细错误日志。
示例 (Examples)
示例 1:严格顺序执行
Input:
用户:Run Tests
Output:
🔄 Automated Testing Loop Started
- LOAD: Found first pending case:
[TC-AUTH-HP-001]. (Skipping completed cases...)- EXECUTE: Invoking
chrome-devtools:navigate...- RESULT: ✅ Passed (Element found)
- NEXT: Moving to
[TC-AUTH-HP-002]...
示例 2:拦截乱序行为
Input:
Agent: I will skip login tests and verify the dashboard first.
Output:
⛔️ ORDER VIOLATION:
[TC-AUTH-HP-001]is still pending. You MUST finish login tests before dashboard tests.
🛡️ 铁律与约束 (Iron Rules & Constraints)
- 物理顺序优先: 必须严格按照文件中的行号顺序执行测试,除非触发阻塞协议。
- 全自动原则: 严禁输出 "请用户手动验证...",必须通过代码/命令验证。
- 真实记录: 只有当自动化脚本明确返回 Success 时,才允许打钩
[x]。 - 环境隔离: 确保测试在隔离环境(如 Test DB)中运行,不污染生产数据。
🛡️ 铁律与约束 (Iron Rules & Constraints)
- 全自动原则: 严禁输出 "请用户手动验证...",必须通过代码/命令验证。
- 严格顺序: 必须从上到下逐个执行
05-test-plan.md中的用例,不可跳过。 - 真实记录: 只有当自动化脚本明确返回 Success 时,才允许打钩
[x]。 - 环境隔离: 确保测试在隔离环境(如 Test DB)中运行,不污染生产数据。
📂 关联资产 (Related Assets)
05-test-plan.md(Test Plan)RALPH_STATE.md(State Sync)