Test evidence
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
By suite
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 desktop-chromium 631ms
- shows the main sections in order , Passed desktop-chromium 1.2s
- both CV links download the PDF , Passed desktop-chromium 827ms
- expands "Other builds" on click , Passed desktop-chromium 1.1s
- opens a film in a player and closes it with Escape , Passed desktop-chromium 1.4s
- skip link appears on the first Tab and jumps to the content , Passed desktop-chromium 627ms
- hero wall stops moving when reduced motion is on , Passed desktop-chromium 679ms
- loads with the right title and headline , Passed mobile-chromium 865ms
- shows the main sections in order , Passed mobile-chromium 897ms
- both CV links download the PDF , Passed mobile-chromium 799ms
- expands "Other builds" on click , Passed mobile-chromium 663ms
- opens a film in a player and closes it with Escape , Passed mobile-chromium 943ms
- skip link appears on the first Tab and jumps to the content , Passed mobile-chromium 939ms
- hero wall stops moving when reduced motion is on , Passed mobile-chromium 782ms
- loads with the right title and headline , Passed desktop-firefox 1.4s
- loads with the right title and headline , Passed desktop-webkit 1.2s
E2E · Navigation
navigation.spec.ts
- header has the same links on every page , Passed desktop-chromium 866ms
- mobile menu closes after picking a link or pressing Escape , Passed desktop-chromium 795ms
- unknown pages show the 404 page with a link home , Passed desktop-chromium 643ms
- header has the same links on every page , Passed mobile-chromium 593ms
- mobile menu closes after picking a link or pressing Escape , Passed mobile-chromium 718ms
- unknown pages show the 404 page with a link home , Passed mobile-chromium 799ms
E2E · Blog
blog.spec.ts
- lists posts and opens one , Passed desktop-chromium 453ms
- Share menu opens and closes with Escape , Passed desktop-chromium 391ms
- Copy Link puts the article URL on the clipboard , Passed desktop-chromium 497ms
- Copy Link shows an error when the clipboard is blocked , Passed desktop-chromium 460ms
- lists posts and opens one , Passed mobile-chromium 630ms
- Share menu opens and closes with Escape , Passed mobile-chromium 779ms
- Copy Link puts the article URL on the clipboard , Passed mobile-chromium 944ms
- Copy Link shows an error when the clipboard is blocked , Passed mobile-chromium 808ms
- lists posts and opens one , Passed desktop-firefox 1.8s
- Copy Link shows an error when the clipboard is blocked , Passed desktop-firefox 1.8s
- lists posts and opens one , Passed desktop-webkit 801ms
- Copy Link shows an error when the clipboard is blocked , Passed desktop-webkit 964ms
E2E · Every page
all-pages.spec.ts
- no page scrolls sideways, from small phones to desktop , Passed desktop-chromium 3.8s
- no page loads anything from another site or sets a cookie , Passed desktop-chromium 9.3s
- pages still show their content without JavaScript , Passed desktop-chromium 677ms
E2E · This page, with a mocked API
test-lab.spec.ts
- shows the latest run from the API , Passed desktop-chromium 353ms
- falls back to the saved snapshot when the API is down , Passed desktop-chromium 355ms
- follows a running run until it finishes , Passed desktop-chromium 388ms
- shows the latest run from the API , Passed mobile-chromium 428ms
- falls back to the saved snapshot when the API is down , Passed mobile-chromium 452ms
- follows a running run until it finishes , Passed mobile-chromium 362ms
- shows the latest run from the API , Passed desktop-firefox 1.5s
- falls back to the saved snapshot when the API is down , Passed desktop-firefox 1.3s
- shows the latest run from the API , Passed desktop-webkit 654ms
- falls back to the saved snapshot when the API is down , Passed desktop-webkit 652ms
API · Public REST sandbox
api.spec.ts
- GET /posts/1 returns one post , Passed desktop-chromium 106ms
- GET /posts?userId=1 returns only that user's posts , Passed desktop-chromium 111ms
- GET /users/1 includes a nested address , Passed desktop-chromium 85ms
- POST /posts returns 201 and the new post , Passed desktop-chromium 441ms
- PUT /posts/1 returns the updated post , Passed desktop-chromium 450ms
- DELETE /posts/1 returns 200 , Passed desktop-chromium 451ms
- GET /posts/999999 returns 404 , Passed desktop-chromium 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.