fix(build): pin @types/node workspace-wide; make build-exe tests opt-in

(b) Windows desktop build flakily failed with "Property 'ok'/'status' does
not exist on type 'Response'" because the workspace resolved multiple
@types/node versions (incl. an ancient 12.20.55 from @manypkg/find-root that
predates global fetch types). plugin-sdk compiles with lib:["ES2022"] and no
DOM lib, so Response comes solely from @types/node — nondeterministic across
runners. Pin via pnpm.overrides "@types/node": "^25.5.2"; collapses the
lockfile to one version. Verified: plugin-sdk build + desktop + full
workspace typecheck all pass.

Also: build-exe-cross tests cross-compiled all 5 platforms on every CI run
(auto-enabled via Boolean(process.env.CI)) — a release-build dependency in
the normal lane. Made them opt-in (FUSION_TEST_BUILD_EXE=1) and pointed the
root test:slow-cli at the CLI slow lane instead of test:pre-release, so
everyday CI no longer depends on release builds. test:pre-release and
test-release.yml still validate binaries deliberately.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-05-30 08:38:06 -07:00
parent 033f74c458
commit 884e677afa
4 changed files with 78 additions and 401 deletions

View File

@@ -40,10 +40,14 @@ function nativeTarget(): string | null {
// Cross-compiling native binaries pegs CPU for ~60s per target. Skip by
// default locally; opt in with FUSION_TEST_BUILD_EXE=1 or run on CI.
// Opt-in only. These tests cross-compile real platform binaries (`bun build
// --target ...`), so they depend on the release build toolchain working and are
// slow/flaky on a generic host. They run via `pnpm test:build-exe`
// (FUSION_TEST_BUILD_EXE=1) for deliberate pre-release validation, NOT on every
// CI run. Native per-platform binary builds are covered by test-release.yml.
const SHOULD_RUN_BUILD_EXE =
process.env.FUSION_TEST_BUILD_EXE === "1" ||
process.env.FUSION_TEST_BUILD_EXE === "true" ||
Boolean(process.env.CI);
process.env.FUSION_TEST_BUILD_EXE === "true";
describe.skipIf(!SHOULD_RUN_BUILD_EXE)("build-exe-cross: single target", () => {
beforeAll(() => {