main/ has no Jest unit tests — only the Playwright e2e suite applies there. All Jest tests live exclusively in subdomains/ryan/.Unit Tests — Jest + React Testing Library
Jest and React Testing Library are set up insubdomains/ryan/ to test individual React components in isolation. The suite covers the four components that contain meaningful rendering logic:
Running unit tests
Run the full Jest suite from insidesubdomains/ryan/:
--testPathPattern flag:
Example: Activity duration tests
TheActivity component contains the only real business logic in the codebase — a formatDuration function that is private to the module. The tests exercise it through the rendered <h6> duration badge:
End-to-End Tests — Playwright
Bothmain/ and subdomains/ryan/ include a Playwright e2e suite. The tests open the app in a real browser and verify that key pages render correctly, external links are safe, metadata is present, and the visual appearance is stable across changes.
Playwright snapshots are stored at e2e/__snapshots__/ inside each app directory. When you run yarn e2e for the first time, Playwright creates baseline screenshots; subsequent runs compare against those baselines.
What the tests cover
main/ smoke tests (e2e/smoke.spec.ts):
- The
/ncontent route renders the homepage with correct headings and title - Visual screenshot comparison of the full page (
content.png) - All external links carry
target="_blank"andrel="noopener" - Social icon images expose descriptive alt text
- Canonical URL and Open Graph metadata are correct
- The root
/redirects to/nvia meta-refresh - Unknown routes return a 404 response
subdomains/ryan/ smoke tests (e2e/smoke.spec.ts):
- The
/ncontent route renders the resume with the correct title - All four major resume sections are visible (Technical Experience, Relevant Work Experience, Related Activities, Education)
- Visual screenshot comparison of the full page (
content.png) - All external links carry
target="_blank"andrel="noopener" - Canonical URL and Open Graph metadata are correct
- The root
/redirects to/nvia meta-refresh - Unknown routes return a 404 response
Running e2e tests
yarn e2e:coverage is only available in main/. It maps Playwright V8 coverage data back to TypeScript source files using monocart-coverage-reports.
Updating snapshots
If you intentionally change the visual output of a page, update the Playwright baseline screenshots by running:Type Checking
Both apps include atypecheck script that runs the TypeScript compiler in no-emit mode. A pretypecheck lifecycle hook automatically runs next typegen first to regenerate Next.js type definitions (such as route types) before the compiler sees your code:
yarn typecheck safe to use in CI.
Linting
Both apps run ESLint with thenext/core-web-vitals configuration, which enforces React, accessibility, and Next.js-specific rules:
--fix flag directly: