feat(tester): support isolated full regression workflow
This commit is contained in:
@@ -25,6 +25,7 @@ runs/*.csv 同一次运行的成绩单;generate_run_csv.py 从对
|
||||
| `categories` | `{id, title, status_probe?}` 列表,id 与 `cases/<id小写>.yaml` 对应;列表顺序即 `select` / 执行顺序。`status_probe` 见下 |
|
||||
| `risks` | 从低到高,只能是 `readonly` → `mutating` → `destructive` 的一段,且以 `readonly` 开头。含义见 [levels.md](levels.md) |
|
||||
| `default_max_risk` | 未指定时的运行上限,必须是 `risks` 里的值 |
|
||||
| `execution_profile` | `standard`(默认)或 `isolated-full`。后者只用于隔离可重置环境,保留 risk 语义但不按 risk/authorize/gate 过滤 active 用例;安全边界由 preflight capability 与 cleanup/rollback 契约承担 |
|
||||
| `vars` | 可替换变量,如 `API_BASE: http://${HOST}:8095` |
|
||||
| `artifacts` | 可选的移动产物身份契约。按 `android` / `ios` 声明 `required` 和 `package` / `bundle_id`;每轮文件路径或下载地址由调用方提供,不提交临时产物路径。 |
|
||||
| `authorize` | 风险名 → 环境变量名。该档执行前变量必须为 `true`(`readonly` 不需要) |
|
||||
@@ -36,6 +37,10 @@ runs/*.csv 同一次运行的成绩单;generate_run_csv.py 从对
|
||||
| `client_suites` | 可选的标准套件声明;出现时必须完整包含 `client-smoke`、`client-regression`、`safety`。缺省运行仍按 `tag` 兼容旧目录 |
|
||||
| `integration_suites` | 可选的集成套件声明;标准值为 `api-contract`、`authorization`、`build-contract` |
|
||||
|
||||
`isolated-full` 不得把风险字段改成 `readonly`,也不得把 `AUTHORIZE_ALBUM`、
|
||||
`AUTHORIZE_PASSWORD`、`IME_PINYIN` 等变量当成能力门禁。移动用例必须通过 test-preflight
|
||||
的真实相册 picker、照片权限/测试图片和中文拼音 composition/candidate 检查。
|
||||
|
||||
`local.yaml` 与环境变量覆盖 `HOST` 和授权开关。模板中的 `HOST` 默认是
|
||||
`127.0.0.1`;远程目标必须显式覆盖。查找顺序:环境变量 > `local.yaml` >
|
||||
`catalog.yaml` 的 vars。
|
||||
@@ -91,6 +96,7 @@ terminal;运行结束用 `orca terminal close --terminal <handle>` 关闭本
|
||||
| `expected` | 是 | 怎么过,至少一条 `{kind, value}` |
|
||||
| `maps_to` | 否 | 对人文档的功能项 id |
|
||||
| `assume` | 否 | 额外跳过条件(环境变量表达式)。不要重复 `risk` / `gate` 已覆盖的授权变量,否则 `validate` 报错 |
|
||||
| `depends_on` | 否 | 依赖的 testcase id 列表;依赖 fail/environment-fail/not-run 时本条写 `not-run` 和 `blocked_by`,独立用例继续 |
|
||||
| `setup` | 否 | 人话前置 |
|
||||
| `teardown` | 否 | 跑完回退 |
|
||||
| `notes` | 否 | 备注 |
|
||||
@@ -170,3 +176,24 @@ cleanup:
|
||||
## 判定
|
||||
|
||||
`pass` / `fail` / `environment-fail` / `skipped` / `not-run`
|
||||
|
||||
## 运行失败回流
|
||||
|
||||
run YAML 的 `results` 必须保留每条 testcase 行。失败可在顶层 `defects`(兼容别名
|
||||
`test_issues`)追加:
|
||||
|
||||
```yaml
|
||||
defects:
|
||||
- testcase: TC-CLIENT-001
|
||||
issue_type: product # product | test
|
||||
expected: "候选词可选择"
|
||||
observed: "composition 成功但候选列表为空"
|
||||
artifact_hash: sha256:...
|
||||
environment: "Android emulator API 35 / tester.android"
|
||||
evidence_path: .pouch/tester/evidence/TC-CLIENT-001.png
|
||||
reproduction: "打开相册后输入 nihao"
|
||||
next_step: "开发修复候选词渲染后 targeted rerun"
|
||||
```
|
||||
|
||||
PR 触发的 run 可带 `feedback` 计划:先更新 PR/关联 issue,再通知 dispatcher 重新分配开发;
|
||||
需求/bug 触发则 route 直接为 development。tester 只记录计划,不隐式调用远端写操作。
|
||||
|
||||
Reference in New Issue
Block a user