Configuration
Everything bellwether.toml can set: always-run tests, exclusions, global files that select everything, and flake thresholds.
Bellwether works without a configuration file. When you need one, put
bellwether.toml in the repository root and commit it.
A complete example
[select]
# Tests that run on every pull request, whatever changed.
always_run = ["spec/smoke/**", "spec/contracts/payments_spec.rb"]
# Tests Bellwether should never select (you run them elsewhere).
exclude = ["spec/load/**"]
# Files upstream of everything: changing one selects the whole suite.
global = ["Dockerfile.base", "Gemfile.lock", ".ci/**"]
[flakes]
isolation_reruns = 3
release_after = 50
[report]
retention_days = 400
always_run
Glob patterns for tests that are selected on every run. These get the verdict
pinned in the skip report. Keep the list short: a smoke suite and contract tests are
the usual candidates.
exclude
Tests that are never selected, usually because a separate job runs them. These get
the verdict excluded.
global
Files that every test depends on in a way the recorder cannot see: the base image, the lockfile, the CI definition. A change to any of them selects the whole suite. The defaults cover the common lockfiles; add your own here.
flakes
isolation_reruns is how many times a test that flipped is rerun before it is
quarantined (1 to 5). release_after is how many clean runs in a row release it.