Files
Palash Debnath 18bf05a0ef iOS: simulator screenshot tour in CI + visual fixes (#2968)
* ci(mobile): iOS screenshot tour of every screen

A UI test walks consent, connect, Speak (with keyboard and engine picker),
Voices, Dub, Dictate and Settings against the mocked host, then relaunches
in light mode, keeping a screenshot of each. The mobile workflow exports
them as the ios-screenshots artifact so the iOS app can be reviewed
visually without a local Xcode.

* fix(ios): visual review from the simulator screenshot tour

- Consent: real heading, Android's copy, exactly Yes/No; dismissing = No.
- Speak: editor placeholder (also its accessibility label).
- Search: one token-styled container, no nested field box.
- Dub: 'Choose' when no languages are selected; history uses the shared
  mobile.dub.history_meta string.
- Dictate: one tap-or-hold control instead of a button plus a label.
- Settings: palette rows with compact swatches instead of two filled
  buttons.

* test(ios): UI tests match how SwiftUI exposes sheets and fields

The first simulator run showed the new tests, written without a simulator,
queried XCUIElement.sheets (SwiftUI sheets aren't exposed as sheets) and
pinned a search text field to the 44 pt container height (the field is the
inner text line). Assert the two consent choices by identifier, drag from
the sheet's grabber above the title, and drop height and vacuous sheet
checks; the screenshots cover layout.

* test(mobile): deflake the receipt test; dismiss consent with a real swipe

- Android: the failed-upload receipt test waited 5 s without advancing the
  main looper, so a slow runner timed out (passed on the same code before).
  Drive the looper while waiting, up to 20 s.
- iOS: dismiss the consent sheet with swipeDown on its content instead of a
  computed coordinate drag that missed the sheet.

* test(ios): screenshot tour requires the Speak controls; drop the fake light relaunch

Review: a missing engine or Generate control let the tour pass silently, and
the -AppleInterfaceStyle relaunch only reopened consent, not light mode.
2026-10-19 19:24:11 +05:30
..