Use case
Problem
Maestro currently cannot reliably test offline behavior on iOS simulators.
setAirplaneMode is a no-op on iOS
- iOS Simulator exposes no real airplane-mode toggle
- As a result, offline-dependent flows are not testable or deterministic on iOS
This blocks validation of common and critical UX paths such as:
- Offline login and error states
- Cached / offline-first content
- Retry and network recovery UI
Android supports this reliably; iOS does not, creating a cross-platform testing gap.
Alternatives considered
Proposal
Add a reliable “offline mode” implementation for iOS simulators that makes setAirplaneMode deterministic.
From a user perspective:
setAirplaneMode(true) reliably forces the simulator into an offline state
setAirplaneMode(false) restores normal connectivity
- State is safely cleaned up even if a run fails
One possible implementation:
- Temporarily blackhole simulator traffic by setting macOS HTTP + HTTPS proxies to
127.0.0.1:<closed-port>
- Snapshot and restore previous proxy configuration on disable and driver exit
- Ensure Maestro’s XCTest control channel bypasses the proxy (
NO_PROXY)
Anything else?
Use case
Problem
Maestro currently cannot reliably test offline behavior on iOS simulators.
setAirplaneModeis a no-op on iOSThis blocks validation of common and critical UX paths such as:
Android supports this reliably; iOS does not, creating a cross-platform testing gap.
Alternatives considered
Network Link Conditioner
Simulator network disable / airplane mode
App-level mocking / stubbing
Proposal
Add a reliable “offline mode” implementation for iOS simulators that makes
setAirplaneModedeterministic.From a user perspective:
setAirplaneMode(true)reliably forces the simulator into an offline statesetAirplaneMode(false)restores normal connectivityOne possible implementation:
127.0.0.1:<closed-port>NO_PROXY)Anything else?
This is intended as an “offline enough” mechanism for simulator E2E testing
A minimal E2E validation flow could assert: