TestKase
TestKase
|Docs
AutomateMobileXCUITest

XCUITest on real devices

Upload your app (.ipa) and your UI test Runner (.zip) and run your XCUITest tests on our real iPhones and iPads, from CI, with no change to your tests.

Run your existing XCUITest UI tests on our real iPhones and iPads. You upload two things Xcode already builds for you — your app as an .ipa and your UI test Runner as a .zip — and we run the suite on the devices you name.

There is no code to change and nothing of ours to add to your project. Your tests run on the device the same way they do under xcodebuild test.

Real iPhones and iPads only. XCUITest is Apple's own test framework. It runs on our real iOS devices, not on simulators. For Android phones, use Espresso or Appium.

Run your first build →

How it works

Four calls, all to https://hub.testkase.com/xcuitest/v1:

  1. Upload your app — POST /xcuitest/v1/app with your .ipa. You get back a farm://app-… URL.
  2. Upload your test suite — POST /xcuitest/v1/test-suite with a .zip of your …-Runner.app. You get back a farm://suite-… URL.
  3. Start a build — POST /xcuitest/v1/build with both URLs and a list of devices. You get back a build_id.
  4. Check the result — GET /xcuitest/v1/builds/<build_id> until the build is no longer queued or running.

Every request, response, field and error code is in the API reference (interactive — you can try each call there); for a step-by-step walkthrough with curl, see Getting started.

A build is one app and one test suite on up to 20 devices. Each device gets its own session: the whole suite (or the part your filters pick) runs once on that device. The devices run at the same time, within your plan's parallel-session limit.

Good to know first

  • Development or Ad Hoc builds for a real device. App Store builds and simulator builds don't work.
  • No live view. You can't watch a device while your tests run on it. Each test's video arrives once the run has finished.

What you get

Real iPhones and iPads

Physical devices only. Simulators are not available for XCUITest.

Per-test results

Every test with its status, duration and, for a failure, XCTest's message with the file and line.

Per-test video

One clip for each test, ready once the run has finished.

Logs

The device log and the full xcodebuild output (device log unless you turn deviceLogs off).

All Commands

Each XCTest step your test made, like Tap "Login" Button, with failed checks in red.

CI-friendly status

One build status to gate on: passed, failed, error, timedout or stopped.

Every build also shows up in your dashboard under Automate → Mobile Apps → Runs.

In this section

Questions

▶Running XCUITest locally and importing results into Test Management?

That is a different feature. If you run XCUITest on your own devices or in your own CI and want the results in TestKase Test Management, see XCUITest in Test Management.

▶Can I run the same tests on several devices at once?

Yes. List up to 20 devices in one build. Each device runs the full suite (or the part your filters select) once, and they run in parallel up to your plan's thread limit. A device over that limit waits for one of your threads to free up, for as long as maxQueueWaitSeconds allows.

▶Can I split one suite across several devices?

Not yet. Sharding is not available, so every device runs every selected test. See what is not available yet.

▶Can I watch an XCUITest run live?

No. There is no live view of a device while an XCUITest build runs on it. You get a video clip of each test once the run has finished.

▶Can I use the iOS simulator?

No. XCUITest builds run on real iPhones and iPads only. Build your app and tests for a real device (generic/platform=iOS), not for the simulator.

▶How is it billed?

Like Appium: per device session, per minute, against your Automate plan. A build on five devices is five sessions. Waiting in the queue is not billed.