Skip to content

Commit 78fd756

Browse files
authored
ci: run tests on Windows and macOS (#923)
Adds Windows and macOS to the unit and integration test matrices to catch cross-platform regressions automatically (path separators, shell quoting, .cmd shim resolution, etc.). Linux keeps the full matrix (Electron 37 + latest, VS Code 1.106.0 + stable); Windows and macOS each run a single latest/stable smoke job. OS versions are pinned (ubuntu-24.04, windows-2025, macos-15) for reproducibility. Closes #882
1 parent b7bc503 commit 78fd756

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,19 @@ jobs:
2828
- run: pnpm build
2929

3030
test-unit:
31-
name: Unit Test (Electron ${{ matrix.electron-version }})
32-
runs-on: ubuntu-24.04
31+
name: Unit Test (${{ matrix.name }}, Electron ${{ matrix.electron-version }})
32+
runs-on: ${{ matrix.os }}
3333
strategy:
3434
fail-fast: false
3535
matrix:
3636
# Minimum supported version: VS Code 1.106 (Oct 2025) -> Electron 37 -> Node 22
37-
# See https://github.com/ewanharris/vscode-versions for version mapping
38-
electron-version: ["37", "latest"]
37+
# See https://github.com/ewanharris/vscode-versions for version mapping.
38+
# Older Electron stays Linux-only; "latest" smoke-tests Windows + macOS too.
39+
include:
40+
- { os: ubuntu-24.04, name: Linux, electron-version: "37" }
41+
- { os: ubuntu-24.04, name: Linux, electron-version: "latest" }
42+
- { os: windows-2025, name: Windows, electron-version: "latest" }
43+
- { os: macos-15, name: macOS, electron-version: "latest" }
3944

4045
steps:
4146
- uses: actions/checkout@v6
@@ -44,16 +49,21 @@ jobs:
4449

4550
- name: Run tests with Electron ${{ matrix.electron-version }}
4651
run: ./scripts/test-electron.sh ${{ matrix.electron-version }}
52+
shell: bash
4753
env:
4854
CI: true
4955

5056
test-integration:
51-
name: Integration Test (VS Code ${{ matrix.vscode-version }})
52-
runs-on: ubuntu-24.04
57+
name: Integration Test (${{ matrix.name }}, VS Code ${{ matrix.vscode-version }})
58+
runs-on: ${{ matrix.os }}
5359
strategy:
5460
fail-fast: false
5561
matrix:
56-
vscode-version: ["1.106.0", "stable"]
62+
include:
63+
- { os: ubuntu-24.04, name: Linux, vscode-version: "1.106.0" }
64+
- { os: ubuntu-24.04, name: Linux, vscode-version: "stable" }
65+
- { os: windows-2025, name: Windows, vscode-version: "stable" }
66+
- { os: macos-15, name: macOS, vscode-version: "stable" }
5767

5868
steps:
5969
- uses: actions/checkout@v6
@@ -63,7 +73,9 @@ jobs:
6373
- run: pnpm build
6474

6575
- name: Run integration tests on VS Code ${{ matrix.vscode-version }}
66-
run: xvfb-run -a pnpm test:integration --label "VS Code ${{ matrix.vscode-version }}"
76+
# xvfb only exists on Linux; on Windows/macOS the runner has a real display.
77+
run: ${{ runner.os == 'Linux' && 'xvfb-run -a' || '' }} pnpm test:integration --label "VS Code ${{ matrix.vscode-version }}"
78+
shell: bash
6779

6880
package:
6981
name: Package

0 commit comments

Comments
 (0)