Testing
Pick the lightest validation lane that still proves your change. This page is intentionally short: use it to choose a lane, then drop into the repository runbook for the exact command sequence.
Use this page to choose the right validation lane. For the full contributor flow, start with Contributing. For local setup and request examples, use Developer Guide. The canonical validation runbook lives in the repository TESTING.md runbook.
Validation lane selector
| Change type | Minimum lane | Start with | Escalate when |
|---|---|---|---|
| docs-only copy, nav, or screenshots | docs build | uv tool run --with mkdocs mkdocs build --strict |
the change affects examples, commands, or screenshots that need a live check |
| Python logic, HTTP responses, or Telegram behavior | smoke + baseline | scripts/smoke.sh then uv run python -m unittest discover -s tests |
the change touches approval flow, incident rendering, or integration boundaries |
| Helm chart, Kustomize, or deploy manifests | manifest gate | helm lint chart plus the render and kubeconform steps in TESTING.md |
the change could alter runtime wiring or cluster behavior |
| local investigate or webhook behavior | example flow | run the relevant local flow in TESTING.md |
you need evidence of stored incidents, notifications, or action proposals |
| approval loop, kind e2e, or full alert pipeline | end-to-end lane | use the kind scripts in TESTING.md |
the change crosses service, cluster, and operator boundaries |
CI lanes at a glance
Current main runs three validation lanes in .github/workflows/tests.yml:
- smoke API contract + alertmanager approval-loop + Telegram approval protocol checks for fast failure feedback
- full Python test discovery for the baseline suite
- manifest validation for Helm and Kustomize output
Telegram contract regressions run in the baseline lane through tests/test_telegram_contracts.py.
Run only those checks locally:
uv run python -m unittest tests.test_telegram_contracts
When you change docs, also run:
uv tool run --with mkdocs mkdocs build --strict
When To Open TESTING.md
Open the full runbook when you need:
- exact command order and prerequisites for Helm, Kustomize, or kind validation
- verification checkpoints for
/investigate, Alertmanager webhook, or Telegram flows - artifact paths, cleanup steps, or evidence bundle locations
- repeated reliability or full in-cluster alert-pipeline validation
Common entry points
# fast CI-shaped check
scripts/smoke.sh
# full unit baseline
uv run python -m unittest discover -s tests
# quick investigate + approve flow
scripts/e2e_kind.sh
# P0 reliability gate: repeated N-run validation (RUNS>=5)
scripts/e2e_reliability_kind.sh
# full in-cluster stack: PrometheusRule + Alertmanager + webhook
scripts/e2e_full_stack_kind.sh
For exact prerequisites, verification points, artifact paths, and cleanup commands, follow the repository TESTING.md runbook directly.