How it works

Write, run, triage, heal

Four steps from a plain-English spec to a check on the pull request. At each step the page shows the spec, the command, the output and where a person decides.

A test is a YAML file with steps in plain English. npx aitp run runs it locally or in hosted browsers. A failed test gets a triage card. A step that broke because the page layout changed is healed and waits for review.

The four steps

  1. Step 1

    Write the test in plain English

    Create a file in tests/ named <name>.test.yaml. It needs a name, a start url and a list of steps. A step is an action in plain English, an assert: line, or an api: call Beta.

    terminal
    npx aitp init# creates aitp.config.yaml and tests/

    A person decides what the test checks. The platform does not add assertions that were not written.

    Spec reference

    tests/login.test.yaml
    1name: Log in with email2url: https://staging.example.com3steps:4  - Click "Log in"5  - Type EMAIL into the email field6  - Type PASSWORD into the password field7  - Click "Continue"8  - assert: The dashboard shows the account name
  2. Step 2

    Run it locally or in CI

    npx aitp run runs all tests locally in Chromium. Add --cloud to run in hosted browsers, --region eu or --region us to choose where. In CI, one step with the AITP_TOKEN secret reports a pass, fail or healed status per test as a check on the pull request.

    terminal
    npx aitp run --tag smoke --cloudPassCheckout with a saved cardHealedLog in with emailexit code 2: healed steps pending review

    Whether a failed check blocks the merge is your branch protection rule, not the platform's decision.

    CI setup

  3. Step 3

    Read the triage card when a test fails

    Every failed test gets a triage card (a summary of one failure with the evidence needed to decide what to do): the failing step, screenshot, DOM snapshot, network log, the diff from the last passing run, and a classification of app-bug, test-issue or environment.

    terminal
    npx aitp run tests/checkout.test.yamlFailCheckout with a saved cardexit code 1: failnpx aitp report --last

    The classification is a proposal. A person confirms it. No ticket is filed without an integration and a click.

    Triage output

  4. Step 4

    Review healed steps

    When a step no longer resolves because an element moved, was renamed or restyled, the platform finds it again, marks the test as healed and records the change. heal.auto lists what is healed without a person; heal.review lists what waits for approval.

    terminal
    npx aitp heal --reviewHealedLog in with email, step 4: Click "Continue"button text and position changed, same action; waiting for approval

    A behaviour change is never healed: the test fails and goes to triage. With ci.failOnHealedPending: true the run exits with code 2 until healed steps are reviewed.

    Healing rules

    aitp.config.yaml
    1project: my-app2baseUrl: https://staging.example.com3browsers: [chromium]4retention: 30d5heal:6  auto: locator, layout     # what is healed without a human7  review: text, order       # what waits for review8ci:9  failOnHealedPending: true

Exit codes

CodeMeaning
0pass
1fail
2healed steps pending review

Questions

Do I need to write code to create a test?

No test code is needed. A test is a YAML file with a name, a start URL and a list of steps in plain English. You still need a text editor, a terminal and the CLI.

Where do tests run?

Locally in Chromium with npx aitp run, or in hosted browsers with --cloud in the EU or US region. Hosted runs support Chromium, Firefox and WebKit.

What happens when the UI changes?

If an element moved, was renamed or restyled, the step is healed and recorded for review. If the behaviour changed, the test fails and gets a triage card.

How does a failed test reach my team?

As a failed check on the pull request, as a triage card in the report, and in Slack if the integration is connected.

Request early access

Early access: prices are the planned list prices. Billing starts when the platform enters beta; early-access use is not charged. We reply within 24 hours on business days.