Skip to content

feat: playwright-test — the estate browser testing convention (ADR 0017) - #58

Merged
cshuttle merged 2 commits into
mainfrom
feat/playwright-test-reusable
Aug 19, 2026
Merged

feat: playwright-test — the estate browser testing convention (ADR 0017)#58
cshuttle merged 2 commits into
mainfrom
feat/playwright-test-reusable

Conversation

@cshuttle

Copy link
Copy Markdown
Owner

Implements the cshuttle/workflows half of nmon#125 (Homelab-Skills ADR 0017: browser testing is a reusable workflow, not a cluster browser pool).

  • playwright-test.yml (reusable): lockstep job (caller npm pin ↔ image tag ↔ mirror layers, manifest-HEAD cheap) gating a test job in the pinned ghcr.io/cshuttle/playwright mirror container on the caller's ARC runner. Inputs: runner (required), unit-command, e2e-command, playwright-image (the estate pin, as the Renovate-tracked default).
  • mirror-playwright.yml moves here from nmon — the tag's source of truth is now this repo. Header documents the package Actions-access grant that becomes possible here (nmon's token was denied as the package source repo).
  • renovate.json: custom manager tracking the pin against MCR (the mirror can't propose upgrades), same as nmon's, retargeted at the input default line.
  • README: adoption section with the consumer snippet, the dind prerequisite, and the image-leads-npm-follows Renovate rule to copy.

nmon's conversion to a thin caller follows as a separate PR once this is released (minor → v1.7.0).

🤖 Generated with Claude Code

cshuttle and others added 2 commits August 19, 2026 12:05
Extracts nmon's proven Playwright CI pattern (nmon#76/#78/#79) into a
reusable workflow, per Homelab-Skills ADR 0017 and nmon#125: the estate
Playwright pin lives in playwright-test.yml's playwright-image default,
consumers run their suites in that container on their own ARC runner,
and a lockstep job holds every PR red until the caller's npm pin, the
image tag, and the ghcr mirror's content agree.

mirror-playwright moves here from nmon with the pin it serves; being
operated from a repo that is not the package's source also makes a
one-time Actions-access grant possible where nmon's GITHUB_TOKEN was
denied. renovate.json points version discovery for the pin back at MCR
(the mirror would never propose an upgrade).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…agree

Review finding on #58: the reusable lockstep job hardcodes its upstream
registry (it checks out the caller, so it cannot parse its own
annotation the way nmon's old lockstep did) — this selftest job is what
keeps the two lines from rotting apart silently.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cshuttle
cshuttle merged commit 1bc3dbe into main Aug 19, 2026
10 checks passed
@cshuttle
cshuttle deleted the feat/playwright-test-reusable branch August 19, 2026 16:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant