fix: download pinned laufey archives directly for CI prewarm - #1
Merged
Conversation
The existing tests assert the Linux app-dir layout (./<app>/<app>), which macOS doesn't produce — macOS packages a .app bundle instead, and its packaging path doesn't consume --backend-args at all (backend args only reach the HMR launch path and the Linux/Windows/self-extracting launchers). - Gate launcher + malformed-args compile tests to "linux" - Cover malformed-args on macOS via the --hmr path, which does parse them - Add macOS tests asserting the .app bundle is packaged successfully (CLI flag and deno.json config variants)
packages_macos_app_bundle_config compiles ./hello2, so its Bundle line says hello2.app — it can't share desktop_mac.out (hello.app).
laufey v0.6.1 does not publish a cef build for aarch64-pc-windows-msvc, so the "Pre-download native laufey" CI step always fails on the windows aarch64 legs. Default to the webview backend on Windows (both x86_64 and aarch64 pins exist for it).
laufey v0.6.1 has no cef build for aarch64-pc-windows-msvc, so the Windows variants exercise the webview backend (which is published and pinned for both Windows targets). Covers flag forwarding, quoted spaces, escaped quotes, malformed args, and config-file backendArgs.
The laufey webview backend (all Windows tests use it — v0.6.1 has no cef aarch64-pc-windows-msvc build) parses only --runtime from argv and silently drops everything else; unlike cef, which feeds the process argv into CefMainArgs so extra switches (e.g. --user-agent) reach Chromium. Launching the packaged app on Windows therefore never makes the user-agent request the fixture's main.ts waits for, and the test hangs forever. Drop the exe-launch steps on Windows; packaging alone still exercises --backend-args parsing, quoting, and baking into the launcher. The *_windows.out launch fixtures are unused after this — remove them separately (no API delete available here).
The windows (webview) packaging path reports the quoting error too late and with different surrounding output than the non-hmr variants, so the output pattern never matched. Mirror the mac variant: --hmr surfaces the quoting error at dev-server startup, before any backend download.
Steps that launch a packaged desktop app only exit when the GUI backend makes its HTTP request to the test server. When the backend can't start on a CI runner (no usable display/sandbox), the process hangs until the whole job is cancelled. Set a 60s timeout on every step so the harness kills the process and fails the test with output instead of stalling.
Co-authored-by: iownbey <54186227+iownbey@users.noreply.github.com>
Co-authored-by: iownbey <54186227+iownbey@users.noreply.github.com>
Co-authored-by: iownbey <54186227+iownbey@users.noreply.github.com>
Co-authored-by: iownbey <54186227+iownbey@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix pre-download native laufey step for Linux
fix: download pinned laufey archives directly for CI prewarm
Aug 9, 2026
iownbey
marked this pull request as ready for review
August 9, 2026 19:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The laufey prewarm step was invoking
deno desktopwith the freshly built PR binary, which forced desktop runtime resolution throughlibdenortand fell back to a canary download keyed by the PR merge SHA. On Linux, that path always 404s because PR SHAs do not have canary desktop artifacts.What changed
tools/download_laufey.tsto fetch the pinned laufey backend archive directly from the laufey GitHub release instead of compiling a dummy desktop app.deno run -A tools/download_laufey.ts [backend] [cache_dir]cef(webviewon Windows)Version / target / artifact resolution
cli/laufey_sums.lock(# version: vX.Y.Z).Deno.build.raw -> winitarchive mapping and Windows.ziphandling.Integrity and cache layout
cli/laufey_sums.lockand verifies the downloaded bytes before extraction.LaufeyBackendResolveralready expects, including the.downloadedmarker:Focused coverage
cli/laufey_sums.lockExample