From b6feae984842a4252866e87686845e2a0b5a406f Mon Sep 17 00:00:00 2001 From: "Ricardo Q. Bazan" Date: Wed, 27 May 2026 17:05:11 -0500 Subject: [PATCH] ci: run browser jobs in official Playwright container MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `pnpm dlx playwright install --with-deps chromium` hangs indefinitely after the browser download reaches 100% on the Blacksmith runners (the download stream never finalizes), so every job that installs browsers โ€” CI `test` and the four browser E2E examples โ€” runs forever until manually cancelled. Retries/timeouts don't help because the hang is deterministic. Run those jobs inside `mcr.microsoft.com/playwright:v1.59.1-noble`, whose browsers (chromium v1217) are pre-baked and match the pinned playwright 1.59.1, removing the `playwright install` download entirely. Non-browser E2E examples stay on the bare runner so their bun/deno toolchains are untouched. Add timeout-minutes as a safety net. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/ci.yml | 8 +++++--- .github/workflows/e2e.yml | 9 +++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b30b7e6..a8cbbcd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,11 @@ concurrency: jobs: test: runs-on: blacksmith-4vcpu-ubuntu-2404 + # Run inside the official Playwright image: browsers (chromium v1217 for + # playwright 1.59.1) are pre-baked, so the lib browser tests need no + # `playwright install` download โ€” which hangs after 100% on these runners. + container: mcr.microsoft.com/playwright:v1.59.1-noble + timeout-minutes: 15 env: MISE_EXPERIMENTAL: "1" steps: @@ -35,9 +40,6 @@ jobs: - name: ๐Ÿ’… Check (biome + tsc) run: mise run check - - name: ๐ŸŽญ Install Playwright browser (lib browser tests) - run: mise run playwright:install - - name: ๐Ÿงช Test unit (lib) run: mise run lib:test diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index d4adec5..e74dd8f 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -27,6 +27,11 @@ jobs: test: name: ${{ matrix.example }} runs-on: blacksmith-4vcpu-ubuntu-2404 + # Browser examples run inside the official Playwright image (browsers + # pre-baked, no download); non-browser examples run on the bare runner so + # their bun/deno toolchains stay untouched. Empty string โ‡’ no container. + container: ${{ matrix.browser && 'mcr.microsoft.com/playwright:v1.59.1-noble' || '' }} + timeout-minutes: 12 env: MISE_EXPERIMENTAL: "1" concurrency: @@ -63,9 +68,5 @@ jobs: - name: ๐ŸŽ Pack @vlandoss/env run: mise run env:pack - - name: ๐ŸŽญ Install Playwright browsers - if: matrix.browser - run: mise run playwright:install - - name: ๐Ÿงฉ Test e2e run: mise run //examples/${{ matrix.example }}:test:e2e