---
title: iOS XCUITest Reporting
description: iOS XCUITest with JUnit XML reports. Integrate XCUITest in your CI/CD.
source_url:
  html: https://testingbot.com/support/app-automate/xcuitest/test-reports
  md: https://testingbot.com/support/app-automate/xcuitest/test-reports/index.md
---
# XCUITest Reports

TestingBot currently offers both test reports from inside the TestingBot member dashboard, or through REST-API where you can use a [JUnit formatted XML report](https://testingbot.com#junit).

## Dashboard Report

When you run XCUITests with TestingBot, you will find the test results, together with a video of the test and various other logs, in the [TestingBot member dashboard](https://testingbot.com/members).

## API report

You can query the TestingBot API to fetch the result of the XCUITest run(s).

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

By default, the CLI waits for test completion and displays results in real-time:

    testingbot xcuitest app.ipa app-test.zip --device "iPhone 16" --real-device

The CLI will show:

- Upload progress for app and test ZIP
- Device allocation status
- Live output from XCUITests
- Final pass/fail status

Use `--async` to start tests without waiting for results:

    testingbot xcuitest app.ipa app-test.zip --device "iPhone 16" --real-device --async

    curl -u api_key:api_secret \
    "https://api.testingbot.com/v1/app-automate/xcuitest/:id/:run_id"

Replace the `:id` and `:run_id` with the identifiers you received during the app upload call and the run call.

You will get back a response similar to this one:

    {"id":216,"created_at":"2024-04-04T15:49:47.000Z","status":"DONE","capabilities":{"deviceName":"iPhone .*","platformName":"iOS"},"success":false,"test":{"sessionId":"ffe-4b453ea45667-61a0a28dbf36-171224576223-3e","environment":{"name":"XCUITest","os":"iPhone 15 - 17.0","version":"17.0"}},"version":"1.0"}

## JUnit XML report

You can query our API to fetch a JUnit XML report which you can use a post-build step in your CI/CD environment.

**Report Structure**  

In the XML report, each session maps to a `testsuite` tag. Inside that tag, multiple `testcase` items are available, each mapping to a single XCUITest.   
 If a test failed, a `failure` or `error` tag will be available.

[CLI](https://testingbot.com#)[cURL](https://testingbot.com#)

Download the JUnit XML report after test completion:

    testingbot xcuitest app.ipa app-test.zip \
      --device "iPhone 16" \
      --real-device \
      --report junit \
      --report-output-dir ./reports

You can also download an HTML report:

    testingbot xcuitest app.ipa app-test.zip \
      --device "iPhone 16" \
      --real-device \
      --report html \
      --report-output-dir ./reports

    curl -u api_key:api_secret \
    "https://api.testingbot.com/v1/app-automate/xcuitest/:id/report"

Was this page helpful? Yes No 

## Looking for More Help?

Have questions or need more information?   
 You can reach us via the following channels:

- [Email us](https://testingbot.com/contact/new)
- [Join our Slack Channel](https://join.slack.com/t/testingb0t/shared_invite/zt-3bcw9xch-jk19~6XPs_xBrsAgAedkCw)
