XCUITest cloud

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

30-second answer

Why run XCUITest on TestingBot?

Real iPhones and iPads

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.

Replace your in-house Apple lab

Skip the cabinet of dusty iPhones, the swollen batteries and the MDM headache. TestingBot has run iOS tests on real devices for 5+ years.

Native Swift & Objective-C

Use the same XCUITest framework Apple ships with Xcode. Same APIs, same XCTest assertions, real native performance.

What is XCUITest?

XCUITest in 60 seconds

XCUITest

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
One-line CLI

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 CLI step 1
# 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 step 2
# 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.

Buy vs build

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
Capabilities

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.

Real Apple devices

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
Test online on iPhone 17 Pro Max

iPhone 17 Pro Max

Test online on iPhone 16 Pro

iPhone 16 Pro

Test online on iPad (9th generation)

iPad (9th generation)

Test online on iPhone Air

iPhone Air

Test online on iPhone 17

iPhone 17

Test online on iPhone 16

iPhone 16

Video, screenshots and JUnit XML for every run
Test reports

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
Continuous integration

Plug XCUITest into your CI/CD in minutes

TestingBot integrates with every major CI/CD tool. Trigger XCUITest runs on every build and stream device videos and JUnit reports back into your build dashboards.

Spoof device GPS
20+ regions
United States
United Kingdom
Germany
France
Spain
Belgium
Australia
China
Japan
Geolocation testing

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.

Secure devices

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
Visit TestingBot Trust Center
  1. 1

    Your XCUITest run locks one real device

    A pristine iPhone or iPad is reserved for your session only.

  2. 2

    Tests run natively on real Apple hardware

    Real sensors, real accelerometer, real Touch ID and Face ID flows.

  3. 3

    Device wiped on release

    Apps removed, caches cleared, accounts wiped. Returned clean to the pool.

TestingBot secure tunnel for XCUITest
Secure Tunnel

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 more
FAQ

XCUITest 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