diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 2ab1ed44421..b0db6ba65cc 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -64,11 +64,14 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - # Why: building once avoids five parallel electron-vite builds inside - # Playwright globalSetup, which otherwise contends for CPU/RAM on OSS - # runners before the sharded tests even start. + # Why: building here avoids parallel builds inside Playwright globalSetup; + # paired-browser specs also need the standalone web bundle. - name: Build Electron app for E2E - run: npx electron-vite build --mode e2e + env: + VITE_EXPOSE_STORE: 'true' + run: | + npx electron-vite build --mode e2e + pnpm run build:web - name: Upload E2E build output uses: actions/upload-artifact@v7 diff --git a/config/scripts/release-e2e-dispatch-contract.test.mjs b/config/scripts/release-e2e-dispatch-contract.test.mjs index b3a88d08bce..b5b0c4ddfdc 100644 --- a/config/scripts/release-e2e-dispatch-contract.test.mjs +++ b/config/scripts/release-e2e-dispatch-contract.test.mjs @@ -34,4 +34,14 @@ describe('release E2E dispatch contract', () => { expect(refInput.type).toBe('string') expect(refInput.required).toBe(false) }) + + it('includes the paired-runtime web client in the shared E2E build artifact', () => { + const buildStep = e2eWorkflow.jobs.build.steps.find( + (step) => step.name === 'Build Electron app for E2E' + ) + + expect(buildStep.run).toContain('electron-vite build --mode e2e') + expect(buildStep.env.VITE_EXPOSE_STORE).toBe('true') + expect(buildStep.run).toContain('pnpm run build:web') + }) })