diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9401414bf..8d5906f52 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -463,6 +463,17 @@ jobs: --paginate --jq '.[] | .filename, (.previous_filename // empty)' | node tools/coverage/unit-coverage-scope.mjs --base FETCH_HEAD --github-output + # 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 the Tier A suite, the only step here whose + # specs spawn Electron; install.js skips an existing binary. + - name: Install the Electron binary + if: steps.scope.outputs.run == 'true' + run: node node_modules/electron/install.js + # Jest's transform cache (TypeScript/Angular transpilation plus # coverage instrumentation, keyed by file content) is persisted # between runs. Only master pushes and maintainer dispatches save