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

TeamApps stay signedLimits
Free Apple ID (Personal Team)7 days: run proofsheet ios setup again thenAt most 3 apps per phone and 10 App IDs a week
Paid Apple Developer Program teamA yearApple'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.