Start flat, split by domain later
For the first 10-20 tests, keep everything intests/ at the project root. Once
you have enough tests that scrolling becomes a drag, split by product
domain:
Modules live alongside tests
Put reusable modules next to the tests that use them:Naming
test.yamlsuffix for tests,module.yamlfor modules, enforced by the default globs- Lower-case kebab filenames:
checkout-with-coupon.test.yaml - Test
namein YAML matches the filename without the suffix - Group by user outcome, not implementation (
signup-with-sso, notclick-sso-button)
Labels
Labels are how you slice tests in the CLI and dashboard. Common labels:| Label | Meaning |
|---|---|
smoke | Critical paths run on every CI |
regression | Full nightly run |
slow | Tests > 2 min; skipped on pull requests |
owner:payments | Ownership for notifications |
checkout.test.yaml
Environment configuration
Define environments for every target:local, dev, staging, production. Each environment carries its
own base URL, variables, and secrets. A single test runs everywhere without
changes.
Shared fixtures
Fixture data (mock users, API keys, seed scripts) lives outsidetests/, most
teams use fixtures/ at the project root. Reference them from test variables or
modules.