Skip to content

[BUG] openLink fails on iOS simulator: WDA "Unhandled endpoint: /url" #68

@jongbelegen

Description

@jongbelegen

Description

openLink fails on iOS simulators with WDA error: Unhandled endpoint: /url. The bundled WebDriverAgent appears to be missing the /url route handler, so any flow that opens a custom URL scheme (e.g. for Expo dev client deep linking) cannot run.

Steps to Reproduce

  1. Install maestro-runner v1.1.13 on macOS arm64.

  2. Run maestro-runner wda update (downloads WDA v12.2.0).

  3. Run a flow containing openLink against an iOS simulator:

    appId: com.example.app
    ---
    - openLink: my-scheme://some-path
    maestro-runner --platform ios --device <UDID> \
      --app-file /path/to/MyApp.app --no-app-install \
      test flow.yaml

Expected Behavior

The deep link is opened on the simulator (equivalent to xcrun simctl openurl <UDID> "my-scheme://some-path") and execution continues.

Actual Behavior

Step fails immediately:

✗ openLink (0ms)
  ╰─ WDA error: Unhandled endpoint: /url with parameters {
    wildcards =     (
        url
    );
}

Environment

  • OS: macOS 15.0 (Darwin 24.6.0)
  • maestro-runner version: 1.1.13 (commit 7addd21)
  • WDA version: 12.2.0
  • Executor: Native (default WDA driver)
  • Device/Simulator: iPhone 16, iOS 18.6 (Simulator)

Flow File

appId: com.example.app
---
- clearState
- openLink: exp+example://expo-development-client/?url=http%3A%2F%2Flocalhost%3A8111

Error Output

✓ runScript (15ms)
✓ clearState (1.5s)
✗ openLink (0ms)
  ╰─ WDA error: Unhandled endpoint: /url with parameters {
    wildcards =     (
        url
    );
}

Additional Context

maestro CLI runs the same flow successfully against the same simulator, so it's not an environment issue. A simple workaround (bypassing WDA and shelling out to xcrun simctl openurl <udid> <url> for iOS simulators) would unblock this for the simulator case at least; physical devices presumably still need a WDA-side fix.

This blocks adoption for any project using Expo dev client (or other URL-scheme-based launches), where openLink is essential to load the JS bundle from Metro.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions