Add iOS physical device support, update WDA, and refactor platform code - #1
Merged
Merged
Conversation
- Add device type detection (simulator vs physical device) - Add app installation branching (simctl for simulators, ios-deploy for devices) - Add device discovery for both simulators and connected physical devices - Add iproxy port forwarding for physical device WDA communication
- Rename WebDriverAgent folder to version-agnostic path - Update WDA from v8.0.0 to v11.1.3 for Xcode 17/iOS 26 compatibility - Add wda subcommand for managing WebDriverAgent: - wda version: show current version - wda update: update to latest version - wda update <version>: update to specific version - wda update --check: check if update available - Setup() now auto-downloads WDA if missing - Add version detection from package.json and GitHub API
The previous line-by-line string parsing was incorrectly matching the UDID in the dataPath field instead of the udid field, causing wrong device names to be returned (e.g., "iPhone Air" instead of "iPhone 17"). Fixed by using proper JSON parsing of simctl output to correctly match devices by their UDID field and extract the name directly.
Move iOS and Android driver functions to dedicated files for better organization: - ios.go: iOS driver, simulator detection, device info, app installation - android.go: Android driver, UIAutomator2 setup, device detection Also removes unused WDADir constant and GetWDABasePath() from setup.go.
omnarayan
added a commit
that referenced
this pull request
Feb 1, 2026
Add iOS physical device support, update WDA, and refactor platform code
omnarayan
added a commit
that referenced
this pull request
May 14, 2026
Lets the browser driver reuse a user-data-dir across runs so cookies,
localStorage, sessionStorage, and installed extensions survive between
test invocations. Useful for:
- speeding up auth-heavy CI suites (log in once, reuse across flows)
- testing flows that depend on installed Chrome extensions
- keeping a stable browser profile for cookie-driven behaviour
Usage:
maestro-runner --platform web --user-data-dir ~/.cache/mr-profile \
test flow.yaml
Also exposed via MAESTRO_USER_DATA_DIR for shell-driven CI configuration.
Default unset → identical to current ephemeral-profile behaviour (no
backward-compat risk).
Implementation:
- cdpdriver.Config gains UserDataDir field.
- When non-empty, passed to Rod's launcher as `user-data-dir=<path>`.
Existing prefs-file write (writeChromePref) already handled this dir,
so password-manager disabling still works on persistent profiles.
- CLI plumbing: --user-data-dir flag → RunConfig.UserDataDir → web.go
construction.
- Caller manages the directory's lifecycle (the runner doesn't create
or clean it up).
Tests:
- TestUserDataDir — end-to-end persistence: two New() calls against
the same dir, localStorage written in run #1, read back in run #2.
Uses manually-managed temp dir because t.TempDir() races Chrome's
lock-file release on macOS.
Real-flow verification:
- Two `maestro-runner test` invocations against `--user-data-dir
/tmp/profile` and a real http://localhost origin (data: URLs disable
localStorage). First flow writes; second reads back the value.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
8ba97bcidevice_id, install apps viaios-deploy, get device info viaideviceinfo2362edawda versionandwda updateCLI commands6348f9egetSimulatorInfo61d8d56Files Changed
pkg/cli/test.go- Reduced from ~2003 to 1375 linespkg/cli/ios.go- New: iOS driver and device functionspkg/cli/android.go- New: Android driver functionspkg/cli/wda.go- New: WDA management commandspkg/driver/wda/setup.go- WDA download/update logicTest plan
maestro-runner wda versioncommandmaestro-runner wda update --checkcommand