@eyeo/get-browser-binary 0.20.2 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.gitlab-ci.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  default:
2
- image: registry.gitlab.com/eyeo/docker/get-browser-binary:node18
2
+ image: registry.gitlab.com/eyeo/docker/get-browser-binary:node22
3
3
  interruptible: true
4
4
 
5
5
  stages:
@@ -49,29 +49,26 @@ test:browsers:linux:dev:
49
49
  .windows:
50
50
  stage: test
51
51
  before_script:
52
- - choco install -y microsoft-edge
53
52
  - npm install
54
53
  tags:
55
54
  - eyeo-windows
56
55
  cache: {}
57
- # Retrying to mitigate Edge install issues
58
- retry: 1
59
56
 
60
57
  test:browsers:windows:
61
58
  extends: .windows
62
59
  script:
63
60
  # Running Edge tests only on the preinstalled version
64
61
  # https://gitlab.com/eyeo/developer-experience/get-browser-binary/-/issues/29
65
- - npm test -- --grep "edge.*latest"
66
- - npm test -- --grep "^.*chromium((?!Version:.dev).)*$"
62
+ - npm test "--" --grep "edge.*latest"
63
+ - npm test "--" --grep "^.*chromium((?!Version:.dev).)*$"
67
64
  # Running only a subset of Firefox tests to avoid low OS resources error
68
65
  # https://gitlab.com/eyeo/developer-experience/get-browser-binary/-/issues/2
69
- - npm test -- --grep "firefox.*installs"
66
+ - npm test "--" --grep "firefox.*installs"
70
67
 
71
68
  test:browsers:windows:dev:
72
69
  extends: .windows
73
70
  script:
74
- - npm test -- --grep "chromium.*Version:.dev"
71
+ - npm test "--" --grep "chromium.*Version:.dev"
75
72
  allow_failure: true
76
73
 
77
74
  docs:
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ 22.14.0
package/RELEASE_NOTES.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Unreleased
2
2
 
3
+ # 0.21.0
4
+
5
+ - Fixes an issue on Chromedriver (>=136) which stopped returning webdriver
6
+ handles for extension pages (!139)
7
+ - Fixes an issue on Firefox (>=138) when getting the installed version through
8
+ the binary file (#86)
9
+ - Updates the minimum supported version of Node to 22. Node 22 is the current
10
+ LTS version of Node (EXT-778)
11
+
3
12
  # 0.20.2
4
13
 
5
14
  - Fixes getting majorVersion on Edge (!133)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eyeo/get-browser-binary",
3
- "version": "0.20.2",
3
+ "version": "0.21.0",
4
4
  "description": "Install browser binaries and matching webdrivers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,8 +9,8 @@
9
9
  "author": "eyeo GmbH",
10
10
  "license": "GPL-3.0",
11
11
  "engines": {
12
- "node": ">=18",
13
- "npm": ">=9"
12
+ "node": ">=22",
13
+ "npm": ">=10"
14
14
  },
15
15
  "type": "module",
16
16
  "main": "index.js",
package/src/browser.js CHANGED
@@ -55,6 +55,12 @@ export class Browser {
55
55
  * @throws {Error} Browser is not installed.
56
56
  */
57
57
  static async getInstalledVersion(binary) {
58
+ // Since Firefox v138, calling `[firefox binary] --version` produces an
59
+ // EPERM error on the CI, even though the browser version is returned
60
+ // correctly. Ignoring that error as a workaround.
61
+ const ignoredError =
62
+ "Sandbox: CanCreateUserNamespace() clone() failure: EPERM";
63
+
58
64
  try {
59
65
  let stdout;
60
66
  let stderr;
@@ -67,8 +73,8 @@ export class Browser {
67
73
  else {
68
74
  ({stdout, stderr} = await promisify(execFile)(binary, ["--version"]));
69
75
  }
70
- if (stderr)
71
- throw new Error(stderr);
76
+ if (stderr && !stderr.includes(ignoredError))
77
+ throw new Error(JSON.stringify({stdout, stderr}, null, 2));
72
78
 
73
79
  return stdout.trim();
74
80
  }
package/src/chromium.js CHANGED
@@ -236,12 +236,18 @@ export class Chromium extends Browser {
236
236
  await Chromium.#getInstalledBrowserInfo(customBrowserBinary) :
237
237
  await Chromium.installBrowser(version, downloadTimeout);
238
238
 
239
- let options = new chrome.Options().addArguments("no-sandbox", ...extraArgs);
239
+ const majorVersion = getMajorVersion(versionNumber);
240
+ const chromeOptions = {};
241
+ // https://issues.chromium.org/issues/409441960
242
+ if (majorVersion >= 136)
243
+ chromeOptions.enableExtensionTargets = true;
244
+
245
+ const options = new chrome.Options({"goog:chromeOptions": chromeOptions})
246
+ .addArguments("no-sandbox", ...extraArgs);
240
247
  if (extensionPaths.length > 0) {
241
248
  await checkExtensionPaths(extensionPaths);
242
249
  options.addArguments(`load-extension=${extensionPaths.join(",")}`);
243
250
  }
244
- let majorVersion = getMajorVersion(versionNumber);
245
251
  if (headless) {
246
252
  // https://www.selenium.dev/blog/2023/headless-is-going-away/
247
253
  if (majorVersion >= 109)
package/src/edge.js CHANGED
@@ -222,10 +222,16 @@ export class Edge extends Browser {
222
222
  await Edge.getInstalledVersion(binary);
223
223
  }
224
224
 
225
- let options = new edge.Options().addArguments("no-sandbox", ...extraArgs);
226
- let majorVersion = getMajorVersion(versionNumber);
225
+ const majorVersion = getMajorVersion(versionNumber);
226
+ const edgeOptions = {};
227
+ // https://issues.chromium.org/issues/409441960
228
+ if (majorVersion >= 136)
229
+ edgeOptions.enableExtensionTargets = true;
230
+
231
+ const options = new edge.Options({"ms:edgeOptions": edgeOptions})
232
+ .addArguments("no-sandbox", ...extraArgs);
227
233
  if (headless) {
228
- if (versionNumber && getMajorVersion(versionNumber) >= 114)
234
+ if (versionNumber && majorVersion >= 114)
229
235
  options.addArguments("headless=new");
230
236
  else
231
237
  options.addArguments("headless");
@@ -1,4 +1,4 @@
1
- FROM registry.gitlab.com/eyeo/docker/get-browser-binary:node18
1
+ FROM registry.gitlab.com/eyeo/docker/get-browser-binary:node22
2
2
 
3
3
  COPY package*.json get-browser-binary/
4
4
  RUN cd get-browser-binary && npm install