SuperAPI AI 工具集

creating-test-runs

测试与质量

查看项目

更新于 10-31 06:37

技能介绍

该技能用于在 Bitwarden 的 Testmo 实例中创建测试运行(test runs)。它通过 JSON 过滤规范(filter spec)来选择测试用例,并仅在指定 --create 参数时,为每个规范通过 Testmo API 创建一次运行。所有写入操作都会更改实际 Testmo 实例,因此必须始终先进行试运行(dry-run),并让用户审查后再执行 --create。

使用前需满足以下前提:在环境中导出 TESTMO_API_KEY 变量,且只能通过变量引用,绝不能打印、回显、记录、提交或将值作为命令行参数传递;系统 PATH 中需有 python3;在检查 TLS 的网络中会自动使用 curl 作为回退。

脚本位于已安装的插件内,需通过 ${CLAUDE_PLUGIN_ROOT} 引用。由于 shell 状态不会在命令间保留,需在每个命令中设置简写变量 SKILL="${CLAUDE_PLUGIN_ROOT}/skills/creating-test-runs"。规范文件可放在任意位置,但切勿将用户规范写入 $SKILL/ 目录,因为那是插件缓存,/plugin update 会覆盖它。

工作流程:首先获取规范路径,或基于 examples/test-run.template.json 编写新规范并保存在插件外;阅读 references/api-reference.md 了解字段值对应的 ID;确认里程碑存在(API 无法创建里程碑,需用户在 Testmo UI 中创建),可通过 --milestone-name "<exact name>" 或 --milestone-id <id> 链接运行;执行试运行,每个规范传递一次 --spec;向用户展示试运行输出并停止,指出所有状态不是 ready 的行、Existing 行以及看起来异常的用例数量,等待用户明确确认;最后通过重新运行相同命令并加上 --create 来创建;报告结果,包括 MANUAL STEP 2 REQUIRED 下列出的所有运行,这些运行在用户完成 references/multi-configuration-runs.md 中的 UI 步骤前尚未完成。

试运行输出中 STATUS 的含义及修复方法:ready 表示将创建;NEEDS CONFIG_ID 表示规范中 "config_id": null,需通过 GET /projects/{id}/configs 查找 ID 并设置;EMPTY — 0 cases 表示过滤器未匹配任何用例,需对照实际仓库检查规范中的文件夹和标签;DUPLICATE — … 表示同一运行(名称 + 配置)已存在于里程碑或批次中,可删除该规范或按需传递 --allow-existing;FOLDER ERROR 表示文件夹路径或 ID 无法解析,需修复规范,脚本会在其他操作前停止。--create 会拒绝整个批次,除非所有行都是 ready。没有里程碑时 Existing 行显示 NOT CHECKED,API 隐藏里程碑链接时显示 CANNOT CHECK,此时需用户在创建前于 Testmo UI 中检查里程碑。如果部分创建失败,脚本会列出失败项并以非零状态退出,可仅对失败规范重新运行。

过滤规范模式:顶层键描述运行,filters 下的键选择用例。顶层必需 project_id 和 run_name,一次调用中所有规范必须共享相同 project_id。可选:run_state_id(默认 7,进行中)、milestone_id(被里程碑标志覆盖)、config_id(仅用于同名运行按 Testmo 配置拆分)、tags(标记运行,不选择用例)、note。filters 下所有键均为可选,键之间为 AND 关系,同一键内的值为 OR 关系。tags 选择带有这些标签名称或 ID 的用例,名称重复时优先使用 ID;folder_paths / folder_ids 选择文件夹及其后代(include_subfolders: false 表示精确匹配);test_type_ids、team_ids 要求用例的集合与列表相交;case_state_ids 例如 [4] 表示 Active;automation_type_ids / exclude_automation_type_ids 用于仅手动,排除 [10, 23, 24];has_automation 为布尔值。仅由标签定义的运行必须设置 filters.tags;仅设置顶层 tags 不会选择任何内容。空或缺失的 filters 块会匹配项目中的所有用例,因此务必检查试运行计数。run_name 应保持为裸区域名称(如 "Password Manager"),发布版本来自里程碑,平台来自 config_id。