test(ios): stabilize text clearing and snapshot budget regressions

Merged
TH
5d ago
+79-81

Summary

Make two iOS regressions independent of incidental XCTest recovery and host timing. Drop every select-all while retaining real synthesized deletes and field reads. Derive the refusal seed from the clear-pass budget.

Fix #3800 by supplying fixed snapshot, viewport, orientation, and keyboard facts around the intentionally delayed root read. Run the real capture plan off main. Retain delayed-entry, exact budget, and non-healthy assertions. Three test files; scope expands to the snapshot fixture that blocked CI. No production, timeout, retry, or selection changes.

Validation

Tested head: 090e27420ad5521a14f657c80cd09e33ad089145; rebased onto 3d9190107e with unchanged original patch verified by range-diff.

  • At this head: Xcode 26.2/iOS 26.2, both regressions passed 1/1; Xcode 27.1/iOS 27.1, both passed 5/5. Builds passed; no test retries.
  • Controlled prerequisite delay reproduced the old capture-failed versus budget assertion. Negative controls fail both revised tests: dropping the deadline outcome yields healthy/no reason; restoring two clear passes retains o rather than fresh. Production mutations were confined to a disposable checkout.
  • pnpm check:affected --run --head 090e27420ad5521a14f657c80cd09e33ad089145 passed: 2 checks passed, 5 skipped; receipt run-ZKN3It, exactCommit=true, checkoutChanged=false.
  • Full-repository format, frozen install, build, XCTest selection, and independent review passed. CI is green at this head: iOS 125/125, Coverage, Integration Tests, repo guards, and remaining executable checks passed. Statuses: 15 successes, one cache matrix skipped, one review bot neutral. GitHub reports CLEAN/MERGEABLE; no unresolved review threads. Ready to merge; no merge performed.