From 49a30199916f5a4be356e841a299c4a57babb7bb Mon Sep 17 00:00:00 2001 From: marius-kilocode Date: Mon, 7 Sep 2026 11:07:46 +0200 Subject: [PATCH] test(cli): preserve startup timings in unit artifacts --- .github/workflows/test.yml | 1 + .../test/kilocode/startup-speed.test.ts | 23 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8ee93857c12..5a83c537f8c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -261,6 +261,7 @@ jobs: path: | .artifacts/unit/junit.xml packages/*/.artifacts/unit/junit.xml + packages/opencode/.artifacts/unit/startup.json # kilocode_change end # kilocode_change start diff --git a/packages/opencode/test/kilocode/startup-speed.test.ts b/packages/opencode/test/kilocode/startup-speed.test.ts index 63b9c2b4138..6bdf8e76375 100644 --- a/packages/opencode/test/kilocode/startup-speed.test.ts +++ b/packages/opencode/test/kilocode/startup-speed.test.ts @@ -76,13 +76,30 @@ test("warm npm launcher and real CLI startup stay below 3 seconds", async () => const elapsed = performance.now() - start expect(code, stderr).toBe(0) expect(stdout.trim()).toMatch(/^(local|\d+\.\d+\.\d+.*)$/) - if (i > 0) samples.push(elapsed) + samples.push(elapsed) } // One warm-up, then a median with headroom for shared CI runners. The old // Windows probe alone took about 3.3s; warm native --version took 0.6s. - const median = samples.toSorted((a, b) => a - b).at(1) ?? Infinity + const warm = samples.slice(1) + const median = warm.toSorted((a, b) => a - b).at(1) ?? Infinity console.log( - `Startup (${process.platform}): ${samples.map((value) => value.toFixed(0)).join(", ")} ms; median ${median.toFixed(0)} ms`, + `Startup (${process.platform}): ${warm.map((value) => value.toFixed(0)).join(", ")} ms; median ${median.toFixed(0)} ms`, + ) + await Bun.write( + path.join(root, ".artifacts/unit/startup.json"), + JSON.stringify( + { + platform: process.platform, + arch: process.arch, + bun: Bun.version, + warmup: samples.at(0), + samples: warm, + median, + budget: 3000, + }, + null, + 2, + ), ) expect(median).toBeLessThan(3000) }, 60_000)