Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
5d86c58
feedback
iownbey Aug 6, 2026
e3d0923
Merge branch 'main' into laufey_fix
iownbey Aug 6, 2026
6c4a62a
submodule
iownbey Aug 6, 2026
6dbd1b5
update from merge
iownbey Aug 6, 2026
84e8414
remove duplicate config key
iownbey Aug 7, 2026
e42db0a
Merge branch 'main' into laufey_fix
iownbey Aug 7, 2026
229c49b
linting
iownbey Aug 7, 2026
7b75d21
fix test
iownbey Aug 7, 2026
30fa695
ci
iownbey Aug 7, 2026
fc1680a
Merge branch 'main' into laufey_fix
iownbey Aug 7, 2026
bd1949d
update ci
iownbey Aug 7, 2026
f307647
use virtual desktop
iownbey Aug 9, 2026
e5f9eef
use virtual desktop
iownbey Aug 9, 2026
7c3f1cd
lint
iownbey Aug 9, 2026
37cb8e0
Gate backend_args launcher tests to Linux, add macOS packaging tests
iownbey Aug 9, 2026
1d3eef9
Add expected output fixture for macOS backend_args packaging test
iownbey Aug 9, 2026
9d26e23
Add expected output fixture for macOS config-driven packaging test
iownbey Aug 9, 2026
8a71e7a
Point macOS config packaging test at its own fixture
iownbey Aug 9, 2026
48f858c
Default tools/download_laufey.ts to webview backend on Windows
iownbey Aug 9, 2026
f146ebd
Add Windows spec tests for desktop backend args (webview)
iownbey Aug 9, 2026
2d500eb
Windows desktop spec tests: assert packaging only, never launch
iownbey Aug 9, 2026
de93e5f
Remove unused windows launch fixtures
iownbey Aug 9, 2026
1748999
Fix malformed_backend_args windows step: fail fast with --hmr
iownbey Aug 9, 2026
4b5603c
submodule revert
iownbey Aug 9, 2026
1d5dbb0
test(desktop): add 60s per-step timeout to backend_args spec tests
iownbey Aug 9, 2026
a2c1759
Initial plan
Copilot Aug 9, 2026
2d04b4c
Merge remote-tracking branch 'origin/laufey_fix' into copilot/laufey-fix
Copilot Aug 9, 2026
729692a
fix(desktop): switch laufey predownload to direct archive fetch
Copilot Aug 9, 2026
d33dec2
fix(desktop): validate laufey archive downloader
Copilot Aug 9, 2026
ee5ad03
test(desktop): harden laufey downloader assertions
Copilot Aug 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 172 additions & 4 deletions .github/workflows/ci.generated.yml

Large diffs are not rendered by default.

42 changes: 40 additions & 2 deletions .github/workflows/ci.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1388,6 +1388,12 @@ const buildJobs = buildItems.map((rawBuildItem) => {
}),
});
const testCrateNameExpr = testMatrix.test_crate;
// Desktop spec tests (part of the "specs" crate) launch a real GUI
// backend, which needs a display. Linux CI runners have no display, so
// run the test binary under a virtual X display via xvfb-run.
const cargoTestCmdPrefix = rawBuildItem.os === "linux"
? "xvfb-run -a "
: "";
const {
restoreCacheStep,
saveCacheStep,
Expand Down Expand Up @@ -1484,6 +1490,36 @@ const buildJobs = buildItems.map((rawBuildItem) => {
'"$DENO_BIN" run -A ./tools/download_tsc.ts',
].join("\n"),
},
{
name: "Set up native laufey cache",
if: testCrateNameExpr.equals("specs"),
uses: "actions/cache@v5",
with: {
// Keyed on laufey_sums.lock so a pinned-version bump re-downloads.
path: "./target/.native_laufey",
key:
"laufey-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('cli/laufey_sums.lock') }}",
},
},
{
// Warm the cache with the "laufey" desktop backend that `deno
// desktop` downloads (into the default target/.native_laufey) so
// the test step doesn't re-download the (100+ MB) archive for
// every test's fresh DENO_DIR. The harness resolves that path and
// injects DENO_LAUFEY_CACHE_DIR per-test itself (see
// test_util::native_laufey_cache_dir); no env export needed. Run
// it with the built deno binary (the test job has no system
// `deno` on PATH).
name: "Pre-download native laufey",
if: testCrateNameExpr.equals("specs"),
run: [
'DENO_BIN=""',
"for c in ./target/release/deno ./target/release/deno.exe ./target/debug/deno ./target/debug/deno.exe; do",
' [ -f "$c" ] && DENO_BIN="$c" && break',
"done",
'"$DENO_BIN" run -A ./tools/download_laufey.ts',
].join("\n"),
},
{
if: buildItem.os.equals("linux").and(
buildItem.arch.equals("aarch64"),
Expand All @@ -1504,8 +1540,10 @@ const buildJobs = buildItems.map((rawBuildItem) => {
{
name: "Test (debug)",
if: isDebug,
// Desktop spec tests launch a GUI backend, so run under a virtual
// X display on Linux where no real display is available.
run:
`cargo test -p ${testMatrix.test_package} --test ${testMatrix.test_crate}`,
`${cargoTestCmdPrefix}cargo test -p ${testMatrix.test_package} --test ${testMatrix.test_crate}`,
env: {
CARGO_PROFILE_DEV_DEBUG: 0,
CI_SHARD_INDEX: isPr.then(testMatrix.shard_index).else(""),
Expand All @@ -1518,7 +1556,7 @@ const buildJobs = buildItems.map((rawBuildItem) => {
isDenoland.or(buildItem.use_sysroot),
),
run:
`cargo test -p ${testMatrix.test_package} --test ${testMatrix.test_crate} --release`,
`${cargoTestCmdPrefix}cargo test -p ${testMatrix.test_package} --test ${testMatrix.test_crate} --release`,
env: {
CI_SHARD_INDEX: isPr.then(testMatrix.shard_index).else(""),
CI_SHARD_TOTAL: isPr.then(testMatrix.shard_total).else(""),
Expand Down
7 changes: 7 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,7 @@ serde = { version = "1.0.149", features = ["derive"] }
serde_bytes = "0.11"
serde_json = { version = "1.0.85", features = ["raw_value"] }
serde_repr = "=0.1.19"
shell-words = "1.1.0"
shlex = "1.3.0"
signal-hook = "0.3"
slab = "0.4"
Expand Down
1 change: 1 addition & 0 deletions cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ same-file.workspace = true
serde.workspace = true
serde_repr.workspace = true
sha2.workspace = true
shell-words.workspace = true
shlex.workspace = true
spki = { workspace = true, features = ["pem"] }
strsim.workspace = true
Expand Down
15 changes: 15 additions & 0 deletions cli/schemas/config-file.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,21 @@
"description": "Backend to use for the desktop app.",
"enum": ["webview", "cef"]
},
"backendArgs": {
"type": "object",
"description": "Optional backend-specific arguments.",
"additionalProperties": false,
"properties": {
"cef": {
"type": "string",
"description": "Optional argument for the CEF backend."
},
"webview": {
"type": "string",
"description": "Optional argument for the webview backend."
}
}
},
"output": {
"type": "object",
"description": "Platform-specific output paths.",
Expand Down
Loading
Loading