iPhone setup
iPhone setup
On iPhones the hub uses WebDriverAgent to drive the phone and a broadcast app to record its screen and sound. Both are built on your Mac and signed with your Apple team.
Before you start
- Install Xcode from the App Store, then select it:
sudo xcode-select -s /Applications/Xcode.app. - Sign in to your Apple ID in Xcode: Settings > Accounts.
- Find your team ID, 10 capital letters or digits: developer.apple.com/account under Membership details, or Xcode's Signing & Capabilities.
- Plug each iPhone in by USB, tap Trust on it, and turn on Developer Mode: Settings > Privacy & Security > Developer Mode, then restart the phone.
Build for your team
proofsheet ios setup --team ABCDE12345
It builds WebDriverAgent and the broadcast app for each iPhone the hub lists and installs them. Once at least one iPhone built, the team is saved in ~/.proofsheet/config.toml and Proofsheet restarts to use it. To set up one phone only, add --device with its name or UDID:
proofsheet ios setup --team ABCDE12345 --device "Test iPhone"
Then, on each iPhone:
- Settings > General > VPN & Device Management: trust your Apple ID.
- Allow Local Network when WebDriverAgentRunner asks.
A free Apple ID or a paid team
| Team | Apps stay signed | Limits |
|---|---|---|
| Free Apple ID (Personal Team) | 7 days: run proofsheet ios setup again then | At most 3 apps per phone and 10 App IDs a week |
| Paid Apple Developer Program team | A year | Apple's usual limits |
proofsheet doctor shows the date WebDriverAgent is signed until, warns two days before it runs out, and fails once it has.
Locked phones
A test iPhone with a passcode locks itself. Save the passcode and the hub types it when an agent or a run needs the phone:
proofsheet passcode set --device "Test iPhone"
Run it in your own terminal: macOS asks for the passcode twice, without showing it, and keeps it in your login keychain. If a try leaves the phone locked, the hub deletes the saved passcode and stops trying until you set it again. proofsheet passcode forget --device "Test iPhone" deletes it.
Add your iOS app to the project
Run proofsheet init again in the repo with the bundle id: proofsheet init --ios com.example.app --android com.example.app.