AutoMax
Guides

Processes and testing types

Named run recipes with triggers, gates and notifications, and the testing types modules declare.

What you'll learn

What a process is, the fields it takes, how the four demo processes differ, how to run one, and which testing types a module can declare.

Testing types

A module declares the kinds of testing it receives. Lint and coverage use the list to spot gaps (a module with visual but no @visual scenario, for example).

TypeTypical tagMeaning
functional@smoke @regressionbehaviour of a feature
smoke@smokefast health checks
regression@regressionthe full behavioural suite
sanity@sanitynarrow checks after a change
integration@hybridseveral components or layers together
contract@api + schema stepsresponses match OpenAPI, JSON Schema or Zod
visual@visualpixel comparison against baselines
accessibility@a11yaxe-core violations
performance@perfweb-vitals and API latency budgets
security@securityauthorization and input-handling checks
data-driven@data-drivenoutlines and datasets
exploratory@recordedrecorded sessions before conversion

Processes

A process is a named run recipe. It captures what a team runs on which occasion so nobody retypes flags.

projects/demo-shop/automax.project.yaml
processes:
  - name: pr-check
    title: Pull request check
    trigger: pr
    tags: '@smoke'
    browsers: [chromium]
    harMode: replay
    gates: { minPassRate: 100 }
  - name: nightly-regression
    title: Nightly regression
    trigger: nightly
    tags: '@regression'
    browsers: [chromium, firefox, webkit]
    notify: [github]
  - name: release-gate
    title: Release gate
    trigger: release
    tags: '@smoke or @regression'
    browsers: [chromium, firefox, webkit]
    failOnFlaky: true
    gates: { minPassRate: 100, maxFlaky: 0, perfBudgets: true, a11y: true }
  - name: api-contract
    title: API contract
    trigger: merge
    layers: [api]
    tags: '@contract or @smoke'

The workspace file declares the same pr-check, nightly-regression (with schedule: '0 2 * * *') and release-gate under defaults.processes; the project's entries override them by name, so automax processes list -p demo-shop shows four processes.

FieldPurpose
triggerwhen the process is meant to run: manual, pr, merge, nightly, release, schedule, webhook
env, tags, layers, browsers, moduleswhat to select
workers, retries, harMode, failOnFlakyhow to execute
gatesconditions that fail the run even when every scenario passed: minimum pass rate, maximum flaky count, performance budgets, accessibility
notifyintegrations to call after the run
schedulea cron expression; automax schedule sync turns it into a schedule

Workspace-level processes under defaults.processes apply to every project; a project process with the same name overrides it.

Run a process

bun run automax processes list -p demo-shop
bun run automax run -p demo-shop --process pr-check
bun run automax run -p demo-shop --process nightly-regression -b chromium    # flags override process fields
bun run automax run -p demo-shop --module cart -t @regression

CI workflows call processes by name, so a change of gate or browser list is a YAML edit, not a workflow edit.

Next steps

On this page