diff --git a/.github/workflows/golden-e2e-experiment.yml b/.github/workflows/golden-e2e-experiment.yml index 5a2562bf2ba..7bc5e2ae2c3 100644 --- a/.github/workflows/golden-e2e-experiment.yml +++ b/.github/workflows/golden-e2e-experiment.yml @@ -61,19 +61,21 @@ jobs: - name: Build Electron app for E2E run: npx electron-vite build --mode e2e + # Why: this workflow can check out an older ref than the YAML that + # invoked it. Skip goldens the checked-out tree does not define. - name: Run golden E2E tests on Linux if: runner.os == 'Linux' run: | xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e -- tests/e2e/golden-core-flows.spec.ts xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:terminal-rendering-golden - xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:posix-profile-index-golden + xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run --if-present test:e2e:posix-profile-index-golden - name: Run golden E2E tests on macOS if: runner.os == 'macOS' run: | env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e -- tests/e2e/golden-core-flows.spec.ts env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:terminal-rendering-golden - env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:posix-profile-index-golden + env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run --if-present test:e2e:posix-profile-index-golden - name: Run golden E2E tests on Windows if: runner.os == 'Windows' @@ -81,7 +83,7 @@ jobs: run: | $env:SKIP_BUILD = '1' $env:ORCA_E2E_FORWARD_APP_LOGS = '1' - pnpm run test:e2e:windows-fresh-startup-golden + pnpm run --if-present test:e2e:windows-fresh-startup-golden - name: Upload Playwright traces if: failure() diff --git a/.github/workflows/release-cut.yml b/.github/workflows/release-cut.yml index 370fbcc0a32..8e0a6c97812 100644 --- a/.github/workflows/release-cut.yml +++ b/.github/workflows/release-cut.yml @@ -869,17 +869,21 @@ jobs: - name: Build Electron app for platform golden run: npx electron-vite build --mode e2e + # Why: this job is defined on the dispatch ref (usually main) but checks + # out the release tag. Cherry-pick / hotfix tags can predate a golden + # script that main already calls; --if-present keeps those cuts green + # instead of failing with ERR_PNPM_NO_SCRIPT. - name: Run terminal rendering golden on Linux if: runner.os == 'Linux' run: | xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:terminal-rendering-golden - xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:posix-profile-index-golden + xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run --if-present test:e2e:posix-profile-index-golden - name: Run terminal rendering golden on macOS if: runner.os == 'macOS' run: | env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:terminal-rendering-golden - env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:posix-profile-index-golden + env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run --if-present test:e2e:posix-profile-index-golden - name: Run fresh-startup golden on Windows if: runner.os == 'Windows' @@ -887,7 +891,7 @@ jobs: run: | $env:SKIP_BUILD = '1' $env:ORCA_E2E_FORWARD_APP_LOGS = '1' - pnpm run test:e2e:windows-fresh-startup-golden + pnpm run --if-present test:e2e:windows-fresh-startup-golden - name: Upload Playwright traces if: failure() diff --git a/config/scripts/package-electron-runtime-contract.test.mjs b/config/scripts/package-electron-runtime-contract.test.mjs index c6e96c88b2c..bd58cd2f13d 100644 --- a/config/scripts/package-electron-runtime-contract.test.mjs +++ b/config/scripts/package-electron-runtime-contract.test.mjs @@ -568,16 +568,18 @@ describe('Electron runtime package contract', () => { 'pnpm run test:e2e:terminal-rendering-golden' ) expect(goldenRunSteps.get('linux')?.run).toContain( - 'pnpm run test:e2e:posix-profile-index-golden' + 'pnpm run --if-present test:e2e:posix-profile-index-golden' ) expect(goldenRunSteps.get('mac')?.run).toContain('pnpm run test:e2e:terminal-rendering-golden') - expect(goldenRunSteps.get('mac')?.run).toContain('pnpm run test:e2e:posix-profile-index-golden') + expect(goldenRunSteps.get('mac')?.run).toContain( + 'pnpm run --if-present test:e2e:posix-profile-index-golden' + ) expect(goldenRunSteps.get('windows')).toMatchObject({ if: "runner.os == 'Windows'", shell: 'pwsh' }) expect(goldenRunSteps.get('windows').run).toContain( - 'pnpm run test:e2e:windows-fresh-startup-golden' + 'pnpm run --if-present test:e2e:windows-fresh-startup-golden' ) expect(goldenWorkflow.on.pull_request).toBeUndefined() expect(goldenWorkflow.on.workflow_dispatch).toBeDefined() @@ -592,12 +594,16 @@ describe('Electron runtime package contract', () => { (step) => step.name === 'Run terminal rendering golden on Linux' ) expect(releaseLinuxRunStep.run).toContain('pnpm run test:e2e:terminal-rendering-golden') - expect(releaseLinuxRunStep.run).toContain('pnpm run test:e2e:posix-profile-index-golden') + expect(releaseLinuxRunStep.run).toContain( + 'pnpm run --if-present test:e2e:posix-profile-index-golden' + ) const releaseMacRunStep = releaseGoldenJob.steps.find( (step) => step.name === 'Run terminal rendering golden on macOS' ) expect(releaseMacRunStep.run).toContain('pnpm run test:e2e:terminal-rendering-golden') - expect(releaseMacRunStep.run).toContain('pnpm run test:e2e:posix-profile-index-golden') + expect(releaseMacRunStep.run).toContain( + 'pnpm run --if-present test:e2e:posix-profile-index-golden' + ) const releaseWindowsRunStep = releaseGoldenJob.steps.find( (step) => step.name === 'Run fresh-startup golden on Windows' ) @@ -605,7 +611,9 @@ describe('Electron runtime package contract', () => { if: "runner.os == 'Windows'", shell: 'pwsh' }) - expect(releaseWindowsRunStep.run).toContain('pnpm run test:e2e:windows-fresh-startup-golden') + expect(releaseWindowsRunStep.run).toContain( + 'pnpm run --if-present test:e2e:windows-fresh-startup-golden' + ) expect(releaseEvidenceJob['continue-on-error']).toBe(true) expect( releaseEvidenceJob.strategy.matrix.include.map(({ platform }) => platform).sort()