- Home
-
XCUITest Testing
Run XCUITest on real iPhones & iPads
Run your XCUITest builds on real iPhones and iPads from iOS 12 through iOS 26 with a single CLI command. Massive parallelism, video & log artifacts and a 99.99% uptime SLA.
Looking at all platforms? See the full automation framework lineup.
- Real Apple devices
- 100+
- iOS versions
- 12 → 26
- Uptime SLA
- 99.99%
Trusted by some of the world's most innovative companies
Why run XCUITest on TestingBot?
Run on a fleet of real Apple devices, not the iOS Simulator. Latest iPhone the day Apple ships it, plus a deep legacy fleet for backwards-compat coverage.
Skip the cabinet of dusty iPhones, the swollen batteries and the MDM headache. TestingBot has run iOS tests on real devices for 5+ years.
Use the same XCUITest framework Apple ships with Xcode. Same APIs, same XCTest assertions, real native performance.
XCUITest in 60 seconds
XCUITest
Apple · built into Xcode · Swift / Objective-C
XCUITest is Apple's official UI testing framework for iOS, iPadOS and tvOS. It is built into Xcode, runs natively on the device through XCTest, and lets you script taps, swipes, scrolls, predicates and accessibility queries against your app's real UI.
Because XCUITest runs on the device itself, tests have full access to native gestures, accessibility identifiers and Apple's official element hierarchy. There is no cross-process bridge, XCUITest is the most accurate way to drive a real iPhone.
- Native Apple framework, built into Xcode
- Swift and Objective-C bindings
- Real iPhones, iPads and tvOS. No simulator drift
- Predicates, accessibility identifiers, native gestures
- XCTest assertions, JUnit XML output for CI
Run XCUITest on real devices with one command
Install the TestingBot CLI, point it at your .ipa and your test bundle, pick a device and you're done. Uploads, capabilities and result polling are all handled for you.
# Install the TestingBot CLI $ npm install -g testingbot-cli # Authenticate (once) — set your KEY and SECRET $ export TESTINGBOT_KEY=your-key $ export TESTINGBOT_SECRET=your-secret # Build your XCUITest bundle with Xcode (one-off) $ xcodebuild build-for-testing \ -scheme MyApp \ -destination 'generic/platform=iOS'
# Run XCUITest on a real iPhone — one command $ testingbot xcuitest MyApp.ipa MyAppUITests-Runner.zip \ --device "iPhone 16" \ --version "26" \ --real-device # → live results in your TestingBot dashboard # → JUnit XML, video and logs via REST API
See the full XCUITest on TestingBot documentation for advanced flags, parallel runs and CI integration.
TestingBot vs an in-house Apple device lab
Maintaining your own iPhones and iPads is expensive. Devices break, batteries swell, iOS updates ship every few weeks. Here is how a hosted Apple device cloud compares.
| Capability | TestingBot | In-house Apple lab |
|---|---|---|
| Device coverage |
Real iPhones and iPads from iOS 12 to 26
|
Limited to what you can buy and rack
|
| Time to first test |
Minutes, upload your .ipa and trigger via API
|
Weeks of provisioning, MDM, certificates, tethering
|
| Parallel scaling |
Up to 100 concurrent XCUITest sessions
|
Capped by the number of devices you own
|
| Video & logs |
Video, device logs, screenshots and JUnit XML
|
Roll your own recording & log aggregation
|
| Reliability |
99.99% uptime SLA, 24/7 monitoring
|
You replace dead batteries and broken screens
|
| Security |
Devices wiped between every session
|
Manual cleanup, leftover state risks
|
| Support |
24/7 human support and dedicated CSM
|
Stack Overflow and your own logs
|
Everything XCUITest needs in the cloud
Beyond running tests, TestingBot exposes the full set of XCUITest capabilities you would set in Xcode, plus cloud-only features like geolocation and network throttling.
-
Build & upload
Compile your .ipa and .xctest with Xcode, then push to TestingBot Storage.
-
Test reports
Video, device logs, screenshots and JUnit XML for every run.
-
Screen orientation
Force portrait or landscape per test, mid-test rotations included.
-
Network throttling
Simulate 3G, 4G, lossy WiFi and offline conditions per session.
-
Localization & geo
Set device locale, language and GPS coordinates for App Store and back-end checks.
iPhone and iPad fleet on demand
A fleet of real Apple devices spanning iOS 12 through iOS 26, refreshed every release. Latest flagship iPhones and iPads available the day Apple ships them.
View all devices
iPhone 17 Pro Max
iPhone 16 Pro
iPad (9th generation)
iPhone Air
iPhone 17
iPhone 16
Video, screenshots and JUnit XML for every run
Every XCUITest run ships with a video screencast, device logs, viewport screenshots and a JUnit XML report compatible with every major CI parser.
Mark sessions as passed or failed from your tests, fetch artifacts via our REST API, and ship results into Jira, Slack or your CI dashboard.
- Full HD video for every test run
- Device logs, app logs and crash reports
- Viewport screenshots on demand
- JUnit XML for Jenkins, GitHub Actions, GitLab CI
Test your iOS app from 20+ regions
Spoof the device GPS to anywhere in the world and verify localisation, geo-targeting and App Store store-front rules from any country your customers live in.
Real devices. Wiped after every session.
Each XCUITest session locks one real iPhone or iPad for your test only. The moment your test ends, the device is wiped, all installed apps are deleted, caches are cleared, and the device is returned to the pool ready for the next customer.
SOC 2-aligned, GDPR-compliant, with SAML SSO and audit logs available for enterprise teams.
- One real device per session, never shared
- Wiped between every session
- Encrypted .ipa uploads with per-app retention controls
-
1
Your XCUITest run locks one real device
A pristine iPhone or iPad is reserved for your session only.
-
2
Tests run natively on real Apple hardware
Real sensors, real accelerometer, real Touch ID and Face ID flows.
-
3
Device wiped on release
Apps removed, caches cleared, accounts wiped. Returned clean to the pool.
Test apps that talk to internal backends
Use our secure tunnel so XCUITest runs can reach private APIs, staging environments and services running on localhost.
Encrypted end-to-end, no inbound firewall rules required, ready out of the box for popular CI providers.
Read moreXCUITest on TestingBot — frequently asked questions
What is XCUITest and why run it on TestingBot?
XCUITest is Apple's native UI testing framework for iOS, iPadOS and tvOS. TestingBot runs your XCUITest builds on a fleet of real iPhones and iPads, so you do not have to maintain devices, certificates and MDM in-house. Upload your .ipa and .xctest through our REST API and trigger runs in seconds.
Which iOS versions are supported?
TestingBot supports real iOS devices from iOS 12 through iOS 26, refreshed every Apple release. We carry both the latest flagship iPhones and a deep legacy fleet for backwards-compat coverage.
Do I need a Mac to use XCUITest on TestingBot?
You need Xcode to build your .ipa and .xctest bundle, but the actual test run happens on TestingBot. Many teams build in CI on a Mac runner, then push the artifacts to TestingBot for the device run.
Can I run XCUITest in parallel?
Yes. Plans on TestingBot include up to 100 parallel XCUITest sessions on real devices. Each session locks a dedicated iPhone or iPad, so tests do not interfere with one another.
Can I filter which tests run?
Yes, use the test filters API to run a subset of your XCUITest suite without rebuilding the bundle.
How do I see results?
Live in the TestingBot dashboard with HD video, screenshots and device logs. Programmatically via the REST API. Plus a JUnit XML report compatible with every major CI parser.
Can XCUITest reach my staging backend?
Install our secure tunnel and your XCUITest runs can reach staging APIs, internal services and localhost without any inbound firewall rules.
Is the device cloud GDPR / SOC 2 compliant?
TestingBot is GDPR-compliant with EU data residency, ISO 27001 aligned and STAR Level 1 certified. Devices are wiped between sessions, app uploads are encrypted, and SAML SSO and audit logs are available on enterprise plans.
Ready to scale your XCUITest runs?
Read our XCUITest documentation and run your first test on a real iPhone in under 5 minutes.
Start a free trial