TestMesh
YAML Reference

YAML Reference

Complete reference for TestMesh flow YAML schema — every field, every action, every option.

TestMesh flows are defined in YAML files. Each file contains a single flow wrapped in a flow: key at the root level. This reference covers every field, action type, and expression the schema supports.

The flow: wrapper at the root level is required. A file that starts directly with name: or steps: will be rejected by the CLI and API.

Minimal valid flow

minimal.yaml
flow:
  name: "Health Check"
  steps:
    - id: ping
      action: http_request
      config:
        method: GET
        url: "http://localhost:5016/health"
      assert:
        - status == 200

Top-level fields

FieldTypeRequiredDescription
namestringYesHuman-readable name, 1–255 characters
descriptionstringNoLonger description of what the flow tests
versionstringNoSemver string, defaults to "1.0.0"
envobjectNoFlow-scoped environment variables
setuparrayNoSteps that run before steps, used for preconditions
teardownarrayNoSteps that run after steps, even on failure
stepsarrayYesThe main test steps, minimum 1
configobjectNoFlow-level timeout, retry, and fail-fast settings
tagsarrayNoLabels for filtering and grouping flows
suitestringNoSuite name for grouping related flows
authorstringNoEmail address of the flow author

Design principles

TestMesh flows are designed around five principles:

Human-readable — YAML maps naturally to the intent of each test step. No code required to write or understand a flow.

Type-safe — Every field has a defined type and validation rule. Invalid YAML produces a clear error before execution begins.

Composable — Flows can call other flows using run_flow. Reuse login sequences, setup routines, and data fixtures across many tests.

Extensible — New action types plug into the same step structure. Adding a new protocol doesn't change how flows are written.

IDE-friendly — The full JSON Schema is published, enabling autocomplete and inline validation in VS Code and JetBrains IDEs.

Reference sections

What's Next

On this page