paul_wagner.qa

Proof of concept

QA Test Lab

Playwright tests in TypeScript for the main journeys on this site, desktop and mobile, plus REST checks against a public sandbox API. GitHub Actions runs them on every change to the main branch.

I’m building hands-on experience with Playwright and TypeScript here.

Showing the saved snapshot

54

passed

0

flaky

0

failed

0

skipped

0

did not complete

54

total tests

Results

Saved snapshot of a local run on 11 Oct 2026, 07:01 UTC. Tested commit 35bce45.

This site was built from a different commit, 923f84c.

Tests ran for 16.3s.

E2E · Home page

home.spec.ts

  • loads with the right title and headline , Passed 631ms
  • shows the main sections in order , Passed 1.2s
  • both CV links download the PDF , Passed 827ms
  • expands "Other builds" on click , Passed 1.1s
  • opens a film in a player and closes it with Escape , Passed 1.4s
  • skip link appears on the first Tab and jumps to the content , Passed 627ms
  • hero wall stops moving when reduced motion is on , Passed 679ms
  • loads with the right title and headline , Passed 865ms
  • shows the main sections in order , Passed 897ms
  • both CV links download the PDF , Passed 799ms
  • expands "Other builds" on click , Passed 663ms
  • opens a film in a player and closes it with Escape , Passed 943ms
  • skip link appears on the first Tab and jumps to the content , Passed 939ms
  • hero wall stops moving when reduced motion is on , Passed 782ms
  • loads with the right title and headline , Passed 1.4s
  • loads with the right title and headline , Passed 1.2s

E2E · Navigation

navigation.spec.ts

  • header has the same links on every page , Passed 866ms
  • mobile menu closes after picking a link or pressing Escape , Passed 795ms
  • unknown pages show the 404 page with a link home , Passed 643ms
  • header has the same links on every page , Passed 593ms
  • mobile menu closes after picking a link or pressing Escape , Passed 718ms
  • unknown pages show the 404 page with a link home , Passed 799ms

E2E · Blog

blog.spec.ts

  • lists posts and opens one , Passed 453ms
  • Share menu opens and closes with Escape , Passed 391ms
  • Copy Link puts the article URL on the clipboard , Passed 497ms
  • Copy Link shows an error when the clipboard is blocked , Passed 460ms
  • lists posts and opens one , Passed 630ms
  • Share menu opens and closes with Escape , Passed 779ms
  • Copy Link puts the article URL on the clipboard , Passed 944ms
  • Copy Link shows an error when the clipboard is blocked , Passed 808ms
  • lists posts and opens one , Passed 1.8s
  • Copy Link shows an error when the clipboard is blocked , Passed 1.8s
  • lists posts and opens one , Passed 801ms
  • Copy Link shows an error when the clipboard is blocked , Passed 964ms

E2E · Every page

all-pages.spec.ts

  • no page scrolls sideways, from small phones to desktop , Passed 3.8s
  • no page loads anything from another site or sets a cookie , Passed 9.3s
  • pages still show their content without JavaScript , Passed 677ms

E2E · This page, with a mocked API

test-lab.spec.ts

  • shows the latest run from the API , Passed 353ms
  • falls back to the saved snapshot when the API is down , Passed 355ms
  • follows a running run until it finishes , Passed 388ms
  • shows the latest run from the API , Passed 428ms
  • falls back to the saved snapshot when the API is down , Passed 452ms
  • follows a running run until it finishes , Passed 362ms
  • shows the latest run from the API , Passed 1.5s
  • falls back to the saved snapshot when the API is down , Passed 1.3s
  • shows the latest run from the API , Passed 654ms
  • falls back to the saved snapshot when the API is down , Passed 652ms

API · Public REST sandbox

api.spec.ts

  • GET /posts/1 returns one post , Passed 106ms
  • GET /posts?userId=1 returns only that user's posts , Passed 111ms
  • GET /users/1 includes a nested address , Passed 85ms
  • POST /posts returns 201 and the new post , Passed 441ms
  • PUT /posts/1 returns the updated post , Passed 450ms
  • DELETE /posts/1 returns 200 , Passed 451ms
  • GET /posts/999999 returns 404 , Passed 78ms

Tests live in tests/ and run from .github/workflows/tests.yml in this site’s private repository. This page is the public record of their results.