Skip to main content
Kane CLI runs tests on mobile virtual devices: Apple’s iOS Simulator and Google’s Android Emulator. You write and run mobile tests the same way as browser tests. Two things differ: a mobile test runs against an app you provide, and it targets a simulator or emulator instead of a browser. The virtual device can run in one of two places:
Local mobile runs need macOS on Apple Silicon (arm64). Intel Macs, Linux, and Windows cannot boot the simulator or emulator locally. On those hosts, run mobile suites on the cloud grid with --remote. The setup sections below are for the local path.

What Mobile Means Here

Native app testing. A mobile test drives an installed app. Pass a build, or the app id of an earlier upload, with --app. Kane CLI installs the app on the device and runs your objective against it. WebViews inside the app are supported.
Mobile runs target a native app. Pointing a mobile run at a website or mobile web page is not supported.
Two targets. emulator is a virtual Android device and simulator is a virtual iOS device. The default target is desktop, the browser, so your existing web runs are unaffected.

Why a Single Architecture for Local Runs

Apple Silicon runs both mobile stacks natively. The iOS Simulator is a first-class Apple target, and Android ships arm64-v8a emulator images that run on the Mac’s built-in hypervisor with hardware acceleration. Using one host architecture keeps local setup predictable and runs fast, because nothing has to be translated between CPU architectures. Other hosts reach the same devices through the cloud grid, where the grid’s macOS runners boot them.

How Setup Works

Setup has two parts. You handle the first, and Kane CLI handles the second. 1. You provide the virtual device. Install Xcode (Apple) or Android Studio (Google). For Android, also create one virtual device. These are the standard tools Apple and Google ship for simulators and emulators. 2. Kane CLI installs its own test tooling and drives the device. Sign in and run one command:
This downloads the test tooling that Kane CLI manages for you. After that, Kane CLI finds the device, boots it, installs your app, and runs the test. You never boot the simulator or emulator by hand. Run kane-cli doctor --target emulator|simulator at any time to check what is ready and what is missing. It prints one line per required check, each with a fix. kane-cli devices list --target emulator|simulator lists the devices Kane CLI can run against.

Prerequisites

An uploaded app id is APP followed by six or more digits. Both targets require macOS on Apple Silicon and a one-time kane-cli doctor --target emulator|simulator --install. Set up only the platforms you plan to test. --remote runs need none of this.

Setup

Prefer not to set up a local device? kane-cli testrun run … --remote runs the same mobile tests on a virtual device on a HyperExecute macOS host, from any machine and with none of the steps below. See Running a Mobile Suite on the Cloud Grid.
Follow the tab for each platform you plan to test.
The iOS runtime versions and simulator models on this page are working examples, not the full list of supported versions. Confirm that a specific version is officially supported before you depend on it.

Step 1: Install Xcode 16 or Newer

Install the full Xcode app from the Mac App Store. The standalone Command Line Tools are not enough. Kane CLI requires Xcode 16 or newer, which bundles the iOS Simulator, the simctl tool, and at least one iOS runtime. The download is large, several GB, so allow time on the first install.Launch Xcode once after installing so it can finish installing its additional components.

Step 2: Point the Command Line Tools at Xcode

Kane CLI talks to the simulator through Apple’s simctl, which ships inside Xcode. Make sure the developer directory resolves to the full Xcode install, not the standalone Command Line Tools:
Confirm Xcode and simctl are reachable:
You should see one or more iOS devices grouped under an iOS runtime. Xcode ships with default simulators. If none are listed, add one from Xcode → Settings → Platforms, or Xcode → Window → Devices and Simulators.

Step 3: Install the Kane CLI Test Tooling

Sign in and let Kane CLI install the tooling it manages for the simulator:
You never boot a simulator yourself. Kane CLI finds the simulator, boots it, installs your app, and runs the test.

Ready Check

Confirm Kane CLI sees a ready iOS toolchain and, optionally, the simulators on your machine:
When the iOS checks pass, setup is complete. To use a simulator in a run, pass --device-name "<name>" --os-version <v> with the values exactly as the list prints them.

Running a Mobile Test Locally

Once a target is set up, point a run at it:
Choose a device with --device-name and --os-version, using the values exactly as kane-cli devices list --target emulator|simulator prints them. To save defaults, use kane-cli config set-device-name and kane-cli config set-os-version. A device name must be paired with an OS version. An OS version on its own matches any device running that version. In the TUI or an interactive terminal, if you leave out the device flags, Kane CLI opens a one-time picker and saves your choice. A non-interactive run, such as one in CI, needs the device set in advance with the flags or the two config commands above. Otherwise the run exits and prints the fix. Every mobile run requires --app:
  • The simulator target accepts a .zip build.
  • The emulator target accepts an .apk build.
  • Both accept an uploaded app id: APP followed by six or more digits. kane-cli apps list --target emulator|simulator lists the uploaded builds your account can use.
On the desktop target, Kane CLI ignores the device flags and --app. In the interactive TUI, the first run offers a choice of Desktop, Emulator, or Simulator. You can switch targets with /mobile and /desktop until you send the first objective. After that, run /new before you switch. Run /doctor to check your mobile tooling and devices. For the full flag list, see the CLI Reference and Mobile Runs. To save a default target, device, and app instead of passing flags every time, see Configuration. To set the target, app, and device inside a test file, see Test.md. To run a folder of mobile tests, see Batch Runs.

Running a Mobile Suite on the Cloud Grid

You can skip the local setup entirely. kane-cli testrun run --remote sends your mobile _test.md files to HyperExecute. HyperExecute boots a virtual device on a macOS host, installs the app, runs the suite, and returns the recordings and evidence pack to your project. Anyone on the team can write and run mobile tests this way, from any operating system.
Three things differ from a local run:
  • The device comes from the grid catalog, not from the AVDs or simulators on your machine. List the catalog with kane-cli devices list --target emulator|simulator --remote.
  • One job runs one platform. Emulator members run on one Android version, and simulator members run on one HyperExecute pool.
  • A local build is uploaded from your machine before the job is sent, and the grid receives it as an APP… id.
The prerequisites, the app rules, and what one job can hold are covered in Remote Runs on the Cloud Grid.

Evidence for a Mobile Run

The result summary records the device in the run environment, such as the device model and OS version. The per-step logs include device logs from the emulator or simulator, next to the usual browser logs.

Common Failures

Next Steps