--- name: test-preflight description: >- Verify or prepare a mobile/integration test environment from a declared matrix: artifacts, tester bindings, HOST/PUBLIC_HOST, service probes, mobile capability probes, and fixture/cleanup contracts. Use before tester runs; it is not a deployment, build, or business-data skill. --- # test-preflight Use this skill before `integration` or `journey` tests. It answers whether the declared environment can start a run and emits one YAML and one CSV evidence file. It never logs in, creates business data, builds/downloads an artifact, or deploys production. ## Modes - `verify` is read-only: validate the matrix, artifact identity, binding, actual tester-node platform/device state, DNS/TCP/HTTP probes, backend probes, and fixture/cleanup declarations. It must not install, launch, or deploy. - `prepare` is side-effecting only within the test environment: call the caller-supplied deployer command contract, run the same checks, then use the tester-node command contract to install and launch the already supplied APK or IPA. It never calls a builder and refuses `environment: prod`. The command is: ```bash python3 /scripts/preflight.py verify \ --config --yaml --csv python3 /scripts/preflight.py prepare \ --config --yaml --csv ``` Read [references/schema.md](references/schema.md) for the input contract and [references/boundaries.md](references/boundaries.md) before wiring a real agent-runtime/deployer adapter. The included command-contract fixture is the safe way to test remote-node behavior without pretending that this machine is a Mac or that a deployment happened. Overall status is `ready`, `blocked`, or `environment-fail`: - `blocked` means a required declaration, artifact, binding, runner, capability, fixture, cleanup contract, or authorization is absent/unsafe. - `environment-fail` means a declared environment exists but DNS/TCP/HTTP, device/toolchain, installation, launch, or deployment execution failed. - `ready` means every recorded check passed. A ready preflight permits the caller to continue with `integration`; this skill does not run test cases. For every mobile matrix row, preflight requires real tester-node capability evidence for `album_picker`, `photo_permission` (including a usable test image), and `ime_pinyin` (composition and candidate selection). Android evidence must exercise the Android picker, permission state and real Chinese IME composition; iOS evidence must exercise the corresponding Photos picker/permission and text-input capabilities on the iOS node. `AUTHORIZE_ALBUM` and `IME_PINYIN` are never accepted as substitutes for these probes. Do not treat a preflight report as a product result. A preflight failure means no client session may be created; the tester owns `not-run` propagation and must write one result row per selected testcase with `blocked_by: [test-preflight]`.