Skip to main content

test

The test step runs checks and displays their results as an Atmos tree. Successful output stays hidden. When a check fails, its buffered output and error appear as soon as it finishes. The remaining independent tests continue by default.

Post-deployment tests
 
00:00.0 / 00:00.0

View the full example

- name: smoke-tests
type: test
title: Post-deployment tests
output: failures
fail:
mode: wait_all
steps:
- name: health
type: http
url: https://example.com/health
expect:
status: [200]
- name: endpoints
type: parallel
max_concurrency: 2
steps:
- name: homepage
type: shell
command: ./check-homepage.sh
- name: authentication
type: shell
command: ./check-authentication.sh

Execution and output

Direct children run in declaration order. Nest parallel or matrix to run checks concurrently using their existing max_concurrency and needs settings. Matrix combinations have their own branches. Each leaf contributes once to the progress total; container nodes do not increase the count.

Green dots mean passed, red dots mean failed, and spinners identify running tests. Skipped and canceled tests have muted markers. The final summary includes all four outcomes. In CI or redirected output, Atmos prints static results without terminal cursor controls. Failure details remain in scrollback.

FieldDefaultBehavior
stepsRequiredNonempty list of checks or parallel/matrix groups.
titleStep nameHeading for the test tree.
outputfailuresall also displays successful logs when each check finishes.
fail.modewait_allContinue independent tests, then fail if unhandled failures remain.
fail.max_failures0Existing control-step failure threshold; fail-fast defaults to stopping at the first failure.

fail_fast cancels remaining work. best_effort records failures but allows the group to succeed. Explicit child continue conditions and nested group failure policies are honored; tolerated failures still appear red. Failed dependencies skip their dependents. An unset when runs a test even after an earlier failure; explicit conditions can select success, failure, or other existing step facts. Retries count as one test, with the final attempt determining the result.

Noninteractive registered steps such as shell, script, atmos, http, and require work as checks. Interactive steps, process replacement, background services, recording/emulator sessions, and nested test groups are unsupported. Parallel and matrix groups retain their existing one-level nesting restriction.

After deployment

Use an existing lifecycle hook; no separate test command or trigger is required. Set on_failure: fail explicitly because step hooks otherwise default to warning.

hooks:
smoke-tests:
events: [after.terraform.apply]
kind: step
type: test
on_failure: fail
with:
steps:
- name: health
type: http
url: https://example.com/health
expect:
status: [200]

Test steps also work in custom commands. Their result metadata exposes total, passed, failed, skipped, and canceled counts.