diff --git a/packages/target-chrome-docker/package.json b/packages/target-chrome-docker/package.json index 0c4f92ec..0d53ae2c 100644 --- a/packages/target-chrome-docker/package.json +++ b/packages/target-chrome-docker/package.json @@ -27,6 +27,7 @@ "execa": "^5.0.0", "find-free-port-sync": "^1.0.0", "fs-extra": "^9.1.0", + "semver": "^7.5.1", "wait-on": "^5.2.1" }, "publishConfig": { diff --git a/packages/target-chrome-docker/src/create-chrome-docker-target.js b/packages/target-chrome-docker/src/create-chrome-docker-target.js index f1d58c2d..04ca76cd 100644 --- a/packages/target-chrome-docker/src/create-chrome-docker-target.js +++ b/packages/target-chrome-docker/src/create-chrome-docker-target.js @@ -4,6 +4,7 @@ const execa = require('execa'); const waitOn = require('wait-on'); const CDP = require('chrome-remote-interface'); const getRandomPort = require('find-free-port-sync'); +const semver = require('semver'); const { ChromeError, ensureDependencyAvailable, @@ -64,7 +65,6 @@ function createChromeDockerTarget({ if (!chromeDockerWithoutSeccomp) { runArgs.push('--security-opt=seccomp=unconfined'); } - runArgs.push('--add-host=host.docker.internal:host-gateway'); if (dockerUrl.indexOf('http://localhost') === 0 || isLocalFile) { const ip = getLocalIPAddress(); @@ -135,6 +135,17 @@ function createChromeDockerTarget({ ]) .concat(chromeFlags); + const { stdout: rawDockerVersion } = await execa('docker', [ + 'version', + '--format', + "'{{.Server.Version}}'", + ]); + const parsedDockerVersion = rawDockerVersion.replace(/'/g, ''); + + if (semver.satisfies(parsedDockerVersion, '>=20')) { + dockerArgs.push('--add-host=host.docker.internal:host-gateway'); + } + debug( `Launching chrome in docker with command "${dockerPath} ${args.join( ' ' diff --git a/yarn.lock b/yarn.lock index a215d826..9f8c0bc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18990,6 +18990,13 @@ semver@^7.3.4, semver@^7.3.5: dependencies: lru-cache "^6.0.0" +semver@^7.5.1: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"