-
Notifications
You must be signed in to change notification settings - Fork 22
Fix Chrome sandbox failures in CI by updating test configuration and workflow #48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: jonrohan <54012+jonrohan@users.noreply.github.com>
Co-authored-by: jonrohan <54012+jonrohan@users.noreply.github.com>
Co-authored-by: jonrohan <54012+jonrohan@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR addresses Chrome sandbox initialization failures in CI environments running on Ubuntu 23.10+ runners by implementing a dual-approach fix: enabling unprivileged user namespaces at the system level and configuring Chrome to run with sandbox-disabling flags.
Key Changes:
- Added custom Chrome launcher configuration with CI-specific flags (
--no-sandbox,--disable-gpu,--disable-dev-shm-usage) - Updated GitHub Actions workflow to enable user namespaces and upgrade to latest action versions
- Improved Chrome binary detection with graceful fallback handling
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| karma.config.js | Adds custom ChromeHeadlessCI launcher with sandbox-disabling flags and improves Chrome binary path detection with try-catch error handling |
| .github/workflows/nodejs.yml | Updates actions to v4, Node.js to 20.x LTS, and adds sysctl command to enable unprivileged user namespaces for Chrome sandbox support |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Enable user namespaces | ||
| run: sudo sysctl -w kernel.unprivileged_userns_clone=1 |
Copilot
AI
Dec 2, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The approach is contradictory: the workflow enables user namespaces to support Chrome's sandbox (line 16), but the Karma config disables the sandbox entirely with --no-sandbox (line 30).
If user namespaces are enabled, the sandbox should work without needing --no-sandbox. Consider either:
- Remove the
--no-sandboxflag and rely only on the sysctl setting - Remove the sysctl step and rely only on
--no-sandbox
The current implementation works but maintains both workarounds unnecessarily, which could be confusing for future maintainers.
| node-version: '20.x' | ||
| # Enable unprivileged user namespaces for Chrome sandbox | ||
| # This is required because Ubuntu 23.10+ disables them by default | ||
| # See: https://github.com/actions/runner-images/issues/9621 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
confused about this issue link here
The Node.js CI workflow was failing due to Chrome sandbox initialization errors on Ubuntu 23.10+ runners, where unprivileged user namespaces are disabled by default.
Changes
karma.config.js
--no-sandbox,--disable-gpu,--disable-dev-shm-usage).github/workflows/nodejs.ymlsysctlbefore test executionSecurity Note: The
--no-sandboxflag andsysctlchange are standard practice for Chrome in containerized CI environments. See actions/runner-images#9621.Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
accounts.google.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3970 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89943923 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15167316132418396870,14596457868925568561,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)/usr/bin/chromium-browser /usr/bin/chromium-browser --user-data-dir=/tmp/karma-89943923 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --disable-dev-shm-usage http://localhost:9876/?id=89943923 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4216 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-21567554 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1911390630848799663,14155344660997571127,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)clients2.google.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3970 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89943923 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15167316132418396870,14596457868925568561,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)/usr/bin/chromium-browser /usr/bin/chromium-browser --user-data-dir=/tmp/karma-89943923 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --disable-dev-shm-usage http://localhost:9876/?id=89943923 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4216 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-21567554 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1911390630848799663,14155344660997571127,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)clientservices.googleapis.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4216 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-21567554 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1911390630848799663,14155344660997571127,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-21567554 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --disable-dev-shm-usage http://localhost:9876/?id=21567554 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4521 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-17498028 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,909143507436331077,17578682525767971269,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)https://api.github.com//advisories/home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js(http block)redirector.gvt1.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3970 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89943923 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15167316132418396870,14596457868925568561,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)/usr/bin/chromium-browser /usr/bin/chromium-browser --user-data-dir=/tmp/karma-89943923 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --disable-dev-shm-usage http://localhost:9876/?id=89943923 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4216 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-21567554 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1911390630848799663,14155344660997571127,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)safebrowsingohttpgateway.googleapis.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4216 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-21567554 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1911390630848799663,14155344660997571127,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-21567554 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --disable-dev-shm-usage http://localhost:9876/?id=21567554 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4521 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-17498028 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,909143507436331077,17578682525767971269,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)www.google.com/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3970 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-89943923 --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,15167316132418396870,14596457868925568561,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)/usr/bin/chromium-browser /usr/bin/chromium-browser --user-data-dir=/tmp/karma-89943923 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --disable-dev-shm-usage http://localhost:9876/?id=89943923 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222(dns block)/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=4216 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-21567554 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1911390630848799663,14155344660997571127,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041(dns block)www.googleapis.com/usr/local/bin/node node install.js(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.