Re-press fixture gates whose press was dropped #23

Merged
backmeupplz merged 4 commits from fix/82-loading-release-gate into main 2026-10-12 23:44:37 +00:00
backmeupplz commented 2026-10-12 18:36:52 +00:00 (Migrated from github.com)

Fixes the remaining flake in agentboard #82 (iOS loading group).

CI run 38282962494 attempt 3 failed LoadingLifecycle.testDelayedSuccessAllTabsAndDetailsBack in the shared release(_:) gate: the predicate was re-read about once a second for the full 15s and every read said held, so the 0.1s press on Release fixture requests was dropped (not read late).

  • FixtureGates.gate now presses again when an attempt is not acknowledged: up to 3 presses, 5s each, so the total budget stays at gateTimeout (15s). It still asserts the button value becomes released/held; nothing is loosened.
  • Re-pressing is safe because both buttons only set the flag to a fixed value (ios/ABSPlus/LoadingFixture.swift Release/Hold actions).
  • Held fixture requests now get timeoutInterval = 90 in LoadingProtocol.canonicalRequest (DEBUG fixture only), longer than the 60s hold. Before this, URLSession timed them out at the app's 20s URLRequest timeout (Abs.swift) when the slow CI simulator delivered Release late. Production requests keep 20s.
  • Applies to both suites that use FixtureGates (LoadingLifecycle, PlaybackPreparation).
Fixes the remaining flake in agentboard #82 (iOS loading group). CI run 38282962494 attempt 3 failed `LoadingLifecycle.testDelayedSuccessAllTabsAndDetailsBack` in the shared `release(_:)` gate: the predicate was re-read about once a second for the full 15s and every read said `held`, so the 0.1s press on *Release fixture requests* was dropped (not read late). - `FixtureGates.gate` now presses again when an attempt is not acknowledged: up to 3 presses, 5s each, so the total budget stays at `gateTimeout` (15s). It still asserts the button value becomes `released`/`held`; nothing is loosened. - Re-pressing is safe because both buttons only set the flag to a fixed value (`ios/ABSPlus/LoadingFixture.swift` Release/Hold actions). - Held fixture requests now get `timeoutInterval = 90` in `LoadingProtocol.canonicalRequest` (DEBUG fixture only), longer than the 60s hold. Before this, URLSession timed them out at the app's 20s `URLRequest` timeout (`Abs.swift`) when the slow CI simulator delivered Release late. Production requests keep 20s. - Applies to both suites that use `FixtureGates` (LoadingLifecycle, PlaybackPreparation).
Sign in to join this conversation.
No description provided.