Selenium: pass -no-sandbox to Chrome under Docker

When running webdriver.io in a Jessie Docker container, the sandboxing
fails:

  Failed to move to new namespace: PID namespaces supported, Network
  namespace supported, but failed: errno = Operation not permitted

Detect whether we are in a Docker container by checking /.dockerenv and
if present append --no-sandbox to Chrome options.

Change-Id: Ie5c276d12553e4473c01b3407e0f7622e0a678e0
This commit is contained in:
Antoine Musso 2018-04-12 14:02:40 +02:00
parent 4e7673c5b0
commit 4ff5652501

View file

@ -1,6 +1,7 @@
'use strict';
const password = 'vagrant',
fs = require( 'fs' ),
path = require( 'path' ),
username = 'Admin';
@ -83,7 +84,12 @@ exports.config = {
chromeOptions: {
// Run headless when there is no DISPLAY
// --headless: since Chrome 59 https://chromium.googlesource.com/chromium/src/+/59.0.3030.0/headless/README.md
args: process.env.DISPLAY ? [] : [ '--headless' ]
args: (
process.env.DISPLAY ? [] : [ '--headless' ]
).concat(
// Disable Chrome sandbox when running in Docker
fs.existsSync( '/.dockerenv' ) ? [ '--no-sandbox' ] : []
)
}
} ],
//