| name | ios-emulator |
| description | Control and interact with the iOS simulator via the steve CLI — launch apps, tap UI elements, take screenshots, and read accessibility trees. |
Steve - iOS automation
steve is added to PATH by the repo dev shell and is backed by scripts/ui/steve.
- Use
steve to verify iOS behavior and navigate the app.
- The wrapper re-enters the repo's
.#xcode shell automatically when needed.
Quick start
steve launch && steve a11y && steve screenshot /tmp/s.png
steve tap "Get started" && steve a11y && steve screenshot /tmp/s.png
steve tap 200,780 && steve a11y && steve screenshot /tmp/s.png
steve swipe 200 700 200 200 300 && steve a11y && steve screenshot /tmp/s.png
steve type "hello"
steve --device <UDID> a11y
Workflow tips
screenshot and a11y auto-wait for idle. You usually do NOT need wait-for-idle or sleep before them.
- Chain commands with
&& for tap-then-verify workflows: steve tap "Continue" && steve screenshot /tmp/s.png
- Always check
a11y on unfamiliar screens before tapping by text. Some controls are exposed only by coordinates or IDs.
tap "text" is exact-match only. Use the exact visible accessibility text from a11y.
a11y output is normalized, not raw Appium XML. Bounds are printed in (left,top,right,bottom) form.
- For navigation, prefer visible buttons like
HeaderBackButton, Close, or direct coordinate taps. There is no Android-style key 4 BACK command here.
- For parallel simulator work, pass
--device <UDID> on every command. Steve keeps separate Appium sessions per device, bundle, port, and headless mode.
- If the app or simulator gets into a bad state, reuse
launch, stop, or reset rather than trying random taps.
- Use screenshots for real UI verification.
a11y is enough for navigation, but screenshots are better for confirming layout and styling.
Reference
steve screens
steve info
steve launch
steve restart
steve stop
steve reset
steve open-url https://example.com
steve wait-for-idle
steve screenshot /tmp/s.png
steve a11y
steve tap "Button text"
steve tap 200,780
steve swipe 200 700 200 200 300
steve type "hello"
Useful options:
steve --device <UDID> ...
steve --bundle com.fedi ...
steve --app /absolute/path/to/FediReactNative.app ...
steve --no-wait ...
steve --no-boot ...