From eb67b3c277ba48a399004bb9e4a3829c737e8b77 Mon Sep 17 00:00:00 2001 From: 4gray Date: Mon, 28 Sep 2026 23:31:08 +0200 Subject: [PATCH] ci(test): install the Electron binary before the unit tests pnpm runs build scripts only for allow-listed packages, so electron's postinstall never downloads its binary in CI. require('electron') then fetches it lazily, and parallel Jest workers that spawn Electron (epg-source-metadata, playlist.operations) race on that download: one executes the half-written file and fails with ETXTBSY. Fetch the binary once after pnpm install; install.js skips an existing binary. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9401414bf..6ede40eab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -407,6 +407,16 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + # pnpm only runs build scripts for allow-listed packages + # (pnpm-workspace.yaml), so electron's postinstall never fetches + # its binary. `require('electron')` then downloads it lazily, and + # parallel Jest workers that spawn Electron race on the same + # download: one executes the half-written binary (ETXTBSY). + # Fetch it once before any test runs; install.js skips an + # existing binary. + - name: Install the Electron binary + run: node node_modules/electron/install.js + - name: Validate agent guidance run: pnpm run agents:validate