LibreChat/.github/workflows
Danny Avila 061e4b02a3
🎞️ ci: Fix Playwright ffmpeg Install Hang and Cache the Download (#15065)
Every Playwright job spent a flat 90s on `npx playwright install ffmpeg`,
and none of them ended up with a usable ffmpeg.

The 2.3MB download finishes in under a second; extraction then hangs until
`timeout -k 10 90` reaps it (exit 124, masked by `continue-on-error`). That
is a Node 24.16.0 readable-stream change (nodejs/node#62557) colliding with
yauzl/fd-slicer never firing `close` after EOF, which hangs extract-zip.
It leaves a truncated `ffmpeg-linux` — 5,055,201 bytes against the zip's
declared 5,101,056, segfaulting on exec — and no INSTALLATION_COMPLETE
marker, so Playwright treated ffmpeg as uninstalled. `video: 'on-first-retry'`
has therefore never worked in CI, and every first retry of a flaky test died
in browserContext.newPage: exactly the failure the step existed to prevent.

Upstream fixed it in Playwright 1.60.0 (microsoft/playwright#40747) and Node
reverted it in 24.18.0 (nodejs/node#63834). Node 24.16.0 is pinned in 17
places including the Dockerfiles, so bump Playwright instead — it is a dev
dependency, and `^1.56.1` already permitted 1.62.1; only the lockfile pinned
it. Staying at or above 1.62.1 also avoids the tsconfig-resolution
regressions in 1.62.0.

Caching alone could not have fixed this: a cold cache still hangs, and what
would have been cached is the corrupt binary. So the ffmpeg download is now
restored from cache keyed on the resolved playwright-core version, the
install is skipped outright on a hit, and the cache is only saved once the
binary is verified to actually execute — a partial extraction can never be
promoted into a cache that every later job restores.

Per job: 90s to ~0s on a hit, ~2s on a miss.
2026-08-21 01:36:09 -04:00
..
a11y.yml 🚦 ci: Reduce GitHub Actions Runner Pressure (#14716) 2026-08-09 07:41:00 -04:00
agents-integration-tests.yml 🧩 ci: Close Workflow Path-Filter Gaps (#14728) 2026-08-10 17:26:50 -04:00
backend-review.yml 🧩 ci: Close Workflow Path-Filter Gaps (#14728) 2026-08-10 17:26:50 -04:00
build.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
cache-integration-tests.yml refactor: Presets, Skills Motion and Model Selector Polish (#14953) 2026-08-19 15:49:47 -04:00
client.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
codegraph-e2e-votes.yml 🎞️ ci: Fix Playwright ffmpeg Install Hang and Cache the Download (#15065) 2026-08-21 01:36:09 -04:00
codegraph-select.yml 🩹 ci: Codegraph Probe Summary Rendering (#14942) 2026-08-17 13:39:48 -04:00
data-provider.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
data-schemas.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
deploy.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
dev-branch-images.yml 🧩 ci: Close Workflow Path-Filter Gaps (#14728) 2026-08-10 17:26:50 -04:00
dev-images.yml 🧩 ci: Close Workflow Path-Filter Gaps (#14728) 2026-08-10 17:26:50 -04:00
dev-staging-images.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
docker-smoke.yml 🧩 ci: Close Workflow Path-Filter Gaps (#14728) 2026-08-10 17:26:50 -04:00
frontend-review.yml 🧩 ci: Close Workflow Path-Filter Gaps (#14728) 2026-08-10 17:26:50 -04:00
frontend-windows-nightly.yml 🧩 ci: Close Workflow Path-Filter Gaps (#14728) 2026-08-10 17:26:50 -04:00
helmcharts.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
langfuse-fanout.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
locize-i18n-sync.yml 📚 fix: Keep English Source Repository-Owned (#14920) 2026-08-17 02:29:34 -04:00
main-image-workflow.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00
playwright-bombadil.yml 👷 ci: Stop Optional Playwright Fonts From Failing E2E (#14852) 2026-08-14 20:35:37 -04:00
playwright-mock.yml 🎞️ ci: Fix Playwright ffmpeg Install Hang and Cache the Download (#15065) 2026-08-21 01:36:09 -04:00
retry-docker-builds.yml 🧱 ci: Retry Failed Docker Builds (#13935) 2026-06-24 10:09:36 -04:00
static-checks.yml 🛻 ci: Move the ESLint Config Sweep Into Its Own Job (#14742) 2026-08-11 08:26:42 -04:00
sync-helm-chart-tags.yml 🧾 ci: Skip Workflows for Markdown-Only Changes (#14378) 2026-07-21 20:35:59 -04:00
tag-images.yml ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689) 2026-08-07 11:25:29 -04:00