Regression Tests
labs64.io-tests is a black-box regression suite for the platform, built with Robot Framework. A change in one module can break another, and the break shows up at the edge: a wrong scope, a missing route, a payment that never reaches the audit log. The suite checks the platform the way a real client sees it.
- Edge only. Every test goes through Traefik and the auth proxy, never a backend port, so authentication and authorization are always part of what is tested.
- Real tokens. Tokens are minted with exact scopes from the mock identity provider or Keycloak.
- Tagged and filterable.
smoke,regression,auth,flaky,not-ga,local-k8s-onlyand module tags let you run exactly the slice you need.
Unit tests for a module live in that module’s repository. This suite needs a running stack, reachable through its gateway edge. Get one with the Quickstart (gateway, authentication, AuditFlow and Payment Gateway) or with the full local ecosystem.
What it covers
| Area | What is checked |
|---|---|
| AuditFlow | Publishing events, validation errors and the authorization matrix |
| Payment Gateway | Provider lifecycle with the NoOp provider and the authorization matrix |
| Auth enforcement | A generated matrix across every route: the scopes it should and should not accept |
| Across modules | A payment appearing in AuditFlow (local cluster only, via correlation-scoped logs) |
Architecture
┌────────────────────────────────────────────┐
│ Robot Framework suite tests/ + resources/│
└──────────────┬──────────────┬──────────────┘
│ mint token │ HTTP
┌────────▼─────┐ ┌────▼───────────────────────────────┐
│ mock OIDC or │ │ Gateway edge: Traefik + auth proxy │
│ Keycloak │ └────┬───────────────────────┬───────┘
└──────────────┘ │ │
┌────────▼───────┐ ┌────────▼────────┐
│ AuditFlow │ │ Payment Gateway │
└────────────────┘ └─────────────────┘
results: output.xml · log.html · report.html · CI job summary
Run the suite
Needs Python 3.14:
git clone https://github.com/Labs64/labs64.io-tests.git && cd labs64.io-tests
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
robot --include smoke --exclude not-ga tests/ # the fast gate
robot tests/auditflow/ # one service
By default the suite expects the local k3d addresses (http://gateway.localhost). Robot writes output.xml, log.html and report.html to the current directory: open log.html first when a test fails, because it carries the full request and response for every failing keyword. just smoke, just regression and just test-module <name> wrap the same commands; from the workspace they are just tests <recipe>.
Target another environment
Point the suite at any cluster’s gateway edge with environment variables:
export GATEWAY_BASE_URL=https://gateway.example.com
export KEYCLOAK_BASE_URL=https://keycloak.example.com # when the stack uses Keycloak instead of mock OIDC
robot --include smoke tests/
Tests that need pod logs are tagged local-k8s-only and are skipped or excluded elsewhere. The reference lists every variable.
Add a test
Tests follow one convention: shared keywords in resources/, one folder per module under tests/, and tags on every case.
labs64.io-tests/
├── resources/ # common.resource (sessions, token minting) + per-module keywords
├── tests/
│ ├── auditflow/ # smoke.robot · authz.robot · …
│ ├── payment-gateway/ # smoke.robot · payment_providers.robot · authz.robot
│ └── common/ # cross-module probes
└── scripts/ # readiness gate, summaries, edge-image mirroring
New tests go through the gateway; the only exception is an explicitly tagged local-k8s-only probe. Pick the narrowest slice while you work and run just ci before you push. The repository’s AGENTS.md explains how to add a module, and its docs/reference.md holds every command, the tag taxonomy and the CI setup.
Next steps
| You want to… | Go to |
|---|---|
| Open a pull request with a new scenario | Contributing guide |
| Understand the authorization being tested | Auth Gateway |