ci: drop Windows runner, add static hardcoded-path detection (#1676)

Replace the Windows CI runner with a static analysis test that catches
the same class of platform-specific path bugs (C:\, /home/, /Users/,
/tmp/) without requiring an actual Windows machine.

- tests/hardcoded-paths.test.cjs: new static scanner that checks string
  literals in all source JS/CJS files for hardcoded platform paths;
  runs on Linux/macOS in <100ms and fires on every PR
- .github/workflows/test.yml: remove windows-latest from matrix; switch
  macOS smoke-test runner from Node 22 → Node 24 (the declared standard)
- package.json: bump engines.node from >=20.0.0 to >=22.0.0 (Node 20
  reached EOL April 2026)

Matrix goes from 4 runners → 3 runners per run:
  ubuntu/22  ubuntu/24  macos/24

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-04-04 14:37:54 -04:00
committed by GitHub
parent 2703422be8
commit a6457a7688
3 changed files with 156 additions and 6 deletions

View File

@@ -24,12 +24,12 @@ jobs:
os: [ubuntu-latest]
node-version: [22, 24]
include:
# Single macOS runner — verifies platform compatibility
# Single macOS runner — verifies platform compatibility on the standard version
- os: macos-latest
node-version: 22
# Single Windows runner — slowest CI runner, smoke-test only
- os: windows-latest
node-version: 22
node-version: 24
# Windows path/separator coverage is handled by hardcoded-paths.test.cjs
# and windows-robustness.test.cjs (static analysis, runs on all platforms).
# A dedicated windows-compat workflow runs on a weekly schedule.
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2