Skip to content

ci: run the iOS mobile web e2e tests on a simulator - #1310

Merged
plum117 merged 8 commits into
webdriverio:mainfrom
plum117:ci/ios-simulator-suites
Oct 10, 2026
Merged

plum117 merged 8 commits into
webdriverio:mainfrom
plum117:ci/ios-simulator-suites

Conversation

@plum117

@plum117 plum117 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

What

  • New workflow ios simulator: a new iOS simulator (iPhone 17 Pro, the newest iOS runtime of the default Xcode) in a macos-26 runner, with Appium 3.8.0 and the XCUITest driver 12.16.0. Same triggers as the android emulator workflow (ci: run the Android mobile web e2e tests on an emulator #1306). The LambdaTest iOS jobs stay.
  • .github/scripts/ios-simulator-e2e.sh:
    • builds WebDriverAgent before the first session (appium driver run xcuitest build-wda; output in logs/build-wda.log);
    • runs pnpm test.local.sims.web 3 times: a warm-up (the full page test only; its result and files are not kept), a setup run that saves the baselines, and a compare run (a missing baseline fails). If the setup run fails, the job stops and the compare run does not happen;
    • stops Appium and shuts down the simulator at the end.
  • tests/configs/wdio.local.ios.sims.web.conf.ts:
    • takes the simulator name and the iOS version from IOS_DEVICE_NAME / IOS_PLATFORM_VERSION (the defaults do not change; same for the sims app config);
    • in CI only: connectionRetryTimeout 10 min, and appium:isHeadless, appium:wdaLaunchTimeout 180 s, appium:webviewConnectTimeout 60 s, appium:webviewConnectRetries 120, appium:useNewWDA. Each value comes from a failed CI run (see the commits): the first session on a new simulator takes about 3 minutes, Safari is reported late by the web inspector, and a reused WebDriverAgent can have stopped.
  • AGENTS.md and the verify skill describe the new workflow and the env vars.

Test

Notes

🤖 Generated with Claude Code

@changeset-bot

changeset-bot Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ce96e20

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@plum117
plum117 marked this pull request as ready for review October 9, 2026 21:38
@greptile-apps

greptile-apps Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[High impact] The reviewed changes appear safe to merge; no blocking issue was found.

Summary

Adds iOS simulator checks on macos-26, alongside the existing cloud jobs.

  • GitHub now checks iOS mobile screenshots on a fresh simulator.
  • iOS simulator tests can target chosen devices and allow more startup time in CI.
  • The test guides now explain how to run iOS simulator checks.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Create and boot simulator] --> B[Build WebDriverAgent]
  B --> C[Start Appium]
  C --> D[Warm-up test]
  D --> E[Discard warm-up images]
  E --> F[Save baselines]
  F -->|Success| G[Compare screenshots]
  F -->|Failure| H[Stop Appium and simulator]
  G --> H
Loading

Reviews (6) · Last reviewed commit: "ci: start a new WebDriverAgent for each ..." · Reviewed by Greptile

dprevost-LMI and others added 8 commits October 9, 2026 20:14
… from env vars

IOS_DEVICE_NAME and IOS_PLATFORM_VERSION replace the fixed simulators
(iPhone 15 Pro with iOS 17.5, iPhone 15 with iOS 17.2). The defaults do
not change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new workflow creates a new simulator (iPhone 17 Pro, the newest iOS
runtime of the default Xcode) in a macos-26 runner, starts Appium 3 with
the XCUITest driver, and runs the mobile web suite 3 times: a warm-up
(WebDriverAgent build, Safari first-start tip, first-boot notification),
a setup run that saves the baselines, and a compare run. Same triggers as
the Android emulator workflow. The LambdaTest iOS jobs stay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In the first run, Appium built WebDriverAgent inside the session and
waited only 60 s for it, so every session start timed out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Appium restarted the simulator with a window because it was booted
headless, and the restart took more than 120 s. Set appium:isHeadless in
CI only, so local runs keep the Simulator window.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first session on a new CI simulator took 183 s, and WebdriverIO
stopped waiting after 180 s (connectionRetryTimeout). WebDriverAgent also
needed more than its 60 s start limit. In CI only: connectionRetryTimeout
10 minutes and wdaLaunchTimeout 180 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The web inspector reported the Safari application just after Appium
stopped looking for it (20 retries of 500 ms). In CI only:
webviewConnectTimeout 60 s and webviewConnectRetries 120.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In run 5 the setup run passed, but the compare run failed: Appium reused
the cached WebDriverAgent of the previous session, which had stopped
(connect ECONNREFUSED). In CI only: appium:useNewWDA.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@plum117
plum117 force-pushed the ci/ios-simulator-suites branch from d60c42c to ce96e20 Compare October 10, 2026 00:14
@plum117
plum117 marked this pull request as ready for review October 10, 2026 00:35
@plum117
plum117 merged commit 79027a5 into webdriverio:main Oct 10, 2026
11 checks passed
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.

2 participants