A Kubernetes-native QA orchestrator that automates the deploy-test-teardown lifecycle for integration and end-to-end test suites against real cluster workloads.
For each discovered scenario, auto-qa:
- Deploys the app stack defined in
scenario.yamlusing Kubernetes server-side apply - Waits for all deployed workloads to become ready (
Available=True) - Runs test suites (respecting
prioritygroups andenabledflags), each enabled suite as abatch/v1 Job; local test files are packaged into a ConfigMap and mounted automatically - Tears down the app stack — always, even on failure or timeout
- Reports pass/fail with duration at the scenario and test suite level; exits
1if anything failed
All scenarios are run concurrently.
A scenario is any subdirectory under SCENARIOS_ROOT that contains both required files:
scenarios/
└── my-scenario/
├── scenario.yaml # Kubernetes resources to deploy (Deployments, Services, Ingress, etc.)
├── runner.yaml # Test suite definitions (image, command, optional file injection)
└── tests/ # Test source files (mounted into test containers via ConfigMap, can be placed anywhere)
├── test_api.py
└── requirements.txt
See scenarios/basic-example/ for a complete, working example with annotated config files.
Prerequisites: Go 1.26+, a running Kubernetes cluster, and kubectl configured.
git clone <repo-url>
cd auto-qa
# Point at the bundled example scenario
export SCENARIOS_ROOT=./scenarios
export NAMESPACE=auto-qa # namespace for test Jobs (created automatically)
go run ./cmd/auto-qaUsing just:
just runjust buildd # builds the image: auto-qa
# Runs with your local kubeconfig mounted
just rundOr manually:
docker build -t auto-qa .
docker run --rm \
-e SCENARIOS_ROOT=/scenarios \
-e NAMESPACE=auto-qa \
-v ~/.kube/config:/root/.kube/config:ro \
-v "$(pwd)/scenarios":/scenarios \
auto-qaSee docs/configuration.md for implementation details.
See CONTRIBUTING.md for local dev setup.