From bce6225cf6a9b34d6bcd317cc9fbd7706bb406f5 Mon Sep 17 00:00:00 2001 From: im10furry Date: Fri, 11 Sep 2026 04:19:19 -0400 Subject: [PATCH 1/2] ci: stop the e2e job from hanging for 6 hours test-e2e has been sitting in `playwright install --with-deps` until GitHub's 6-hour job limit on every run since 2026-08-24, on main and on every branch. The job never reaches the tests, so it has been useless while also tying up a runner for 6 hours at a time. Run the job in the official Playwright container, which already ships Chromium, Firefox, WebKit and every system dependency they need, so there is nothing left to install. Turborepo's strict env mode was dropping PLAYWRIGHT_BROWSERS_PATH, which meant the task could not find the image's browsers even though they were present; pass it through explicitly. Add timeout-minutes so that any future hang fails in 15 minutes with logs instead of occupying a runner for 6 hours, and pin this job to Node 22 -- `latest` is non-deterministic and this is the job that has been hitting stream leaks on newer Node. --- .github/workflows/ci.yml | 16 ++++++++++++++-- turbo.json | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 014c1f885..f74d66d34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,15 +39,27 @@ jobs: - run: pnpm test test-e2e: runs-on: ubuntu-latest + # Use the official Playwright image, which ships Chromium, Firefox, WebKit and + # every system dependency they need. That removes the + # `playwright install --with-deps` step, which has been hanging until + # GitHub's 6-hour job limit on every run since 2026-08-24. + # + # Keep the tag in sync with the `@playwright/test` version in + # packages/openapi-fetch (currently 1.59.1). + container: + image: mcr.microsoft.com/playwright:v1.59.1-noble + # recommended by Playwright when running Chromium in a container + options: --ipc=host + # fail fast instead of occupying a runner for 6 hours if anything hangs + timeout-minutes: 15 steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: - node-version: latest + node-version: 22 - uses: pnpm/action-setup@v5 with: run_install: true - - run: pnpm exec playwright install --with-deps - run: pnpm run test-e2e test-macos: runs-on: macos-latest diff --git a/turbo.json b/turbo.json index 86c9a3ad7..415ba4ce1 100644 --- a/turbo.json +++ b/turbo.json @@ -1,5 +1,6 @@ { "$schema": "https://turbo.build/schema.json", + "globalPassThroughEnv": ["PLAYWRIGHT_BROWSERS_PATH"], "tasks": { "build": { "dependsOn": ["^build"] From 324b102c49ea89133b0071bc296b9a98a9700ef7 Mon Sep 17 00:00:00 2001 From: im10furry Date: Fri, 11 Sep 2026 04:23:58 -0400 Subject: [PATCH 2/2] ci: set HOME=/root so Firefox can launch in the container With the Playwright container the job runs as root, but GitHub sets HOME=/github/home, which is owned by pwuser. Firefox refuses to start in that situation ("Running Nightly as root in a regular user's session is not supported"), so the firefox project failed while chrome and webkit passed. Reproduced locally: with HOME pointing at a pwuser-owned directory chromium and webkit launch and firefox fails with the same message; with HOME=/root all three launch. --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f74d66d34..c23f79d81 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,6 +61,11 @@ jobs: with: run_install: true - run: pnpm run test-e2e + env: + # Firefox refuses to start as root unless $HOME is owned by root, and + # GitHub sets HOME=/github/home, which is owned by pwuser. Chromium and + # WebKit start fine, so without this only the firefox project fails. + HOME: /root test-macos: runs-on: macos-latest steps: