Skip to content

ci: add job timeouts and skip unused Playwright browser download #808

@BigLep

Description

@BigLep

Problem

CI test jobs are stalling and hitting GitHub Actions' default 6-hour timeout, blocking PRs from merging. All 7 test jobs on #806 were cancelled after exactly 6h each (run 26641934741), with the Run synapse-* test steps the ones that timed out. Install steps completed successfully in every job.

The likely culprit is playwright-test triggering a Playwright browser download at test runtime. Both synapse-sdk and synapse-core use playwright-test with --mode node, which doesn't need a browser, but Playwright's postinstall/runtime hooks may still attempt to fetch one (~167 MB), and if that download stalls the job hangs indefinitely.

See Slack thread for discussion.

Prior art

filecoin-project/filecoin-pin#511 fixed the same class of problem in that repo by:

  1. Adding explicit timeout-minutes to every CI job (10-15 min depending on the job)
  2. Setting PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 on install steps where the browser isn't used

Proposed fix

Apply the same approach to .github/workflows/ci.yml:

  • Add timeout-minutes to all jobs (lint, test-synapse-sdk, test-synapse-core). Observed lint time is ~5 min; test times should be similar. Reasonable caps: lint 10 min, test jobs 15 min.
  • Set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 on the Install Dependencies step (or as a job-level env) for all test jobs, since both packages run playwright-test in --mode node and don't need a browser binary.
  • Consider whether the existing Playwright for Windows step (pnpx playwright install winldd) is still needed given --mode node.

Affected PRs

  • #806 — blocked by this CI failure (the PR itself is approved)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status
🎉 Done

Relationships

None yet

Development

No branches or pull requests

Issue actions