A working production-realistic QA automation lab demonstrating CI/CD validation, diagnosable failures, deterministic test design, and risk-based release gates across a real runner-to-SUT boundary.
A production-realistic QA automation lab that separates the system under test, CI/CD execution, and local test execution across three machines.
A short walkthrough of Sprint 0 - 3 of the QA automation lab architecture showing the MBP as the system under test, Mac Mini 1 as the CI/CD machine, and Mac Mini 2 as the dedicated Playwright test runner.
This overview shows the runner-to-SUT boundary, CI/CD separation, and diagnostic failure classification used in the lab.
QA Test Lab is a production-realistic environment built to stay current with modern automation, CI/CD, and test infrastructure—without the cost or operational overhead of full enterprise systems. It’s designed to surface and/or prevent the kinds of failures that appear in real deployment environments.
The lab separates responsibilities across three machines. The MBP hosts the system under test, Mac Mini 1 executes CI/CD through a local GitLab Runner, and Mac Mini 2 acts as the dedicated Playwright test runner. Both CI/CD and local proof runs must cross the runner-to-SUT boundary.
| SUT | MBP hosting the Ubuntu VM + Docker Compose stack (web + api + db) |
| CI/CD | Mac Mini 1 running the local GitLab Runner and pipeline jobs |
| Test Runner | Mac Mini 2 running Playwright locally for proof, debugging, and validation |
| DNS | Stable hostnames via /etc/hosts (for example sut.testlab) |
| Config | WEB_BASE_URL and API_BASE_URL drive UI and API targeting |
[Mac Mini 1 / CI-CD]
local GitLab Runner
|
| pipeline execution / validation
v
[MBP / SUT]
Ubuntu VM
Docker Compose:
- web -> :3000
- api -> :3001
- db -> internal
[Mac Mini 2 / Test Runner]
Playwright local execution
|
| proof / debug / smoke validation
v
[MBP / SUT]
The sequence is intentional: topology realism, environment discipline, CI diagnosability, flake elimination, data/state control, risk-based release gates, fixture composition, and scalable page object design.
System capability: Establish a Deterministic Environment Baseline
Sprint 0 demo
System capability: Enforce Real Runner-to-System Boundaries
Sprint 1 demo
System capability: Enforce Explicit Environment Targeting
Sprint 2 demo
System capability: Make Failures Diagnosable from Artifacts
Sprint 3 demo
System capability: Classify and Eliminate Flake by Root Cause
Sprint 4 demo
System capability: Control Test Data and State Deterministically
Sprint 5 demo
System capability: Enforce Risk-Based Release Gates
Sprint 6 demo
System capability: Compose Tests from Domain-Level Primitives
Sprint 7 demo
System capability: Maintain UI Automation at Scale
Sprint 8 demo
System capability: Derive Test Coverage from Live Systems
System capability: Create a Structured Failure Artifact Contract
System capability: Classify Failures Deterministically
System capability: Enforce Intelligent Locator Strategy
System capability: Synthesize Action Methods from Typed UI Elements
System capability: Automate Risk-Based Release Decisions
Sprint 14–17 demo
What it proves:
Deliverable:
What it proves:
Deliverable:
What it proves:
Deliverable:
What it proves:
Deliverable:
Personas apply real pressure: pipeline design, flake elimination, release risk thinking, and onboarding clarity. Each one pulls on a different maturity muscle.
Mission: Make pipelines boring and trustworthy.
Outputs
Rules
Mission: Reduce noise without hiding risk.
Outputs
Rules
Mission: Prevent silent regressions from shipping.
Outputs
Rules
Mission: Make the system understandable in 30 minutes.
Outputs
Rules
Each runbook has the goal, exact commands, expected output, common failure modes, and why the system is built that way.
Runbooks are command + expected-output documents. Examples are sanitized.
If your current automation feels slow, flaky, or hard to trust, that is fixable.
This lab shows how I approach that problem — from environment discipline, to state control, to release gates and agent-ready failure analysis.
If you want to talk through your current setup, I’m happy to do that.