Overview
The XCUITest driver is an Appium driver intended for black-box automated testing of several Apple ecosystem platforms.
Target Platforms¶
The driver supports the following Apple platforms as automation targets:
| Platform | Simulators | Real devices |
|---|---|---|
| iOS | ||
| iPadOS | ||
| tvOS | ||
| watchOS | ||
| visionOS | ||
| macOS | N/A | |
| Safari (mobile) | ||
| Safari (desktop) |
A detailed breakdown of the supported platform versions can be found in the Installation page.
Contexts¶
The following application contexts are supported for automation:
- Native applications
- Webviews based on Safari
- Webviews based on Chrome (since Chrome 115 & iOS 16.4)
- Hybrid applications
Note that only debuggable webviews are supported.
Technologies Used¶
Under the hood, the driver combines several different technologies to achieve its functionality:
- Native testing
- Based on Apple's XCTest framework
- Provided by the
appium-webdriveragentlibrary (a fork of the original implementation by Facebook) - Uses the W3C WebDriver protocol with several platform-specific extensions
- Webview testing
- Based on Safari's WebKit Remote Debugger Protocol (not officially documented)
- Provided by the
appium-remote-debuggerlibrary - Interaction with webpages is based on Selenium atoms
- Can only use the legacy JSONWP protocol due to the atoms
- Better, WebDriver protocol-compatible support is also provided by the Appium Safari driver
- Simulator communication
- Based on the
xcrun simctland otherxcruncommand line utility calls - Provided by the
appium-ios-simulatorlibrary
- Based on the
- Real device communication
- Legacy approach (to be eventually deprecated)
- Based on re-implemented
libimobiledevicesystem calls - Provided by the
appium-ios-devicelibrary
- Based on re-implemented
- Modern approach (iOS/tvOS 18+ only)
- Based on remote XPC services
- Provided by the
appium-ios-remotexpclibrary
- Legacy approach (to be eventually deprecated)
-
Supported by the Appium Mac2 driver ↩
-
Also supported by the Appium Safari driver ↩↩
-
Supported by the Appium Safari driver ↩↩