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:
- Adding explicit
timeout-minutes to every CI job (10-15 min depending on the job)
- 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)
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-testtriggering a Playwright browser download at test runtime. Bothsynapse-sdkandsynapse-coreuseplaywright-testwith--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:
timeout-minutesto every CI job (10-15 min depending on the job)PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1on install steps where the browser isn't usedProposed fix
Apply the same approach to
.github/workflows/ci.yml:timeout-minutesto 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.PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1on theInstall Dependenciesstep (or as a job-level env) for all test jobs, since both packages runplaywright-testin--mode nodeand don't need a browser binary.Playwright for Windowsstep (pnpx playwright install winldd) is still needed given--mode node.Affected PRs