mobile-dev-inc / mobile-dev-inc/maestro-docs

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

Open
#173 4 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
85
Forks
92
Avg merge
16h 6m
Merged PRs (30d)
1

Description

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?
  • mobile-dev-inc/Maestro#2628 - Similar symptoms, closed as "app-specific." However, this report proves it's NOT app-specific since a fresh Expo project also fails.
  • mobile-dev-inc/Maestro#2559 - iOS testing doesn't work (was resolved by Java upgrade - not applicable here, Java 17 is installed)
  • mobile-dev-inc/Maestro#2422 - Swipe command fails on Xcode 16.2

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the hang with maestro test .maestro/simple.yaml and maestro hierarchy on the stated macOS, Xcode, and simulator setup. Then trace the iOS device detection and connection entry point using the provided Maestro log and idb-companion output. Done means Maestro connects to the simulator or reports a useful error instead of hanging indefinitely.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, java, macos, react-native
Domain
mobile-dev, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.