diff --git a/.github/workflows/coil-ci.yml b/.github/workflows/coil-ci.yml index a32aa7703a0ad..88f3d16a5dc4a 100644 --- a/.github/workflows/coil-ci.yml +++ b/.github/workflows/coil-ci.yml @@ -93,6 +93,12 @@ jobs: - name: Install browser secret helper build libraries run: sudo apt-get update && sudo apt-get install -y libsecret-1-dev pkg-config + # Electron downloads its binary on first import. Without this, two desktop test files can + # start that download together and collide ("File exists"), failing whichever loses. + # Upstream's ci.yml runs the same step before its tests. + - name: Ensure Electron runtime is installed + run: vp run --filter @t3tools/desktop ensure:electron + # `@t3tools/monorepo` is the root package; its `test` script is `vp run -r test`. - name: Test run: vp run --filter '!t3' --filter '!@t3tools/monorepo' --filter '!@t3tools/web' test --testTimeout=120000 --hookTimeout=120000 diff --git a/scripts/coil/sync-upstream.sh b/scripts/coil/sync-upstream.sh index 1a7243f1340f3..a8e4571c73f78 100755 --- a/scripts/coil/sync-upstream.sh +++ b/scripts/coil/sync-upstream.sh @@ -217,11 +217,14 @@ fi # for an upstream CPU-bound test here. 120s is the highest any package configures # (apps/server), so it never LOWERS a package's own budget. --hookTimeout is NOT implied by # --testTimeout: a beforeAll/beforeEach carries its own budget. +# ensure:electron runs first so parallel desktop test files do not race Electron's first-import +# download. # Keep in sync with `.github/workflows/coil-ci.yml`. TEST_FLAGS="--testTimeout=120000 --hookTimeout=120000" for script in $VERIFY; do if [[ "$script" == "test" ]]; then commands=( + "$RUN --filter @t3tools/desktop ensure:electron" "$RUN --filter !@t3tools/monorepo --filter !@t3tools/web test $TEST_FLAGS" "$RUN --filter @t3tools/web test $TEST_FLAGS" )