fix: keep iOS runner hot across app closes (#700)

* fix: keep iOS runner hot across app closes

* fix: keep iOS snapshots fast after relaunch

* fix: bound compact iOS snapshots on broken AX trees

* docs: clarify iOS snapshot backend strategy

* test: update Settings replay selectors

* fix: stabilize Settings replay selectors

* fix: fall back for selector interactions

* chore: simplify flat interactive snapshot query
This commit is contained in:
Michał Pierzchała
2026-06-06 21:26:12 +02:00
committed by GitHub
parent f2424f9d3a
commit aa5b07faa5
21 changed files with 973 additions and 90 deletions
+13
View File
@@ -33,6 +33,19 @@ Protocol and maintenance references:
- `RunnerTests+SystemModal.swift`: SpringBoard/system modal detection and modal snapshot shaping.
- `RunnerTests+ScreenRecorder.swift`: nested `ScreenRecorder` implementation.
## Snapshot Strategy
iOS snapshots have two explicit capture modes:
- full/raw snapshots use recursive XCTest snapshots for rich hierarchy and diagnostics;
- compact interactive snapshots use a bounded flat XCTest query path for fast agent-facing refs.
Some simulator apps expose accessibility trees that lower-level AX services can inspect but XCTest
cannot serialize reliably. In those cases compact interactive snapshots may return a sparse root
quickly, while full snapshots preserve the XCTest error. See
[`../docs/adr/0004-ios-snapshot-backend-strategy.md`](../docs/adr/0004-ios-snapshot-backend-strategy.md)
for the backend boundary and the rationale for a future simulator AX-service backend.
## Protocol Notes
- The daemon posts JSON commands to `POST /command` on the runner's local HTTP listener.