My problem is how to run google chrome in docker container for e2e testing. I create a Dockerfile
from official Jenkins image, but when try to run google chrome, it crashes and show the error:
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted Trace/breakpoint trap (core dumped)
The Jenkins docker image uses Debian jessie
.
I can run google chrome with --headless
flag and the X server is not needed.
This is my docker file:
Jenkins official image:
The repo a person runs google chrome with GUI from docker:
My first approach is to use xvbf
, but the process is more simple when used --headless
flag.
I can run chrome in Ubuntu server with the same commands for installation, but in docker it fails.
After other intents, I used --no-sandbox
flag, but docker images shows the next error.
[0427/180929.595479:WARNING:audio_manager.cc(295)] Multiple instances of AudioManager detected [0427/180929.595537:WARNING:audio_manager.cc(254)] Multiple instances of AudioManager detected libudev: udev_has_devtmpfs: name_to_handle_at on /dev: Operation not permitted
Actually I ran this command:
google-chrome-stable --headless --disable-gpu --no-sandbox http://www.google.com
Using Puppeteer in Dockerconst puppeteer = require("puppeteer"); const browser = await puppeteer. launch({ headless: true, args: [ "--disable-gpu", "--disable-dev-shm-usage", "--disable-setuid-sandbox", "--no-sandbox", ] }); const page = await browser. newPage(); await page.
Post version 59, Chrome supports headless execution. ChromeOptions class is utilized to modify the default characteristics of the browser. The addArguments method of the ChromeOptions class is used for headless execution and headless is passed as a parameter to that method.
You can run Google Chrome in headless mode simply by setting the headless property of the chromeOptions object to True. Or, you can use the add_argument() method of the chromeOptions object to add the –headless command-line argument to run Google Chrome in headless mode using the Selenium Chrome web driver.
Without the display variable we can't run GUI apps inside a container. Now chrome runs inside the container, as we had mentioned DISPLAY variable while launching this container!
Just launch chrome with --no-sandbox
that s resolves the problem
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With