Skip to content

Commit ef33a4a

Browse files
(CI/tests) prepare for running multiple electron versions (#230)
1 parent 66adeb4 commit ef33a4a

File tree

4 files changed

+29
-13
lines changed

4 files changed

+29
-13
lines changed

.github/workflows/nodeCI.yml

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,16 @@ jobs:
1212
strategy:
1313
fail-fast: false
1414
matrix:
15-
os: [ubuntu-20.04, ubuntu-latest, windows-latest]
15+
os: [ubuntu-latest]
1616
node: [16]
17+
electron_version: [27, 28, 29, 30, 31]
1718
include:
1819
- os: windows-latest
19-
commandPrefix: ''
20-
- os: ubuntu-20.04
21-
commandPrefix: xvfb-run
20+
node: 16
21+
command_prefix: ''
22+
electron_version: 31
2223
- os: ubuntu-latest
23-
commandPrefix: xvfb-run
24+
command_prefix: xvfb-run
2425
runs-on: ${{ matrix.os }}
2526
steps:
2627
- uses: actions/checkout@v4
@@ -39,10 +40,17 @@ jobs:
3940
uses: actions/cache@v4
4041
with:
4142
path: ${{ steps.yarn-cache.outputs.dir }}
42-
key: ${{ matrix.os }}-yarn-node-${{ matrix.node }}-${{ hashFiles('yarn.lock') }}
43+
key: ${{ matrix.os }}-yarn-node-${{ matrix.node }}-electron-${{ matrix.electron_version }}-${{ hashFiles('yarn.lock') }}
4344
restore-keys: |
45+
${{ matrix.os }}-yarn-node-${{ matrix.node }}-electron-${{ matrix.electron_version }}-
4446
${{ matrix.os }}-yarn-node-${{ matrix.node }}-
4547
${{ matrix.os }}-yarn-node-
48+
- name: Electron version
49+
id: electron-version
50+
shell: bash
51+
run: |
52+
echo "$(jq -M '.devDependencies.electron = "^${{ matrix.electron_version }}.0.0"' -- package.json)" > package.json
53+
cat package.json
4654
- name: yarn install
4755
uses: nick-fields/retry@v3
4856
with:
@@ -53,12 +61,14 @@ jobs:
5361
run: yarn lint
5462
- name: yarn test
5563
uses: nick-fields/retry@v3
64+
env:
65+
ELECTRON_VERSION: ${{ matrix.electron_version }}
5666
with:
5767
timeout_minutes: 5
5868
max_attempts: 3
59-
command: ${{ matrix.commandPrefix }} yarn run test:ci
69+
command: ${{ matrix.command_prefix }} yarn run test:ci
6070
- name: Upload coverage to Codecov
61-
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == 16}}
71+
if: ${{ matrix.os == 'ubuntu-latest' && matrix.node == 16 && matrix.electron_version == 31 }}
6272
uses: codecov/codecov-action@v4
6373
with:
6474
token: ${{ secrets.CODECOV_TOKEN }}

__tests__/createProject.helper.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ const fs = require('fs-extra')
66
// Prevent electron-builder from installing app deps
77
jest.mock('electron-builder/out/cli/install-app-deps.js')
88

9+
const electronVersion = process.env.ELECTRON_VERSION || 31
10+
const electronRequirement = `${electronVersion}.0.0` // Fixed version
11+
912
const createProject = async (projectName, useTS, customPlugins = {}) => {
1013
// Prevent modification of import
1114
const preset = {
@@ -25,7 +28,7 @@ const createProject = async (projectName, useTS, customPlugins = {}) => {
2528
// electron-builder requires that an exact version of electron is provided,
2629
// unless electron is already installed
2730
version: 'file:' + process.cwd(),
28-
electronBuilder: { electronVersion: '31.0.0', addTests: true }
31+
electronBuilder: { electronVersion: electronRequirement, addTests: true }
2932
}
3033
preset.plugins = { ...preset.plugins, ...customPlugins }
3134
const projectPath = (p) =>

__tests__/generator.spec.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ const generator = require('../generator')
22
const fs = require('fs')
33
jest.mock('fs')
44

5+
const electronVersion = process.env.ELECTRON_VERSION || 31
6+
const electronRequirement = `^${electronVersion}.0.0`
7+
58
// Mock the generator api
69
let pkg = {}
710
let completionCb
@@ -24,7 +27,7 @@ beforeEach(() => {
2427
if (path === 'apiResolve_./package.json') {
2528
return JSON.stringify({
2629
scripts: {},
27-
devDependencies: { electron: '^31.0.0' }
30+
devDependencies: { electron: electronRequirement }
2831
})
2932
}
3033
// return mock content
@@ -34,7 +37,7 @@ beforeEach(() => {
3437
jest.clearAllMocks()
3538
})
3639
const runGenerator = () =>
37-
generator(mockApi, { electronBuilder: { electronVersion: '^31.0.0' } })
40+
generator(mockApi, { electronBuilder: { electronVersion: electronRequirement } })
3841

3942
describe('.gitignore', () => {
4043
test('extends gitignore if it exists', () => {
@@ -80,7 +83,7 @@ describe('.gitignore', () => {
8083
if (path === 'apiResolve_./package.json') {
8184
return JSON.stringify({
8285
scripts: {},
83-
devDependencies: { electron: '^31.0.0' }
86+
devDependencies: { electron: electronRequirement }
8487
})
8588
}
8689
// return mock content

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
"@vue/eslint-config-typescript": "^12.0.0",
7272
"@vuepress/plugin-google-analytics": "^1.8.0",
7373
"ci-info": "^4.0.0",
74-
"electron": "^31.1.0",
74+
"electron": "^29.0.0",
7575
"electron-devtools-installer": "^3.1.0",
7676
"electron-playwright-helpers": "^1.5.5",
7777
"eslint": "^8.56.0",

0 commit comments

Comments
 (0)