From 49a5c440c520ea5f2ef127e2f90927bb80d77336 Mon Sep 17 00:00:00 2001 From: yoniebans Date: Thu, 3 Sep 2026 10:15:53 +0200 Subject: [PATCH] =?UTF-8?q?fix(install-e2e):=20review=20follow-ups=20?= =?UTF-8?q?=E2=80=94=20harness=20needle,=20per-matrix=20cap=20wording,=20t?= =?UTF-8?q?ypo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The harness asserted the driver still throws 'not implemented yet' for the desktop-installer@latest update route; that arm is implemented now (Invoke-PhaseInstallGui -Mode "update"), so the check failed against its own tree. It asserts the implemented contract instead. The 256-job cap wording in the workflow comment and README now states the scope GitHub applies it at: each per-OS matrix separately, not the combined leg count. At the 10-tag bound the largest matrix is windows at 180. e2e-screen-record comment: hhttps -> https. --- .github/actions/e2e-screen-record/action.yml | 2 +- .github/workflows/install-e2e.yml | 7 ++++--- scripts/windows_e2e_harness.ps1 | 4 ++-- tests/install/README.md | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/actions/e2e-screen-record/action.yml b/.github/actions/e2e-screen-record/action.yml index 2e94721753..cf4eba87e7 100644 --- a/.github/actions/e2e-screen-record/action.yml +++ b/.github/actions/e2e-screen-record/action.yml @@ -59,7 +59,7 @@ runs: command -v ffmpeg >/dev/null 2>&1 || brew install --quiet ffmpeg # until new runner image is published by github, we have to hack on screen record approvals - # see hhttps://github.com/actions/runner-images/issues/14474 - as of this hermes agent commit, + # see https://github.com/actions/runner-images/issues/14474 - as of this hermes agent commit, # it's merged but the image isn't updated. approvalsPlist="$HOME/Library/Group Containers/group.com.apple.replayd/ScreenCaptureApprovals.plist" mkdir -p "$(dirname "$approvalsPlist")" diff --git a/.github/workflows/install-e2e.yml b/.github/workflows/install-e2e.yml index 53f1997b3c..26154a4bef 100644 --- a/.github/workflows/install-e2e.yml +++ b/.github/workflows/install-e2e.yml @@ -97,9 +97,10 @@ jobs: - id: pick env: # Dispatch inputs never touch shell syntax directly: TAG_COUNT - # arrives via the environment, is validated decimal-only (bash - # arithmetic reads a leading zero as octal), and is capped below - # the 256-job matrix limit (15 tags = 270 windows entries). + # arrives via the environment and is validated decimal-only (bash + # arithmetic reads a leading zero as octal). GitHub's 256-job cap + # applies to each per-OS matrix separately; at 10 tags the largest + # is windows at 180 (first over the cap at 15 tags = 270). TAG_COUNT: ${{ inputs.tag-count || 2 }} run: | set -euo pipefail diff --git a/scripts/windows_e2e_harness.ps1 b/scripts/windows_e2e_harness.ps1 index 4ad2d0e2ec..b3e229dfd9 100644 --- a/scripts/windows_e2e_harness.ps1 +++ b/scripts/windows_e2e_harness.ps1 @@ -32,7 +32,7 @@ Write-Host "parameter surface: OK" # 3. Dispatch bodies reference the right arms (AST-level: the switch on # InstallMethod contains the three arms; the switch on Route contains all -# six, with desktop-installer@latest throwing). +# six, with desktop-installer@latest re-running the GUI installer). $text = Get-Content -LiteralPath $driver -Raw foreach ($needle in @( 'function Invoke-PhaseInstall', @@ -40,7 +40,7 @@ foreach ($needle in @( 'Invoke-RefInstaller $state.old "old" -IncludeDesktop', 'Invoke-HermesDesktopAppUpdate $state.current', 'Invoke-HermesUpdate', - "update method 'desktop-installer@latest' is not implemented yet" + 'Invoke-PhaseInstallGui -Mode "update"' )) { if ($text.IndexOf($needle) -lt 0) { Write-Host "dispatch missing: $needle"; exit 1 } } diff --git a/tests/install/README.md b/tests/install/README.md index b8402f8e85..fe84c68018 100644 --- a/tests/install/README.md +++ b/tests/install/README.md @@ -77,7 +77,7 @@ The matrix does not run on pull requests. One leg installs real toolchains and t gh workflow run install-e2e.yml --ref -f route=both -f tag-count=2 ``` -Cost per run, so nobody is surprised: 41 legs per sampled tag (windows 18, macos 15, linux 8), so the default 2 tags is up to 82 legs. A typical green leg finishes in 7-15 minutes; every leg is capped at 60. Route slices for cheaper reads: `update` (linux only, 8/tag), `windows-desktop` (18/tag), `macos-desktop` (15/tag). `tag-count` is validated to 1-10; at 15 tags the windows expansion alone (270) would exceed GitHub's 256-job matrix limit. +Cost per run, so nobody is surprised: 41 legs per sampled tag (windows 18, macos 15, linux 8), so the default 2 tags is up to 82 legs. A typical green leg finishes in 7-15 minutes; every leg is capped at 60. Route slices for cheaper reads: `update` (linux only, 8/tag), `windows-desktop` (18/tag), `macos-desktop` (15/tag). `tag-count` is validated to 1-10. GitHub's 256-job cap applies to each OS matrix separately, not to the combined leg count; at 10 tags the matrices hold 180 windows, 150 macos, and 80 linux entries. Windows would first exceed the cap at 15 tags (270). Running the drivers locally: don't, except in a disposable VM. The windows driver kills every process named Hermes during teardown and the macos driver operates on `/Applications/Hermes.app`; on a machine with a real Hermes install they will interfere with it.