QA LAB ARCHITECTURE

Quality Engineering in Practice

QA Lab is a compact Flask-based portfolio project demonstrating layered automated testing across API, application routes, and browser UI, with CI orchestration, public reporting, AI-assisted change-impact analysis, and deployment.

Capabilities

Quality Engineering Capabilities

API Automation Browser Automation Layered Testing CI/CD Automated Reporting AI-Assisted QA Structured Analysis
Python Flask pytest Playwright GitHub Actions GitHub Pages Render Bootstrap

AI-ASSISTED QA

Change-Impact Analysis with Deterministic Boundaries

Merged PR evidence Metadata, changed files, and patches
Source-derived QA catalog Real pytest and Playwright coverage
Structured analysis context
AI change-impact analysis Risk, test relevance, coverage gaps, and limitations
Structured AI report Persisted on the dedicated ai-reports branch
Read-only Flask feed
AI-Assisted QA explorer Human review at /ai

Deterministic code owns report provenance and change statistics. pytest and Playwright remain the source of truth for execution results; public visitors can review persisted analysis but cannot trigger OpenAI.

TESTING STRATEGY

Layered Application Coverage

Login API Tests

pytest · Flask test client

Validates authentication responses, invalid credentials, and request-field validation.

Flask Route Tests

pytest · Flask test client

Validates routing, redirects, public navigation, rendered states, and browser-form responses.

UI Tests

Playwright · Chromium

Validates visible login controls, success/error feedback, and native required-field behavior.

CI & REPORTING FLOW

From Automated Tests to Public Dashboard

Backend pytest job
Playwright UI job
aggregate-results
latest.json + GitHub Pages results
Flask results endpoint
QA Lab dashboard Hosted on Render

Pull requests validate backend, browser, and aggregation jobs; production reporting is published only from main.

WHY THIS ARCHITECTURE?

Design Decisions

Separate test execution

Backend and browser tests run independently for clearer feedback and failure isolation.

One reporting source of truth

Both JUnit outputs are aggregated into one public latest.json result feed.

Sanitized public reporting

The Flask dashboard consumes the published result contract without exposing internal CI artifacts.

View GitHub Repository