@eyeo/get-browser-binary 0.18.0 → 0.19.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/RELEASE_NOTES.md +10 -1
- package/package.json +1 -1
- package/src/browser.js +2 -1
- package/src/chromium.js +10 -3
- package/src/edge.js +5 -4
- package/src/firefox.js +11 -5
- package/src/utils.js +9 -1
- package/test/browsers.js +1 -1
- package/test/extension/mv3/background.js +1 -14
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
# Unreleased
|
|
1
|
+
# Unreleased
|
|
2
|
+
|
|
3
|
+
# 0.19.0
|
|
4
|
+
|
|
5
|
+
- Fixes an issue starting with Firefox version 135 which prevented the binary to be downloaded (#82)
|
|
6
|
+
- `getInstalledVersion` now returns only the version number (#81)
|
|
7
|
+
|
|
8
|
+
## Testing
|
|
9
|
+
|
|
10
|
+
- Test extensions internal pages can now load normally. The development version of Chromium 133 got the `driver.getAllWindowHandles()` issue fixed, therefore the workaround is no longer needed. (!121)
|
|
2
11
|
|
|
3
12
|
# 0.18.0
|
|
4
13
|
|
package/package.json
CHANGED
package/src/browser.js
CHANGED
|
@@ -48,7 +48,8 @@ export class Browser {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
* Gets the installed version returned by the browser binary.
|
|
51
|
+
* Gets the installed version returned by the browser binary. Subclasses add
|
|
52
|
+
* specific parsing to this function.
|
|
52
53
|
* @param {string} binary The path to the browser binary.
|
|
53
54
|
* @return {string} Installed browser version.
|
|
54
55
|
* @throws {Error} Browser is not installed.
|
package/src/chromium.js
CHANGED
|
@@ -110,11 +110,18 @@ export class Chromium extends Browser {
|
|
|
110
110
|
return parseInt(chromiumBase, 10);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
/** @see Browser.getInstalledVersion */
|
|
114
|
+
static async getInstalledVersion(binary) {
|
|
115
|
+
const installedVersion = await super.getInstalledVersion(binary);
|
|
116
|
+
|
|
115
117
|
// Linux example: "Chromium 112.0.5615.49 built on Debian 11.6"
|
|
116
118
|
// Windows example: "114.0.5735.0"
|
|
117
|
-
|
|
119
|
+
return installedVersion.split(" ")[1] || installedVersion;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static async #getInstalledBrowserInfo(binary) {
|
|
123
|
+
const versionNumber = await Chromium.getInstalledVersion(binary);
|
|
124
|
+
|
|
118
125
|
return {binary, versionNumber};
|
|
119
126
|
}
|
|
120
127
|
|
package/src/edge.js
CHANGED
|
@@ -135,7 +135,7 @@ export class Edge extends Browser {
|
|
|
135
135
|
let archive = path.join(snapshotsDir, "cache", filename);
|
|
136
136
|
let binary = Edge.#getBinaryPath(channel);
|
|
137
137
|
try {
|
|
138
|
-
if (await Edge
|
|
138
|
+
if (await Edge.getInstalledVersion(binary) == versionNumber)
|
|
139
139
|
return {binary, versionNumber};
|
|
140
140
|
}
|
|
141
141
|
catch (e) {}
|
|
@@ -171,8 +171,9 @@ export class Edge extends Browser {
|
|
|
171
171
|
return {binary, versionNumber};
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
|
|
175
|
-
|
|
174
|
+
/** @see Browser.getInstalledVersion */
|
|
175
|
+
static async getInstalledVersion(binary) {
|
|
176
|
+
let installedVersion = await super.getInstalledVersion(binary);
|
|
176
177
|
for (let word of ["beta", "dev", "Beta", "Dev"])
|
|
177
178
|
installedVersion = installedVersion.replace(word, "");
|
|
178
179
|
return installedVersion.trim().replace(/.*\s/, "");
|
|
@@ -194,7 +195,7 @@ export class Edge extends Browser {
|
|
|
194
195
|
else {
|
|
195
196
|
binary = customBrowserBinary || Edge.#getBinaryPath();
|
|
196
197
|
versionNumber =
|
|
197
|
-
await Edge
|
|
198
|
+
await Edge.getInstalledVersion(binary);
|
|
198
199
|
}
|
|
199
200
|
|
|
200
201
|
let options = new edge.Options().addArguments("no-sandbox", ...extraArgs);
|
package/src/firefox.js
CHANGED
|
@@ -106,11 +106,12 @@ export class Firefox extends Browser {
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
/** @see Browser.getInstalledVersion */
|
|
110
|
+
static async getInstalledVersion(binary) {
|
|
111
|
+
const installedVersion = await super.getInstalledVersion(binary);
|
|
112
|
+
|
|
111
113
|
// Linux example: "Mozilla Firefox 102.15.0esr"
|
|
112
|
-
|
|
113
|
-
return {binary, versionNumber};
|
|
114
|
+
return installedVersion.split(" ")[2] || installedVersion;
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
/**
|
|
@@ -130,10 +131,15 @@ export class Firefox extends Browser {
|
|
|
130
131
|
checkVersion(version, MIN_VERSION, Firefox.#CHANNELS);
|
|
131
132
|
let versionNumber = await Firefox.#getVersionForChannel(version);
|
|
132
133
|
|
|
134
|
+
const majorVersion = getMajorVersion(versionNumber);
|
|
135
|
+
// Starting from Firefox 135 on Linux, the binary file extension
|
|
136
|
+
// was changed from .bz2 to .xz
|
|
137
|
+
const linuxExtension = majorVersion <= 134 ? "tar.bz2" : "tar.xz";
|
|
138
|
+
|
|
133
139
|
let [buildPlatform, fileName] = {
|
|
134
140
|
"win32-ia32": ["win32", `Firefox Setup ${versionNumber}.exe`],
|
|
135
141
|
"win32-x64": ["win64", `Firefox Setup ${versionNumber}.exe`],
|
|
136
|
-
"linux-x64": ["linux-x86_64", `firefox-${versionNumber}
|
|
142
|
+
"linux-x64": ["linux-x86_64", `firefox-${versionNumber}.${linuxExtension}`],
|
|
137
143
|
"darwin-x64": ["mac", `Firefox ${versionNumber}.dmg`],
|
|
138
144
|
"darwin-arm64": ["mac", `Firefox ${versionNumber}.dmg`]
|
|
139
145
|
}[platformArch];
|
package/src/utils.js
CHANGED
|
@@ -91,7 +91,15 @@ export async function download(url, destFile, timeout = 0) {
|
|
|
91
91
|
|
|
92
92
|
export async function extractTar(archive, dir) {
|
|
93
93
|
await fs.promises.mkdir(dir);
|
|
94
|
-
|
|
94
|
+
|
|
95
|
+
let command;
|
|
96
|
+
|
|
97
|
+
if (archive.endsWith(".xz"))
|
|
98
|
+
command = `tar -xf ${archive} -C ${dir}`;
|
|
99
|
+
else
|
|
100
|
+
command = `tar -jxf ${archive} -C ${dir}`;
|
|
101
|
+
|
|
102
|
+
await promisify(exec)(command);
|
|
95
103
|
}
|
|
96
104
|
|
|
97
105
|
export async function extractDmg(archive, dir) {
|
package/test/browsers.js
CHANGED
|
@@ -111,7 +111,7 @@ async function getInstallFileCTime(browser) {
|
|
|
111
111
|
process.platform == "darwin"))
|
|
112
112
|
return null;
|
|
113
113
|
|
|
114
|
-
const installTypes = [".zip", ".dmg", ".bz2", ".deb", ".exe"];
|
|
114
|
+
const installTypes = [".zip", ".dmg", ".bz2", ".xz", ".deb", ".exe"];
|
|
115
115
|
|
|
116
116
|
let cacheDir = path.join(snapshotsBaseDir, browser, "cache");
|
|
117
117
|
let cacheFiles = await fs.promises.readdir(cacheDir);
|
|
@@ -1,16 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
// getAllWindowHandles() can't see tabs opened by an extension if the url option
|
|
5
|
-
// opens an extension page. Example: chrome.tabs.create({url: "index.html"});
|
|
6
|
-
//
|
|
7
|
-
// Workaround: Create the tab with empty options, which allows
|
|
8
|
-
// getAllWindowHandles() to see it, and afterwards update the tab with the
|
|
9
|
-
// intended url.
|
|
10
|
-
|
|
11
|
-
// This timeout must be higher than driver.geAllWindowHandles() polling interval
|
|
12
|
-
const timeout = 1000;
|
|
13
|
-
|
|
14
|
-
chrome.tabs.create({}, ({tabId}) => {
|
|
15
|
-
setTimeout(() => chrome.tabs.update(tabId, {url: "index.html"}), timeout);
|
|
16
|
-
});
|
|
3
|
+
chrome.tabs.create({url: "index.html"});
|