Back to Proof of Work
QA Proof of Work

Automation Exercise

End-to-End QA Automation & Continuous Testing

An independent, self-initiated QA project, not client work, run against automationexercise.com, a public practice store. It combines manual testing, REST API validation, Playwright UI automation, Page Object Model architecture, debugging and GitHub Actions CI.

Last Recorded CI Result (29 Aug 2026) Passed
26/26 passed

26 test definitions (16 API, 10 UI) passed in the GitHub Actions run of 29 August 2026 (commit 789d413), with CI retries enabled. This is a historical result, not a current execution status.

0 Failed
Chromium Browser project
0 Skipped
API + UI Coverage layers
Automation Exercise: project coverCover for Automation Exercise: 26 test definitions (16 API + 10 UI). Shopping flow covered by the suite: log in or sign up, browse products, add to and remove from the cart, review the order items, check out. Built with Playwright, Page Object Model, GitHub Actions.PRACTICE-SITE PROJECTAutomationExercisePlaywright · Page Object Model · GitHub Actions26test definitions16 API + 10 UI1Loginor sign up2Browseproducts3Cartadd, remove4Revieworder items5Checkoutplace orderUI flows plus API tests for account, authentication and productssayedasif.comAutomation Exercise: project coverCover for Automation Exercise: 26 test definitions (16 API + 10 UI). Shopping flow covered by the suite: log in or sign up, browse products, add to and remove from the cart, review the order items, check out. Built with Playwright, Page Object Model, GitHub Actions.AutomationExercise26test definitions16 API + 10 UIPlaywright · Page Object Model · GitHub ActionsLoginBrowseCartReviewCheckout
26 Automated Tests
API + UI Testing Layers
Playwright Automation Framework
POM Framework Architecture
CI GitHub Actions
The Challenge

How do you validate an e-commerce application beyond basic UI checks?

Rather than treating automation as a collection of isolated browser scripts, I approached the application through multiple QA layers.

The project combines test planning, manual and exploratory validation, API testing, UI automation, regression execution and release assessment.

The goal was to build a maintainable automation suite that could provide repeatable evidence rather than simply demonstrate that a few browser actions could be automated.

01

Plan

Define scope, risks and test scenarios.

02

Validate

Perform manual and exploratory testing.

03

API

Validate REST endpoints and negative cases.

04

Automate

Build Playwright UI regression coverage.

05

Integrate

Execute automated tests through GitHub Actions.

06

Assess

Review execution results and quality findings.

Test Coverage

What I tested

The automated suite covers the application's core customer journeys and selected API behaviours.

Authentication

  • Registration
  • Duplicate registration
  • Valid login
  • Invalid credentials
  • Account deletion

Products

  • Product listing
  • Product search
  • Brands
  • API validation

Shopping Cart

  • Single product
  • Multiple products
  • Product removal
  • Quantity validation
  • Guest checkout

Checkout

  • Order review
  • Product verification
  • Order comments
  • Payment flow
  • Order confirmation

API

  • Account lifecycle
  • Authentication
  • Product search
  • Brands
  • Negative scenarios
Framework Architecture

Built for maintainability, not just execution.

The automation framework separates test intent from page interaction logic and supports both UI and API testing.

Automation Exercise test framework structure GitHub Actions runs the Playwright Test Runner. UI tests (login, cart, checkout) call five page object classes. API tests (account, authentication, products) call three API client classes. GitHub Actions Playwright Test Runner UI testslogin, cart, checkout API testsaccount, authentication,products Page Objectspages/: 5 classes API clientsapi/: 3 classes
Spec files call page objects (UI) or API client classes (API). Structure read from the repository.

Page Object Model

Page interaction logic is separated from individual test scenarios to improve maintainability.

Reusable Utilities

Common operations are centralized instead of being repeatedly implemented inside individual tests.

Authentication State

Tests can begin from an authenticated state where the scenario requires it.

API + UI Layers

The suite validates behaviour beyond the browser layer by including direct API testing.

A page object, from the repository

export class LoginPage {
  constructor(page) {
    this.page = page;
    // ...
    // Login section
    this.loginEmailInput = page.locator('input[data-qa="login-email"]');
    this.loginPasswordInput = page.locator('input[data-qa="login-password"]');
    this.loginButton = page.locator('button[data-qa="login-button"]');
  // ...
  async login(email, password) {
    await this.loginEmailInput.fill(email);
    await this.loginPasswordInput.fill(password);
    await this.loginButton.click();
  }
}
LoginPage: locators live in the constructor, tests call login(). Condensed. pages/LoginPage.js, lines 1–3, 10–13, 30–35 @ 789d413 (opens in a new tab)
Continuous Testing

Automated regression through GitHub Actions

The project uses GitHub Actions to execute API and UI test suites in CI. The workflow is configured to upload Playwright reports as artifacts (14-day retention; none are currently available, checked 12 October 2026).

Automation Exercise CI workflow A push or pull request starts GitHub Actions, which runs two jobs: API Tests and UI Tests. Each uploads its own Playwright report as an artifact. Push / Pull Request GitHub Actions API Tests jobnpm run test:api UI Tests jobchecks login config, thennpm run test:ui Artifactplaywright-api-report Artifactsplaywright-ui-report,auth diagnostics
From .github/workflows/playwright.yml. The two jobs run separately.

What the pipeline proves

The project is not dependent on a local machine to demonstrate that the automation works. The test suite is executable through the CI workflow.

  • Playwright dependencies installed in CI
  • Chromium installed for UI execution
  • API and UI suites executed independently
  • Playwright reports configured as workflow artifacts (14-day retention, now expired)
  • Workflow triggered by repository changes
Inspect GitHub Actions
Engineering & Debugging

Automation isn't useful if it isn't stable.

Checkout automation required investigation and stabilization.

During automation development, checkout scenarios exposed synchronization and cart-state problems. Instead of simply increasing timeouts, I used the available Playwright evidence to investigate the failure path and refine the automation.

01 · FAILURE Test exposes unexpected behaviour.
02 · EVIDENCE Screenshot, video and trace reviewed.
03 · ANALYSIS Locator and synchronization behaviour investigated.
04 · REFINEMENT Page-object interaction and waiting strategy refined.
05 · VERIFY Suite re-run to confirm the regression result. A local no-retry full UI run on 12 October 2026 had 2 failures out of 10 (a checkout assertion and a 60-second login timeout); a repeat of those two tests three times and a second full run passed. Treat the UI suite as one that can fail transiently.
QA Outcome

Evidence over claims.

100% Pass rate of the last recorded CI run (29 Aug 2026); a historical result, not a current status
26 Automated tests executed in the last recorded CI run (29 Aug 2026)
0 Critical defects
0 High-severity defects
2 Minor UI issues documented

QA finding

The documented QA assessment also records minor UI issues and a third-party ad injection behaviour. These findings are presented as observations from the tested environment rather than being described as application-critical production defects.

Technology

Tools used in the project

Playwright JavaScript Node.js REST API Testing Page Object Model GitHub Actions Chromium Manual Testing Regression Testing
What This Demonstrates

More than a Playwright script.

01

QA Thinking

Test planning and validation were considered before building the automated regression layer.

02

Automation Engineering

The framework uses page objects and reusable components instead of placing every interaction directly inside test files.

03

API Testing

Application behaviour is validated at both the API and browser layers.

04

Debugging

Playwright screenshots, videos and traces are used as evidence when investigating failures.

05

CI Engineering

Automated tests can execute through GitHub Actions instead of relying only on local runs.

06

Quality Communication

Test planning, execution evidence and QA findings are documented alongside the code.

Don't just take my word for it. Inspect the implementation.

The source code, CI workflow and QA documentation are available for review.