summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/browsers/test/src
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/puppeteer/packages/browsers/test/src')
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/Cache.spec.ts72
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/chrome-headless-shell/chrome-headless-shell-data.spec.ts10
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/chrome/chrome-data.spec.ts17
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/chrome/install.spec.ts68
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/chromedriver/chromedriver-data.spec.ts10
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/chromium/chromium-data.spec.ts7
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/firefox/firefox-data.spec.ts7
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/firefox/install.spec.ts26
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/mocha-utils.ts5
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/tsconfig.json4
-rw-r--r--remote/test/puppeteer/packages/browsers/test/src/versions.ts8
11 files changed, 193 insertions, 41 deletions
diff --git a/remote/test/puppeteer/packages/browsers/test/src/Cache.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/Cache.spec.ts
new file mode 100644
index 0000000000..e8a3fb9619
--- /dev/null
+++ b/remote/test/puppeteer/packages/browsers/test/src/Cache.spec.ts
@@ -0,0 +1,72 @@
+/**
+ * @license
+ * Copyright 2024 Google Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import assert from 'assert';
+import fs from 'fs';
+import os from 'os';
+import path from 'path';
+
+import {Browser, Cache} from '../../lib/cjs/main.js';
+
+describe('Cache', () => {
+ let tmpDir = '/tmp/puppeteer-browsers-test';
+ let cache: Cache;
+
+ beforeEach(() => {
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'puppeteer-browsers-test'));
+ cache = new Cache(tmpDir);
+ });
+
+ afterEach(() => {
+ cache.clear();
+ });
+
+ it('return empty metadata if .metadata file does not exist', async function () {
+ assert.deepStrictEqual(cache.readMetadata(Browser.CHROME), {
+ aliases: {},
+ });
+ });
+
+ it('throw an error if .metadata is malformed', async function () {
+ // @ts-expect-error wrong type on purpose;
+ cache.writeMetadata(Browser.CHROME, 'metadata');
+ assert.throws(() => {
+ return cache.readMetadata(Browser.CHROME);
+ }, new Error(`.metadata is not an object`));
+ });
+
+ it('writes and reads .metadata', async function () {
+ cache.writeMetadata(Browser.CHROME, {
+ aliases: {
+ canary: '123.0.0.0',
+ },
+ });
+ assert.deepStrictEqual(cache.readMetadata(Browser.CHROME), {
+ aliases: {
+ canary: '123.0.0.0',
+ },
+ });
+
+ assert.deepStrictEqual(
+ cache.resolveAlias(Browser.CHROME, 'canary'),
+ '123.0.0.0'
+ );
+ });
+
+ it('resolves latest', async function () {
+ cache.writeMetadata(Browser.CHROME, {
+ aliases: {
+ canary: '115.0.5789',
+ stable: '114.0.5789',
+ },
+ });
+
+ assert.deepStrictEqual(
+ cache.resolveAlias(Browser.CHROME, 'latest'),
+ '115.0.5789'
+ );
+ });
+});
diff --git a/remote/test/puppeteer/packages/browsers/test/src/chrome-headless-shell/chrome-headless-shell-data.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/chrome-headless-shell/chrome-headless-shell-data.spec.ts
index 65008b5edb..2a9f03e2cc 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/chrome-headless-shell/chrome-headless-shell-data.spec.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/chrome-headless-shell/chrome-headless-shell-data.spec.ts
@@ -18,23 +18,23 @@ describe('chrome-headless-shell', () => {
it('should resolve download URLs', () => {
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.LINUX, '118.0.5950.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/118.0.5950.0/linux64/chrome-headless-shell-linux64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/linux64/chrome-headless-shell-linux64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.MAC, '118.0.5950.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/118.0.5950.0/mac-x64/chrome-headless-shell-mac-x64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/mac-x64/chrome-headless-shell-mac-x64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.MAC_ARM, '118.0.5950.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/118.0.5950.0/mac-arm64/chrome-headless-shell-mac-arm64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/mac-arm64/chrome-headless-shell-mac-arm64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.WIN32, '118.0.5950.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/118.0.5950.0/win32/chrome-headless-shell-win32.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/win32/chrome-headless-shell-win32.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.WIN64, '118.0.5950.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/118.0.5950.0/win64/chrome-headless-shell-win64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/118.0.5950.0/win64/chrome-headless-shell-win64.zip'
);
});
diff --git a/remote/test/puppeteer/packages/browsers/test/src/chrome/chrome-data.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/chrome/chrome-data.spec.ts
index 510afa8454..4d5bc980b1 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/chrome/chrome-data.spec.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/chrome/chrome-data.spec.ts
@@ -16,29 +16,30 @@ import {
relativeExecutablePath,
resolveSystemExecutablePath,
resolveBuildId,
+ compareVersions,
} from '../../../lib/cjs/browser-data/chrome.js';
describe('Chrome', () => {
it('should resolve download URLs', () => {
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.LINUX, '113.0.5672.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/113.0.5672.0/linux64/chrome-linux64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/linux64/chrome-linux64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.MAC, '113.0.5672.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/113.0.5672.0/mac-x64/chrome-mac-x64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/mac-x64/chrome-mac-x64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.MAC_ARM, '113.0.5672.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/113.0.5672.0/mac-arm64/chrome-mac-arm64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/mac-arm64/chrome-mac-arm64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.WIN32, '113.0.5672.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/113.0.5672.0/win32/chrome-win32.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/win32/chrome-win32.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.WIN64, '113.0.5672.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/113.0.5672.0/win64/chrome-win64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/113.0.5672.0/win64/chrome-win64.zip'
);
});
@@ -116,4 +117,10 @@ describe('Chrome', () => {
it('should resolve build prefix', async () => {
assert.strictEqual(await resolveBuildId('115.0.5790'), '115.0.5790.170');
});
+
+ it('should compare versions', async () => {
+ assert.ok(compareVersions('115.0.5790', '115.0.5789') >= 1);
+ assert.ok(compareVersions('115.0.5789', '115.0.5790') <= -1);
+ assert.ok(compareVersions('115.0.5790', '115.0.5790') === 0);
+ });
});
diff --git a/remote/test/puppeteer/packages/browsers/test/src/chrome/install.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/chrome/install.spec.ts
index 8103ff3612..f669d1c57c 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/chrome/install.spec.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/chrome/install.spec.ts
@@ -17,6 +17,7 @@ import {
Browser,
BrowserPlatform,
Cache,
+ computeExecutablePath,
} from '../../../lib/cjs/main.js';
import {getServerUrl, setupTestServer} from '../utils.js';
import {testChromeBuildId} from '../versions.js';
@@ -63,6 +64,42 @@ describe('Chrome install', () => {
);
});
+ it('can detect missing executables', async function () {
+ this.timeout(60000);
+ const expectedOutputPath = path.join(
+ tmpDir,
+ 'chrome',
+ `${BrowserPlatform.LINUX}-${testChromeBuildId}`
+ );
+ fs.mkdirSync(expectedOutputPath, {recursive: true});
+ assert.strictEqual(fs.existsSync(expectedOutputPath), true);
+ async function installThatThrows(): Promise<Error | undefined> {
+ try {
+ await install({
+ cacheDir: tmpDir,
+ browser: Browser.CHROME,
+ platform: BrowserPlatform.LINUX,
+ buildId: testChromeBuildId,
+ });
+ return undefined;
+ } catch (err) {
+ return err as Error;
+ }
+ }
+ assert.strictEqual(
+ (await installThatThrows())?.message,
+ `The browser folder (${expectedOutputPath}) exists but the executable (${computeExecutablePath(
+ {
+ cacheDir: tmpDir,
+ browser: Browser.CHROME,
+ platform: BrowserPlatform.LINUX,
+ buildId: testChromeBuildId,
+ }
+ )}) is missing`
+ );
+ assert.strictEqual(fs.existsSync(expectedOutputPath), true);
+ });
+
it('should download a buildId that is a zip archive', async function () {
this.timeout(60000);
const expectedOutputPath = path.join(
@@ -100,30 +137,21 @@ describe('Chrome install', () => {
);
});
- it('throws on invalid URL', async function () {
+ it('falls back to the chrome-for-testing dashboard URLs if URL is not available', async function () {
const expectedOutputPath = path.join(
tmpDir,
'chrome',
`${BrowserPlatform.LINUX}-${testChromeBuildId}`
);
assert.strictEqual(fs.existsSync(expectedOutputPath), false);
-
- async function installThatThrows(): Promise<unknown> {
- try {
- await install({
- cacheDir: tmpDir,
- browser: Browser.CHROME,
- platform: BrowserPlatform.LINUX,
- buildId: testChromeBuildId,
- baseUrl: 'https://127.0.0.1',
- });
- return undefined;
- } catch (err) {
- return err;
- }
- }
- assert.ok(await installThatThrows());
- assert.strictEqual(fs.existsSync(expectedOutputPath), false);
+ await install({
+ cacheDir: tmpDir,
+ browser: Browser.CHROME,
+ platform: BrowserPlatform.LINUX,
+ buildId: testChromeBuildId,
+ baseUrl: 'https://127.0.0.1',
+ });
+ assert.strictEqual(fs.existsSync(expectedOutputPath), true);
});
describe('with proxy', () => {
@@ -198,7 +226,7 @@ describe('Chrome install', () => {
true
);
assert.deepStrictEqual(proxiedRequestUrls, [
- getServerUrl() + '/113.0.5672.0/linux64/chrome-linux64.zip',
+ getServerUrl() + `/${testChromeBuildId}/linux64/chrome-linux64.zip`,
]);
assert.deepStrictEqual(proxiedRequestHosts, [
getServerUrl().replace('http://', ''),
@@ -223,7 +251,7 @@ describe('Chrome install', () => {
assert.strictEqual(browser.path, expectedOutputPath);
assert.ok(fs.existsSync(expectedOutputPath));
assert.deepStrictEqual(proxiedRequestUrls, [
- getServerUrl() + '/113.0.5672.0/linux64/chrome-linux64.zip',
+ getServerUrl() + `/${testChromeBuildId}/linux64/chrome-linux64.zip`,
]);
assert.deepStrictEqual(proxiedRequestHosts, [
getServerUrl().replace('http://', ''),
diff --git a/remote/test/puppeteer/packages/browsers/test/src/chromedriver/chromedriver-data.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/chromedriver/chromedriver-data.spec.ts
index 62522d88f4..8a9d07f667 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/chromedriver/chromedriver-data.spec.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/chromedriver/chromedriver-data.spec.ts
@@ -18,23 +18,23 @@ describe('ChromeDriver', () => {
it('should resolve download URLs', () => {
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.LINUX, '115.0.5763.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5763.0/linux64/chromedriver-linux64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/linux64/chromedriver-linux64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.MAC, '115.0.5763.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5763.0/mac-x64/chromedriver-mac-x64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/mac-x64/chromedriver-mac-x64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.MAC_ARM, '115.0.5763.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5763.0/mac-arm64/chromedriver-mac-arm64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/mac-arm64/chromedriver-mac-arm64.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.WIN32, '115.0.5763.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5763.0/win32/chromedriver-win32.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/win32/chromedriver-win32.zip'
);
assert.strictEqual(
resolveDownloadUrl(BrowserPlatform.WIN64, '115.0.5763.0'),
- 'https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5763.0/win64/chromedriver-win64.zip'
+ 'https://storage.googleapis.com/chrome-for-testing-public/115.0.5763.0/win64/chromedriver-win64.zip'
);
});
diff --git a/remote/test/puppeteer/packages/browsers/test/src/chromium/chromium-data.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/chromium/chromium-data.spec.ts
index 601efccc47..ecb7946c99 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/chromium/chromium-data.spec.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/chromium/chromium-data.spec.ts
@@ -11,6 +11,7 @@ import {BrowserPlatform} from '../../../lib/cjs/browser-data/browser-data.js';
import {
resolveDownloadUrl,
relativeExecutablePath,
+ compareVersions,
} from '../../../lib/cjs/browser-data/chromium.js';
describe('Chromium', () => {
@@ -59,4 +60,10 @@ describe('Chromium', () => {
path.join('chrome-win', 'chrome.exe')
);
});
+
+ it('should compare versions', async () => {
+ assert.ok(compareVersions('12372323', '12372322') >= 1);
+ assert.ok(compareVersions('12372322', '12372323') <= -1);
+ assert.ok(compareVersions('12372323', '12372323') === 0);
+ });
});
diff --git a/remote/test/puppeteer/packages/browsers/test/src/firefox/firefox-data.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/firefox/firefox-data.spec.ts
index d0bb056090..b5dd2db0b3 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/firefox/firefox-data.spec.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/firefox/firefox-data.spec.ts
@@ -11,6 +11,7 @@ import path from 'path';
import {BrowserPlatform} from '../../../lib/cjs/browser-data/browser-data.js';
import {
+ compareVersions,
createProfile,
relativeExecutablePath,
resolveDownloadUrl,
@@ -94,4 +95,10 @@ describe('Firefox', () => {
assert.ok(text.includes(`user_pref("test", 1);`)); // custom preference.
});
});
+
+ it('should compare versions', async () => {
+ assert.ok(compareVersions('111.0a1', '110.0a1') >= 1);
+ assert.ok(compareVersions('110.0a1', '111.0a1') <= -1);
+ assert.ok(compareVersions('111.0a1', '111.0a1') === 0);
+ });
});
diff --git a/remote/test/puppeteer/packages/browsers/test/src/firefox/install.spec.ts b/remote/test/puppeteer/packages/browsers/test/src/firefox/install.spec.ts
index 1bada43729..29bc76d1b2 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/firefox/install.spec.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/firefox/install.spec.ts
@@ -49,6 +49,32 @@ describe('Firefox install', () => {
assert.ok(fs.existsSync(expectedOutputPath));
});
+ it('throws on invalid URL', async function () {
+ const expectedOutputPath = path.join(
+ tmpDir,
+ 'chrome',
+ `${BrowserPlatform.LINUX}-${testFirefoxBuildId}`
+ );
+ assert.strictEqual(fs.existsSync(expectedOutputPath), false);
+
+ async function installThatThrows(): Promise<unknown> {
+ try {
+ await install({
+ cacheDir: tmpDir,
+ browser: Browser.FIREFOX,
+ platform: BrowserPlatform.LINUX,
+ buildId: testFirefoxBuildId,
+ baseUrl: 'https://127.0.0.1',
+ });
+ return undefined;
+ } catch (err) {
+ return err;
+ }
+ }
+ assert.ok(await installThatThrows());
+ assert.strictEqual(fs.existsSync(expectedOutputPath), false);
+ });
+
// install relies on the `hdiutil` utility on MacOS.
// The utility is not available on other platforms.
(os.platform() === 'darwin' ? it : it.skip)(
diff --git a/remote/test/puppeteer/packages/browsers/test/src/mocha-utils.ts b/remote/test/puppeteer/packages/browsers/test/src/mocha-utils.ts
index 245a0048b2..f3ee678d4e 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/mocha-utils.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/mocha-utils.ts
@@ -1,3 +1,8 @@
+/**
+ * @license
+ * Copyright 2024 Google Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
import debug from 'debug';
export const mochaHooks = {
diff --git a/remote/test/puppeteer/packages/browsers/test/src/tsconfig.json b/remote/test/puppeteer/packages/browsers/test/src/tsconfig.json
index 03eae4a458..097d55c06e 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/tsconfig.json
+++ b/remote/test/puppeteer/packages/browsers/test/src/tsconfig.json
@@ -3,7 +3,7 @@
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext",
- "outDir": "../build",
+ "outDir": "../build"
},
- "references": [{"path": "../../tsconfig.json"}],
+ "references": [{"path": "../../tsconfig.json"}]
}
diff --git a/remote/test/puppeteer/packages/browsers/test/src/versions.ts b/remote/test/puppeteer/packages/browsers/test/src/versions.ts
index 3e13b8fc61..83f26ca41a 100644
--- a/remote/test/puppeteer/packages/browsers/test/src/versions.ts
+++ b/remote/test/puppeteer/packages/browsers/test/src/versions.ts
@@ -4,8 +4,8 @@
* SPDX-License-Identifier: Apache-2.0
*/
-export const testChromeBuildId = '113.0.5672.0';
+export const testChromeBuildId = '121.0.6167.85';
export const testChromiumBuildId = '1083080';
-export const testFirefoxBuildId = '123.0a1';
-export const testChromeDriverBuildId = '115.0.5763.0';
-export const testChromeHeadlessShellBuildId = '118.0.5950.0';
+export const testFirefoxBuildId = '125.0a1';
+export const testChromeDriverBuildId = '121.0.6167.85';
+export const testChromeHeadlessShellBuildId = '121.0.6167.85';