---
title: XCUITest Cloud Testing | Run XCUITest on Real iPhones & iPads
description: Run XCUITest on real iPhones and iPads in the TestingBot cloud. Native
  Swift & Objective-C, parallel execution, video & log artifacts, GDPR-compliant.
source_url:
  html: https://testingbot.com/features/automation/xcuitest
  md: https://testingbot.com/features/automation/xcuitest.md
---

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.9% uptime SLA.

Looking at all platforms? See the [full automation framework lineup](https://testingbot.com/features).

[Start free](https://testingbot.com/users/sign_up) [Request a demo](https://testingbot.com/demo)

- **Real Apple devices:** 100+
- **iOS versions:** 12 → 26
- **Uptime SLA:** 99.9%

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](https://testingbot.com/assets/environments/svg/ios-383468addf160fa18d0e431f529420739d7f7d1206175f682fead627d2e99a52.svg)

### 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

```bash
# 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

```bash
# 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](https://testingbot.com/support/app-automate/xcuitest) 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.9% 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.

- ### [Build & upload](https://testingbot.com/support/app-automate/xcuitest/build-testsuite)

Compile your .ipa and .xctest with Xcode, then push to TestingBot Storage.

- ### [Test reports](https://testingbot.com/support/app-automate/xcuitest/test-reports)

Video, device logs, screenshots and JUnit XML for every run.

- ### [Screen orientation](https://testingbot.com/support/app-automate/xcuitest/change-screen-orientation)

Force portrait or landscape per test, mid-test rotations included.

- ### [Network throttling](https://testingbot.com/support/app-automate/xcuitest/simulate-network-conditions)

Simulate 3G, 4G, lossy WiFi and offline conditions per session.

- ### [Localization & geo](https://testingbot.com/support/app-automate/xcuitest/set-localization-options)

Set device locale, language and GPS coordinates for App Store and back-end checks.

 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](https://testingbot.com/support/app-automate/devices)

 ![Test online on iPhone 17 Pro](https://testingbot.com/assets/devices/160h/44-6b4402c6996d9b1620879bb1123c40a6b36abb064e65dca0a1b3f05286779e9c.webp)

iPhone 17 Pro

 ![Test online on iPhone 17 Pro Max](https://testingbot.com/assets/devices/160h/43-59d7e30684332ed4bf25567cbc09ca942eac46d925ccde8352d3e85812480f7d.webp)

iPhone 17 Pro Max

 ![Test online on iPhone 16 Pro](https://testingbot.com/assets/devices/160h/42-de3704079345026847b739a5b1cf5332595904e54ede66abd988a76fb1e6593c.webp)

iPhone 16 Pro

 ![Test online on iPad (9th generation)](https://testingbot.com/assets/devices/160h/41-70f7d18afde7620063a49a76cbfd088f8b59c742f3a5f4dd4a513dd6ec5c676c.webp)

iPad (9th generation)

 ![Test online on iPhone Air](https://testingbot.com/assets/devices/160h/38-c00a59944eb2e410d375e3f5b39780043f72446bb33b0aea6a26a0c45f309ea1.webp)

iPhone Air

 ![Test online on iPhone 17](https://testingbot.com/assets/devices/160h/36-06478e9d9935ed794bd3ec02c85ad3a8eafe1de3cc11debd15351c1bdc99005b.webp)

iPhone 17

 ![Video, screenshots and JUnit XML for every run](https://testingbot.com/assets/features/test-results-315382c39a67ad52167d2a4fd78570c99aea3e0ec386c17e82265851e93cb7b3.png)

 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](https://testingbot.com/support/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.

 ![Jenkins](https://testingbot.com/assets/integrations/jenkins-e586a1c4af833e4c8d38d7b392a4e84bd193f30cae9cf8c9f198a58ec943a1ff.webp)

### [Jenkins](https://testingbot.com/support/integrations/ci-cd/jenkins)

 ![Bamboo](https://testingbot.com/assets/integrations/bamboo-c8fe09a3cb0b74d6055e3aa6607d77720bfe29ff487b8e3cf825138adf634346.svg)

### [Bamboo](https://testingbot.com/support/integrations/ci-cd/bamboo)

 ![TeamCity](https://testingbot.com/assets/integrations/teamcity-7e75cdb835903a4983ad276c41d95e569ceac5be486e96ec1f955029ce5bb319.svg)

### [TeamCity](https://testingbot.com/support/integrations/ci-cd/teamcity)

 ![CircleCI](https://testingbot.com/assets/integrations/circleci-ede029654ff39b60342e4a5bba8fc9a3a49305cc38bda215b7cf8d07e85e0543.webp)

### [CircleCI](https://testingbot.com/support/integrations/ci-cd/circleci)

 ![GitLab CI](https://testingbot.com/assets/integrations/gitlab-e4c0b6db07d07bc0a400f5606e258f4dc8a51b778e97bbfa51d1d531f3cb049a.webp)

### [GitLab CI](https://testingbot.com/support/integrations/ci-cd/gitlab)

 ![GitHub](https://testingbot.com/assets/integrations/github-actions-8436242ad9e15381f84f1a98a10dddce15611087f121d6305782e211942b7842.webp)

### [GitHub](https://testingbot.com/support/integrations/ci-cd/github-actions)

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](https://trust.testingbot.com/)

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.

 Secure Tunnel 
## Test apps that talk to internal backends

Use our [secure tunnel](https://testingbot.com/support/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.

 ![TestingBot secure tunnel for XCUITest](https://testingbot.com/assets/features/tunnel-diagram-poster-8c25e19e6fe4f7276a46a96b31a0ad0e07bb4f5bf98dc192d2b70897cfbb1a26.png)

[Read more](https://testingbot.com/support/tunnel)

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.

Do you provide physical devices?

Yes, we provide physical iPhones and iPads, not simulators. Each test run locks a real device for your session only, with native performance and access to real sensors, Touch ID and Face ID. After your session ends, the device is wiped and returned clean to the pool.

How do I see results?

Live in the TestingBot dashboard with HD video, screenshots and device logs. Programmatically via the [REST API](https://testingbot.com/support/api). Plus a JUnit XML report compatible with every major CI parser.

Can XCUITest reach my staging backend?

Install our [secure tunnel](https://testingbot.com/support/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](https://testingbot.com/support/app-automate/xcuitest) and run your first test on a real iPhone in under 5 minutes.

[Start a free trial](https://testingbot.com/users/sign_up)

Resources you may like

[![Automate native iOS Apps with XCUITest](https://testingbot.com/assets/resources/articles/25-bb2ccb531384c461ef792214839e9e8f99a4b08b1293730ceeab67e4a8352563.webp)](https://testingbot.com/resources/articles/automate-native-ios-apps-xcuitest)
### [Automate native iOS Apps with XCUITest](https://testingbot.com/resources/articles/automate-native-ios-apps-xcuitest)

Looking to automate native iOS apps? Read our XCUITest tutorial on how to use code for iOS automation.

[Read more](https://testingbot.com/resources/articles/automate-native-ios-apps-xcuitest)

[![Test your website and mobile apps on iOS 18.](https://testingbot.com/assets/blog/2024/ios18.webp)](https://testingbot.com/blog/ios-18-testing)
### [Test your website and mobile apps on iOS 18.](https://testingbot.com/blog/ios-18-testing)

Ready to start testing on iOS 18? Get started today with TestingBot: run automated, visual and manual tests on iOS 18.

[Read more](https://testingbot.com/blog/ios-18-testing)
