Production-style QA automation examples across Playwright, Selenium, Java, Python, and TypeScript. The repo focuses on maintainable test design, API coverage, Dockerized execution, shared demo services, and failure artifacts that make debugging easier.
Selenium • Playwright • RestAssured • JUnit 5 • Pytest • TypeScript • Java • Python • Docker Compose • Nginx • Node.js • GitHub Actions • Allure
docker composetest-app and test-api services used by containerized runsModern Playwright framework with Page Object Model, reusable fixtures, API coverage, integrated reporting, and Dockerized execution against shared demo services. Includes a retry demo that fails on the first attempt to produce screenshot, video, and retry trace artifacts.
Pytest-based Selenium framework with reusable fixtures, failure screenshots, and a shared demo app fallback that matches the Dockerized execution model.
Each framework is isolated in its own folder and can run independently. UI automation uses Selenium or Playwright, API coverage uses RestAssured or Playwright request contexts, and GitHub Actions publishes the latest generated reports.
Docker is used to provision a consistent execution environment across local runs and CI. The shared demo UI is served over HTTP with Nginx, the demo API is provided as a lightweight Node.js service, and the framework containers run against the same environment shape that is used in GitHub Actions.
The published reports include a few targeted examples that make the framework behavior easier to review than generic pass or fail output.
The Playwright suite includes a dedicated rerun test that fails once and passes on retry so the report captures the exact artifacts engineers usually need during triage: failure screenshot, retained video, and first-retry trace.
In the published report, open demo-rerun.spec.ts, then
Demo retry flow, then
fails once for artifacts and passes on rerun.
The Playwright auth-state example logs in once, saves browser storage state, and verifies that a fresh browser context can reopen the app without repeating the login flow.
In the published report, open auth-state.spec.ts, then
Authentication state, and review
save storage state after login and
reuse saved storage state without logging in again.
The API consumer tests validate shared JSON response contracts, so structure changes are caught at the test layer before they turn into UI or integration surprises.
Review the API suites in the Playwright and Selenium Java reports. The contract checks
are embedded in api.spec.ts, UserApiTest, and
MessageApiTest.
The most complete implementation walkthrough lives in the Selenium Java README. The Playwright README documents retry behavior and artifact retention, while the Python example stays intentionally small and focused on fixture-driven Selenium basics. The root README documents the shared Docker architecture and one-command execution path.