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
Step 1
Write the test in plain English
Create a file in
tests/named<name>.test.yaml. It needs aname, a starturland a list ofsteps. A step is an action in plain English, anassert:line, or anapi:call Beta.terminalnpx 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.
tests/login.test.yaml1name: 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 nameStep 2
Run it locally or in CI
npx aitp runruns all tests locally in Chromium. Add--cloudto run in hosted browsers,--region euor--region usto choose where. In CI, one step with theAITP_TOKENsecret reports a pass, fail or healed status per test as a check on the pull request.terminalnpx aitp run --tag smoke --cloudPassCheckout with a saved cardHealedLog in with emailexit code 2: healed steps pending reviewWhether a failed check blocks the merge is your branch protection rule, not the platform's decision.
Product preview 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-issueorenvironment.terminalnpx aitp run tests/checkout.test.yamlFailCheckout with a saved cardexit code 1: failnpx aitp report --lastThe classification is a proposal. A person confirms it. No ticket is filed without an integration and a click.
Product preview 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.autolists what is healed without a person;heal.reviewlists what waits for approval.terminalnpx aitp heal --reviewHealedLog in with email, step 4: Click "Continue"button text and position changed, same action; waiting for approvalA behaviour change is never healed: the test fails and goes to triage. With
ci.failOnHealedPending: truethe run exits with code 2 until healed steps are reviewed.aitp.config.yaml1project: 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
| Code | Meaning |
|---|---|
| 0 | pass |
| 1 | fail |
| 2 | healed 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.