Skip to content

Commit c490695

Browse files
authored
Merge pull request #48 from github/copilot/investigate-ci-build-failure
Fix Chrome sandbox failures in CI by updating test configuration and workflow
2 parents e7450db + 6ab549e commit c490695

File tree

3 files changed

+2970
-1540
lines changed

3 files changed

+2970
-1540
lines changed

.github/workflows/nodejs.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@ jobs:
44
build:
55
runs-on: ubuntu-latest
66
steps:
7-
- uses: actions/checkout@v2
7+
- uses: actions/checkout@v4
88
- name: Use Node.js
9-
uses: actions/setup-node@v1
9+
uses: actions/setup-node@v4
1010
with:
11-
node-version: '14.x'
11+
node-version: '20.x'
12+
# Enable unprivileged user namespaces for Chrome sandbox
13+
# This is required because Ubuntu 23.10+ disables them by default
14+
# See: https://github.com/actions/runner-images/issues/9621
15+
- name: Enable user namespaces
16+
run: sudo sysctl -w kernel.unprivileged_userns_clone=1
1217
- run: npm install
1318
- run: npm run build --if-present
1419
- run: npm test

karma.config.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
process.env.CHROME_BIN = require('chromium').path
1+
// Use system Chrome/Chromium if available, otherwise let Karma find it
2+
// In CI environments, CHROME_BIN should be set or the system Chrome should be in PATH
3+
if (!process.env.CHROME_BIN) {
4+
try {
5+
const chromiumPath = require('chromium').path
6+
if (chromiumPath) {
7+
process.env.CHROME_BIN = chromiumPath
8+
}
9+
} catch (e) {
10+
// If chromium package doesn't work, let Karma use system Chrome
11+
}
12+
}
213

314
module.exports = function (config) {
415
config.set({
@@ -11,7 +22,17 @@ module.exports = function (config) {
1122
port: 9876,
1223
colors: true,
1324
logLevel: config.LOG_INFO,
14-
browsers: ['ChromeHeadless'],
25+
browsers: ['ChromeHeadlessCI'],
26+
customLaunchers: {
27+
ChromeHeadlessCI: {
28+
base: 'ChromeHeadless',
29+
flags: [
30+
'--no-sandbox',
31+
'--disable-gpu',
32+
'--disable-dev-shm-usage'
33+
]
34+
}
35+
},
1536
autoWatch: false,
1637
singleRun: true,
1738
concurrency: Infinity

0 commit comments

Comments
 (0)