fix(windows-ci): enforce LF + build server-node.mjs in CI

Second round of windows-free-tests fixes after the first push. Curated subset
went from 386/34 to 58/4 fails. Remaining 4 fails + 1 error trace to two root
causes:

1. Line-ending sensitivity. Windows checkout with core.autocrlf=true converts
   .md/.tmpl files to CRLF. Tests that parse YAML frontmatter with
   `/^---\n([\\s\\S]+?)\n---/` then return zero matches — skill-collision-
   sentinel.test.ts:120 enumerated 0 skills on Windows, cascading into 3
   downstream test failures (sanity, KNOWN_COLLISIONS, /checkpoint resolved).

   Fix: add .gitattributes that pins LF for .md/.tmpl/.yml/.json/.toml/.sh/
   .ts/.tsx/.js/.mjs/.cjs/.bash. Root-cause fix; prevents future similar
   tests from hitting the same trap. Also keeps bash scripts LF on Linux
   runners (CRLF in shebangs produces "bad interpreter" errors).

2. Module-level Windows assertion in browse/src/cli.ts:82 throws if
   browse/dist/server-node.mjs is missing. Any test that transitively loads
   cli.ts (e.g., browse/test/tab-isolation.test.ts via shard mate imports)
   then fails to even start. server-node.mjs is generated by bash
   browse/scripts/build-node-server.sh, which `bun run build` calls but
   `bun install` does not.

   Fix: add a "Build server-node.mjs" step to .github/workflows/
   windows-free-tests.yml. Calls only the node-server build script, not
   full `bun run build` — we don't need the compiled binaries for tests
   and the full build is slow.

Expected: skill-collision-sentinel goes 0→3 pass (sanity, KNOWN_COLLISIONS,
/checkpoint resolved). tab-isolation's "unhandled error between tests"
disappears. Remaining tests should be green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-04-27 23:53:18 -07:00
parent 30adb0b1c4
commit bfa579515c
2 changed files with 40 additions and 0 deletions
+10
View File
@@ -47,6 +47,16 @@ jobs:
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build server-node.mjs (required by Windows browse path)
# browse/src/cli.ts module-level throws on Windows if server-node.mjs
# is missing — Bun can't drive Playwright's Chromium on Windows
# (oven-sh/bun#4253). The bundle must exist for any test that
# transitively loads cli.ts to even import. We build only the
# Node-compatible server bundle here; full `bun run build` would
# also compile every binary which is slow and unnecessary for tests.
run: bash browse/scripts/build-node-server.sh
shell: bash
- name: Show curated subset (for build log audit trail)
run: bun run scripts/test-free-shards.ts --windows-only --list
shell: bash