mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
parent
16b0a96e78
commit
4d26fb9ccb
@ -185,6 +185,16 @@ function isBrowserDirectory(browserDirectory: string): boolean {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BrowsersJSON = {
|
||||||
|
comment: string
|
||||||
|
browsers: {
|
||||||
|
name: string,
|
||||||
|
revision: string,
|
||||||
|
installByDefault: boolean,
|
||||||
|
revisionOverrides?: {[os: string]: string},
|
||||||
|
}[]
|
||||||
|
};
|
||||||
|
|
||||||
type BrowsersJSONDescriptor = {
|
type BrowsersJSONDescriptor = {
|
||||||
name: string,
|
name: string,
|
||||||
revision: string,
|
revision: string,
|
||||||
@ -192,9 +202,8 @@ type BrowsersJSONDescriptor = {
|
|||||||
dir: string,
|
dir: string,
|
||||||
};
|
};
|
||||||
|
|
||||||
function readDescriptors(packagePath: string) {
|
function readDescriptors(browsersJSON: BrowsersJSON) {
|
||||||
const browsersJSON = require(path.join(packagePath, 'browsers.json'));
|
return (browsersJSON['browsers']).map(obj => {
|
||||||
return (browsersJSON['browsers'] as any[]).map(obj => {
|
|
||||||
const name = obj.name;
|
const name = obj.name;
|
||||||
const revisionOverride = (obj.revisionOverrides || {})[hostPlatform];
|
const revisionOverride = (obj.revisionOverrides || {})[hostPlatform];
|
||||||
const revision = revisionOverride || obj.revision;
|
const revision = revisionOverride || obj.revision;
|
||||||
@ -238,8 +247,8 @@ interface ExecutableImpl extends Executable {
|
|||||||
export class Registry {
|
export class Registry {
|
||||||
private _executables: ExecutableImpl[];
|
private _executables: ExecutableImpl[];
|
||||||
|
|
||||||
constructor(packagePath: string) {
|
constructor(browsersJSON: BrowsersJSON) {
|
||||||
const descriptors = readDescriptors(packagePath);
|
const descriptors = readDescriptors(browsersJSON);
|
||||||
const findExecutablePath = (dir: string, name: keyof typeof EXECUTABLE_PATHS) => {
|
const findExecutablePath = (dir: string, name: keyof typeof EXECUTABLE_PATHS) => {
|
||||||
const tokens = EXECUTABLE_PATHS[name][hostPlatform];
|
const tokens = EXECUTABLE_PATHS[name][hostPlatform];
|
||||||
return tokens ? path.join(dir, ...tokens) : undefined;
|
return tokens ? path.join(dir, ...tokens) : undefined;
|
||||||
@ -616,7 +625,8 @@ export class Registry {
|
|||||||
let linkTarget = '';
|
let linkTarget = '';
|
||||||
try {
|
try {
|
||||||
linkTarget = (await fs.promises.readFile(linkPath)).toString();
|
linkTarget = (await fs.promises.readFile(linkPath)).toString();
|
||||||
const descriptors = readDescriptors(linkTarget);
|
const browsersJSON = require(path.join(linkTarget, 'browsers.json'));
|
||||||
|
const descriptors = readDescriptors(browsersJSON);
|
||||||
for (const browserName of allDownloadable) {
|
for (const browserName of allDownloadable) {
|
||||||
// We retain browsers if they are found in the descriptor.
|
// We retain browsers if they are found in the descriptor.
|
||||||
// Note, however, that there are older versions out in the wild that rely on
|
// Note, however, that there are older versions out in the wild that rely on
|
||||||
@ -682,4 +692,4 @@ export async function installDefaultBrowsersForNpmInstall() {
|
|||||||
await registry.install();
|
await registry.install();
|
||||||
}
|
}
|
||||||
|
|
||||||
export const registry = new Registry(PACKAGE_PATH);
|
export const registry = new Registry(require('../../browsers.json'));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user