No devices found for the iOS simulator in CI

A CI or CI-like Mac job fails with no iOS simulator devices found for the destination, even though it works on a developer machine.

Partial fit Likely class: destination availability in runner environments · Updated

Symptom

The same command that runs locally fails on a CI (or CI-like) Mac: no iOS simulator devices match the destination, so testing never starts. The runner’s device set is not what your command assumes.

What it usually looks like

Why it happens / likely failure classes

Runner environments are provisioned differently from a developer Mac:

Quick checks

Run these on the runner (add them as a CI step):

# What Xcode is selected, and what does it actually have?
xcode-select -p
xcrun simctl list runtimes
xcrun simctl list devices available

# What destinations does the runner consider valid?
xcodebuild -showdestinations -scheme YourScheme -workspace YourApp.xcworkspace

If the runtime you target is absent from simctl list runtimes, the device cannot exist — fix provisioning first.

Manual mitigations

When XCSteward may help

This is a partial fit. XCSteward is designed to run against a concrete, verified destination, so on a Mac runner it can:

It is most useful for the operational side once a suitable runtime exists on the runner.

When XCSteward probably will not help

Common questions

What does "No devices found for the iOS simulator in CI" usually mean?
It usually points to destination availability in runner environments. A CI or CI-like Mac job fails with no iOS simulator devices found for the destination, even though it works on a developer machine. Start by checking simulator readiness, destination selection, CoreSimulator/simctl responsiveness, and whether another xcodebuild, simctl, or Simulator process is already active before treating it as a test-code failure.
Can XCSteward help with "No devices found for the iOS simulator in CI"?
This is a partial fit. XCSteward may help when the failure comes from execution readiness, destination selection, timeouts, cleanup, or contention. It probably will not help when the root cause is missing configuration, a broken runtime, a test-code bug, or a vendor image defect.
What should I check first?
Check whether xcrun simctl commands return promptly, whether xcodebuild can resolve a concrete simulator destination, whether the device is truly ready rather than merely Booted, and whether concurrent agents, scripts, or manual runs are touching the same simulator subsystem.