Qampanion Documentation
Overview
Qampanion is a macOS application for creating and running regression and end-to-end (E2E) tests for mobile applications. It provides a user-friendly interface for test design, device management, and test execution, making it easier for developers and testers to ensure the quality of their mobile applications.
Download & Install
Qampanion is distributed as a .dmg file. To install:
- Download Qampanion.dmg
- Open the downloaded
.dmgfile - Drag Qampanion.app into the Applications folder
- Launch Qampanion from Applications or Spotlight
System Requirements: macOS 15 (Sequoia) or later.
⚠️ Public Preview — Qampanion is currently in Public Preview. You may encounter bugs or incomplete features. Feedback is welcome — feel free to reach out at support@qampanion.com!
Dependency Management
The application requires third-party dependencies to work correctly.
Installing
Dependency installation is available directly in the application:
Settings → Dependencies
All dependencies (except Xcode) are installed automatically inside the application.
⚠️ Wait until the installation process is fully completed before proceeding.
General List
Optional (iOS)
- Xcode
- Axe
Xcode, as part of the Apple infrastructure, must be installed manually.
Follow the instructions in the application or use the official installation guide:
Optional (Android)
- Java 21+
- Android SDK Command-line Tools, including:
- sdkmanager
- emulator
- platform-tools
- cmdline-tools
- build-tools
Device Management
Qampanion supports any emulators and simulators created with:
- Xcode (iOS)
- Android Studio (Android)
For convenience, device management and device creation are also available directly in Qampanion.
By Qampanion
Go to: Settings → Devices
Then select:
- platform (iOS / Android)
- runtime/image (for example, iOS 18.2, Android 34)
- device type / visual profile
⚠️ If the required runtime/image is not installed, Qampanion will prompt you to download it. Follow the instructions in the application.
By IDEs
You can also manage and create devices using the official development environments. Recommended options and links to the official documentation are listed below:
Application Import
Go to: Settings → Applications
Qampanion supports importing applications:
- from a local enviroment
- from network sources
Supported formats:
- .apk
- .app
- .zip (if it contains an .apk or .app file inside)
⚠️ Make sure the network resource is accessible before starting the import.
Test Case
A test case is the core entity of a project. It is a full E2E test that consists of a list of steps. A single project can contain any number of test cases and is not tied to a specific platform or application.
Test cases within the same project can be executed on different:
- platforms
- devices
- applications
⚠️ If a project contains test cases for different platforms, manual action is required when switching between them. The selected device and application used during test design are not bound to the test case or the project.
Creating New Test Case
On the project page, in the left sidebar, click the [ + ] button and enter the test case name.
After creation, you can:
- open the test case settings
- start creating the first steps
Steps
A Step is an entity inside a test case that represents one or more actions within a single application screen. A step is strictly bound to a test case, but it can be reused.
Four step types are supported:
- default
- linked
- network request
- script
Default step
A step that contains a set of actions on a screen.
The following actions are supported:
- tap
- swipe
- text input
- wait (no interaction)
Linked step
A link step executes the action flow defined in another step.
It is used to reuse logic, reduce duplication, and speed up new test case creation.
Network Request step
A step that sends an HTTP request to a specified URL and validates the response.
Supported HTTP methods: GET, POST, PUT, DELETE, PATCH.
Configurable options:
- URL — target endpoint
- Method — HTTP method
- Headers — request headers as a JSON string
- Body — request body as a JSON string
- Expected Status Code — the HTTP status code the response must match
- Response Parameters — a list of response keys to validate or save to environment variables
Response Parameters support three comparison types:
none— no validation; the value can still be saved to an environment variableequal— checks that the response value exactly matches the expected valueexists— checks that the key is present in the response
Keys support dot-notation for nested objects (e.g. user.id) and bracket-notation for arrays (e.g. items[0].name).
If a response parameter has an environment key set, the actual response value for that key is saved to the project environment after execution. This value can then be referenced in subsequent steps using $key syntax.
Script step
A step that executes a user-provided bash script on the Mac where Qampanion is running.
Configurable options:
- Description — step name shown in the test case list
- Required — if disabled, a script failure does not fail the test case
- Script — bash script content
During execution Qampanion:
- Replaces
$KEYplaceholders with values from project environment variables. - Runs the script through
/bin/bashusingstdin. - Marks the step as passed if the script exits successfully (exit code
0). - Marks the step as failed (or skipped if not required) if the script exits with a non-zero code or cannot be executed.
Required option
Each step has a Required setting. It is enabled by default. It meaning that the step is blocking for test-case result.
⚠️ If a step is not blocking, its result does not affect the overall test case outcome, regardless of it’s status.
This setting is recommended for optional or conditional screens (for example, pop-up or system notification).
Expected Result and Assert
Most test cases require validation of intermediate and final application states. To simplify and speed up test creation, a regular Step type is used for expected results and assertions.
⚠️ The usage examples below are based on the Qampanion execution algorithm. See the Qampanion Execution Algorithm section for details.
Step without actions (Expected Result, Assert)
If a step contains no actions, it runs in screenshot comparison mode only.
Such the step can be used as:
- an expected result
- a final assert
Step without screenshot, but with actions (Expectation, dynamic screens)
If a step contains actions, but no screenshot, screen comparison is not performed.
Such thr step can be used for:
- waiting for application loading
- working with dynamic screens (for example, browser or webview screens)
⚠️ In this mode, only wait and text input actions are available.
Actions
There are 4 action types available in the application. A step has no limits on the number, order, or uniqueness of actions.
Tap
A quick press at a specific point on the screen.
Swipe
A press followed by cursor movement.
⚠️ The initial touch is treated as a tap. Use swipe carefully on screens with interactive elements.
Type
Enters the text without using the system keyboard. This action can be used without an expected screenshot.
⚠️ It is recommended to disable the system keyboard on the device.
Expectation
Pauses test case execution for a specified time (Delay). This action can be used without an expected screenshot.
Test Plan
A Test Plan is used to simplify launch of multiple test cases. Qampanion provides test plans as configurable sets of test cases to run full application flows. Test plans can be configured individually, allowing you to run tests for a specific feature, device, or the entire project.
⚠️ When running a test plan across different platforms, you must manually switch the device in the application header.
Creating New Test Plan
- On the project page, open the Test plan section.
- Click [ + ], enter a name, and open the created plan.
- Use the checkboxes to select which test cases are included in the test plan.
Excluded Zones and Threshold
Qampanion performs screenshot comparison (when screenshots are present) before executing the actions of each step, taking into account the allowed deviation from the expected result.
The comparison mechanism is configured using:
- Threshold
- Excluded zone (ignored areas)
Threshold
Threshold is the allowed difference between the current screen state and the expected one, expressed as a percentage.
Value range:
- 0% — full difference is allowed
- 100% — even a 1-pixel difference is not allowed
The default value when creating a test case is 95%. The global threshold for whole test case can be changed in the test case settings (“Global Test Case Settings” section)*
Excluded Zone
Application interfaces often contain dynamic elements (animations, timers, avatars, ad banners, etc.). For accurate comparison, you can define Excluded zones — screen areas that will be ignored during comparison. Within a single step, you can add one or more excluded zones of any size and position. You can also define global excluded zones for the test case (link to the “Global Test Case Settings” section). These areas are excluded from the "expected vs actual" screen comparison.
Global Test Case Settings
To simplify configuration, you can set shared Threshold and Excluded zones at the test case level.
Open the test case settings:
Test case → Settings
Excluded zones are defined manually by specifying screen area coordinates. To make this easier, you can copy coordinates from a step where the excluded zone was created through the UI.
When changing the global threshold or excluded zones, two options are available:
- apply settings to all existing and future steps
- apply settings only to new steps
Important Notes About Global Excluded Zones
⚠️ Global excluded zones can still be additionally modified inside individual steps.
⚠️⚠️ If you change excluded zones in global test case settings and choose “apply to all steps”, the global zones will be overwritten in every step, regardless of their current values.
⚠️⚠️⚠️ Removing a excluded zone from a step is not reversible. If you delete a excluded zone from a step and later change global settings with “apply to all steps,” the zone will not be restored in that step.
Debug and Launch
Qampanion is based on comparing screenshots of the expected and actual application states. Before executing any actions, each step verifies that the current application state matches the expected one. If the states are different, the step is marked as failed.
The application supports three launch modes:
- running a test case
- running a set of test cases
- running a single step (Debug mode)
Run Test Cases
A single test case is executed by clicking the Launch button (icon).
A full run:
- removes the previously installed version of the application
- reinstalls it
- launch all steps of the test case
Step Statuses
During execution, each step shows its current state and receives a terminal status after completion (Passed / Failed / Skipped).
If the actual screen state does not match the expected one:
- the step is marked as Failed
- the test case is considered failed
- the dropdown menu provides access to:
- expected screenshot
- actual screenshot
- diff between them
Run Test Plans
To validate a feature or story that includes multiple test cases, it is recommended to use a Test plan. For running a test plan, open it and start launch the same way as a single test case.
Status Display
During execution:
- test case statuses are shown on the test plan page
- in the overall test case list
- in opening page with one of test case
- in the logs panel with details for each test case
You can open any test case from the list and observe its step execution in real time.
Execution Results
After execution completes:
- terminal statuses for each test case are shown in the test plan and in the test cases list
- error details are available when opening the failed test case
Run Single Step
This mode is intended for development, adjustments, and quick logic verification (Debug Mode).
To run a single step:
- Open the test case.
- Choose a step.
- Click the Debug button (icon).
- Wait until the step launch completes.
⚠️ Debug mode:
- does not reinstall the application
- does not reset it to the initial state
- does not start the simulator/emulator
Debug mode assumes that the device and the application are already in the required state. Step results in Debug mode follow the same validation rules as a full test case run. On success or failure, the step status and screenshot differences are displayed the same way as in a regular launch.
Logs
During test case, test plan, or debug runs, the following events are logged:
- each executed step
- each action inside a step
These logs are displayed in a separate panel at the bottom of the screen.
Logs:
- update in real time
- reflect the actual execution order
- preserve the history of the current run
CLI
A command-line tool to work with Qampanion projects. You can get information about devices, test cases, and test plans, and also run tests on a device.
You can access the tool at the following path:
/Applications/Qampanion.app/Contents/MacOS/QampanionCLI
get-devices
Get a list of devices that are available to run tests on.
| Parameter | Required | Description |
|---|---|---|
--os |
No | Filter devices by OS. Use ios or android. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI get-devices
QampanionCLI get-devices --os ios
QampanionCLI get-devices --os android --json
get-test-cases
Get a list of test cases from a Qampanion project file.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI get-test-cases --project "/path/to/Project.qpn"
QampanionCLI get-test-cases --project "/path/to/Project.qpn" --json
get-test-case
Get detailed information about a specific test case, including its steps and actions.
ℹ️ Step snapshots (reference images) are excluded from the output.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--test |
Yes | Test case ID. Use get-test-cases to find it. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI get-test-case \
--project "/path/to/Project.qpn" \
--test "A1B2C3D4-0000-0000-0000-000000000000"
QampanionCLI get-test-case \
--project "/path/to/Project.qpn" \
--test "A1B2C3D4-0000-0000-0000-000000000000" \
--json
get-test-result
Get the saved test result log for a specific test case. The result is written after running the test case via run-test-case or run-test-plan.
| Parameter | Required | Description |
|---|---|---|
--test |
Yes | Test case ID. Use get-test-cases to find it. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI get-test-result --test "A1B2C3D4-0000-0000-0000-000000000000"
QampanionCLI get-test-result --test "A1B2C3D4-0000-0000-0000-000000000000" --json
get-test-plans
Get a list of test plans from a Qampanion project file.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI get-test-plans --project "/path/to/Project.qpn"
QampanionCLI get-test-plans --project "/path/to/Project.qpn" --json
get-ui-hierarchy
Get the current UI element tree from a running device. Returns all visible elements with their coordinates, types, and labels. Coordinates are returned in device pixel space (scaled by the device's scale factor) and can be used directly with perform-action.
| Parameter | Required | Description |
|---|---|---|
--device |
Yes | Device ID. Use get-devices to find it. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI get-ui-hierarchy \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549"
QampanionCLI get-ui-hierarchy \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--json
Plain-text output format:
<type> | <name> | <elementDescription> | x:<x> y:<y> w:<width> h:<height>
JSON output format:
[
{
"id": "A1B2C3D4-0000-0000-0000-000000000000",
"x": 207.0,
"y": 375.5,
"width": 225.0,
"height": 61.0,
"type": "StaticText",
"name": "Test Card",
"elementDescription": "text"
}
]
create-test-case
Create a new test case in a Qampanion project file.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--name |
Yes | Name of the new test case. |
--description |
No | Description of the new test case. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI create-test-case \
--project "/path/to/Project.qpn" \
--name "Login flow"
QampanionCLI create-test-case \
--project "/path/to/Project.qpn" \
--name "Login flow" \
--description "Verifies login screen" \
--json
create-step
Create a new step in an existing test case.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--test-case-id |
Yes | Test case ID. Use get-test-cases to find it. |
--description |
Yes | Description of the new step. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI create-step \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--description "Tap login button"
QampanionCLI create-step \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--description "Tap login button" \
--json
create-linked-step
Create a new linked step in an existing test case. A linked step references another test case, allowing you to reuse existing test logic.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--test-case-id |
Yes | Test case ID to add the linked step to. Use get-test-cases to find it. |
--name |
Yes | Name of the linked step. |
--linked-test-case-id |
Yes | Test case ID that this step links to. |
--required |
No | Whether the step is required (default: true). Pass --no-required to make it optional. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI create-linked-step \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--name "Re-use login flow" \
--linked-test-case-id "B2C3D4E5-0000-0000-0000-000000000000"
QampanionCLI create-linked-step \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--name "Optional onboarding" \
--linked-test-case-id "B2C3D4E5-0000-0000-0000-000000000000" \
--no-required \
--json
create-network-request-step
Create a new network request step in an existing test case.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--test-case-id |
Yes | Test case ID. Use get-test-cases to find it. |
--description |
Yes | Description of the new step. |
--url |
Yes | Target URL for the request. |
--method |
Yes | HTTP method: get, post, put, delete, patch. |
--expected-status-code |
No | Expected HTTP status code (default: 200). |
--headers |
No | Request headers as a JSON string (default: empty). |
--body |
No | Request body as a JSON string (default: empty). |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI create-network-request-step \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--description "Login API call" \
--url "https://api.example.com/login" \
--method post \
--expected-status-code 200 \
--headers '{"Content-Type": "application/json"}' \
--body '{"username": "test", "password": "123"}' \
--json
create-comparison-parameter
Create a new response comparison parameter in an existing network request step.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--test-case-id |
Yes | Test case ID. Use get-test-cases to find it. |
--step-id |
Yes | Network request step ID. Use get-test-case --json to find it. |
--description |
Yes | Human-readable description of the parameter. |
--key |
Yes | Response key to validate. Supports dot-notation (e.g. user.id) and bracket-notation (e.g. items[0].name). |
--comparison-type |
Yes | Comparison type: without (no validation), equal (exact match), exists (key presence). |
--expected-value |
No | Expected value. Required when --comparison-type is equal. |
--environment-key |
No | Environment key to save the response value to after execution. |
--json |
No | Print the result as JSON. |
Example:
# Check status field equals "active"
QampanionCLI create-comparison-parameter \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--step-id "B2C3D4E5-0000-0000-0000-000000000000" \
--description "Status is active" \
--key "status" \
--comparison-type equal \
--expected-value "active"
# Check key exists and save value to environment
QampanionCLI create-comparison-parameter \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--step-id "B2C3D4E5-0000-0000-0000-000000000000" \
--description "User ID exists" \
--key "user.id" \
--comparison-type exists \
--environment-key "userId" \
--json
create-script-step
Create a new bash script step in an existing test case.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--test-case-id |
Yes | Test case ID. Use get-test-cases to find it. |
--description |
Yes | Description of the new step. |
--script |
Yes | Bash script content to execute. |
--json |
No | Print the result as JSON. |
Example:
QampanionCLI create-script-step \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--description "Clean build artifacts" \
--script "rm -rf /tmp/build-output && echo 'cleaned'" \
--json
create-action
Create a new action in an existing step.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--test-case-id |
Yes | Test case ID. Use get-test-cases to find it. |
--step-id |
Yes | Step ID. Use get-test-case --json to find it. |
--description |
Yes | Description of the new action. |
--type |
Yes | Action type: tap, swipe, type, wait. |
--x |
No | X coordinate for tap action (default: 0). |
--y |
No | Y coordinate for tap action (default: 0). |
--from-x |
No | Start X coordinate for swipe action (default: 0). |
--from-y |
No | Start Y coordinate for swipe action (default: 0). |
--to-x |
No | End X coordinate for swipe action (default: 0). |
--to-y |
No | End Y coordinate for swipe action (default: 0). |
--text |
No | Text to input for type action (default: empty string). |
--seconds |
No | Duration in seconds for wait action (default: 0). |
--json |
No | Print the result as JSON. |
Example:
# tap
QampanionCLI create-action \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--step-id "B2C3D4E5-0000-0000-0000-000000000000" \
--description "Tap on submit" \
--type tap \
--x 540 --y 1200
# swipe
QampanionCLI create-action \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--step-id "B2C3D4E5-0000-0000-0000-000000000000" \
--description "Swipe up" \
--type swipe \
--from-x 500 --from-y 1500 --to-x 500 --to-y 500
# type
QampanionCLI create-action \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--step-id "B2C3D4E5-0000-0000-0000-000000000000" \
--description "Enter username" \
--type type \
--text "user@example.com"
# wait
QampanionCLI create-action \
--project "/path/to/Project.qpn" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--step-id "B2C3D4E5-0000-0000-0000-000000000000" \
--description "Wait for animation" \
--type wait \
--seconds 3
take-snapshot
Take a screenshot from a running device and save it as the reference snapshot for a specific test step. This snapshot will be used as the expected baseline during future test runs.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--device |
Yes | Device ID. Use get-devices to find it. |
--test-case-id |
Yes | Test case ID. Use get-test-cases to find it. |
--step-id |
Yes | Step ID. Use get-test-case --json to find it. |
Example:
QampanionCLI take-snapshot \
--project "/path/to/Project.qpn" \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--test-case-id "A1B2C3D4-0000-0000-0000-000000000000" \
--step-id "B2C3D4E5-0000-0000-0000-000000000000"
run-test-case
Run one test case on a device. The tool installs the app, launches it, and runs the test steps.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--bundle |
Yes | Path to the .app file, or a URL to download it from. |
--device |
Yes | Device ID. Use get-devices to find it. |
--test |
Yes | Test case ID. Use get-test-cases to find it. |
Example:
QampanionCLI run-test-case \
--project "/path/to/Project.qpn" \
--bundle "/path/to/App.app" \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--test "A1B2C3D4-0000-0000-0000-000000000000"
run-test-plan
Run a test plan on a device. A test plan is a group of test cases that run one by one.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file. |
--bundle |
Yes | Path to the .app file, or a URL to download it from. |
--device |
Yes | Device ID. Use get-devices to find it. |
--plan |
Yes | Test plan ID. Use get-test-plans to find it. |
Example:
QampanionCLI run-test-plan \
--project "/path/to/Project.qpn" \
--bundle "/path/to/App.app" \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--plan "EC0888D0-AED4-406C-B4F8-199625929A87"
perform-action
Perform an interactive action on a running device without running a full test case. Useful for exploratory testing and AI-assisted test creation. Coordinate values must match the device pixel space returned by get-ui-hierarchy.
| Parameter | Required | Description |
|---|---|---|
--project |
Yes | Path to the .qpn project file (used for environment variable substitution in type actions). |
--device |
Yes | Device ID. Use get-devices to find it. |
--type |
Yes | Action type: tap, swipe, type, wait. |
--x |
No | X coordinate for tap action. |
--y |
No | Y coordinate for tap action. |
--from-x |
No | Start X coordinate for swipe action. |
--from-y |
No | Start Y coordinate for swipe action. |
--to-x |
No | End X coordinate for swipe action. |
--to-y |
No | End Y coordinate for swipe action. |
--text |
No | Text to input for type action. |
--seconds |
No | Duration in seconds for wait action. |
Example:
# tap
QampanionCLI perform-action \
--project "/path/to/Project.qpn" \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--type tap \
--x 319 --y 406
# swipe
QampanionCLI perform-action \
--project "/path/to/Project.qpn" \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--type swipe \
--from-x 500 --from-y 1500 --to-x 500 --to-y 500
# type
QampanionCLI perform-action \
--project "/path/to/Project.qpn" \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--type type \
--text "user@example.com"
# wait
QampanionCLI perform-action \
--project "/path/to/Project.qpn" \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--type wait \
--seconds 2
launch-app
Install and launch an application on a device. Boots the device automatically if it is not running. Pass --reinstall to uninstall the existing version before installing.
| Parameter | Required | Description |
|---|---|---|
--device |
Yes | Device ID. Use get-devices to find it. |
--bundle |
Yes | URL to the application bundle (local path or http(s):// URL). |
--reinstall |
No | Uninstall the app before installing (disabled by default). |
Example:
# Just install and launch (default)
QampanionCLI launch-app \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--bundle "/path/to/App.app"
# Full reinstall: uninstall, then install and launch
QampanionCLI launch-app \
--device "0EBECE94-2084-4F51-8591-9A82A8C3B549" \
--bundle "https://example.com/App.zip" \
--reinstall
MCP
An MCP (Model Context Protocol) server that exposes Qampanion functionality to AI assistants. It allows AI tools to interact with your projects, devices, and tests directly.
The server binary is located at:
/Applications/Qampanion.app/Contents/MacOS/QampanionMCP
Connecting to an AI
Add the following configuration to your AI client's MCP settings (e.g., Claude Desktop, Cursor, or any MCP-compatible client):
{
"mcpServers": {
"qampanion": {
"command": "/Applications/Qampanion.app/Contents/MacOS/QampanionMCP"
}
}
}
You can also install SKILL for your AI agent to improve its understanding of Qampanion's capabilities.
Available Tools
- get_devices — Get a list of devices available to run tests on.
- get_test_cases — Get a list of test cases from a Qampanion project.
- get_test_case — Get detailed information about a specific test case, including its steps.
- get_test_plans — Get a list of test plans from a Qampanion project.
- get_test_result — Get the saved test result log for a specific test case.
- create_test_case — Create a new test case in a Qampanion project.
- create_step — Create a new step inside an existing test case.
- create_linked_step — Create a new linked step inside an existing test case that references another test case.
- create_action — Create a new action inside an existing step.
- create_network_request_step — Create a new network request step inside an existing test case.
- create_comparison_parameter — Create a new response comparison parameter in an existing network request step.
- create_script_step — Create a new bash script step inside an existing test case.
- run_test_case — Run a test case on a device.
- run_test_plan — Run a test plan on a device.
- get_ui_hierarchy — Get the current UI element tree from a running device, with coordinates ready for use in
perform_action. - perform_action — Perform an interactive action (tap, swipe, type, wait) on a running device.
- take_snapshot — Take a screenshot from a running device and save it as the reference snapshot for a test step.
- launch_app — Install and launch an application on a device. Supports optional uninstall before install (reinstall mode).