@eyeo/get-browser-binary 0.20.1 → 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 +5 -8
- package/.nvmrc +1 -0
- package/RELEASE_NOTES.md +14 -1
- package/package.json +3 -3
- package/src/browser.js +8 -2
- package/src/chromium.js +19 -2
- package/src/edge.js +18 -3
- package/test/docker/Dockerfile +1 -1
package/.gitlab-ci.yml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
default:
|
|
2
|
-
image: registry.gitlab.com/eyeo/docker/get-browser-binary:
|
|
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,8 +1,21 @@
|
|
|
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
|
+
|
|
12
|
+
# 0.20.2
|
|
13
|
+
|
|
14
|
+
- Fixes getting majorVersion on Edge (!133)
|
|
15
|
+
|
|
3
16
|
# 0.20.1
|
|
4
17
|
|
|
5
|
-
-
|
|
18
|
+
- Fixes enabling developer mode (!131)
|
|
6
19
|
|
|
7
20
|
# 0.20.0
|
|
8
21
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eyeo/get-browser-binary",
|
|
3
|
-
"version": "0.
|
|
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": ">=
|
|
13
|
-
"npm": ">=
|
|
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
|
@@ -42,6 +42,17 @@ async function enableDeveloperMode(driver) {
|
|
|
42
42
|
devModeToggle.click();
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
+
await driver.wait(async() => {
|
|
46
|
+
const checked = await driver.executeScript(() => {
|
|
47
|
+
const devModeToggle = document
|
|
48
|
+
.querySelector("extensions-manager").shadowRoot
|
|
49
|
+
.getElementById("toolbar").shadowRoot
|
|
50
|
+
.querySelector("#toolbar #devMode");
|
|
51
|
+
return devModeToggle.checked;
|
|
52
|
+
});
|
|
53
|
+
return checked;
|
|
54
|
+
}, 500);
|
|
55
|
+
|
|
45
56
|
await driver.close();
|
|
46
57
|
await driver.switchTo().window(currentHandle);
|
|
47
58
|
}
|
|
@@ -225,12 +236,18 @@ export class Chromium extends Browser {
|
|
|
225
236
|
await Chromium.#getInstalledBrowserInfo(customBrowserBinary) :
|
|
226
237
|
await Chromium.installBrowser(version, downloadTimeout);
|
|
227
238
|
|
|
228
|
-
|
|
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);
|
|
229
247
|
if (extensionPaths.length > 0) {
|
|
230
248
|
await checkExtensionPaths(extensionPaths);
|
|
231
249
|
options.addArguments(`load-extension=${extensionPaths.join(",")}`);
|
|
232
250
|
}
|
|
233
|
-
let majorVersion = getMajorVersion(versionNumber);
|
|
234
251
|
if (headless) {
|
|
235
252
|
// https://www.selenium.dev/blog/2023/headless-is-going-away/
|
|
236
253
|
if (majorVersion >= 109)
|
package/src/edge.js
CHANGED
|
@@ -42,6 +42,14 @@ async function enableDeveloperMode(driver) {
|
|
|
42
42
|
devModeToggle.click();
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
+
await driver.wait(async() => {
|
|
46
|
+
const checked = await driver.executeScript(() => {
|
|
47
|
+
const devModeToggle = document.getElementById("developer-mode");
|
|
48
|
+
return devModeToggle.checked;
|
|
49
|
+
});
|
|
50
|
+
return checked;
|
|
51
|
+
}, 500);
|
|
52
|
+
|
|
45
53
|
await driver.close();
|
|
46
54
|
await driver.switchTo().window(currentHandle);
|
|
47
55
|
}
|
|
@@ -214,9 +222,16 @@ export class Edge extends Browser {
|
|
|
214
222
|
await Edge.getInstalledVersion(binary);
|
|
215
223
|
}
|
|
216
224
|
|
|
217
|
-
|
|
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);
|
|
218
233
|
if (headless) {
|
|
219
|
-
if (versionNumber &&
|
|
234
|
+
if (versionNumber && majorVersion >= 114)
|
|
220
235
|
options.addArguments("headless=new");
|
|
221
236
|
else
|
|
222
237
|
options.addArguments("headless");
|
|
@@ -253,7 +268,7 @@ export class Edge extends Browser {
|
|
|
253
268
|
|
|
254
269
|
// From Edge 134 on, developer mode needs to be enabled
|
|
255
270
|
// for custom extensions to work properly
|
|
256
|
-
if (
|
|
271
|
+
if (majorVersion >= 134)
|
|
257
272
|
await enableDeveloperMode(driver);
|
|
258
273
|
|
|
259
274
|
return driver;
|
package/test/docker/Dockerfile
CHANGED