Getting started

Concepts

Flows, applications and environments: the three things every other page is about, and how they fit together.

Three nouns carry the whole tool. A flow says what to test. An application knows how to talk to a system. An environment says which instance of that system, with which credentials. Everything else is a container for those three, or a record of running them.

flows/checkout/refund.md              the flow: prose + steps
  └─ step: payments.refund
      └─▶ applications/payments/index.ts   the application
            └─ env/uat.env                 the environment
                └─▶ https://uat.payments.example
test-runs/2026-08-20_14-30-05-uat/    what happened, as files

Flows

A flow is a Markdown document: headings, prose, lists, images, and among them fenced code blocks tagged step. Each block names an application and one of its methods, the parameters to send and what the response must look like. Press Run and the steps execute in order, each one showing its request, response and assertions right below the block.

Prose and steps in the same file is the point: the document explains what the scenario covers, what has to be true before it runs and what to look at when it fails, and that same file is what the pipeline executes. Flows live under flows/ in the context folder, in whatever tree of subfolders you like.

```step
application: payments
method: refund
parameters:
  body:
    orderId: "{{ memory.orderId }}"
test:
  status: 202
```

Read more in The flow document.

Applications

An application is a folder under applications/ with a TypeScript module, index.ts, that exports methods. A method is what a step calls: it receives the step's parameters, does the work (an HTTP request, a SQL query, an MQTT publish, a browser automation) and returns the headers, status and body the step asserts on, plus anything worth remembering for later steps.

Applications document themselves in the JSDoc blocks of that file. The UI renders those blocks as the method reference, --capabilities lists them on the terminal and the AI reads them when it writes a flow. Read more in Applications.

Environments

An environment is a name, local, uat, production, and behind the name one env file per application: applications/<app>/env/<environment>.env. The file holds the URL, credentials and options that application needs to reach that instance. A method reads them as ctx.env.

An environment exists as soon as one application has a file for it, and a run only needs the files of the applications its flow actually uses. The env files hold secrets, so they stay out of git; committed .env.example templates say which variables each one needs, and the tool moves the values between machines as one document. Read more in Environments.

The two containers

The context folder holds all of the above, and it is meant to be a git repository of yours. See The context folder.

A test run is what a Run produces: a folder under test-runs/ with a summary, a copy of every flow that ran with the results written into it, and a standalone HTML report. See Test runs.

Two more words

Properties are the keys of a flow's frontmatter: title, description, and anything you add, owner, tags, priority. They are what folder tables sort and filter on.

Views are saved filters over the flows, kept in views.yaml at the root of the context. A folder is shown through a view, Run all runs what a view lists, and --view runs the same list from a pipeline. See Organizing flows.