Skip to content

Maestro hangs indefinitely on macOS Sequoia 15.0 + Xcode 16.2 - fails to connect to iOS Simulator #173

@franziskusb

Description

@franziskusb

Is there an existing issue for this?

  • I have searched the existing issues and didn't find mine.

Steps to reproduce

1. Create a fresh Expo project:
   npx create-expo-app@latest MaestroTest --template blank
   cd MaestroTest

2. Build and install on iOS Simulator (iPhone 15, iOS 17.4):
   npx expo run:ios

3. Verify the app is installed and running on the simulator

4. Create a minimal Maestro test file:
   mkdir -p .maestro
   echo 'appId: com.yourname.MaestroTest
   ---
   - launchApp' > .maestro/simple.yaml

5. Run Maestro test:
   maestro test .maestro/simple.yaml

6. Observe: Command hangs indefinitely with no output (tested 2+ minutes)

Even simpler - this also hangs:
   maestro hierarchy

Test Device: iPhone 15 Simulator (UDID: 8537048C-41D1-4201-ADAB-85F3C1CFC60A)
iOS Version: 17.4

Additional verification:

  • Confirmed simulator is booted: xcrun simctl list devices | grep Booted
  • Confirmed app is installed: xcrun simctl listapps booted | grep CFBundleIdentifier
  • Tested with single simulator only (all others shut down)
  • Installed idb-companion 1.1.8 via Homebrew - no change
  • Set MAESTRO_DRIVER_STARTUP_TIMEOUT=120000 - no change

Actual results

  • maestro test and maestro hierarchy commands hang indefinitely with no output (tested up to 2+ minutes)
  • Must be manually killed with Ctrl+C
  • Maestro Studio desktop app shows "Failed to connect to devices service"
  • No devices appear in Maestro Studio's device list

Maestro log (~/.maestro/tests/*/maestro.log) stops after system info and never attempts simulator connection:

12:14:59.905 [ INFO] MAESTRO.logSystemInfo: ---- System Info ----
12:14:59.906 [ INFO] MAESTRO.logSystemInfo: Maestro Version: 2.0.10
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: OS Name: Mac OS X
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: OS Version: 15.0
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: Architecture: aarch64
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: Java Version: 17
12:14:59.979 [ INFO] MAESTRO.logSystemInfo: Xcode Version: 16.2
12:15:00.326 [ INFO] MAESTRO.logSystemInfo: ---------------------
12:15:00.355 [DEBUG] ... Using SLF4J as the default logging framework

Logging stops here - no connection attempt is ever made.

Expected results

Maestro should connect to the iOS Simulator and either:

  • Execute the test flow successfully, or
  • Display an error message explaining why connection failed

The command should not hang indefinitely with no output.

About app

  • Open source reproduction: Fresh Expo project created with npx create-expo-app@latest MaestroTest --template blank
  • Cross-platform app: React Native / Expo
  • Framework: Expo SDK 52, React Native 0.76.x
  • iOS deployment target: iOS 15.1+

Important: This is NOT app-specific. The issue was first observed on a production app, then reproduced with a brand new hello world Expo project to rule out app-specific causes.

About environment

  • Machine: Apple Silicon Mac (arm64)
  • macOS: Sequoia 15.0 (Darwin 24.0.0)
  • Xcode: 16.2 (Build 16C5032a)
  • iOS Simulator Runtime: iOS 17.4 (also tested iOS 18.3 - same result)
  • Java: OpenJDK 17.0.17 (Zulu17)
    openjdk version "17.0.17" 2025-10-21 LTS
    OpenJDK Runtime Environment Zulu17.62+17-CA (build 17.0.17+10-LTS)
    OpenJDK 64-Bit Server VM Zulu17.62+17-CA (build 17.0.17+10-LTS, mixed mode, sharing)
    
  • idb-companion: 1.1.8 (installed via Homebrew, built Aug 2022)

Logs

Maestro Log
12:14:59.904 [ INFO] maestro.cli.report.TestDebugReporter.logSystemInfo: Debug output path: /Users/franziskus/.maestro/tests/2025-12-24_121459
12:14:59.905 [ INFO] MAESTRO.logSystemInfo: ---- System Info ----
12:14:59.906 [ INFO] MAESTRO.logSystemInfo: Maestro Version: 2.0.10
12:14:59.906 [ INFO] MAESTRO.logSystemInfo: CI: Undefined
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: OS Name: Mac OS X
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: OS Version: 15.0
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: Architecture: aarch64
12:14:59.907 [ INFO] MAESTRO.logSystemInfo: Java Version: 17
12:14:59.979 [ INFO] MAESTRO.logSystemInfo: Xcode Version: 16.2
12:15:00.182 [ INFO] MAESTRO.logSystemInfo: Flutter Version: 3.38.1
12:15:00.326 [ INFO] MAESTRO.logSystemInfo: Flutter Channel: stable
12:15:00.326 [ INFO] MAESTRO.logSystemInfo: ---------------------
12:15:00.355 [DEBUG] io.micrometer.common.util.internal.logging.InternalLoggerFactory.newDefaultFactory: Using SLF4J as the default logging framework

Log ends here - process hangs with no further output.

idb_companion output when started manually
IDB Companion Built at Aug 12 2022 08:41:50
IDB Companion architecture arm64
Providing targets across Simulator and Device sets.
CoreSimulator: Loading from /Library/Developer/PrivateFrameworks/CoreSimulator.framework
CoreSimulator: Successfully loaded
Starting swift server on tcp port 10882
Swift server started on [IPv6]::/:::10882
{"grpc_swift_port":10882,"grpc_port":10882}
Companion will stay alive if target goes offline

idb starts successfully but Maestro still cannot connect.

Simulator verification commands
$ xcrun simctl list devices | grep Booted
    iPhone 15 (8537048C-41D1-4201-ADAB-85F3C1CFC60A) (Booted)

$ xcrun simctl listapps booted | grep CFBundleIdentifier | grep -i maestro
        CFBundleIdentifier = "com.franziskus.MaestroTest";

$ xcrun simctl getenv booted SIMULATOR_RUNTIME_VERSION
17.4

Maestro version

2.0.10

How did you install Maestro?

install script (https://get.maestro.mobile.dev)

Anything else?

Hypothesis:
The combination of macOS Sequoia 15.0 + Xcode 16.2 breaks Maestro's iOS device detection/connection layer. The failure occurs before any test execution - Maestro cannot establish initial communication with the simulator.

Note about idb-companion:
The installed version (1.1.8) was built in August 2022 - significantly before Xcode 16 and macOS Sequoia were released. This may be a contributing factor.

Workarounds attempted (none successful):

  • Installing idb-companion
  • Starting idb manually with explicit UDID
  • Testing with single simulator only
  • Setting MAESTRO_DRIVER_STARTUP_TIMEOUT environment variable
  • Testing with both iOS 17.4 and iOS 18.3 runtimes
  • Testing with both dev and release builds

Impact:
Complete loss of iOS E2E testing capability on macOS Sequoia + Xcode 16.2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions