Skip to content

Commit 1d277cb

Browse files
ci: add Windows runners to catch cross-platform regressions (#33)
The previous PR (#32) fixed three production bugs that were invisible in CI because every job ran on ubuntu-latest. This adds Windows coverage so the same class of bug fails CI before it lands. New jobs: - test-windows: full matrix of Node 20, 22, 24 on windows-latest. Mirrors the existing ubuntu test matrix step-for-step except it skips the coverage upload (already produced by the ubuntu Node 20 leg). fail-fast: false so a single Node-version failure does not mask others. - e2e-windows: runs npm run test:e2e:cli only. The CLI e2e suite uncovered the HOME->USERPROFILE bug fixed in #32, so it is the highest-value Windows e2e to gate on. The Playwright-driven web e2e is left ubuntu-only because it has not been validated end-to-end on Windows in this change. Both new jobs are added to the build and sbom needs lists so a Windows failure blocks the rest of the pipeline. Lint, typecheck, dependency-review, build, and sbom remain ubuntu-only. They are platform-agnostic and adding Windows there would not catch additional bugs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent d3ff3f3 commit 1d277cb

1 file changed

Lines changed: 47 additions & 2 deletions

File tree

.github/workflows/ci.yml

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,31 @@ jobs:
4242
fail_ci_if_error: false
4343
continue-on-error: true
4444

45+
test-windows:
46+
name: Test (Windows, Node ${{ matrix.node-version }})
47+
runs-on: windows-latest
48+
49+
strategy:
50+
fail-fast: false
51+
matrix:
52+
node-version: [20, 22, 24]
53+
54+
steps:
55+
- name: Checkout repository
56+
uses: actions/checkout@v6
57+
58+
- name: Setup Node.js ${{ matrix.node-version }}
59+
uses: actions/setup-node@v6
60+
with:
61+
node-version: ${{ matrix.node-version }}
62+
cache: "npm"
63+
64+
- name: Install dependencies
65+
run: npm ci
66+
67+
- name: Run tests
68+
run: npm test
69+
4570
e2e:
4671
name: E2E
4772
runs-on: ubuntu-latest
@@ -76,6 +101,26 @@ jobs:
76101
if-no-files-found: ignore
77102
retention-days: 7
78103

104+
e2e-windows:
105+
name: E2E CLI (Windows)
106+
runs-on: windows-latest
107+
108+
steps:
109+
- name: Checkout repository
110+
uses: actions/checkout@v6
111+
112+
- name: Setup Node.js
113+
uses: actions/setup-node@v6
114+
with:
115+
node-version: 20
116+
cache: "npm"
117+
118+
- name: Install dependencies
119+
run: npm ci
120+
121+
- name: Run CLI end-to-end tests
122+
run: npm run test:e2e:cli
123+
79124
lint:
80125
name: Lint
81126
runs-on: ubuntu-latest
@@ -142,7 +187,7 @@ jobs:
142187
build:
143188
name: Build
144189
runs-on: ubuntu-latest
145-
needs: [test, e2e, lint, typecheck]
190+
needs: [test, test-windows, e2e, e2e-windows, lint, typecheck]
146191

147192
steps:
148193
- name: Checkout repository
@@ -173,7 +218,7 @@ jobs:
173218
sbom:
174219
name: SBOM
175220
runs-on: ubuntu-latest
176-
needs: [test, e2e, lint, typecheck, build]
221+
needs: [test, test-windows, e2e, e2e-windows, lint, typecheck, build]
177222

178223
steps:
179224
- name: Checkout repository

0 commit comments

Comments
 (0)