Running Tests

Nested tests in depth

How Run Test composes flows from smaller tests, with cycle detection, parameter substitution at call time, and run history attribution that survives nesting.

Run Test is the composition primitive. This page covers the behavior you can rely on when one test calls another.

Run history attribution

Run history is attributed to the called test, not to a per-call copy. A login test called by 30 other tests shows up as one row in analytics, and its history page lists every run regardless of whether it was triggered directly or via a Run Test step.

Cycles

If you accidentally author a cycle (Test A → Test B → Test A), Mavster refuses to recurse into a test that's already running. There are no infinite loops.

Run Count semantics

The Run Count on the Run Test step trumps the called test's own Run Count. If your called test sets Run Count 5 on itself but a Run Test step calls it with Run Count 1, you get one run per call.

The first failed sub-run terminates the remaining sub-runs and marks the Run Test step failed.

Parameter flow

When you run a test standalone via its Play button, the test uses the values in its header. When the same test is invoked through a Run Test step, only the Run Test step's arguments are used — the header values are ignored.

Practical consequences:

  • A Run Test step's arguments overwrite the called test's header values for that call.
  • There is no automatic flow from the parent test's parameters into the called test. If the parent has $user and you want the called test to see it, add user = $user to the Run Test step's arguments — the parent's $user is substituted into the argument before the call dispatches.
  • Placeholders the Run Test step doesn't pass an argument for stay unsubstituted at runtime. Forward every parameter you care about explicitly.

Self-healing inheritance

The called test inherits the parent test's self-healing mode if it doesn't have its own override.

Common compositional patterns

  • Setup / teardown wrappers. Author setup and teardown tests; have every other test start with a Run Test (setup) step.
  • Smoke suites. A smoke test composed entirely of Run Test steps, each calling a feature-area test. Failures localize to the failing feature.
  • Data-driven matrices. Run Test the same parameterized test multiple times in the parent, each call with different arguments.