Skip to content

fix(ios): make UI tests pass on iPhone Duo - #49

Merged
Stanback merged 2 commits into
mainfrom
fix/ios-duo-ui-tests
Oct 24, 2026
Merged

Stanback merged 2 commits into
mainfrom
fix/ios-duo-ui-tests

Conversation

@Stanback

Copy link
Copy Markdown
Owner

The iOS UI suite failed 7 of 28 tests on an iPhone Duo simulator, whose short display is 466×678 with a side system rail. The app itself was fine; the failures came from the shared test scroller, reach(_:in:earlier:), and from sheet toolbars.

  • Wrong list scrolled. With a sheet open, the helper scrolled the list behind the sheet. It now picks the list that starts below the top of the window, which is the sheet.
  • Drags swallowed. Drags started on the keyboard's Done row or on segmented controls. They now start above the keyboard row and in the list's side margin.
  • Overshooting flings. At accessibility text size, one swipe moved the list farther than the whole visible area. The helper now drags an on-page row by the exact distance needed, and holds so it doesn't keep sliding.
  • Sheets dismissed. Searching for off-page rows dragged down at a sheet's top. The search now runs until the list stops moving, then reverses, and never drags down at a sheet's top.
  • Hidden toolbar buttons. The Duo hides a sheet's navigation bar while its content is scrolled, so the bar's Done and confirm buttons go away too. The new tapSheetBar scrolls back up until they're available.
  • Rotation test. The Duo keeps the app in portrait after .landscapeLeft. The test now waits for the rotation and checks that the layout is expanded exactly when the screen is wide.

Tests: 28/28 pass on both devices.

  • iPhone Duo, iOS 27.1: TURNMARK_IOS_RUNTIME=27.1 node scripts/test-ios.mjs app --device <Duo>
  • iPhone 17, iOS 26.5: TURNMARK_IOS_RUNTIME=26.5 node scripts/test-ios.mjs app --device <iPhone 17>

Known gap: on a standard iPhone that failed to rotate, the rotation test would now pass without exercising the wide layout.

🤖 Generated with Claude Code

Stanback and others added 2 commits October 24, 2026 13:03
reach() searched the wrong list, dragged from places that never scroll,
and could dismiss sheets. On a 466x678 display each of these surfaced:

- Pick a presented sheet's list by geometry (it starts below the window
  top); AX order puts it first on the Duo, and the covered converter list
  can still report itself hittable.
- Treat the converter's keyboard toolbar row like the swim editor's: it
  takes touches across its width, so drags must start above it.
- Start drags in the grouped list's side margin; a press-and-drag on a
  segmented control slides its selection instead of scrolling.
- Drag a loaded row by its distance to the visible band instead of
  flinging, which overshot tall accessibility-size rows on short displays.
- Search for an unloaded row until the list stops moving, then reverse,
  and never drag down at a sheet's top (that dismisses the sheet).
- Close Conversion details with tapSheetBar, since the Duo hides a
  scrolled sheet's navigation bar.
- The Duo's display keeps the app portrait when the device rotates;
  assert a landscape workspace stays expanded only when it is wide.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Stanback
Stanback merged commit 7aebfcd into main Oct 24, 2026
12 checks passed
@Stanback
Stanback deleted the fix/ios-duo-ui-tests branch October 24, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant