Test iOS apps on real iPhones from your Mac
iFarm turns one Mac and a few stock iPhones into a device lab. You record a flow once (sign up, log in, buy, settings), replay it on every phone and screen size, and test mode writes a pass/fail HTML report with a screenshot of every check. It's free and needs no code, no servers and no jailbreak.
Why test on real iPhones
Simulators are fast, but they can't show you everything. Real devices catch what simulators can't: camera, push notifications, Face ID prompts, Bluetooth, real networks and older phones. iFarm puts those real phones on your Mac's screen, every one live in one window, so you can test by hand with your mouse or let a recorded flow do the tapping.
It suits app developers testing their own app, QA teams, and freelancers who test for other companies. For a client's app, follow that client's rules.
What you need
- A Mac on macOS 14 (Sonoma) or later, Apple silicon or Intel.
- Xcode, free from the Mac App Store, and an Apple ID added in Xcode. A free Personal Team works (the helper is re-signed every 7 days, and iFarm renews it automatically); the Apple Developer Program ($99/year) makes the helper last a year and registers up to 100 iPhones a year.
- iPhones on iOS 16 or later with Developer Mode on, and a data cable for the first connection. No jailbreak.
- A powered USB hub for 3 or more phones.
Setup takes about 20 minutes, mostly waiting for Xcode to download. The setup guide walks through it.
Workflow: record a flow and replay it on every size
- Open one phone large in iFarm and press Record.
- Do the flow through iFarm's live screen: open your app, sign up, log in, change a setting. Taps, swipes, holds, buttons, typed text and pauses are recorded.
- Press Stop and save. The automation appears under Automations.
- Check the phones you want in All phones (or pick a group) and press Run.
For each tap, iFarm remembers the text on screen under your finger, so a replay finds the same button on a different iPhone size. Steps without text fall back to the position on screen. Opening your app is saved as an Open app step, so it works even if the icon sits somewhere else on another phone. You can also pick your own apps by name: Read phones refreshes the list of installed apps.
Workflow: turn it into a test with a report
- Open the automation and turn on Test mode in its header.
- Make sure each important screen has a Wait for text step. Recording adds these checks for you; in test mode every one must pass.
- Run it. Each run writes an HTML report with every check, a screenshot of each, the phone and iOS version, your app's version and build, the timing and the full log.
- Open it with Open report, or later from History → Report. Reports are kept in
~/Library/Application Support/iFarm/Reports, one folder per run, ready to zip and send to a developer or a client.
In test mode nothing tries to recover: there's no going back or reopening the app, so a problem shows up as a failure instead of being smoothed over.
Testing permission prompts
In test mode, popups are left to your steps. That means you can test the moment your app asks for camera, location or notification access: add a step that taps Allow or Don't Allow yourself, then check what your app shows next. Run the same flow on a phone that already granted the permission and one that didn't to see both paths.
Workflow: nightly runs on every phone
- Go to Plan → Schedules and add a schedule for your test automation (or a flow that chains several tests).
- Choose all phones, a group or chosen phones, and a time window at night, on the weekdays you want.
- In the morning, open History: every run is listed with the phone, what started it and the result, and failed runs have a screenshot.
Flows chain automations with on success, on failure and always, so you can run "log in", then "checkout", and send a failed login straight to a cleanup step.
Tip: iFarm's helper and Xcode's own UI tests (XCUITest) can't drive the same phone at the same time. Give each its own phone, or stop iFarm on that phone while your XCUITest suite runs.
More things QA teams do with it
- Screen sizes, languages and text sizes: run one flow on phones set up differently to see where layouts break.
- Reproduce a bug from a support ticket on the same model and iOS version.
- Long-running reliability tests: hours of use on several phones to find crashes, memory growth and battery drain.
- App Store screenshots and demo videos on several iPhone sizes at once.
- Debugging proxies: iFarm doesn't change the phones' network settings, so set Settings → Wi-Fi → ⓘ → Configure Proxy on the phone to use Charles or Proxyman.
A device lab on one Mac
A Mac with 8 GB of memory runs 5–10 phones comfortably, 16 GB runs 10–20, and 32 GB or more runs 20–30, limited by USB hubs. Each phone costs about 140 MB of Mac memory. The Health page shows live numbers and "Room for about N more phones". The hardware guide covers hubs and cables.
Frequently asked questions
Do I need to write code to test my app with iFarm?
No. You record a flow by using the phone through iFarm, or edit steps in a list (tap text, wait, swipe, wait for text, if text is on screen, repeat). Automations export as JSON if you want to share them.
Can iFarm test my app on different iPhone sizes?
Yes. Replays find buttons by the text on screen, so a flow recorded on one iPhone runs on other sizes. Mirror in the grid also repeats your manual taps and swipes on all checked phones, scaled to each screen.
Does iFarm replace Appium or XCUITest?
Not for coded test suites in CI. iFarm is a no-code Mac app for real iPhones; see iFarm vs an Appium device farm for when each fits.
Is my app or test data sent anywhere?
No. iFarm has no servers and no accounts. Nothing leaves your Mac except the WebDriverAgent download, the community template list when opened, and screenshots sent to the AI provider you choose (none with a local model, and none if you don't use AI).