SuperAPI AI 工具集

finalrun-test-and-fix

测试与质量

查看项目

更新于 10-15 21:33

技能介绍

用途:该技能是 FinalRun 覆盖率的端到端编排者,负责 generate → run → diagnose → fix 闭环。它不替代 finalrun-generate-test 与 finalrun-use-cli,而是调用它们。若会话已有既定计划、验收标准和改动文件,应作为主要输入,不从零开始。

主要能力:按顺序编排探索并生成测试、运行测试、失败后判读产物、分类失败原因、实施最窄修复、重跑直至通过或遇到真实阻塞。核心原则包括:探索中发现的疑似缺陷只是假设而非修复目标,必须先生成并运行测试来证实或证伪;先生成并运行,后修复;默认先修应用代码、再考虑改测试;CLI 打印的 result.json、actions/、screenshots/、recording.*、device.log、runner.log 等产物是事实来源;不得编造密钥、凭据或环境变量值;不得为变绿而放宽断言、删除断言、把 expected_state 弱化为"界面可见"或注释掉失败测试。

使用方式:先调用 finalrun-generate-test,馈入计划、验收标准、改动文件与用户流程,由该技能负责 YAML 编写规则、目录分组、env 文件处理与 finalrun check 循环;仅在其 finalrun check 干净后回到本技能。再调用 finalrun-use-cli 执行受影响范围,由其负责命令行标志语义。执行前需询问用户是重新构建应用还是使用现有构建,不要静默重建,也不要假定旧的 --app 产物仍是最新;若重建则先构建再传 --app <新产物>(Android .apk、iOS .app),否则确认现有产物路径。默认对刚改动的单个 spec 运行 finalrun test <selectors> 以便快速迭代、尽早暴露首个失败;除非用户明确要求套件级运行,否则不要执行 finalrun suite。工作区存在多个 .finalrun/env/*.yaml 时传 --env <name>;无法从 --app 扩展名推断平台时传 --platform。若 CLI 报告成功即停止并附报告 URL。

失败分类:产物中代理无法定位元素但截图显示 UI 正确,多为测试措辞过严,应放宽步骤、去掉多余位置限定;截图显示应用状态与验收标准不符、device.log 出现崩溃或录屏止于崩溃弹窗,为应用缺陷,改应用代码;日志引用未解析的 ${variables.}/${secrets.} 或缺少提供方 API 密钥,属环境/绑定/密钥缺失,既不改应用也不改测试,需告知用户确切变量名并交由其处理;测试断言了短暂出现的 toast/snackbar 而录屏显示其闪现即逝,应改为断言持久结果;result.json 报 expected_state 不匹配且截图证实,仅当新行为符合验收标准时才改测试,否则改应用代码。分类表无法清晰套用时默认归为应用代码。修复应保持狭窄,不重构周边代码、不为不可能场景添加防御分支;测试 YAML 的小改动可原地修改,非平凡改动(新增步骤、新增边界覆盖、env 绑定变更、新功能目录)应回到 finalrun-generate-test。重跑时若改了应用代码需再次询问是否重建,然后重跑原失败命令,循环回判读步骤直至通过。

适用场景:调试失败的 FinalRun 运行、端到端验证某功能、为 UI 改动补齐 FinalRun 覆盖。

限制:不负责从零编写 YAML、决定目录结构或编辑 .finalrun/env/*.yaml 绑定形态(转 finalrun-generate-test);不教授 CLI 标志、产物布局、主机就绪、提供方/模型选择或 finalrun doctor / finalrun runs / finalrun start-server 用法(转 finalrun-use-cli);不发明凭据、不静默放宽断言、不在没有绿色运行的情况下标记任务完成。停止条件为运行通过或确实受阻(主机无设备/模拟器、仅用户可提供的密钥缺失、用户明确退出),届时需打印含 --app <path>、--env <name>、--platform 的确切本地运行命令并说明阻塞点;单个步骤失败或首个修复未生效不构成终止状态。