This crate provides a safe wrapper around the simctl
utility that ships with
Xcode.
🚨 Important: this library only works if Xcode is installed and currently only works with Xcode 12.
use simctl::{Simctl, DeviceQuery};
let simctl = Simctl::new();
let device = simctl.list()?.devices().iter()
.available()
.by_name("iPhone SE (2nd generation)")
.next().unwrap();
let _ = device.boot();
device.launch("com.apple.mobilesafari").exec()?;
let image = device.io().screenshot(
simctl::io::ImageType::Png,
simctl::io::Display::Internal,
simctl::io::Mask::Ignored,
)?;
device.shutdown()?;
The following operations are currently supported by this crate. For a full list
of operations that are available in the original CLI, run xcrun simctl
.
- boot
- get_app_container
- getenv
- install
- io screenshot
- keychain reset
- launch
- list
- openurl
- privacy
- push
- shutdown
- status_bar
- terminate
- ui
- uninstall
- addmedia
- clone
- create
- delete
- diagnose
- erase
- icloud_sync
- install_app_data
- io enumerate
- io poll
- io recordVideo
- keychain add-cert
- keychain add-root-cert
- logverbose
- pair
- pair_activate
- pbcopy
- pbpaste
- pbsync
- rename
- spawn
- unpair
- upgrade