From 2f25c07a2cfee4a0dd8cc2a0ef9a0622a31a072a Mon Sep 17 00:00:00 2001 From: yoniebans Date: Tue, 1 Sep 2026 17:34:13 +0200 Subject: [PATCH] perf(install-e2e): 60-minute job caps; 35-minute updater wait The slowest green leg ever recorded is 29 minutes; every cap hit in the suite's history was a hang, never work. Caps were linux 75 / macos 120 / windows 240, so a wedged leg burned up to 4 hours of runner time to report what its log showed in the first minutes. 60 minutes covers the slowest leg plus cold-cache variance, and every driver-internal bound (dmg install 45m, AHK 50m, updater wait) still fires before the job cap in any single-hang scenario, keeping failure diagnostics specific. The detached-updater wait drops 90m -> 35m on the same evidence: a working updater finishes far inside 35m; a wedged one never finishes at any bound, and the longer wait only delayed the report by an hour. --- .github/workflows/install-e2e-macos-run.yml | 2 +- .github/workflows/install-e2e-run.yml | 2 +- .github/workflows/install-e2e-windows-run.yml | 2 +- tests/install/windows-e2e.ps1 | 17 +++++++++-------- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/install-e2e-macos-run.yml b/.github/workflows/install-e2e-macos-run.yml index 1599e566c4..46245b73c5 100644 --- a/.github/workflows/install-e2e-macos-run.yml +++ b/.github/workflows/install-e2e-macos-run.yml @@ -51,7 +51,7 @@ on: description: 'Job timeout. App-update legs do a full Electron build.' required: false type: number - default: 120 + default: 60 permissions: contents: read diff --git a/.github/workflows/install-e2e-run.yml b/.github/workflows/install-e2e-run.yml index 42486bc26a..8a0f41ea70 100644 --- a/.github/workflows/install-e2e-run.yml +++ b/.github/workflows/install-e2e-run.yml @@ -68,7 +68,7 @@ on: description: 'Job timeout. A cold run installs real toolchains twice, and app-update legs add a full Electron build + launch.' required: false type: number - default: 75 + default: 60 permissions: contents: read diff --git a/.github/workflows/install-e2e-windows-run.yml b/.github/workflows/install-e2e-windows-run.yml index d4f0cf7aaa..b6bf850680 100644 --- a/.github/workflows/install-e2e-windows-run.yml +++ b/.github/workflows/install-e2e-windows-run.yml @@ -76,7 +76,7 @@ on: description: 'Job timeout. The install leg does real toolchain work and the update leg a full Electron rebuild.' required: false type: number - default: 240 + default: 60 permissions: contents: read diff --git a/tests/install/windows-e2e.ps1 b/tests/install/windows-e2e.ps1 index 23c864cd9f..2d845a3238 100644 --- a/tests/install/windows-e2e.ps1 +++ b/tests/install/windows-e2e.ps1 @@ -748,16 +748,17 @@ function Invoke-GuiUpdateDesktopRoute([string]$TargetSha) { # asserts below are the hard gate either way; the JSON is asserted # only when the script path produced it. # - # This can take a LONG time: the website release we installed is weeks - # of main behind HEAD, so the update pulls a large diff AND does a - # full Electron desktop rebuild (vite + electron-builder) plus a uv - # sync. The desktop-build output goes to logs/update.log (not the - # streamed handoff log), so we tail update.log here to show progress - # instead of going silent for tens of minutes. - Write-Host " waiting for the detached updater to finish (up to 90 min; large old->new rebuild) ..." + # The update pulls a large diff AND does a full Electron desktop + # rebuild (vite + electron-builder) plus a uv sync; a WORKING updater + # finishes well under 35 minutes on these runners (slowest observed + # leg anywhere in the matrix: 29m end to end). A wedged updater never + # finishes at any bound, so a longer wait only delays the report. + # The desktop-build output goes to logs/update.log (not the streamed + # handoff log), so we tail update.log here to show progress. + Write-Host " waiting for the detached updater to finish (up to 35 min) ..." $updateLog = Join-Path $HermesHome "logs\update.log" $updateLogPos = 0 - $deadline = (Get-Date).AddMinutes(90) + $deadline = (Get-Date).AddMinutes(35) while ((Get-Date) -lt $deadline) { if (Test-Path -LiteralPath $resultPath) { break } $head = ""