fix(ios): bound the idle wait of keyboard dismiss and keyboard enter

Merged
SI
19h ago
+192-2

Summary

Fixes #4453. Bound the XCTest idle wait for keyboard dismiss and keyboard enter, so an animating app cannot hold their native tap behind an unbounded quiescence wait. Existing keyboard and screen-settle waits remain.

Four files change: the command cases, busy-keyboard fixture, two regression tests and runner development instructions.

Validation

Current head 27197a7527fbaee0ea73da19332995c88fc040ab. Independent review found no blockers. Range comparison preserves all three reviewed commits; the rebase does not change the keyboard paths.

  • Current-head CI: 12 successful checks, two skipped. iOS smoke: 22 passed, zero skipped.
  • Exact local affected receipt at tree-identical 09425873097a02a444686174a40e0cd91971ea9e: native-dupes, xctest-selection and packaged-runner-swift passed. Native-authoritative lanes were skipped locally.
  • Contributor evidence: iPhone 17 Pro simulator, iOS 27.3, Xcode 27.3. Both busy-keyboard tests passed with zero skips at 1b4c2e7; retained fixtures/tests on base 2deb909 produced both intended after-busy assertion failures.
  • Packed CLI at old head b4f5510 successfully ran enter and dismiss while busy. Native source identity and unchanged rebase preserve applicability; these busy cases were not rerun at the rebased SHA and do not run in CI.

Physical devices, macOS and tvOS were not validated. All earlier review threads are resolved.