--- name: test-preflight description: >- Verify or prepare a mobile/integration test environment from a declared matrix: artifacts, tester bindings, HOST/PUBLIC_HOST, service 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, 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. This project assumes the client has the required album picker, photo permission, and Chinese IME capabilities. Preflight does not probe or gate these capabilities, and does not read `AUTHORIZE_ALBUM` or `IME_PINYIN`. Their real behavior is exercised by journey cases; a failure there is a product test failure, not an environment block. 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]`.