QA Engineering / Test Automation
QA Automation Framework
A reusable automation framework where API and Web layers share a common core — config loading, auth, HTTP client and dependency injection — while still running independently.
- 1API✓
- 2Test Architecture✓
- 3Playwright✓
- 4CI/CD✓
01 Overview
A reusable automation framework where API and Web layers share a common core — config loading, auth, HTTP client and dependency injection — while still running independently.
02 Why I built it
Test suites tend to grow into duplicated setup, hard-coded environments and brittle tests that mix intent with mechanics. Supporting a new region or environment often means touching the tests themselves.
03 Architecture
tests/
├── api/ thin API scenarios
└── web/ thin Web scenarios
│
▼
src/
├── api/ facades · request builders · schemas · types
├── web/ page objects · components · actions · flows
├── shared/ fixtures · constants · factories · utils
└── core/ config loader · auth · HTTP client · DI
│
▼
config/
├── environments/ region & environment profiles
└── playwright/ shared api / web / all configs04 Technical Highlights
- →Separate Playwright configs for API, Web and combined runs
- →Configuration-driven regions and environments
- →Schema validation of API responses with Zod
- →Factories with Faker for isolated test data
- →Page objects, components, actions and flows for the UI layer
- →CI pipeline on GitHub Actions
05 Quality / Testing
The framework itself is the quality system: layers can run independently, tests stay declarative, and shared fixtures keep setup consistent across API and UI.
06 Engineering Decisions
Keep tests thin: they describe behaviour and delegate to the framework. Environment and region profiles live in configuration, so adding a region doesn't change test code. API responses are validated against Zod schemas and test data is generated with factories.
07 Lessons Learned
Clear responsibilities between test intent and test mechanics is what keeps a suite maintainable as it scales — the same separation-of-concerns thinking used in application architecture.