Skip to content

simdrive v0.2.0a1 — Real-device support (observe + logs + app lifecycle)

Choose a tag to compare

@SyncTekLLC SyncTekLLC released this 29 Apr 18:18

First slice of real-device support — observe screenshots, tail logs, manage app lifecycle on paired iPhones / iPads. Touch input remains v0.2.x roadmap (WDA-based; see attached feasibility doc).

Install

pip install --upgrade https://github.com/SyncTek-LLC/specterqa-ios/releases/download/simdrive-v0.2.0a1/simdrive-0.2.0a1-py3-none-any.whl

Real device requirements:

brew install libimobiledevice

(Plus Xcode, plus device paired with this Mac, plus Developer Disk Image mounted on the device — error message names the exact ideviceimagemounter command if the DDI is missing.)

Usage

# Discover paired devices
result = list_devices()
# → [{udid: "00008112-...", name: "Maurice's iPad", model: "iPad Pro 12.9", transport: "wired", ...}]

# Attach to a real device
session_start({target: "device", udid: "00008112-..."})

# Same observe + logs surface as simulator
observe()  # screenshot via idevicescreenshot, marks via Vision OCR
logs({lines: 100})  # via idevicesyslog

# tap/swipe/type_text/press_key raise device_input_unavailable until v0.2.x

Tool surface (13 tools, was 12)

New: list_devices — enumerates paired real devices with udid, name, model, transport, state, and libimobiledevice-readiness diagnostics.

Updated: session_start accepts target: "simulator" | "device".

Updated: observe, logs route through the device backend when target=device.

Verification

  • 34 unit tests / 26 live E2E (simulator path) — all green
  • list_devices live-confirmed against 3 paired devices
  • session_start({target: "device"}) live-confirmed; observe surfaces a clear DDI-mount error when the developer disk isn't mounted

SHA-256

942bc0e9ee632270fa588bd5a0e28384221b401567fe66f4f7568dd7af5d8eea

See REAL_DEVICE_FEASIBILITY.md for the full v0.2 roadmap covering WDA-based touch input.