Share acknowledged fixture gates with PlaybackPreparation UI tests #21

Merged
backmeupplz merged 7 commits from fix/83-playbackprep-acked-taps into main 2026-10-12 18:30:49 +00:00
backmeupplz commented 2026-10-12 17:04:51 +00:00 (Migrated from github.com)

Closes agentboard #83 (https://agentboard.icefish-betta.ts.net/#83).

Stacked on #20 (fix/82-loading-release-gate), which introduces the 15s gateTimeout this PR shares. Merge #20 first; this branch will then be rebased onto main so only its own two commits remain.

What

  • New ios/UITests/FixtureGates.swift: the acknowledged release/hold/tab helpers and gateTimeout move out of LoadingLifecycle into an opt-in FixtureGates protocol extension (where Self: XCTestCase). The bodies are unchanged, except that failures are now reported at the calling line.
  • LoadingLifecycle conforms and drops its private copies.
  • PlaybackPreparation conforms and uses them for every Release/Hold fixture request (launch, releaseAndAssertNoPlayback, :82/:90/:101/:196/:201) and every tab-bar tap (library, :85/:88/:95/:128/:133). Launch now waits for the fixture overlay before releasing.
  • The six single label reads after Check … taps become check(...), which presses deliberately (0.1s) and waits for an exact label == predicate.

Unchanged assertions

Each expected readout differs from the fixture's initial value (positions 0, favorites -1, metadata unchecked) and from the previous check, so the waits can't pass on stale text. The one exception is the second favorites loop, where the readout is already 0; that case was already weak before this PR and isn't made worse. The other remaining plain taps (Release/Hold positions, tiles, Play, Back) are outside this ticket's scope: none of them is a fixture-request gate or a tab bar.

Tests

Run locally with xcodebuild … -only-testing:UITests/LoadingLifecycle -only-testing:UITests/PlaybackPreparation test on a dedicated iPhone 17 (iOS 27) simulator:

  • Earlier version of this branch: 19 executed, 0 failures, 1 skipped (the iPad-only pointer test).
  • Final head: every test passed except testHomeShelfScrollsToFifth…. That run was killed by SIGTERM while waiting for a context menu, at the same time the host's dtdeviceinfod crashed; the test's only change here is the launch release, which had already passed. Rerunning that test on its own on the final head passed 2/2 (26.8s, 25.9s).
Closes agentboard #83 (https://agentboard.icefish-betta.ts.net/#83). **Stacked on #20** (fix/82-loading-release-gate), which introduces the 15s `gateTimeout` this PR shares. Merge #20 first; this branch will then be rebased onto main so only its own two commits remain. ## What - New `ios/UITests/FixtureGates.swift`: the acknowledged `release`/`hold`/`tab` helpers and `gateTimeout` move out of `LoadingLifecycle` into an opt-in `FixtureGates` protocol extension (`where Self: XCTestCase`). The bodies are unchanged, except that failures are now reported at the calling line. - `LoadingLifecycle` conforms and drops its private copies. - `PlaybackPreparation` conforms and uses them for every Release/Hold fixture request (launch, `releaseAndAssertNoPlayback`, :82/:90/:101/:196/:201) and every tab-bar tap (`library`, :85/:88/:95/:128/:133). Launch now waits for the fixture overlay before releasing. - The six single label reads after `Check …` taps become `check(...)`, which presses deliberately (0.1s) and waits for an exact `label ==` predicate. ## Unchanged assertions Each expected readout differs from the fixture's initial value (positions 0, favorites -1, metadata `unchecked`) and from the previous check, so the waits can't pass on stale text. The one exception is the second favorites loop, where the readout is already `0`; that case was already weak before this PR and isn't made worse. The other remaining plain taps (Release/Hold positions, tiles, Play, Back) are outside this ticket's scope: none of them is a fixture-request gate or a tab bar. ## Tests Run locally with `xcodebuild … -only-testing:UITests/LoadingLifecycle -only-testing:UITests/PlaybackPreparation test` on a dedicated iPhone 17 (iOS 27) simulator: - **Earlier version of this branch:** 19 executed, 0 failures, 1 skipped (the iPad-only pointer test). - **Final head:** every test passed except `testHomeShelfScrollsToFifth…`. That run was killed by SIGTERM while waiting for a context menu, at the same time the host's `dtdeviceinfod` crashed; the test's only change here is the launch release, which had already passed. Rerunning that test on its own on the final head passed 2/2 (26.8s, 25.9s).
Sign in to join this conversation.
No description provided.