SuperAPI AI 工具集

run-tests

测试与质量

查看项目

更新于 10-20 12:34

技能介绍

用途

该技能用于在 Bun 管理的代码库中执行测试并报告结果。它接受用户指定的测试范围,默认只运行与当前工作区改动相关的测试,并自动检测测试运行器(Vitest、Bun test 或 Playwright)。当测试失败时,它会读取实际的错误输出和追踪信息,隔离根因,并在获得明确授权后应用最小修复。

主要能力

  • 支持多种测试范围:changed(默认,与未提交改动相关)、full(全量套件)、focused(指定路径或模式)、--since <ref>(提交范围相关)、unit / integration / e2e / coverage / types(按类型或覆盖率/类型检查)。
  • 自动检测包管理器和测试脚本:确认 bun.lock 存在,从 package.json 中识别测试命令,优先使用仓库自带的脚本(如 bun run test、bun run test:e2e)。
  • 对于 changed 模式,使用 git diff 计算变更文件集合,再映射到相关测试:Vitest 可使用 vitest related 或 --changed;Bun test 和 Playwright 没有原生的相关测试检测,会按路径约定映射同级测试文件,否则回退到全量运行并说明实际运行范围。
  • 失败处理循环:读取完整错误(含堆栈/断言,Playwright 会查看 trace 和截图),隔离复现,在授权范围内修复根因,重跑聚焦失败,再重跑原始范围,直至通过或遇到真实阻塞。
  • 类型检查模式:运行 tsc --noEmit 或仓库的类型检查脚本,按文件和类别分组错误;修复前同样需要授权,报告模式仅输出发现。
  • 不稳定性检查:修复后对曾失败的测试额外重跑一次,确认稳定,标记不一致通过的情况。
  • 报告输出:通过/失败摘要(运行数、通过数、失败数、跳过数、耗时),失败详情(失败测试、隔离的根因、建议或已应用的最小修复),以及实际运行范围和刻意未运行的内容。
  • 安全模型:禁止削弱测试来强制通过(跳过、删除或放宽断言必须作为发现报告);修复范围限于失败测试及其被测文件;不会使用 --no-verify 或禁用 CI 检查;不会提交、推送或更改 CI 配置;可能写入运行器产物(如覆盖率报告、Playwright trace)到默认位置。

使用方式

命令形式包括:

  • /run-tests — 仅运行与工作区改动相关的测试(默认;干净树或无法检测相关测试时回退到全量并说明)
  • /run-tests full — 全量套件
  • /run-tests unit | integration | e2e — 按类型
  • /run-tests coverage — 全量运行并收集覆盖率
  • /run-tests types — 类型检查并报告;仅在授权时修复
  • /run-tests <path|pattern> — 聚焦运行
  • /run-tests --since <ref> — 运行与提交范围相关的测试
  • /run-tests --no-fix — 仅运行并报告,不做任何编辑

执行前会确认 Bun 是仓库的包管理器;如果不是,会报告引擎不可用,而不会更改锁文件、安装 Bun 或替换命令。对于 e2e 测试,可能需要先启动应用本地开发服务器。

适用场景

  • 在代码改动后运行测试,默认只覆盖相关部分。
  • 运行冒烟或 e2e 套件并驱动其恢复绿色。
  • 对项目进行类型检查(tsc --noEmit)并循环清除错误。
  • 重跑不稳定的测试套件以确认修复真实有效。

限制

  • 不用于设置测试框架或在钩子中强制执行覆盖率门槛。
  • 当请求 e2e 但没有 Playwright 配置时,会报告并停止。
  • 在首次编辑源文件或测试文件之前,必须获得明确的修复授权;/run-tests、裸范围或类型检查请求不授予修复权限。
  • 在扩展已授权修复范围之前需要确认;未经明确更宽范围,修复仅覆盖失败测试和被测文件。
  • 在用户要求快速检查时,运行昂贵的全量或 e2e 套件前需要确认。
  • 更改任何测试期望之前需要确认;绝不能在不标记的情况下削弱或删除测试来使其通过。
  • 不提交、推送或更改 CI 配置。