mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
102 lines
2.9 KiB
TypeScript
102 lines
2.9 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2023 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 {install, Browser, BrowserPlatform} from '../../../lib/cjs/main.js';
|
|
import {setupTestServer, getServerUrl, clearCache} from '../utils.js';
|
|
import {testFirefoxBuildId} from '../versions.js';
|
|
|
|
/**
|
|
* Tests in this spec use real download URLs and unpack live browser archives
|
|
* so it requires the network access.
|
|
*/
|
|
describe('Firefox install', () => {
|
|
setupTestServer();
|
|
|
|
let tmpDir = '/tmp/puppeteer-browsers-test';
|
|
|
|
beforeEach(() => {
|
|
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'puppeteer-browsers-test'));
|
|
});
|
|
|
|
afterEach(() => {
|
|
clearCache(tmpDir);
|
|
});
|
|
|
|
it('should download a buildId that is a bzip2 archive', async function () {
|
|
this.timeout(90000);
|
|
const expectedOutputPath = path.join(
|
|
tmpDir,
|
|
'firefox',
|
|
`${BrowserPlatform.LINUX}-${testFirefoxBuildId}`
|
|
);
|
|
assert.strictEqual(fs.existsSync(expectedOutputPath), false);
|
|
const browser = await install({
|
|
cacheDir: tmpDir,
|
|
browser: Browser.FIREFOX,
|
|
platform: BrowserPlatform.LINUX,
|
|
buildId: testFirefoxBuildId,
|
|
baseUrl: getServerUrl(),
|
|
});
|
|
assert.strictEqual(browser.path, expectedOutputPath);
|
|
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)(
|
|
'should download a buildId that is a dmg archive',
|
|
async function () {
|
|
this.timeout(180000);
|
|
const expectedOutputPath = path.join(
|
|
tmpDir,
|
|
'firefox',
|
|
`${BrowserPlatform.MAC}-${testFirefoxBuildId}`
|
|
);
|
|
assert.strictEqual(fs.existsSync(expectedOutputPath), false);
|
|
const browser = await install({
|
|
cacheDir: tmpDir,
|
|
browser: Browser.FIREFOX,
|
|
platform: BrowserPlatform.MAC,
|
|
buildId: testFirefoxBuildId,
|
|
baseUrl: getServerUrl(),
|
|
});
|
|
assert.strictEqual(browser.path, expectedOutputPath);
|
|
assert.ok(fs.existsSync(expectedOutputPath));
|
|
}
|
|
);
|
|
});
|