Skip to content

ci: timeout-minutes is 20 for a job that now takes 35 seconds, so the ceiling no longer guards anything #79

Description

@ivndev001

What is wrong

.github/workflows/ci.yml declares timeout-minutes: 20 for a job that now finishes in about 35
seconds
. A ceiling 30-odd times the real runtime is not a guard — it will not catch a regression
that takes the job from 35 seconds to five minutes, which is exactly the kind of regression this
repo has already had twice.

Why it is 20, and why that reason is gone

I raised it myself in #77, and the justification was accurate at the time: the job was being killed
at the old timeout-minutes: 10 while bunx playwright install-deps chromium crawled through an
apt fetch (measured: 150 kB/s, one attempt failing outright with exit 100, one run cancelled at
10m17s). 20 was chosen to fit a full failed-then-retried apt cycle.

That cause no longer exists. The same PR removed the apt path entirely — the install now pulls the
browser from Playwright's CDN over HTTPS using the repo-pinned playwright-core CLI. Post-merge
timings on run 34584382386:

install chromium          7s
verify chromium launches  <1s
test                      13s
build                     1s
whole job                 ~35s

So the ceiling is now sized for a code path that was deleted.

What to do

Bring timeout-minutes down to something that still tolerates a cold CDN fetch and a slow 2-vCPU
runner, but would actually fire on a real regression. Pick the number from measurement, not from
comfort, and say in the PR body what you measured and what headroom you left.

Two things to keep in mind rather than optimise away:

  • The install step retries up to 3 times with 20s/40s backoff and a 300s per-attempt timeout, so
    the worst legitimate case is meaningfully longer than the happy path. The ceiling must fit that
    worst case or a transient CDN hiccup becomes a red build.
  • A cold cache is slower than a warm one. The happy-path 35s is with the Playwright cache hitting.

Acceptance criteria

  • timeout-minutes is reduced, and the PR body states the measured job duration and the headroom
    the new value leaves over the worst legitimate case (3 retries at the 300s per-attempt cap)
  • CI is green on the PR itself — a ceiling that fails its own build is self-refuting
  • the retry/backoff and the per-attempt timeout in install chromium are left alone; this
    issue is about the ceiling only
  • no test is skipped, weakened or removed to fit inside the new ceiling

Notes

Small and low-risk, but it restores a guard that currently detects nothing. Found while repairing
this repo's CI in #77.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions