Developer Tools
XCTest
Run XCTest and XCUITest sessions through DVT.
XCTest support builds on DVT, Installation Proxy, AFC, RSD, and CoreDevice Proxy. The public types include TestConfig, XCUITestService, and WDA run handles.
Use It For
- Build XCTest configuration payloads.
- Start XCUITest flows.
- Run WDA-backed test sessions.
- Bridge WDA ports when needed.
Feature Flag
[dependencies]
idevice = { version = "0.1.64", features = ["usbmuxd", "xctest"] }Service Names
| Path | Value |
|---|---|
| DVT Lockdown | com.apple.instruments.remoteserver |
| DVT RSD | com.apple.instruments.dtservicehub |
Rust Example
use idevice::dvt::xctest::{TestConfig, XCUITestService};
let config = TestConfig::from_installation_proxy(
&mut installation_proxy,
"com.example.Runner",
).await?;
let service = XCUITestService::new(provider).await?;CLI Equivalent
idevice-tools xctestCommon Errors
| Error | What to check |
|---|---|
| Channel creation failed | The DVT remote server did not accept the channel identifier. |
| Protocol decode error | Check that the client and device service are using the expected DTX payload shape. |
| Developer service unavailable | Start from the iOS 17+ tunnel path or a device state that exposes developer services. |