|
15 | 15 | */
|
16 | 16 |
|
17 | 17 | import * as types from '../types';
|
| 18 | +import * as api from '../api'; |
| 19 | +import { helper } from '../helper'; |
18 | 20 | import { TimeoutError } from '../errors';
|
19 | 21 | import { DeviceDescriptors } from '../deviceDescriptors';
|
20 | 22 | import { Chromium } from './chromium';
|
21 | 23 | import { WebKit } from './webkit';
|
22 | 24 | import { Firefox } from './firefox';
|
23 | 25 |
|
| 26 | +const packageJSON = require('../../package.json'); |
| 27 | + |
| 28 | +for (const className in api) { |
| 29 | + if (typeof (api as any)[className] === 'function') |
| 30 | + helper.installApiHooks(className[0].toLowerCase() + className.substring(1), (api as any)[className]); |
| 31 | +} |
| 32 | + |
24 | 33 | export class Playwright {
|
| 34 | + readonly selectors = api.Selectors._instance(); |
25 | 35 | readonly devices: types.Devices;
|
26 | 36 | readonly errors: { TimeoutError: typeof TimeoutError };
|
27 |
| - readonly chromium: Chromium; |
28 |
| - readonly firefox: Firefox; |
29 |
| - readonly webkit: WebKit; |
| 37 | + readonly chromium: (Chromium|undefined); |
| 38 | + readonly firefox: (Firefox|undefined); |
| 39 | + readonly webkit: (WebKit|undefined); |
30 | 40 |
|
31 |
| - constructor(projectRoot: string, revisions: { chromium_revision: string, firefox_revision: string, webkit_revision: string }) { |
| 41 | + constructor(options: {downloadPath: string, browsers: Array<('firefox'|'webkit'|'chromium')>}) { |
| 42 | + const { |
| 43 | + downloadPath, |
| 44 | + browsers, |
| 45 | + } = options; |
32 | 46 | this.devices = DeviceDescriptors;
|
33 | 47 | this.errors = { TimeoutError };
|
34 |
| - this.chromium = new Chromium(projectRoot, revisions.chromium_revision); |
35 |
| - this.firefox = new Firefox(projectRoot, revisions.firefox_revision); |
36 |
| - this.webkit = new WebKit(projectRoot, revisions.webkit_revision); |
| 48 | + if (browsers.includes('chromium')) |
| 49 | + this.chromium = new Chromium(downloadPath, packageJSON.playwright.chromium_revision); |
| 50 | + if (browsers.includes('webkit')) |
| 51 | + this.webkit = new WebKit(downloadPath, packageJSON.playwright.webkit_revision); |
| 52 | + if (browsers.includes('firefox')) |
| 53 | + this.firefox = new Firefox(downloadPath, packageJSON.playwright.firefox_revision); |
37 | 54 | }
|
38 | 55 | }
|
0 commit comments