Skip to content
axxbetadocs
v0.6.3next
GitHub

Choose packs

View .mdOpen in Claude

A pack is a set of steps. Axx publishes rest, mock (mocked dependencies, and mocked AI models: Test AI features), grpc (Call gRPC services), jsonrpc (Call JSON-RPC services), graphql (Call GraphQL services), mcp (Test MCP servers), a2a (Test A2A agents), sql, mongo, redis (Seed and check Redis), kafka, amqp, mqtt, nats (Test message brokers), websocket (Test WebSockets), sse (Test event streams), asyncapi (their messages checked against your AsyncAPI document: Validate against AsyncAPI), logs, files (the files your services write: Check files), mail (Check emails), faults (connections that go wrong: Break connections), otel (what services report through OpenTelemetry: Check telemetry), cli (commands: Run commands) and web-core (web apps in real browsers: Test web apps), with the packs that build on it: web-screenshots, web-a11y, web-network, web-lighthouse and web-coverage, mobile-android and mobile-ios (Android apps on emulators, iOS apps on simulators: Test mobile apps), which build on mobile-core, and desktop-macos, desktop-windows and desktop-linux (desktop apps, through the operating system’s accessibility tree), which build on desktop-core. It also publishes packs for cloud services, one per service, named after its cloud (Test cloud services):

  • AWS: aws-s3, aws-sqs, aws-sns, aws-eventbridge and aws-dynamodb, which build on aws-core.
  • Google Cloud: gcp-storage, gcp-pubsub, gcp-bigquery and gcp-firestore, which build on gcp-core.
  • Azure: azure-blob and azure-servicebus.

Each pack’s steps, settings and tools are on its page of the pack reference. A project can write packs of its own, or use packs other teams publish. Every pack, Axx’s or anyone else’s, is used the same way: the project lists it in axx-packs.yaml, next to axx.yaml.

Terminal window
$ axx pack add rest sql
created axx-packs.yaml
added rest, sql
$ axx pack list
this project's packs (axx-packs.yaml):
rest 31 steps REST requests and responses, OpenAPI validation
sql 17 steps SQL databases (PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite): seeds, selections, locks, triggers
axx's packs it does not use (`axx pack show <name>`: what one reaches, its settings and steps):
mock WireMock services and their OpenAPI contracts
mongo MongoDB: seeds and selections
...
axx-packs.yaml
packs:
- rest
- sql

Axx knows every pack it publishes before a project adds it, offline and for the version installed: axx pack show <name> says what a pack reaches and gives its settings and steps, axx steps --pack <name> lists its steps, and axx steps search <words> finds steps in every pack, with the pack to add. Only the listed packs are loaded, so their steps are the only ones a run can use; a step of another of Axx’s packs is undefined, and axx validate names the pack that has it. Listing a pack that builds on another (a web pack such as web-a11y, mobile-android, desktop-macos, or an AWS or Google Cloud pack) loads that one too: web-core, mobile-core or desktop-core (and app-core, which they build on), aws-core or gcp-core. axx pack remove takes packs off the list. axx init starts the file with rest, which its first feature uses, and lists the packs the repository points to, from its compose files, dependency manifests, schema files and docs, for you to add. Commit axx-packs.yaml.

The first axx command that needs the project’s steps prepares Axx with its packs:

Terminal window
$ axx validate
axx: preparing rest, sql (once; cached for later runs)
axx: ready in 31s
2 files, 6 scenarios, 41 steps: ok

This happens once for each list of packs and version of Axx. Later runs start immediately. The first time, Axx downloads what it needs, so it takes longer. In CI, keep Axx’s cache between runs (Run in CI).

Your own packs are listed the same way, by path or by Go module:

Terminal window
$ axx pack new ./steps # create a pack in this repository
$ axx pack add github.com/team/axx-grpc@v1.2.0 # use a pack published as a Go module

Write custom steps shows what goes in a pack. When you change a pack in the repository, the next axx command prepares Axx with the new version.

Versions of module packs are pinned in axx-packs.lock (commit it). axx pack update moves them to the latest version, or to the version written in axx-packs.yaml, and prepares Axx again.