@mablhq/mabl-cli 1.48.1 → 1.48.7

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.
Files changed (27) hide show
  1. package/browserEngines/browserEngines.js +2 -0
  2. package/browserEngines/chromiumBrowserEngine.js +1 -1
  3. package/browserEngines/firefoxBrowserEngine.js +14 -4
  4. package/browserEngines/webkitBrowerEngine.js +39 -0
  5. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxBrowserDelegate.js +2 -45
  6. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxElementHandleDelegate.js +2 -56
  7. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxFrameDelegate.js +2 -5
  8. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxPageDelegate.js +2 -70
  9. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractBrowserDelegate.js +50 -0
  10. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractElementHandleDelegate.js +61 -0
  11. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractFrameDelegate.js +10 -0
  12. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractPageDelegate.js +75 -0
  13. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowser.js +3 -0
  14. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowserLauncher.js +2 -0
  15. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitBrowserDelegate.js +11 -0
  16. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitElementHandleDelegate.js +7 -0
  17. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitFrameDelegate.js +10 -0
  18. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitPageDelegate.js +15 -0
  19. package/commands/browserTypes.js +5 -0
  20. package/commands/tests/testsUtil.js +1 -1
  21. package/execution/index.js +1 -1
  22. package/http/requestInterceptor.js +6 -2
  23. package/mablscriptFind/index.js +1 -1
  24. package/observers/mockObserver.js +3 -0
  25. package/package.json +3 -3
  26. package/resources/mablFind.js +1 -1
  27. package/util/browserTestUtils.js +4 -5
@@ -5,10 +5,12 @@ const browserTypes_1 = require("../commands/browserTypes");
5
5
  const chromiumBrowserEngine_1 = require("./chromiumBrowserEngine");
6
6
  const firefoxBrowserEngine_1 = require("./firefoxBrowserEngine");
7
7
  const unsupportedBrowserEngine_1 = require("./unsupportedBrowserEngine");
8
+ const webkitBrowerEngine_1 = require("./webkitBrowerEngine");
8
9
  exports.BrowserTypeToBrowserEngine = {
9
10
  [browserTypes_1.BrowserType.Chrome]: new chromiumBrowserEngine_1.ChromiumBrowserEngine(),
10
11
  [browserTypes_1.BrowserType.Edge]: new chromiumBrowserEngine_1.ChromiumBrowserEngine(),
11
12
  [browserTypes_1.BrowserType.Firefox]: new firefoxBrowserEngine_1.FirefoxBrowserEngine(),
12
13
  [browserTypes_1.BrowserType.Safari]: new unsupportedBrowserEngine_1.UnsupportedBrowserEngine(),
14
+ [browserTypes_1.BrowserType.Webkit]: new webkitBrowerEngine_1.WebkitBrowserEngine(),
13
15
  };
14
16
  exports.DefaultBrowserEngine = exports.BrowserTypeToBrowserEngine[browserTypes_1.BrowserType.Chrome];
@@ -127,7 +127,7 @@ class ChromiumBrowserEngine {
127
127
  retries: 5,
128
128
  });
129
129
  }
130
- generateChromiumPreferencesFile(windowPlacement) {
130
+ generateChromiumPreferencesFile(windowPlacement, _proxyInfo) {
131
131
  const preferences = {
132
132
  download: {
133
133
  open_pdf_in_system_reader: true,
@@ -49,12 +49,21 @@ class FirefoxBrowserEngine {
49
49
  defaultDeviceDescriptor: (0, mobileEmulationUtil_1.getDeviceDescriptorForEmulation)(options.emulationConfig),
50
50
  };
51
51
  }
52
- prepareBrowserPreferencesDirectory(_windowPlacement) {
52
+ prepareBrowserPreferencesDirectory(_windowPlacement, proxyInfo) {
53
+ const customPreferences = {};
54
+ if (proxyInfo === null || proxyInfo === void 0 ? void 0 : proxyInfo.pacProxy) {
55
+ customPreferences['network.proxy.autoconfig_url'] = proxyInfo === null || proxyInfo === void 0 ? void 0 : proxyInfo.pacProxy;
56
+ customPreferences['network.proxy.type'] = 2;
57
+ }
58
+ else if (proxyInfo === null || proxyInfo === void 0 ? void 0 : proxyInfo.socksProxy) {
59
+ customPreferences['network.proxy.socks'] = proxyInfo === null || proxyInfo === void 0 ? void 0 : proxyInfo.socksProxy;
60
+ customPreferences['network.proxy.type'] = 1;
61
+ }
53
62
  return (0, async_retry_1.default)(() => {
54
63
  const preferenceFileName = 'user.js';
55
64
  const tempBrowserPreferencesDirectory = (0, browserEngine_1.getTempBrowserPrefDirectory)(this.name());
56
65
  const prefFilePath = path_1.default.normalize(`${tempBrowserPreferencesDirectory}/${preferenceFileName}`);
57
- fs.writeFileSync(prefFilePath, this.generatePreferencesInfo());
66
+ fs.writeFileSync(prefFilePath, this.generatePreferencesInfo(customPreferences));
58
67
  return tempBrowserPreferencesDirectory;
59
68
  }, {
60
69
  retries: 5,
@@ -63,9 +72,10 @@ class FirefoxBrowserEngine {
63
72
  findBrowserExecutable() {
64
73
  return Promise.resolve('');
65
74
  }
66
- generatePreferencesInfo() {
75
+ generatePreferencesInfo(customPrefs = {}) {
67
76
  const lines = [];
68
- for (const [name, value] of Object.entries(this.getFirefoxUserPrefs())) {
77
+ const prefs = { ...this.getFirefoxUserPrefs(), ...customPrefs };
78
+ for (const [name, value] of Object.entries(prefs)) {
69
79
  lines.push(`user_pref(${JSON.stringify(name)}, ${JSON.stringify(value)});`);
70
80
  }
71
81
  return lines.join('\n');
@@ -0,0 +1,39 @@
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.WebkitBrowserEngine = void 0;
7
+ const mobileEmulationUtil_1 = require("../commands/tests/mobileEmulationUtil");
8
+ const browserEngine_1 = require("./browserEngine");
9
+ const async_retry_1 = __importDefault(require("async-retry"));
10
+ class WebkitBrowserEngine {
11
+ name() {
12
+ return 'webkit';
13
+ }
14
+ getBrowserLaunchOptions(options) {
15
+ return {
16
+ commandLineArgs: [],
17
+ ignoreCommandLineDefaultArgs: [],
18
+ defaultDeviceDescriptor: (0, mobileEmulationUtil_1.getDeviceDescriptorForEmulation)(options.emulationConfig),
19
+ };
20
+ }
21
+ getExecutionEngineBrowserLaunchOptions(options, _proxyInfo) {
22
+ return {
23
+ commandLineArgs: [],
24
+ defaultDeviceDescriptor: (0, mobileEmulationUtil_1.getDeviceDescriptorForEmulation)(options.emulationConfig),
25
+ };
26
+ }
27
+ prepareBrowserPreferencesDirectory(_windowPlacement) {
28
+ return (0, async_retry_1.default)(() => {
29
+ const tempBrowserPreferencesDirectory = (0, browserEngine_1.getTempBrowserPrefDirectory)(this.name());
30
+ return tempBrowserPreferencesDirectory;
31
+ }, {
32
+ retries: 5,
33
+ });
34
+ }
35
+ findBrowserExecutable() {
36
+ return Promise.resolve('');
37
+ }
38
+ }
39
+ exports.WebkitBrowserEngine = WebkitBrowserEngine;
@@ -1,54 +1,11 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.FirefoxBrowserDelegate = void 0;
27
- const playwright = __importStar(require("@playwright/test"));
28
4
  const firefoxPageDelegate_1 = require("./firefoxPageDelegate");
29
- class FirefoxBrowserDelegate {
30
- constructor(context) {
31
- this.context = context;
32
- const contextImpl = playwright._toImpl(context);
33
- this._browser = contextImpl._browser;
34
- }
35
- setDownloadBehavior(_downloadDirectory) {
36
- return Promise.resolve();
37
- }
38
- getCDPSession() {
39
- return this._browser._connection;
40
- }
41
- getBrowser() {
42
- return this._browser;
43
- }
5
+ const nonChromiumAbstractBrowserDelegate_1 = require("../nonChromium/nonChromiumAbstractBrowserDelegate");
6
+ class FirefoxBrowserDelegate extends nonChromiumAbstractBrowserDelegate_1.NonChromiumAbstractBrowserDelegate {
44
7
  createPageDelegate(page) {
45
8
  return new firefoxPageDelegate_1.FirefoxPageDelegate(page);
46
9
  }
47
- downloadsUsingGuids() {
48
- return true;
49
- }
50
- supportsTracing() {
51
- return false;
52
- }
53
10
  }
54
11
  exports.FirefoxBrowserDelegate = FirefoxBrowserDelegate;
@@ -1,61 +1,7 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.FirefoxElementHandleDelegate = void 0;
27
- const playwright = __importStar(require("@playwright/test"));
28
- const logUtils_1 = require("../../../util/logUtils");
29
- class FirefoxElementHandleDelegate {
30
- constructor(elementHandle) {
31
- this.elementHandle = elementHandle;
32
- try {
33
- this.elementImpl = playwright._toImpl(elementHandle);
34
- }
35
- catch {
36
- }
37
- }
38
- getElementImpl() {
39
- return this.elementImpl;
40
- }
41
- checkCDPSession() {
42
- var _a, _b, _c;
43
- if (this.elementImpl === undefined) {
44
- (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.`);
45
- }
46
- else if (this.getCDPSession() === undefined) {
47
- const undefinedField = ((_b = (_a = this.elementImpl) === null || _a === void 0 ? void 0 : _a._context) === null || _b === void 0 ? void 0 : _b._delegate) !== undefined
48
- ? '_client'
49
- : ((_c = this.elementImpl) === null || _c === void 0 ? void 0 : _c._context) !== undefined
50
- ? '_delegate'
51
- : '_context';
52
- (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.`);
53
- }
54
- }
55
- getCDPSession() {
56
- var _a, _b, _c;
57
- this.checkCDPSession();
58
- return (_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
- }
4
+ const nonChromiumAbstractElementHandleDelegate_1 = require("../nonChromium/nonChromiumAbstractElementHandleDelegate");
5
+ class FirefoxElementHandleDelegate extends nonChromiumAbstractElementHandleDelegate_1.NonChromiumAbstractElementHandleDelegate {
60
6
  }
61
7
  exports.FirefoxElementHandleDelegate = FirefoxElementHandleDelegate;
@@ -1,12 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FirefoxFrameDelegate = void 0;
4
+ const nonChromiumAbstractFrameDelegate_1 = require("../nonChromium/nonChromiumAbstractFrameDelegate");
4
5
  const playwrightFrame_1 = require("../playwrightFrame");
5
- class FirefoxFrameDelegate {
6
- constructor(parentPageDelegate, frame) {
7
- this.parentPageDelegate = parentPageDelegate;
8
- this.frame = frame;
9
- }
6
+ class FirefoxFrameDelegate extends nonChromiumAbstractFrameDelegate_1.NonChromiumAbstractFrameDelegate {
10
7
  async addBindingToSecondaryWorld(binding) {
11
8
  var _a;
12
9
  const pageImpl = this.parentPageDelegate.pageImpl;
@@ -1,83 +1,15 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.FirefoxPageDelegate = void 0;
27
- const playwright = __importStar(require("@playwright/test"));
28
4
  const firefoxElementHandleDelegate_1 = require("./firefoxElementHandleDelegate");
29
- const logUtils_1 = require("../../../util/logUtils");
30
5
  const firefoxFrameDelegate_1 = require("./firefoxFrameDelegate");
31
- class FirefoxPageDelegate {
32
- constructor(page) {
33
- this.page = page;
34
- this.pageImpl = playwright._toImpl(page);
35
- }
36
- setFocusEmulationEnabled(_enabled) {
37
- return Promise.resolve();
38
- }
39
- waitForInitialization() {
40
- return Promise.resolve();
41
- }
42
- getBrowserBounds() {
43
- return undefined;
44
- }
45
- setBrowserBounds(_width, _height) {
46
- return Promise.resolve();
47
- }
48
- getTargetId() {
49
- return this.page.mainFrame()._id;
50
- }
51
- createCDPSession() {
52
- var _a;
53
- return Promise.resolve((_a = this.pageImpl._delegate) === null || _a === void 0 ? void 0 : _a._session);
54
- }
55
- makeCDPCall(method, paramArgs) {
56
- return this.getCDPSession().send(method, paramArgs);
57
- }
6
+ const nonChromiumAbstractPageDelegate_1 = require("../nonChromium/nonChromiumAbstractPageDelegate");
7
+ class FirefoxPageDelegate extends nonChromiumAbstractPageDelegate_1.NonChromiumAbstractPageDelegate {
58
8
  createElementHandleDelegate(element) {
59
9
  return new firefoxElementHandleDelegate_1.FirefoxElementHandleDelegate(element);
60
10
  }
61
- getCDPSession() {
62
- var _a, _b;
63
- this.checkCDPSession();
64
- return (_b = (_a = this.pageImpl) === null || _a === void 0 ? void 0 : _a._delegate) === null || _b === void 0 ? void 0 : _b._session;
65
- }
66
- checkCDPSession() {
67
- var _a, _b, _c, _d;
68
- if (((_b = (_a = this.pageImpl) === null || _a === void 0 ? void 0 : _a._delegate) === null || _b === void 0 ? void 0 : _b._session) === undefined) {
69
- const undefinedField = ((_d = (_c = this.pageImpl) === null || _c === void 0 ? void 0 : _c._delegate) === null || _d === void 0 ? void 0 : _d._session) !== undefined
70
- ? '_session'
71
- : '_delegate';
72
- (0, logUtils_1.logInternal)(`Unable to get the CDP Session of the page (${undefinedField} is undefined).
73
- Creating a fallback session. Some functionality might not work as expected.`);
74
- }
75
- }
76
11
  createFrameDelegate(frame) {
77
12
  return new firefoxFrameDelegate_1.FirefoxFrameDelegate(this, frame);
78
13
  }
79
- enableScreencastMode() {
80
- return Promise.resolve();
81
- }
82
14
  }
83
15
  exports.FirefoxPageDelegate = FirefoxPageDelegate;
@@ -0,0 +1,50 @@
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.NonChromiumAbstractBrowserDelegate = void 0;
27
+ const playwright = __importStar(require("@playwright/test"));
28
+ class NonChromiumAbstractBrowserDelegate {
29
+ constructor(context) {
30
+ this.context = context;
31
+ const contextImpl = playwright._toImpl(context);
32
+ this._browser = contextImpl._browser;
33
+ }
34
+ setDownloadBehavior(_downloadDirectory) {
35
+ return Promise.resolve();
36
+ }
37
+ getCDPSession() {
38
+ return this._browser._connection;
39
+ }
40
+ getBrowser() {
41
+ return this._browser;
42
+ }
43
+ downloadsUsingGuids() {
44
+ return true;
45
+ }
46
+ supportsTracing() {
47
+ return false;
48
+ }
49
+ }
50
+ exports.NonChromiumAbstractBrowserDelegate = NonChromiumAbstractBrowserDelegate;
@@ -0,0 +1,61 @@
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/test"));
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
+ getElementImpl() {
39
+ return this.elementImpl;
40
+ }
41
+ checkCDPSession() {
42
+ var _a, _b, _c;
43
+ if (this.elementImpl === undefined) {
44
+ (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.`);
45
+ }
46
+ else if (this.getCDPSession() === undefined) {
47
+ const undefinedField = ((_b = (_a = this.elementImpl) === null || _a === void 0 ? void 0 : _a._context) === null || _b === void 0 ? void 0 : _b._delegate) !== undefined
48
+ ? '_client'
49
+ : ((_c = this.elementImpl) === null || _c === void 0 ? void 0 : _c._context) !== undefined
50
+ ? '_delegate'
51
+ : '_context';
52
+ (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.`);
53
+ }
54
+ }
55
+ getCDPSession() {
56
+ var _a, _b, _c;
57
+ this.checkCDPSession();
58
+ return (_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
+ }
60
+ }
61
+ exports.NonChromiumAbstractElementHandleDelegate = NonChromiumAbstractElementHandleDelegate;
@@ -0,0 +1,10 @@
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
+ }
10
+ exports.NonChromiumAbstractFrameDelegate = NonChromiumAbstractFrameDelegate;
@@ -0,0 +1,75 @@
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/test"));
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
+ }
75
+ exports.NonChromiumAbstractPageDelegate = NonChromiumAbstractPageDelegate;
@@ -36,6 +36,7 @@ const path_1 = __importDefault(require("path"));
36
36
  const fs_extra_1 = __importDefault(require("fs-extra"));
37
37
  const firefoxBrowserDelegate_1 = require("./firefox/firefoxBrowserDelegate");
38
38
  const chromiumBrowserDelegate_1 = require("./chromium/chromiumBrowserDelegate");
39
+ const webkitBrowserDelegate_1 = require("./webkit/webkitBrowserDelegate");
39
40
  class PlaywrightBrowser extends events_1.default {
40
41
  constructor(defaultContext, downloadDirectory, browserWSEndpoint, browserDelegate, preferenceDirectory, disableFocusEmulation) {
41
42
  super();
@@ -168,6 +169,8 @@ function getBrowserDelegate(browserType, browserContext) {
168
169
  return new chromiumBrowserDelegate_1.ChromiumBrowserDelegate(browserContext);
169
170
  case playwright.firefox:
170
171
  return new firefoxBrowserDelegate_1.FirefoxBrowserDelegate(browserContext);
172
+ case playwright.webkit:
173
+ return new webkitBrowserDelegate_1.WebkitBrowserDelegate(browserContext);
171
174
  default:
172
175
  throw new Error(`Unsupported browser type: ${browserType}`);
173
176
  }
@@ -66,6 +66,8 @@ function getPlaywrightBrowserType(browserType) {
66
66
  return test_1.chromium;
67
67
  case browserTypes_1.BrowserType.Firefox:
68
68
  return test_1.firefox;
69
+ case browserTypes_1.BrowserType.Webkit:
70
+ return test_1.webkit;
69
71
  default:
70
72
  throw new Error(`Unsupported browser type: ${browserType}`);
71
73
  }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebkitBrowserDelegate = void 0;
4
+ const webkitPageDelegate_1 = require("./webkitPageDelegate");
5
+ const nonChromiumAbstractBrowserDelegate_1 = require("../nonChromium/nonChromiumAbstractBrowserDelegate");
6
+ class WebkitBrowserDelegate extends nonChromiumAbstractBrowserDelegate_1.NonChromiumAbstractBrowserDelegate {
7
+ createPageDelegate(page) {
8
+ return new webkitPageDelegate_1.WebkitPageDelegate(page);
9
+ }
10
+ }
11
+ exports.WebkitBrowserDelegate = WebkitBrowserDelegate;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebkitElementHandleDelegate = void 0;
4
+ const nonChromiumAbstractElementHandleDelegate_1 = require("../nonChromium/nonChromiumAbstractElementHandleDelegate");
5
+ class WebkitElementHandleDelegate extends nonChromiumAbstractElementHandleDelegate_1.NonChromiumAbstractElementHandleDelegate {
6
+ }
7
+ exports.WebkitElementHandleDelegate = WebkitElementHandleDelegate;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebkitFrameDelegate = void 0;
4
+ const nonChromiumAbstractFrameDelegate_1 = require("../nonChromium/nonChromiumAbstractFrameDelegate");
5
+ class WebkitFrameDelegate extends nonChromiumAbstractFrameDelegate_1.NonChromiumAbstractFrameDelegate {
6
+ addBindingToSecondaryWorld(_binding) {
7
+ return Promise.resolve();
8
+ }
9
+ }
10
+ exports.WebkitFrameDelegate = WebkitFrameDelegate;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebkitPageDelegate = void 0;
4
+ const webkitElementHandleDelegate_1 = require("./webkitElementHandleDelegate");
5
+ const webkitFrameDelegate_1 = require("./webkitFrameDelegate");
6
+ const nonChromiumAbstractPageDelegate_1 = require("../nonChromium/nonChromiumAbstractPageDelegate");
7
+ class WebkitPageDelegate extends nonChromiumAbstractPageDelegate_1.NonChromiumAbstractPageDelegate {
8
+ createElementHandleDelegate(element) {
9
+ return new webkitElementHandleDelegate_1.WebkitElementHandleDelegate(element);
10
+ }
11
+ createFrameDelegate(frame) {
12
+ return new webkitFrameDelegate_1.WebkitFrameDelegate(this, frame);
13
+ }
14
+ }
15
+ exports.WebkitPageDelegate = WebkitPageDelegate;
@@ -8,6 +8,7 @@ var BrowserType;
8
8
  BrowserType["Firefox"] = "firefox";
9
9
  BrowserType["InternetExplorer"] = "internet_explorer";
10
10
  BrowserType["Safari"] = "safari";
11
+ BrowserType["Webkit"] = "webkit";
11
12
  })(BrowserType = exports.BrowserType || (exports.BrowserType = {}));
12
13
  exports.SupportedBrowserTypeProperties = {
13
14
  chrome: { browserName: 'chrome', browserReleaseChannel: 'chrome' },
@@ -17,5 +18,9 @@ exports.SupportedBrowserTypeProperties = {
17
18
  browserName: 'safari',
18
19
  browserReleaseChannel: 'webkit',
19
20
  },
21
+ webkit: {
22
+ browserName: 'webkit',
23
+ browserReleaseChannel: 'webkit',
24
+ },
20
25
  };
21
26
  exports.DefaultBrowserProperties = exports.SupportedBrowserTypeProperties.chrome;
@@ -125,7 +125,7 @@ async function createBrowser(engine, options) {
125
125
  }
126
126
  exports.createBrowser = createBrowser;
127
127
  async function createBrowserForExecutionEngine(engine, proxyInfo, options) {
128
- const userDataDir = await engine.prepareBrowserPreferencesDirectory();
128
+ const userDataDir = await engine.prepareBrowserPreferencesDirectory(undefined, proxyInfo);
129
129
  const launchOptions = engine.getExecutionEngineBrowserLaunchOptions(options, proxyInfo);
130
130
  const maybeBrowser = await maybeLaunchBrowser({
131
131
  ...options,