@mablhq/mabl-cli 2.51.1 → 2.51.4
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/api/featureSet.js +2 -2
- package/browserLauncher/index.js +8 -0
- package/browserLauncher/index.js.LICENSE.txt +28 -0
- package/commands/tests/testsUtil.js +1 -1
- package/commands/tests/tests_cmds/import_cmds/import_playwright.js +7 -1
- package/core/execution/ApiTestUtils.js +81 -1
- package/execution/index.js +1 -1
- package/package.json +1 -1
- package/browserLauncher/browser.js +0 -2
- package/browserLauncher/browserEvent.js +0 -11
- package/browserLauncher/browserLauncher.js +0 -17
- package/browserLauncher/browserLauncherEventEmitter.js +0 -2
- package/browserLauncher/browserLauncherFactory.js +0 -30
- package/browserLauncher/elementHandle.js +0 -30
- package/browserLauncher/errors.js +0 -26
- package/browserLauncher/frame.js +0 -17
- package/browserLauncher/frameBase.js +0 -10
- package/browserLauncher/httpRequest.js +0 -2
- package/browserLauncher/httpResponse.js +0 -2
- package/browserLauncher/jsHandle.js +0 -2
- package/browserLauncher/page.js +0 -2
- package/browserLauncher/pageEvent.js +0 -17
- package/browserLauncher/playwrightBrowserLauncher/browserDelegate.js +0 -2
- package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumBrowserDelegate.js +0 -61
- package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumElementHandleDelegate.js +0 -129
- package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumFrameDelegate.js +0 -24
- package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumPageDelegate.js +0 -145
- package/browserLauncher/playwrightBrowserLauncher/elementHandleDelegate.js +0 -2
- package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxBrowserDelegate.js +0 -50
- package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxElementHandleDelegate.js +0 -11
- package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxFrameDelegate.js +0 -26
- package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxPageDelegate.js +0 -15
- package/browserLauncher/playwrightBrowserLauncher/frameDelegate.js +0 -2
- package/browserLauncher/playwrightBrowserLauncher/internals.js +0 -2
- package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractBrowserDelegate.js +0 -15
- package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractElementHandleDelegate.js +0 -73
- package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractFrameDelegate.js +0 -13
- package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractPageDelegate.js +0 -81
- package/browserLauncher/playwrightBrowserLauncher/pageDelegate.js +0 -2
- package/browserLauncher/playwrightBrowserLauncher/playwrightApiResponse.js +0 -18
- package/browserLauncher/playwrightBrowserLauncher/playwrightBrowser.js +0 -259
- package/browserLauncher/playwrightBrowserLauncher/playwrightBrowserLauncher.js +0 -97
- package/browserLauncher/playwrightBrowserLauncher/playwrightDom.js +0 -319
- package/browserLauncher/playwrightBrowserLauncher/playwrightFrame.js +0 -265
- package/browserLauncher/playwrightBrowserLauncher/playwrightHttpRequest.js +0 -76
- package/browserLauncher/playwrightBrowserLauncher/playwrightHttpResponse.js +0 -26
- package/browserLauncher/playwrightBrowserLauncher/playwrightPage.js +0 -377
- package/browserLauncher/playwrightBrowserLauncher/simplePlaywrightLogger.js +0 -36
- package/browserLauncher/playwrightBrowserLauncher/webkit/webkitBrowserDelegate.js +0 -50
- package/browserLauncher/playwrightBrowserLauncher/webkit/webkitElementHandleDelegate.js +0 -16
- package/browserLauncher/playwrightBrowserLauncher/webkit/webkitFrameDelegate.js +0 -19
- package/browserLauncher/playwrightBrowserLauncher/webkit/webkitPageDelegate.js +0 -15
- package/browserLauncher/playwrightBrowserLauncher/wrappers.js +0 -25
- package/browserLauncher/types.js +0 -28
- package/browserLauncher/utils.js +0 -9
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FirefoxFrameDelegate = void 0;
|
|
4
|
-
const types_1 = require("../../types");
|
|
5
|
-
const nonChromiumAbstractFrameDelegate_1 = require("../nonChromium/nonChromiumAbstractFrameDelegate");
|
|
6
|
-
class FirefoxFrameDelegate extends nonChromiumAbstractFrameDelegate_1.NonChromiumAbstractFrameDelegate {
|
|
7
|
-
addBindingToSecondaryWorld(_binding) {
|
|
8
|
-
return Promise.resolve();
|
|
9
|
-
}
|
|
10
|
-
async url() {
|
|
11
|
-
let url = this.frame.url();
|
|
12
|
-
if (url === '') {
|
|
13
|
-
url = await this.frame.evaluate(() => window.location.href);
|
|
14
|
-
}
|
|
15
|
-
return url;
|
|
16
|
-
}
|
|
17
|
-
getLifecycleEventStrategy(value) {
|
|
18
|
-
const waitForNetworkIdle = value === types_1.LifecycleEvent.NetworkIdle;
|
|
19
|
-
let waitUntil = value !== null && value !== void 0 ? value : types_1.LifecycleEvent.Load;
|
|
20
|
-
if (waitForNetworkIdle) {
|
|
21
|
-
waitUntil = types_1.LifecycleEvent.Load;
|
|
22
|
-
}
|
|
23
|
-
return { waitUntil, waitForNetworkIdle };
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.FirefoxFrameDelegate = FirefoxFrameDelegate;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FirefoxPageDelegate = void 0;
|
|
4
|
-
const firefoxElementHandleDelegate_1 = require("./firefoxElementHandleDelegate");
|
|
5
|
-
const firefoxFrameDelegate_1 = require("./firefoxFrameDelegate");
|
|
6
|
-
const nonChromiumAbstractPageDelegate_1 = require("../nonChromium/nonChromiumAbstractPageDelegate");
|
|
7
|
-
class FirefoxPageDelegate extends nonChromiumAbstractPageDelegate_1.NonChromiumAbstractPageDelegate {
|
|
8
|
-
createElementHandleDelegate(element) {
|
|
9
|
-
return new firefoxElementHandleDelegate_1.FirefoxElementHandleDelegate(element);
|
|
10
|
-
}
|
|
11
|
-
createFrameDelegate(frame) {
|
|
12
|
-
return new firefoxFrameDelegate_1.FirefoxFrameDelegate(this, frame);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.FirefoxPageDelegate = FirefoxPageDelegate;
|
package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractBrowserDelegate.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NonChromiumAbstractBrowserDelegate = void 0;
|
|
4
|
-
class NonChromiumAbstractBrowserDelegate {
|
|
5
|
-
setDownloadBehavior(_downloadDirectory) {
|
|
6
|
-
return Promise.resolve();
|
|
7
|
-
}
|
|
8
|
-
downloadsUsingGuids() {
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
supportsTracing() {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.NonChromiumAbstractBrowserDelegate = NonChromiumAbstractBrowserDelegate;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.NonChromiumAbstractElementHandleDelegate = void 0;
|
|
27
|
-
const playwright = __importStar(require("playwright"));
|
|
28
|
-
const logUtils_1 = require("../../../util/logUtils");
|
|
29
|
-
class NonChromiumAbstractElementHandleDelegate {
|
|
30
|
-
constructor(elementHandle) {
|
|
31
|
-
this.elementHandle = elementHandle;
|
|
32
|
-
try {
|
|
33
|
-
this.elementImpl = playwright._toImpl(elementHandle);
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
getInnerText() {
|
|
39
|
-
return this.elementHandle.evaluate((el) => {
|
|
40
|
-
if (el.tagName.toUpperCase() === 'SELECT') {
|
|
41
|
-
return Array.from(el.options)
|
|
42
|
-
.filter((option) => { var _a; return (_a = option.text) === null || _a === void 0 ? void 0 : _a.trim(); })
|
|
43
|
-
.map((option) => option.text)
|
|
44
|
-
.join('\n');
|
|
45
|
-
}
|
|
46
|
-
return el.innerText;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
highlight(_highlightDurationMillis, _highlightPhases) {
|
|
50
|
-
(0, logUtils_1.logInternal)('Highlighting is not supported on non-chromium browsers.');
|
|
51
|
-
return Promise.resolve();
|
|
52
|
-
}
|
|
53
|
-
getElementImpl() {
|
|
54
|
-
return this.elementImpl;
|
|
55
|
-
}
|
|
56
|
-
getCDPSession() {
|
|
57
|
-
var _a, _b, _c, _d, _e, _f;
|
|
58
|
-
const session = (_c = (_b = (_a = this.elementImpl) === null || _a === void 0 ? void 0 : _a._context) === null || _b === void 0 ? void 0 : _b._delegate) === null || _c === void 0 ? void 0 : _c._session;
|
|
59
|
-
if (this.elementImpl === undefined) {
|
|
60
|
-
(0, logUtils_1.logInternal)(`Unable to get the Element's internal implementation. Some functionality, such as getting the clickable point or element highlighting might not work.`);
|
|
61
|
-
}
|
|
62
|
-
else if (session === undefined) {
|
|
63
|
-
const undefinedField = ((_e = (_d = this.elementImpl) === null || _d === void 0 ? void 0 : _d._context) === null || _e === void 0 ? void 0 : _e._delegate) !== undefined
|
|
64
|
-
? '_client'
|
|
65
|
-
: ((_f = this.elementImpl) === null || _f === void 0 ? void 0 : _f._context) !== undefined
|
|
66
|
-
? '_delegate'
|
|
67
|
-
: '_context';
|
|
68
|
-
(0, logUtils_1.logInternal)(`Unable to get the CDP Session of the element handle. ${undefinedField} is undefined. Some functionality, such as element highlighting will not work.`);
|
|
69
|
-
}
|
|
70
|
-
return session;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.NonChromiumAbstractElementHandleDelegate = NonChromiumAbstractElementHandleDelegate;
|
package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractFrameDelegate.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NonChromiumAbstractFrameDelegate = void 0;
|
|
4
|
-
class NonChromiumAbstractFrameDelegate {
|
|
5
|
-
constructor(parentPageDelegate, frame) {
|
|
6
|
-
this.parentPageDelegate = parentPageDelegate;
|
|
7
|
-
this.frame = frame;
|
|
8
|
-
}
|
|
9
|
-
url() {
|
|
10
|
-
return Promise.resolve(this.frame.url());
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
exports.NonChromiumAbstractFrameDelegate = NonChromiumAbstractFrameDelegate;
|
package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractPageDelegate.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.NonChromiumAbstractPageDelegate = void 0;
|
|
27
|
-
const playwright = __importStar(require("playwright"));
|
|
28
|
-
const logUtils_1 = require("../../../util/logUtils");
|
|
29
|
-
class NonChromiumAbstractPageDelegate {
|
|
30
|
-
constructor(page) {
|
|
31
|
-
this.page = page;
|
|
32
|
-
this.pageImpl = playwright._toImpl(page);
|
|
33
|
-
}
|
|
34
|
-
setFocusEmulationEnabled(_enabled) {
|
|
35
|
-
return Promise.resolve();
|
|
36
|
-
}
|
|
37
|
-
waitForInitialization() {
|
|
38
|
-
return Promise.resolve();
|
|
39
|
-
}
|
|
40
|
-
getBrowserBounds() {
|
|
41
|
-
return undefined;
|
|
42
|
-
}
|
|
43
|
-
setBrowserBounds(_width, _height) {
|
|
44
|
-
return Promise.resolve();
|
|
45
|
-
}
|
|
46
|
-
getTargetId() {
|
|
47
|
-
return this.page.mainFrame()._id;
|
|
48
|
-
}
|
|
49
|
-
createCDPSession() {
|
|
50
|
-
var _a;
|
|
51
|
-
return Promise.resolve((_a = this.pageImpl._delegate) === null || _a === void 0 ? void 0 : _a._session);
|
|
52
|
-
}
|
|
53
|
-
makeCDPCall(method, paramArgs) {
|
|
54
|
-
return this.getCDPSession().send(method, paramArgs);
|
|
55
|
-
}
|
|
56
|
-
getCDPSession() {
|
|
57
|
-
var _a, _b;
|
|
58
|
-
this.checkCDPSession();
|
|
59
|
-
return (_b = (_a = this.pageImpl) === null || _a === void 0 ? void 0 : _a._delegate) === null || _b === void 0 ? void 0 : _b._session;
|
|
60
|
-
}
|
|
61
|
-
checkCDPSession() {
|
|
62
|
-
var _a, _b, _c, _d;
|
|
63
|
-
if (((_b = (_a = this.pageImpl) === null || _a === void 0 ? void 0 : _a._delegate) === null || _b === void 0 ? void 0 : _b._session) === undefined) {
|
|
64
|
-
const undefinedField = ((_d = (_c = this.pageImpl) === null || _c === void 0 ? void 0 : _c._delegate) === null || _d === void 0 ? void 0 : _d._session) !== undefined
|
|
65
|
-
? '_session'
|
|
66
|
-
: '_delegate';
|
|
67
|
-
(0, logUtils_1.logInternal)(`Unable to get the CDP Session of the page (${undefinedField} is undefined).
|
|
68
|
-
Creating a fallback session. Some functionality might not work as expected.`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
enableScreencastMode() {
|
|
72
|
-
return Promise.resolve();
|
|
73
|
-
}
|
|
74
|
-
getContentAsMhtml() {
|
|
75
|
-
return Promise.resolve(undefined);
|
|
76
|
-
}
|
|
77
|
-
resizeViewport() {
|
|
78
|
-
return Promise.resolve();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.NonChromiumAbstractPageDelegate = NonChromiumAbstractPageDelegate;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PlaywrightApiResponse = void 0;
|
|
4
|
-
class PlaywrightApiResponse {
|
|
5
|
-
constructor(response) {
|
|
6
|
-
this.response = response;
|
|
7
|
-
}
|
|
8
|
-
headers() {
|
|
9
|
-
return this.response.headersArray();
|
|
10
|
-
}
|
|
11
|
-
status() {
|
|
12
|
-
return this.response.status();
|
|
13
|
-
}
|
|
14
|
-
url() {
|
|
15
|
-
return this.response.url();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.PlaywrightApiResponse = PlaywrightApiResponse;
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.PlaywrightBrowser = void 0;
|
|
30
|
-
const events_1 = __importDefault(require("events"));
|
|
31
|
-
const playwright = __importStar(require("playwright"));
|
|
32
|
-
const browserLauncher_1 = require("../browserLauncher");
|
|
33
|
-
const playwrightPage_1 = require("./playwrightPage");
|
|
34
|
-
const types_1 = require("../types");
|
|
35
|
-
const path_1 = __importDefault(require("path"));
|
|
36
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
37
|
-
const fsPromises = __importStar(require("fs/promises"));
|
|
38
|
-
const firefoxBrowserDelegate_1 = require("./firefox/firefoxBrowserDelegate");
|
|
39
|
-
const chromiumBrowserDelegate_1 = require("./chromium/chromiumBrowserDelegate");
|
|
40
|
-
const webkitBrowserDelegate_1 = require("./webkit/webkitBrowserDelegate");
|
|
41
|
-
const loggingProvider_1 = require("../../providers/logging/loggingProvider");
|
|
42
|
-
const playwrightApiResponse_1 = require("./playwrightApiResponse");
|
|
43
|
-
const httpUtil_1 = require("../../http/httpUtil");
|
|
44
|
-
const logUtils_1 = require("../../util/logUtils");
|
|
45
|
-
const browserEngine_1 = require("../../browserEngines/browserEngine");
|
|
46
|
-
class PlaywrightBrowser extends events_1.default {
|
|
47
|
-
static async create(browserType, defaultContext, downloadDirectory, browserWSEndpoint, preferenceDirectory, disableFocusEmulation) {
|
|
48
|
-
const delegate = getBrowserDelegate(browserType, defaultContext);
|
|
49
|
-
const browser = new PlaywrightBrowser(defaultContext, downloadDirectory, browserWSEndpoint, delegate, preferenceDirectory, disableFocusEmulation);
|
|
50
|
-
await delegate.setDownloadBehavior(downloadDirectory);
|
|
51
|
-
return browser;
|
|
52
|
-
}
|
|
53
|
-
constructor(defaultContext, downloadDirectory, browserWSEndpoint, browserDelegate, preferenceDirectory, disableFocusEmulation) {
|
|
54
|
-
super();
|
|
55
|
-
this.defaultContext = defaultContext;
|
|
56
|
-
this.downloadDirectory = downloadDirectory;
|
|
57
|
-
this.browserWSEndpoint = browserWSEndpoint;
|
|
58
|
-
this.browserDelegate = browserDelegate;
|
|
59
|
-
this.preferenceDirectory = preferenceDirectory;
|
|
60
|
-
this.disableFocusEmulation = disableFocusEmulation;
|
|
61
|
-
this.playwrightPages = new Map();
|
|
62
|
-
this.cdpSession = browserDelegate.getCDPSession();
|
|
63
|
-
this.defaultContext.on('page', async (page) => {
|
|
64
|
-
this.emit(browserLauncher_1.BrowserEvent.PageCreated, await this.getOrCreatePage(page));
|
|
65
|
-
});
|
|
66
|
-
this.browserDelegate.getBrowser().on('disconnected', () => {
|
|
67
|
-
this.emit(browserLauncher_1.BrowserEvent.Disconnected);
|
|
68
|
-
});
|
|
69
|
-
if (!fs_extra_1.default.existsSync(path_1.default.join(this.downloadDirectory))) {
|
|
70
|
-
fs_extra_1.default.mkdirSync(path_1.default.join(this.downloadDirectory));
|
|
71
|
-
}
|
|
72
|
-
this.defaultContext.on('page', async (playwrightPage) => {
|
|
73
|
-
const page = await this.getOrCreatePage(playwrightPage);
|
|
74
|
-
await page.delegate.enableScreencastMode();
|
|
75
|
-
});
|
|
76
|
-
this.defaultContext.pages().forEach(async (playwrightPage) => {
|
|
77
|
-
const page = await this.getOrCreatePage(playwrightPage);
|
|
78
|
-
await page.delegate.enableScreencastMode();
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
getBrowserPreferencesDirectory() {
|
|
82
|
-
return this.preferenceDirectory;
|
|
83
|
-
}
|
|
84
|
-
async removeBrowserPreferencesDirectory() {
|
|
85
|
-
const tempDirPath = this.getBrowserPreferencesDirectory();
|
|
86
|
-
try {
|
|
87
|
-
if (!tempDirPath.includes(browserEngine_1.BROWSER_PREFERENCES_DIRECTORY_SUFFIX)) {
|
|
88
|
-
throw new Error(`Temp directory path does not contain "${browserEngine_1.BROWSER_PREFERENCES_DIRECTORY_SUFFIX}", aborting removal`);
|
|
89
|
-
}
|
|
90
|
-
await fsPromises.rm(tempDirPath, {
|
|
91
|
-
recursive: true,
|
|
92
|
-
force: true,
|
|
93
|
-
maxRetries: 10,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
getRunnerType() {
|
|
100
|
-
return types_1.RunnerType.Playwright;
|
|
101
|
-
}
|
|
102
|
-
makeCDPCall(method, paramArgs) {
|
|
103
|
-
return this.cdpSession.send(method, paramArgs);
|
|
104
|
-
}
|
|
105
|
-
close() {
|
|
106
|
-
return this.defaultContext.close();
|
|
107
|
-
}
|
|
108
|
-
disconnect() {
|
|
109
|
-
return this.close();
|
|
110
|
-
}
|
|
111
|
-
reconnect() {
|
|
112
|
-
return Promise.resolve(this);
|
|
113
|
-
}
|
|
114
|
-
async newPage() {
|
|
115
|
-
const page = await this.getOrCreatePage(await this.defaultContext.newPage());
|
|
116
|
-
if (this.defaultViewportSize) {
|
|
117
|
-
await page.setViewport(this.defaultViewportSize);
|
|
118
|
-
}
|
|
119
|
-
return page;
|
|
120
|
-
}
|
|
121
|
-
isConnected() {
|
|
122
|
-
return this.browserDelegate.getBrowser().isConnected();
|
|
123
|
-
}
|
|
124
|
-
wsEndpoint() {
|
|
125
|
-
return this.browserWSEndpoint;
|
|
126
|
-
}
|
|
127
|
-
getDownloadDirectory() {
|
|
128
|
-
return this.downloadDirectory;
|
|
129
|
-
}
|
|
130
|
-
async pages() {
|
|
131
|
-
const playwrightPages = this.getDefaultContext()
|
|
132
|
-
.pages()
|
|
133
|
-
.map((page) => this.getOrCreatePage(page));
|
|
134
|
-
const settledPages = await Promise.allSettled(playwrightPages);
|
|
135
|
-
return (0, logUtils_1.getPromiseSettledValues)(settledPages);
|
|
136
|
-
}
|
|
137
|
-
addCookies(cookies) {
|
|
138
|
-
return this.getDefaultContext().addCookies(cookies);
|
|
139
|
-
}
|
|
140
|
-
getCookies(url) {
|
|
141
|
-
return this.getDefaultContext().cookies(url);
|
|
142
|
-
}
|
|
143
|
-
async getExtensionBackgroundPage(extensionId) {
|
|
144
|
-
const backgroundExtensionPage = this.defaultContext
|
|
145
|
-
.backgroundPages()
|
|
146
|
-
.find((page) => page.url().includes(extensionId));
|
|
147
|
-
if (!backgroundExtensionPage) {
|
|
148
|
-
throw new Error('mabl test initialization failure, unable to locate mabl extension page, please try again');
|
|
149
|
-
}
|
|
150
|
-
return Promise.resolve(this.getOrCreatePage(backgroundExtensionPage));
|
|
151
|
-
}
|
|
152
|
-
async waitForPage(opener, options) {
|
|
153
|
-
try {
|
|
154
|
-
const playwrightOpener = opener.page;
|
|
155
|
-
const newPage = await this.defaultContext.waitForEvent('page', {
|
|
156
|
-
predicate: async (page) => (await page._opener) === playwrightOpener,
|
|
157
|
-
timeout: options === null || options === void 0 ? void 0 : options.timeout,
|
|
158
|
-
});
|
|
159
|
-
return this.getOrCreatePage(newPage);
|
|
160
|
-
}
|
|
161
|
-
catch (e) {
|
|
162
|
-
if (e instanceof playwright.errors.TimeoutError) {
|
|
163
|
-
throw new browserLauncher_1.RUNNER_ERRORS.TimeoutError(e.message);
|
|
164
|
-
}
|
|
165
|
-
throw new browserLauncher_1.RunnerError(e.message);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
getDefaultContext() {
|
|
169
|
-
return this.defaultContext;
|
|
170
|
-
}
|
|
171
|
-
onPageClose(page) {
|
|
172
|
-
this.playwrightPages.delete(page.getPageId());
|
|
173
|
-
this.emit(browserLauncher_1.BrowserEvent.PageDestroyed, page);
|
|
174
|
-
}
|
|
175
|
-
async getOrCreatePage(page) {
|
|
176
|
-
const pageId = page._guid;
|
|
177
|
-
if (!this.playwrightPages.has(pageId)) {
|
|
178
|
-
const newPage = new playwrightPage_1.PlaywrightPage(page, this, this.browserDelegate.createPageDelegate(page));
|
|
179
|
-
this.playwrightPages.set(pageId, newPage);
|
|
180
|
-
}
|
|
181
|
-
const playwrightPage = this.playwrightPages.get(pageId);
|
|
182
|
-
await playwrightPage.waitForInitialization();
|
|
183
|
-
return playwrightPage;
|
|
184
|
-
}
|
|
185
|
-
exposeFunction(name, callback) {
|
|
186
|
-
return this.defaultContext.exposeFunction(name, callback);
|
|
187
|
-
}
|
|
188
|
-
supportsExposeFunction() {
|
|
189
|
-
return this.browserDelegate.supportsExposeFunction();
|
|
190
|
-
}
|
|
191
|
-
supportsTracing() {
|
|
192
|
-
return this.browserDelegate.supportsTracing();
|
|
193
|
-
}
|
|
194
|
-
maybeSetDefaultViewportSize(viewport) {
|
|
195
|
-
if (!this.defaultViewportSize) {
|
|
196
|
-
this.defaultViewportSize = viewport;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
async makeApiRequest(url, options) {
|
|
200
|
-
const { discardRequestBody, method, maxRedirects, runInNewContext, timeout } = options !== null && options !== void 0 ? options : {};
|
|
201
|
-
const requestContext = await this.createRequestContext(runInNewContext);
|
|
202
|
-
try {
|
|
203
|
-
const response = await requestContext.fetch(url, {
|
|
204
|
-
method,
|
|
205
|
-
ignoreHTTPSErrors: true,
|
|
206
|
-
maxRedirects: maxRedirects !== null && maxRedirects !== void 0 ? maxRedirects : types_1.DefaultApiRequestSettings.defaultMaxRedirects,
|
|
207
|
-
timeout: timeout !== null && timeout !== void 0 ? timeout : types_1.DefaultApiRequestSettings.defaultApiRequestTimeout,
|
|
208
|
-
});
|
|
209
|
-
return new playwrightApiResponse_1.PlaywrightApiResponse(response);
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
loggingProvider_1.logger.error(`Failed to make API request against ${url}`, error);
|
|
213
|
-
throw error;
|
|
214
|
-
}
|
|
215
|
-
finally {
|
|
216
|
-
if (discardRequestBody) {
|
|
217
|
-
try {
|
|
218
|
-
await requestContext.dispose();
|
|
219
|
-
}
|
|
220
|
-
catch (error) {
|
|
221
|
-
loggingProvider_1.logger.warn(`Error caught while attempting to dispose of API requests stored in memory: ${error === null || error === void 0 ? void 0 : error.message}`, error);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
setApiProxy(httpProxy) {
|
|
227
|
-
this.apiProxy = httpProxy;
|
|
228
|
-
}
|
|
229
|
-
async createRequestContext(runInNewContext) {
|
|
230
|
-
const proxy = this.apiProxy ? { server: this.apiProxy } : undefined;
|
|
231
|
-
const headers = {
|
|
232
|
-
'Content-Type': 'text/plain;charset=UTF-8',
|
|
233
|
-
[httpUtil_1.USER_AGENT_HEADER]: httpUtil_1.USER_AGENT,
|
|
234
|
-
};
|
|
235
|
-
const storageState = !runInNewContext
|
|
236
|
-
? await this.defaultContext.storageState()
|
|
237
|
-
: undefined;
|
|
238
|
-
return playwright.request.newContext({
|
|
239
|
-
ignoreHTTPSErrors: true,
|
|
240
|
-
extraHTTPHeaders: headers,
|
|
241
|
-
timeout: types_1.DefaultApiRequestSettings.defaultApiRequestTimeout,
|
|
242
|
-
proxy,
|
|
243
|
-
storageState,
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
exports.PlaywrightBrowser = PlaywrightBrowser;
|
|
248
|
-
function getBrowserDelegate(browserType, browserContext) {
|
|
249
|
-
switch (browserType) {
|
|
250
|
-
case playwright.chromium:
|
|
251
|
-
return new chromiumBrowserDelegate_1.ChromiumBrowserDelegate(browserContext);
|
|
252
|
-
case playwright.firefox:
|
|
253
|
-
return new firefoxBrowserDelegate_1.FirefoxBrowserDelegate(browserContext);
|
|
254
|
-
case playwright.webkit:
|
|
255
|
-
return new webkitBrowserDelegate_1.WebkitBrowserDelegate(browserContext);
|
|
256
|
-
default:
|
|
257
|
-
throw new Error(`Unsupported browser type: ${browserType}`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PlaywrightBrowserLauncher = void 0;
|
|
7
|
-
const playwright_1 = require("playwright");
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const browserTypes_1 = require("../../commands/browserTypes");
|
|
10
|
-
const loggingProvider_1 = require("../../providers/logging/loggingProvider");
|
|
11
|
-
const playwrightBrowser_1 = require("./playwrightBrowser");
|
|
12
|
-
const simplePlaywrightLogger_1 = require("./simplePlaywrightLogger");
|
|
13
|
-
const BROWSER_LAUNCH_TIMEOUT_MS = 60000;
|
|
14
|
-
const DEFAULT_GEOLOCATION = {
|
|
15
|
-
latitude: 41.2208967,
|
|
16
|
-
longitude: -95.8639286,
|
|
17
|
-
};
|
|
18
|
-
class PlaywrightBrowserLauncher {
|
|
19
|
-
async launch(options) {
|
|
20
|
-
var _a, _b, _c, _d, _e, _f;
|
|
21
|
-
const viewport = options.defaultDeviceDescriptor
|
|
22
|
-
? {
|
|
23
|
-
width: options.defaultDeviceDescriptor.width,
|
|
24
|
-
height: options.defaultDeviceDescriptor.height,
|
|
25
|
-
}
|
|
26
|
-
:
|
|
27
|
-
null;
|
|
28
|
-
const playwrightLogger = options.providerLogger
|
|
29
|
-
? simplePlaywrightLogger_1.SimplePlaywrightLogger.createWarningLogger(options.providerLogger)
|
|
30
|
-
: undefined;
|
|
31
|
-
if (!options.userDataDir) {
|
|
32
|
-
loggingProvider_1.logger.error('User data directory is required to launch a persistent chromium context and was not provided with LaunchOptions [{}]', options);
|
|
33
|
-
throw new Error('User data directory is required to launch a persistent chromium context');
|
|
34
|
-
}
|
|
35
|
-
if (!options.downloadPath) {
|
|
36
|
-
loggingProvider_1.logger.error('Download path is required to launch a persistent chromium context and was not provided with LaunchOptions [{}]', options);
|
|
37
|
-
throw new Error('Download path is required to launch a persistent chromium context and was not provided with LaunchOptions');
|
|
38
|
-
}
|
|
39
|
-
const playwrightBrowserType = getPlaywrightBrowserType(options.browserType);
|
|
40
|
-
const defaultContext = await playwrightBrowserType.launchPersistentContext(options.userDataDir, {
|
|
41
|
-
acceptDownloads: true,
|
|
42
|
-
args: options.commandLineArgs,
|
|
43
|
-
bypassCSP: options.bypassContentSecurityPolicy,
|
|
44
|
-
channel: browserTypes_1.SupportedBrowserTypeProperties[options.browserType]
|
|
45
|
-
.browserReleaseChannel,
|
|
46
|
-
deviceScaleFactor: (_a = options.defaultDeviceDescriptor) === null || _a === void 0 ? void 0 : _a.deviceScaleFactor,
|
|
47
|
-
downloadsPath: getFinalDownloadDestination(options.browserType, options.downloadPath),
|
|
48
|
-
executablePath: options.browserPath,
|
|
49
|
-
extraHTTPHeaders: options.extraHttpHeaders,
|
|
50
|
-
geolocation: DEFAULT_GEOLOCATION,
|
|
51
|
-
recordHar: options.harLogFilePath
|
|
52
|
-
? {
|
|
53
|
-
path: options.harLogFilePath,
|
|
54
|
-
mode: 'full',
|
|
55
|
-
}
|
|
56
|
-
: undefined,
|
|
57
|
-
hasTouch: (_b = options.defaultDeviceDescriptor) === null || _b === void 0 ? void 0 : _b.hasTouch,
|
|
58
|
-
headless: options.headless,
|
|
59
|
-
httpCredentials: options.credentials,
|
|
60
|
-
ignoreDefaultArgs: options.ignoreCommandLineDefaultArgs,
|
|
61
|
-
ignoreHTTPSErrors: true,
|
|
62
|
-
isMobile: (_c = options.defaultDeviceDescriptor) === null || _c === void 0 ? void 0 : _c.isMobile,
|
|
63
|
-
locale: (_d = options.localizationOptions) === null || _d === void 0 ? void 0 : _d.locale,
|
|
64
|
-
logger: playwrightLogger,
|
|
65
|
-
permissions: options.permissions,
|
|
66
|
-
proxy: options.proxy,
|
|
67
|
-
timeout: BROWSER_LAUNCH_TIMEOUT_MS,
|
|
68
|
-
timezoneId: (_e = options.localizationOptions) === null || _e === void 0 ? void 0 : _e.timezone_identifier,
|
|
69
|
-
userAgent: (_f = options.userAgent) !== null && _f !== void 0 ? _f : options.defaultUserAgent,
|
|
70
|
-
viewport,
|
|
71
|
-
});
|
|
72
|
-
return playwrightBrowser_1.PlaywrightBrowser.create(playwrightBrowserType, defaultContext, options.downloadPath, '', options.userDataDir, options.disableFocusEmulation);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.PlaywrightBrowserLauncher = PlaywrightBrowserLauncher;
|
|
76
|
-
function getPlaywrightBrowserType(browserType) {
|
|
77
|
-
switch (browserType) {
|
|
78
|
-
case browserTypes_1.BrowserType.Chrome:
|
|
79
|
-
case browserTypes_1.BrowserType.Edge:
|
|
80
|
-
return playwright_1.chromium;
|
|
81
|
-
case browserTypes_1.BrowserType.Firefox:
|
|
82
|
-
return playwright_1.firefox;
|
|
83
|
-
case browserTypes_1.BrowserType.Webkit:
|
|
84
|
-
return playwright_1.webkit;
|
|
85
|
-
default:
|
|
86
|
-
throw new Error(`Unsupported browser type: ${browserType}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
function getFinalDownloadDestination(browserType, downloadPath) {
|
|
90
|
-
switch (browserType) {
|
|
91
|
-
case browserTypes_1.BrowserType.Chrome:
|
|
92
|
-
case browserTypes_1.BrowserType.Edge:
|
|
93
|
-
return downloadPath;
|
|
94
|
-
default:
|
|
95
|
-
return path_1.default.join(downloadPath, 'tmp');
|
|
96
|
-
}
|
|
97
|
-
}
|