mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-21 20:30:47 +02:00
feat(ios-qa): add XCUITest execution-plan module
Standalone planner that turns the IOSQAFlow JSON contract into an xcodebuild XCUITest invocation for simulator or physical device, using semantic selectors (identifier/role/label) and no coordinate taps. Pure plan generation; covered by 7 unit tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
a84a6e233d
commit
466b1ec744
@@ -0,0 +1,23 @@
|
||||
# XCUITest execution contract
|
||||
|
||||
This directory separates a logical iOS QA flow from where it runs. The same
|
||||
semantic flow is routed to an iOS Simulator or a provisioned physical device.
|
||||
It emits an `xcodebuild` argv specification; it does not invoke a shell, alter
|
||||
signing, or provision a phone.
|
||||
|
||||
The checked-in XCUITest runner consumes inline base64 JSON from
|
||||
`GSTACK_IOS_QA_FLOW_JSON_BASE64` on physical devices, because a device test
|
||||
runner cannot open a path on the Mac. Simulator runs may also consume
|
||||
`GSTACK_IOS_QA_FLOW_PATH`. It resolves each selector in
|
||||
`selectorCandidates()` order, waits for hittability, performs the action, and
|
||||
evaluates the optional post-action verification. A runner must return a
|
||||
blocked/unsupported step result rather than falling back to screen coordinates.
|
||||
|
||||
Generate a plan:
|
||||
|
||||
```bash
|
||||
bun ios-qa/executor/cli.ts flow.json target.json runner.json
|
||||
```
|
||||
|
||||
The JSON result is either `ready` with an argument-safe `xcodebuild` command,
|
||||
`blocked` with remediation, or `unsupported` with the offending step id.
|
||||
Reference in New Issue
Block a user