diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45067daac..220944a65 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true +# Every job normally finishes in under two minutes. The timeout-minutes caps +# stop a hung job, such as a stalled download, from running until GitHub's +# six-hour default timeout. jobs: build: runs-on: ubuntu-latest @@ -62,13 +65,7 @@ jobs: test: runs-on: ubuntu-latest - # Every job normally finishes in under two minutes. The caps stop a hung job - # from running until GitHub's six-hour default timeout, which has happened - # here when the Ubuntu package mirror that `playwright install --with-deps` - # downloads from stalled. This job's cap is higher than the others because - # a slow-but-working mirror can take around 10 minutes, and that should - # still pass rather than fail. - timeout-minutes: 15 + timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v7.0.1 @@ -82,10 +79,14 @@ jobs: # Chromium is not in the npm install: Playwright downloads browsers # separately. We deliberately do NOT cache them, per Playwright's own CI # guidance (https://playwright.dev/docs/ci) — restoring the cache costs - # about as much as downloading, and the system libraries Chromium needs - # are not cacheable, so `--with-deps` still spends 12-18s on a cache hit. + # about as much as downloading. + # + # We skip `--with-deps`. The ubuntu-latest image ships Google Chrome, so + # the system libraries Chromium needs are already installed. The flag + # would add ~25 MB of fonts from Ubuntu's package mirror, which sometimes + # slows to a crawl and has stretched this step from seconds to 10+ minutes. - name: Install Playwright Chromium - run: npx playwright install --with-deps chromium + run: npx playwright install chromium - name: Run Preprocess run: npm run preprocess - name: Run Build (necessary for including css file in tests)