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 1 Nov 2026, 09:01 UTC. Tested commit 3d2827d.

This site was built from a different commit, 8b56b5b.

Tests ran for 16.0s.

E2E · Home page

home.spec.ts

  • loads with the right title and headline , Passed 798ms
  • shows the main sections in order , Passed 788ms
  • both CV links download the PDF , Passed 873ms
  • web portfolio cards open the live sites in a new tab , Passed 645ms
  • opens a film in a player and closes it with Escape , Passed 1.1s
  • skip link appears on the first Tab and jumps to the content , Passed 875ms
  • hero wall stops moving when reduced motion is on , Passed 804ms
  • loads with the right title and headline , Passed 957ms
  • shows the main sections in order , Passed 881ms
  • both CV links download the PDF , Passed 808ms
  • web portfolio cards open the live sites in a new tab , Passed 878ms
  • opens a film in a player and closes it with Escape , Passed 913ms
  • skip link appears on the first Tab and jumps to the content , Passed 886ms
  • hero wall stops moving when reduced motion is on , Passed 730ms
  • 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 714ms
  • mobile menu closes after picking a link or pressing Escape , Passed 635ms
  • unknown pages show the 404 page with a link home , Passed 657ms
  • header has the same links on every page , Passed 515ms
  • mobile menu closes after picking a link or pressing Escape , Passed 643ms
  • unknown pages show the 404 page with a link home , Passed 705ms

E2E · Blog

blog.spec.ts

  • lists posts and opens one , Passed 469ms
  • Share menu opens and closes with Escape , Passed 418ms
  • Copy Link puts the article URL on the clipboard , Passed 499ms
  • Copy Link shows an error when the clipboard is blocked , Passed 533ms
  • lists posts and opens one , Passed 738ms
  • Share menu opens and closes with Escape , Passed 509ms
  • Copy Link puts the article URL on the clipboard , Passed 659ms
  • Copy Link shows an error when the clipboard is blocked , Passed 581ms
  • lists posts and opens one , Passed 1.6s
  • Copy Link shows an error when the clipboard is blocked , Passed 1.6s
  • lists posts and opens one , Passed 796ms
  • Copy Link shows an error when the clipboard is blocked , Passed 1.0s

E2E · Every page

all-pages.spec.ts

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

E2E · This page, with a mocked API

test-lab.spec.ts

  • shows the latest run from the API , Passed 374ms
  • falls back to the saved snapshot when the API is down , Passed 327ms
  • follows a running run until it finishes , Passed 309ms
  • shows the latest run from the API , Passed 274ms
  • falls back to the saved snapshot when the API is down , Passed 319ms
  • follows a running run until it finishes , Passed 334ms
  • shows the latest run from the API , Passed 1.1s
  • falls back to the saved snapshot when the API is down , Passed 1.2s
  • shows the latest run from the API , Passed 611ms
  • falls back to the saved snapshot when the API is down , Passed 601ms

API · Public REST sandbox

api.spec.ts

  • GET /posts/1 returns one post , Passed 117ms
  • GET /posts?userId=1 returns only that user's posts , Passed 228ms
  • GET /users/1 includes a nested address , Passed 117ms
  • POST /posts returns 201 and the new post , Passed 218ms
  • PUT /posts/1 returns the updated post , Passed 465ms
  • DELETE /posts/1 returns 200 , Passed 210ms
  • GET /posts/999999 returns 404 , Passed 202ms

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.