3.6 KiB
tester 运行
只在用户要跑测试时读本文件。
1. 选范围
未指定范围 → --suite smoke,风险上限 = default_max_risk。
用户说分类、id、suite、风险上限时,原样传给 select:
python3 <skill-dir>/scripts/catalog.py select --root <root> \
[--category CAT] [--id ID]... [--suite smoke|full|slow] \
[--max-risk <risk>] [--surface script|browser|mobile]
select 已排除 retired 和风险高于上限的条目(后者若用户点了具体 id,会在 JSON 的 skipped 里说明,不执行)。
若 catalog 有 run_together,命中组内任一条就把整组按 ids 顺序扩进列表(JSON 带 run_together)。这不是擅自扩大范围。
无命中:停下说明筛选条件,不要扩大范围。
2. 运行前闸
HOST未设(环境变量 /HX_TEST_HOST/local.yaml都没有):全部停,environment-fail。- 命中条的
risk在 catalogauth_env里有对应变量:变量不是true则该条skipped。有gate时还要catalog.gates对应变量为true。即使用户点了 id 也不执行。 - 若 catalog 声明了
status_probe:先请求它。命中stop_if→ 整轮停,environment-fail。
3. Session
看命中条用到的 session 键:
- 尚未初始化:按 catalog
sessions.<name>.init做。reuse: persist的先probe,活着就附着。 - 本轮已初始化:直接用,不要重开浏览器或模拟器。
reuse: run:整轮结束再关。persist:不关。- 中途 session 挂了:后续同 surface 标 environment-fail,不要标产品失败。
4. 执行
按 select 返回的顺序,一条一条来。select 按 catalog.yaml 的 categories 顺序,同一分类内按该 yaml 列表顺序(不是文件名字母序)。默认失败即停(产品 fail 或探测到的不安全状态)。用户说继续 / keep-going 才往后跑。
例外:当前条和下一条同属 run_together 且该组 continue_on_fail: true 时,前一条产品 fail 仍跑后一条。environment-fail 仍整轮停。
script
有 how.run:
python3 <skill-dir>/scripts/catalog.py run-script --root <root> --id <id>
run-script 只跑命令,返回 executed + stdout/exit(或 skipped / environment-fail)。pass/fail 仍由 Agent 对照 expected 判定,不要把 curl 退出码 0 当成产品通过。
没有 run:按 how.steps 做,证据对照 expected。不要发明 steps 里没有的调用。
browser / mobile
挂到已有 session,执行 how.steps,对照 expected。必须留下可见文本、URL 或交互证据。
5. 记录与报告
每条:id, result, evidence, notes。result 只能是 pass / fail / environment-fail / skipped。
写入 .pouch/tester/runs/<UTC时间>-<范围>.yaml,包含筛选条件、HOST 是否已设(可以写 HOST 值)、session 是否复用、逐条结果。立刻用同一快照生成 CSV,不要手改:
python3 <skill-dir>/scripts/generate_run_csv.py --root <root> --run <yaml>
这会写出 .pouch/tester/runs/<UTC时间>-<范围>.csv(executed=yes|no),并刷新 cases.csv 的 last_result / last_executed 列。对话里两个路径都报。
对话报告:
## tester 运行:完成 | 部分完成 | 阻塞
范围: …
风险上限: …
session: browser=复用|新开|未用;mobile=…
计数: pass=N fail=N environment-fail=N skipped=N
失败: id + 一句证据
跳过: id + 原因
快照: .pouch/tester/runs/<file>.yaml
成绩单: .pouch/tester/runs/<file>.csv
下一步: 一句话