Skip to content

e2e: enable demo_app on iOS (draft, iterating)#3253

Draft
amanjeetsingh150 wants to merge 7 commits intomainfrom
enable-e2e-demo-app
Draft

e2e: enable demo_app on iOS (draft, iterating)#3253
amanjeetsingh150 wants to merge 7 commits intomainfrom
enable-e2e-demo-app

Conversation

@amanjeetsingh150
Copy link
Copy Markdown
Collaborator

Summary

  • Remove the dispatcher-level skip of demo_app on iOS in e2e/run_tests (single-app and full-suite branches) plus the stale # demo_app has OOM issues on GHA comment.
  • The iOS path of test-e2e.yaml already builds demo_app.app for the simulator and calls ./run_tests ios. Tag-filtering in run_tests already excludes android-only flows on the iOS path, so this is the entire enablement diff.

Why draft

Iterating to green: each test-ios failure will be diagnosed with the diagnose-maestro-failure agent, reported back, and the disposition (fix vs. tag android-only vs. defer) decided per flow. PR will flip to ready-for-review once test-ios is green.

Disposition log

Flow Symptom Disposition Notes
(updated as we iterate)

Test plan

  • test-e2e.yaml test-ios job runs end-to-end without the runner being killed (no OOM).
  • All cross-platform passing-tagged demo_app flows pass on iOS.
  • The _run_failing block on iOS still reports the failing-tagged flows as expected failures.
  • No regressions in the existing test-android or test-web jobs.

The OOM concern that motivated this skip predates the move to macos-26
runners. Remove the dispatcher-level short-circuit so demo_app's
passing-tagged flows run on iOS via the existing test-e2e workflow;
android-only flows are still excluded via tag filtering.
Maestro's CLI ships a pinned applesimutils that it unpacks to
~/.maestro/deps/applesimutils. LocalSimulatorUtils falls back to a
PATH-based applesimutils if the pinned binary fails. Install via
wix/brew so that fallback path actually has something to call.
- Remove the simulator screen-recording start/stop/upload steps from
  the test-ios job. The xctest runner logs and ~/.maestro artifacts
  carry enough debugging context for failure analysis.
- Skip wikipedia on iOS in run_tests (mirroring the existing android
  skip) and skip downloading wikipedia.zip in download_apps. Wikipedia
  is no longer part of the iOS demo_app focus on this branch.
iPhone 17 Pro is @3x DPR. The Flutter cropped_screenshot fixture's
physical/DPR math doesn't round-trip cleanly through DPR=3 (e.g.
400/3=133.33, then snapped back to 399 or 400 depending on path),
producing a 1-pixel size mismatch against the Android-generated
baseline. iPhone SE (3rd gen) is @2x, so 400/2/320/2/etc. are all
integer-clean and the existing baseline works on both platforms.
Bump runtime to iOS 26.2 alongside.
The iPhone SE (3rd gen) switch fixed the assertScreenshot dimension
round-trip but its smaller screen caused the Flutter counter widget
to fall below the viewport on the demo_app home page, breaking
several non-screenshot flows (repeat, runFlow, retry, copyTextFrom).
Going back to iPhone 17 Pro keeps the larger viewport; we will
address the screenshot DPR issue separately. Runtime stays on iOS
26.2.
The cropped_screenshot fixture renders 400x320 on Android (DPR=1.5)
but 399x321 on iPhone Pro (DPR=3) — Flutter's physical/DPR math
doesn't round-trip cleanly across both DPRs. Rather than touching
the fixture, ship a separate iOS baseline.

- Tag existing assertScreenshotCropped{,JPG}.yaml as android-only;
  baselines unchanged.
- Add assertScreenshotCropped{,JPG}_ios.yaml mirroring the same
  flow steps, tagged ios-only, against new iOS-Pro baselines
  captured locally on iPhone 17 Pro / iOS 26.0.
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