2.1 KiB
Named native scenario format
Scenario files use these top-level fields:
name:
purpose:
preconditions:
build_lane:
package:
binary:
fixture:
steps:
assertions:
evidence:
cleanup:
invalidates:
package and binary are optional and default to editor. Focused tools such as the UI gallery
can therefore use the same exact-window evidence and cleanup workflow without launching a project.
Keep steps deterministic and phrased as user actions. Assertions describe visible behavior, state transitions, persistence, and failure recovery. Evidence names the target window/crop and expected files. Cleanup must identify every spawned process and fixture mutation.
The runner exposes the scenario instead of pretending manual interactions are automated:
bash scripts/codex/native_qa.sh plan <scenario>
bash scripts/codex/native_qa.sh launch <scenario>
bash scripts/codex/native_qa.sh attach <scenario> <existing-editor-pid>
bash scripts/codex/native_qa.sh capture <scenario> <runner-pid>
bash scripts/codex/native_qa.sh record <scenario> <assertion-index> pass|fail [note]
bash scripts/codex/native_qa.sh status <scenario>
bash scripts/codex/native_qa.sh close <scenario> <runner-pid>
bash scripts/codex/native_qa.sh restore <scenario> --dry-run
bash scripts/codex/native_qa.sh restore <scenario> --apply
launch snapshots a workspace-contained regular-file fixture before the editor starts; attach
does the same while reusing an existing editor and never closes that user-owned process. restore --apply
prints and flushes the baseline/current hash plan, refuses to run while the recorded process
is alive, validates the snapshot hash, and restores atomically. A scenario is accepted only when all
named assertions are recorded as passing and the required evidence exists; visual interaction remains
user-controlled unless explicitly delegated.
Recurring scenario families include Content Browser item/empty-space menus, multi-selection, destination-first import, move/reference repair, duplicate/undo/derived cleanup, material-slot assignment/inheritance, DefaultGrid Forward/Solari, and package launch.