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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions