TL;DR
- Playwright UI tests running headlessly in CI
- Cross-browser coverage: Chromium, Firefox, WebKit
- Evidence-first: HTML report, traces, screenshots, videos
- GitHub Actions pipeline with always-uploaded artifacts
This repository demonstrates a production-style UI automation pipeline using Playwright (origin: Microsoft, 2020) and GitHub Actions (CI/CD platform by GitHub).
The system under test is a mock Cloud Status Dashboard (AWS, Azure, GCP) designed for deterministic, repeatable validation.
The focus is not just passing tests—it’s verifiable proof reviewers can inspect.
- I can design UI tests that run reliably in CI
- I capture debuggable evidence on pass and fail
- I understand cross-browser risk
- I treat QA as a delivery system, not a local script
- Playwright: Browser automation + assertions
- TypeScript: Typed test code for maintainability
- GitHub Actions: CI execution on every push
- HTML Reporter: Human-readable execution report
- Trace Viewer: Step-by-step replay for debugging
- Page load and render validation
- Presence of cloud provider cards (AWS, Azure, GCP)
- Status indicators and timestamps
- User interaction and UI updates
- Cross-browser consistency
On every push to main, the workflow:
- Installs dependencies and Playwright browsers
- Runs tests headlessly across all browsers
- Generates an HTML report
- Captures traces, screenshots, and videos
- Uploads artifacts even if tests fail (
if: always())
This mirrors how mature teams operate in production.
- ✔ Tests execute in CI (Chromium, Firefox, WebKit)
- ✔ HTML report generated and downloadable
- ✔ Traces/screenshots/videos captured
- ✔ Artifacts available on both pass and fail
- Actions → Playwright Tests → Latest run
- Download
playwright-reportartifact- Open
index.htmllocally - Inspect steps, traces, screenshots, and videos
- Open
Committed examples for quick review:
Live dashboard used for validation:
https://vivaciousdove.github.io/cloud-status-dashboard/
npm ci
npx playwright install --with-deps
npx playwright test
npx playwright show-report
---
Open a specific trace:
npx playwright show-trace <path-to-trace.zip>