diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 45289f7..5cf31ad 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -62,8 +62,28 @@ jobs: echo "::warning::bundle ${size} KB exceeds the 6000 KB warning threshold" fi + # `--with-deps` runs `apt-get update` across every repo the runner image has configured, + # including Google's Chrome repo — which we do not use, because Playwright downloads its own + # chromium build. On 2026-09-09 that repo published a bad index (`Hash Sum mismatch` on + # `dl.google.com/linux/chrome-stable/deb`) and took this job down four times in a row, on + # branches that had not touched a line of UI code. A red E2E badge on a public repo during + # judging is a claim about our tests, so it should not be able to mean "Google was mid-publish". + # The repo we do not need is dropped, and one retry covers an ordinary transient. - name: Install Playwright browsers - run: yarn playwright install --with-deps chromium + run: | + # The list file is not always named google-chrome.list (the image has used deb822 + # `.sources` too), so match on the host rather than guessing the filename. Only files + # under sources.list.d are removed; the main sources.list is edited line-wise, never + # deleted, because apt needs it. + for f in $(grep -rl 'dl\.google\.com' /etc/apt/sources.list.d 2>/dev/null || true); do + echo "removing unused apt source: $f" + sudo rm -f "$f" + done + sudo sed -i '/dl\.google\.com/d' /etc/apt/sources.list || true + yarn playwright install --with-deps chromium && exit 0 + echo "::warning::first browser install failed — retrying once" + sleep 30 + yarn playwright install --with-deps chromium - name: Run E2E tests run: yarn playwright test