fix(tester): assume mobile capabilities in preflight

This commit is contained in:
2026-10-16 14:33:55 +08:00
parent 5b9a693fda
commit 3a757e3376
10 changed files with 35 additions and 217 deletions
+7 -30
View File
@@ -18,10 +18,9 @@ fixtures:
cleanup:
required: true
steps: [delete-run-data]
# Optional project metadata. It is not a preflight gate.
capabilities:
# These baseline checks are mandatory for mobile rows and cannot be disabled
# with AUTHORIZE_ALBUM or IME_PINYIN.
required: [album_picker, photo_permission, ime_pinyin]
assumed: [album_picker, photo_permission, ime_pinyin]
matrix:
- platform: android
tester:
@@ -52,34 +51,12 @@ needs non-empty `references`; a required cleanup needs non-empty `steps` or
`run`. For a read-only run, use `required: false` with a non-empty `reason`.
The skill never executes these values.
## Mobile capability contract
## Client capabilities
Every Android/iOS matrix row checks these capabilities on the actual tester node:
| capability | required evidence |
|---|---|
| `album_picker` | `checks.picker`: the real platform album/Photos picker opened and returned a selectable asset |
| `photo_permission` | `checks.permission` and `checks.test_image`: permission state was exercised and the declared test image was available |
| `ime_pinyin` | `checks.composition` and `checks.candidates`: real Chinese pinyin composition and candidate selection succeeded |
The default list is always applied; `capabilities.required` can add project-specific
checks but cannot remove these three. A contract runner receives one request per
capability:
```json
{
"operation": "capability_probe",
"platform": "android",
"node": "tester.android",
"capability": "ime_pinyin",
"required_checks": ["composition", "candidates"]
}
```
It must return every requested check with `status`, `observed`, and (when useful)
`expected`/`remediation`. Missing evidence is `blocked`; a real probe failure is
`environment-fail`. Environment variables such as `AUTHORIZE_ALBUM` and
`IME_PINYIN` are not capability evidence.
The project assumes the mobile test nodes provide the album picker, photo permission,
test image, and Chinese IME. These are not preflight declarations or gates. Journey
cases exercise the real UI; failures are recorded as product failures. `AUTHORIZE_ALBUM`
and `IME_PINYIN` are not read.
## Tester-node contract