From 537896f1bca49c1029e15909f776e0f106e45fb9 Mon Sep 17 00:00:00 2001 From: Jinjing <6427696+AmethystLiang@users.noreply.github.com> Date: Thu, 13 Aug 2026 02:45:31 -0700 Subject: [PATCH] fix(ci): skip missing golden scripts on older release tags (#14267) Cut Release is dispatched from main but checks out the tagged tree. Cherry-pick tags such as v1.4.182-rc.1 do not define test:e2e:windows-fresh-startup-golden, so the Windows golden job failed with ERR_PNPM_NO_SCRIPT. Run tag-optional goldens with --if-present. (cherry picked from commit dd63d35d0946c152e4a017d2cf299466ccc7bde2) --- .github/workflows/golden-e2e-experiment.yml | 14 ++++++- .github/workflows/release-cut.yml | 16 +++++++- ...package-electron-runtime-contract.test.mjs | 40 +++++++++++++++++++ 3 files changed, 66 insertions(+), 4 deletions(-) diff --git a/.github/workflows/golden-e2e-experiment.yml b/.github/workflows/golden-e2e-experiment.yml index fcbad281575..f09281e1435 100644 --- a/.github/workflows/golden-e2e-experiment.yml +++ b/.github/workflows/golden-e2e-experiment.yml @@ -62,19 +62,29 @@ 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' + shell: pwsh + run: | + $env:SKIP_BUILD = '1' + $env:ORCA_E2E_FORWARD_APP_LOGS = '1' + 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 3dd4834fd1a..646dc708e01 100644 --- a/.github/workflows/release-cut.yml +++ b/.github/workflows/release-cut.yml @@ -869,17 +869,29 @@ jobs: - name: Build Electron app for terminal rendering 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' + shell: pwsh + run: | + $env:SKIP_BUILD = '1' + $env:ORCA_E2E_FORWARD_APP_LOGS = '1' + 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 a0e747b3cec..5dfb9eb8558 100644 --- a/config/scripts/package-electron-runtime-contract.test.mjs +++ b/config/scripts/package-electron-runtime-contract.test.mjs @@ -545,6 +545,24 @@ describe('Electron runtime package contract', () => { for (const runStep of goldenRunSteps) { expect(runStep?.run).toContain('pnpm run test:e2e:terminal-rendering-golden') } + const linuxGoldenRunStep = steps.find((step) => step.name === 'Run golden E2E tests on Linux') + const macGoldenRunStep = steps.find((step) => step.name === 'Run golden E2E tests on macOS') + const windowsGoldenRunStep = steps.find( + (step) => step.name === 'Run golden E2E tests on Windows' + ) + expect(linuxGoldenRunStep?.run).toContain( + 'pnpm run --if-present test:e2e:posix-profile-index-golden' + ) + expect(macGoldenRunStep?.run).toContain( + 'pnpm run --if-present test:e2e:posix-profile-index-golden' + ) + expect(windowsGoldenRunStep).toMatchObject({ + if: "runner.os == 'Windows'", + shell: 'pwsh' + }) + expect(windowsGoldenRunStep.run).toContain( + 'pnpm run --if-present test:e2e:windows-fresh-startup-golden' + ) expect(goldenWorkflow.on.pull_request).toBeUndefined() expect(goldenWorkflow.on.workflow_dispatch).toBeDefined() expect(releaseBuildNeeds).not.toContain('terminal-rendering-golden') @@ -559,6 +577,28 @@ describe('Electron runtime package contract', () => { expect(releaseGoldenJob.steps.map((step) => step.run ?? '')).toContain( 'xvfb-run --auto-servernum env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1 pnpm run test:e2e:terminal-rendering-golden' ) + const releaseLinuxRunStep = releaseGoldenJob.steps.find( + (step) => step.name === 'Run terminal rendering golden on Linux' + ) + const releaseMacRunStep = releaseGoldenJob.steps.find( + (step) => step.name === 'Run terminal rendering golden on macOS' + ) + expect(releaseLinuxRunStep.run).toContain( + 'pnpm run --if-present 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' + ) + expect(releaseWindowsRunStep).toMatchObject({ + if: "runner.os == 'Windows'", + shell: 'pwsh' + }) + 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()