Skip to main content
Kane CLI can run tests against local mobile virtual devices: Apple’s iOS Simulator and Google’s Android Emulator. You author and run mobile tests the same way you already do for the browser. The differences are that a mobile test runs against an app you provide, and that the target device is a simulator or emulator on your machine.
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. You pass a build, or an app id from a previous upload, with --app. Kane CLI installs it on the device and runs your objective against it. WebViews inside the app under test are handled.
Pointing a mobile run at a website is not supported yet. Mobile runs target a native app, not a mobile web page.
Two targets. emulator is a virtual Android device and simulator is a virtual iOS device. The default target stays desktop, the browser, so nothing changes for your existing web runs.

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. Standardising on one host architecture keeps local setup predictable and runs fast, with no cross-architecture translation in the path. Other hosts get the same devices through the cloud grid instead, where the grid’s macOS runners do the booting.

How Setup Works

There are two halves, and Kane CLI owns the second. 1. You provide the virtual device. Install Apple’s or Google’s tooling, Xcode or Android Studio, and for Android, create one virtual device. These are the same tools Apple and Google already ship for building 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 Kane CLI manages for you. From then on, Kane CLI discovers the device, boots it, installs your app, and runs the test. You do not 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. You only need to set up the platform you intend to test. Set up both if you test on both. None of this is needed for --remote runs.

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 the platform you intend to test. Set up both if you test on both.
The exact iOS runtime versions and simulator device models in the supported matrix are pinned by the product team. The versions shown below are current, working examples. Confirm the officially supported set before you rely on a specific one.

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 do not need to boot a simulator yourself. Kane CLI discovers 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, your simulator setup is complete. Address a simulator on a run with --device-name "<name>" --os-version <v> as the list prints them.

Running a Mobile Test Locally

Once a target is set up, point a run at it:
Pick a device with --device-name and --os-version as kane-cli devices list --target emulator|simulator prints them, or save defaults with kane-cli config set-device-name and kane-cli config set-os-version. A device name needs an OS version. An OS version alone matches any device on it. In the TUI or an interactive terminal, leaving the device flags off opens a one-time picker and saves your choice. A non-interactive run, such as one in CI, needs a device already set, with the flags or the two config commands above, or the run exits with the fix spelled out. --app is required for every mobile run. The simulator target accepts a .zip build, the emulator target accepts an .apk build, and 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, the device flags and --app are ignored. In the interactive TUI, a first run offers a Desktop, Emulator, or Simulator chooser. Switch targets at any time with /mobile and /desktop, and run /doctor to check 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

Skip the local setup entirely. kane-cli testrun run --remote sends your mobile _test.md files to HyperExecute, which 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 author and run mobile tests this way, from any operating system.
Three things differ from a local run:
  • The device comes from the grid catalog. List it with kane-cli devices list --target emulator|simulator --remote, not from the AVDs or simulators on your machine.
  • 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 dispatch and handed to the grid 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, for example the device model and OS version, and the per-step logs include device logs from the emulator or simulator alongside the usual browser logs.

Common Failures

Next Steps