Core Concepts

Tests, Suites, and Steps

The vocabulary that runs through the rest of the manual — what a step is, what a test is, what a suite is, and how conditional branches let one step react to the outcome of another.

The vocabulary used across the rest of this manual.

Step

A step is a single action in a test — one tap, one assert, one wait. Each step is one of the ten interaction kinds (Tap, Visual Assert, Scroll, etc.). A step shows:

  • A title and color in the editor.
  • The interaction's settings (the instruction, AI segmentation mode, memory toggle, and any type-specific fields).
  • A status while the test runs: not running, running, success, or failed.
  • An optional list of conditional children (see below).
  • A self-healing opt-in (only takes effect when the test's self-healing mode is "Per Step").

Test

A test is an ordered list of steps with a name. Mavster runs the steps top-to-bottom on the connected target. A test stops on the first failed step unless that step has a "run on previous failure" branch.

Each test has:

  • A name (which can contain $placeholders).
  • A run count for repeating the test multiple times.
  • A self-healing mode (Strict, Per Step, or Full Test).
  • A history of past runs.

Conditional children (one level)

A step can have children, turning it into a small conditional branch. Each child is set to run on either the parent's success or the parent's failure.

To nest a step as a child: right-click it in the test column and pick Execute on previous true (run when the previous step succeeded) or Execute on previous false (run when it failed). The step indents under the previous one. To undo, right-click the child and pick Extract from parent.

Side-by-side test columns showing the right-click context menu — one with 'Execute on previous true / Execute on previous false / Delete' on a root step, the other with 'Extract from parent / Delete' on a nested child step.

Mavster supports one level of nesting only — children of children aren't shown.

Suite

A suite is a folder for grouping tests. Suites are organizational only — running a suite runs each of its tests in sequence, but a test doesn't change behavior based on which suite it's in. A test can belong to multiple suites or none.

The picker has three filter options: All, By Suite (pick one), and Unassigned (tests not in any suite).

Project

A project is the top-level container — tests, suites, run history, and project-level settings (active platform, self-healing default, etc.) all live inside a project. Projects sync to the cloud as a unit when Cloud Sync is on.

How they fit

Project
├── Suites
│   ├── Suite "Login flows"
│   └── Suite "Smoke"
├── Tests
│   ├── Test "Sign up"
│   │   ├── Step (Visual Assert)
│   │   ├── Step (Tap)
│   │   │   ├── Child (run on success → Tap)
│   │   │   └── Child (run on failure → Visual Assert)
│   │   └── Step (Visual Assert)
│   └── Test "Sign in"
└── Project settings (active platform, self-healing default, …)