@mablhq/mabl-cli 1.48.1 → 1.48.22

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 (46) hide show
  1. package/api/mablApiClient.js +11 -0
  2. package/browserEngines/browserEngines.js +2 -0
  3. package/browserEngines/chromiumBrowserEngine.js +4 -1
  4. package/browserEngines/firefoxBrowserEngine.js +20 -4
  5. package/browserEngines/unsupportedBrowserEngine.js +3 -0
  6. package/browserEngines/webkitBrowerEngine.js +50 -0
  7. package/browserLauncher/elementHandle.js +10 -1
  8. package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumElementHandleDelegate.js +63 -0
  9. package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumPageDelegate.js +25 -10
  10. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxBrowserDelegate.js +5 -12
  11. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxElementHandleDelegate.js +5 -55
  12. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxFrameDelegate.js +2 -5
  13. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxPageDelegate.js +2 -70
  14. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractBrowserDelegate.js +15 -0
  15. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractElementHandleDelegate.js +65 -0
  16. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractFrameDelegate.js +10 -0
  17. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractPageDelegate.js +75 -0
  18. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowser.js +3 -0
  19. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowserLauncher.js +2 -0
  20. package/browserLauncher/playwrightBrowserLauncher/playwrightDom.js +35 -52
  21. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitBrowserDelegate.js +47 -0
  22. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitElementHandleDelegate.js +16 -0
  23. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitFrameDelegate.js +10 -0
  24. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitPageDelegate.js +15 -0
  25. package/commands/browserTypes.js +5 -0
  26. package/commands/constants.js +5 -2
  27. package/commands/datatables/datatables_cmds/create.js +148 -0
  28. package/commands/datatables/datatables_cmds/export.js +1 -2
  29. package/commands/tests/testsUtil.js +20 -2
  30. package/commands/tests/tests_cmds/run.js +1 -15
  31. package/execution/index.js +1 -1
  32. package/http/requestInterceptor.js +6 -2
  33. package/mablApi/index.js +1 -1
  34. package/mablscript/importer.js +2 -0
  35. package/mablscript/steps/DoubleClickStep.js +1 -1
  36. package/mablscript/steps/RightClickStep.js +57 -0
  37. package/mablscriptFind/index.js +1 -1
  38. package/observers/mockObserver.js +3 -0
  39. package/package.json +4 -3
  40. package/popupDismissal/index.js +7 -2
  41. package/resources/mablFind.js +1 -1
  42. package/resources/popupDismissal.js +1 -1
  43. package/util/asyncUtil.js +1 -1
  44. package/util/browserTestUtils.js +6 -7
  45. package/util/clickUtil.js +24 -14
  46. package/util/csvUtil.js +6 -1
@@ -481,6 +481,17 @@ class MablApiClient extends basicApiClient_1.BasicApiClient {
481
481
  throw toApiError(`Failed to get datatable`, error);
482
482
  }
483
483
  }
484
+ async createDatatable(workspaceId, options) {
485
+ try {
486
+ const datatablesQueryString = queryString.stringify({
487
+ organization_id: workspaceId,
488
+ });
489
+ return await this.makePostRequest(`${this.baseApiUrl}/variables/tables?${datatablesQueryString}`, options).then((result) => result);
490
+ }
491
+ catch (error) {
492
+ throw toApiError(`Failed to create datatable`, error);
493
+ }
494
+ }
484
495
  async getDatatableRows(datatableId) {
485
496
  try {
486
497
  return await this.makeGetRequest(`${this.baseApiUrl}/variables/tables/${datatableId}/rows`).then((result) => { var _a; return (_a = result.variableRows) !== null && _a !== void 0 ? _a : []; });
@@ -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,
@@ -171,5 +171,8 @@ class ChromiumBrowserEngine {
171
171
  chrome.includes('beta'));
172
172
  })[0];
173
173
  }
174
+ getProxySpec(_proxyInfo) {
175
+ return;
176
+ }
174
177
  }
175
178
  exports.ChromiumBrowserEngine = ChromiumBrowserEngine;
@@ -49,12 +49,24 @@ 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.pacProxy;
56
+ customPreferences['network.proxy.type'] = 2;
57
+ }
58
+ else if (proxyInfo === null || proxyInfo === void 0 ? void 0 : proxyInfo.socksProxy) {
59
+ const socksUrl = new URL(proxyInfo.socksProxy);
60
+ customPreferences['network.proxy.socks'] = socksUrl.hostname;
61
+ customPreferences['network.proxy.socks_port'] = Number.parseInt(socksUrl.port);
62
+ customPreferences['network.proxy.socks_version'] = 5;
63
+ customPreferences['network.proxy.type'] = 1;
64
+ }
53
65
  return (0, async_retry_1.default)(() => {
54
66
  const preferenceFileName = 'user.js';
55
67
  const tempBrowserPreferencesDirectory = (0, browserEngine_1.getTempBrowserPrefDirectory)(this.name());
56
68
  const prefFilePath = path_1.default.normalize(`${tempBrowserPreferencesDirectory}/${preferenceFileName}`);
57
- fs.writeFileSync(prefFilePath, this.generatePreferencesInfo());
69
+ fs.writeFileSync(prefFilePath, this.generatePreferencesInfo(customPreferences));
58
70
  return tempBrowserPreferencesDirectory;
59
71
  }, {
60
72
  retries: 5,
@@ -63,9 +75,10 @@ class FirefoxBrowserEngine {
63
75
  findBrowserExecutable() {
64
76
  return Promise.resolve('');
65
77
  }
66
- generatePreferencesInfo() {
78
+ generatePreferencesInfo(customPrefs = {}) {
67
79
  const lines = [];
68
- for (const [name, value] of Object.entries(this.getFirefoxUserPrefs())) {
80
+ const prefs = { ...this.getFirefoxUserPrefs(), ...customPrefs };
81
+ for (const [name, value] of Object.entries(prefs)) {
69
82
  lines.push(`user_pref(${JSON.stringify(name)}, ${JSON.stringify(value)});`);
70
83
  }
71
84
  return lines.join('\n');
@@ -113,5 +126,8 @@ class FirefoxBrowserEngine {
113
126
  'network.proxy.socks_remote_dns': true,
114
127
  };
115
128
  }
129
+ getProxySpec(_proxyInfo) {
130
+ return;
131
+ }
116
132
  }
117
133
  exports.FirefoxBrowserEngine = FirefoxBrowserEngine;
@@ -22,5 +22,8 @@ class UnsupportedBrowserEngine {
22
22
  findBrowserExecutable() {
23
23
  throw new Error('Unsupported browser engine');
24
24
  }
25
+ getProxySpec(_proxyInfo) {
26
+ throw new Error('Unsupported browser engine');
27
+ }
25
28
  }
26
29
  exports.UnsupportedBrowserEngine = UnsupportedBrowserEngine;
@@ -0,0 +1,50 @@
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
+ getProxySpec(proxyInfo) {
39
+ const { httpProxy, socksProxy, excludeFromProxy } = proxyInfo;
40
+ const server = httpProxy !== null && httpProxy !== void 0 ? httpProxy : socksProxy;
41
+ if (!server) {
42
+ throw new Error('no proxy provided for cloud run');
43
+ }
44
+ const bypass = (excludeFromProxy === null || excludeFromProxy === void 0 ? void 0 : excludeFromProxy.length)
45
+ ? excludeFromProxy.join(',')
46
+ : undefined;
47
+ return { server, bypass };
48
+ }
49
+ }
50
+ exports.WebkitBrowserEngine = WebkitBrowserEngine;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isElementHandle = exports.getHighlightColor = exports.MAX_HIGHLIGHT_OPACITY = void 0;
3
+ exports.isElementHandle = exports.commonFocusAndSelect = exports.getHighlightColor = exports.MAX_HIGHLIGHT_OPACITY = void 0;
4
4
  exports.MAX_HIGHLIGHT_OPACITY = 0.9;
5
5
  const getHighlightColor = (transparency) => ({
6
6
  r: 196,
@@ -9,6 +9,15 @@ const getHighlightColor = (transparency) => ({
9
9
  a: transparency,
10
10
  });
11
11
  exports.getHighlightColor = getHighlightColor;
12
+ function commonFocusAndSelect(element) {
13
+ return element.evaluate((element) => {
14
+ var _a;
15
+ element.focus();
16
+ (_a = element.select) === null || _a === void 0 ? void 0 : _a.call(element);
17
+ return element.value;
18
+ });
19
+ }
20
+ exports.commonFocusAndSelect = commonFocusAndSelect;
12
21
  function isElementHandle(value) {
13
22
  return (value &&
14
23
  typeof value === 'object' &&
@@ -25,7 +25,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.ChromiumElementHandleDelegate = void 0;
27
27
  const playwright = __importStar(require("@playwright/test"));
28
+ const testsUtil_1 = require("../../../commands/tests/testsUtil");
28
29
  const logUtils_1 = require("../../../util/logUtils");
30
+ const elementHandle_1 = require("../../elementHandle");
29
31
  class ChromiumElementHandleDelegate {
30
32
  constructor(elementHandle) {
31
33
  this.elementHandle = elementHandle;
@@ -36,6 +38,9 @@ class ChromiumElementHandleDelegate {
36
38
  (0, logUtils_1.logInternal)(`Unable to get the element handle's implementation. Error: ${e}`);
37
39
  }
38
40
  }
41
+ focusAndSelect(element) {
42
+ return (0, elementHandle_1.commonFocusAndSelect)(element);
43
+ }
39
44
  getElementImpl() {
40
45
  return this.elementImpl;
41
46
  }
@@ -57,6 +62,64 @@ class ChromiumElementHandleDelegate {
57
62
  this.checkCDPSession();
58
63
  return this.getInternalCDPSession();
59
64
  }
65
+ async highlight(highlightDurationMillis, highlightPhases) {
66
+ var _a;
67
+ await this.enableDom();
68
+ await this.enableOverlay();
69
+ const nodeInfo = await ((_a = this.getInternalCDPSession()) === null || _a === void 0 ? void 0 : _a.send('DOM.describeNode', {
70
+ objectId: this.getRemoteObjectId(),
71
+ depth: -1,
72
+ pierce: true,
73
+ }));
74
+ if (!nodeInfo) {
75
+ return;
76
+ }
77
+ const highlightConfig = {
78
+ backendNodeId: nodeInfo.node.backendNodeId,
79
+ highlightConfig: {
80
+ borderColor: (0, elementHandle_1.getHighlightColor)(0),
81
+ contentColor: (0, elementHandle_1.getHighlightColor)(1),
82
+ colorFormat: 'rgb',
83
+ },
84
+ };
85
+ await this.fadeInOutHighlight(highlightConfig, highlightDurationMillis, highlightPhases);
86
+ await this.hideHighlight();
87
+ }
88
+ async fadeInOutHighlight(highlightConfig, highlightDurationMillis, highlightPhases) {
89
+ var _a, _b;
90
+ if (highlightPhases <= 0) {
91
+ throw new Error('Highlight phases must be greater than 0');
92
+ }
93
+ const phaseIntervalMilliseconds = highlightDurationMillis / highlightPhases;
94
+ for (let iteration = 0; iteration < highlightPhases; iteration++) {
95
+ if (((_a = highlightConfig.highlightConfig.contentColor) === null || _a === void 0 ? void 0 : _a.a) !== undefined) {
96
+ const x = iteration / highlightPhases;
97
+ highlightConfig.highlightConfig.contentColor.a =
98
+ x * (1 - x) * 4 * elementHandle_1.MAX_HIGHLIGHT_OPACITY;
99
+ }
100
+ await ((_b = this.getInternalCDPSession()) === null || _b === void 0 ? void 0 : _b.send('Overlay.highlightNode', highlightConfig));
101
+ await (0, testsUtil_1.sleep)(phaseIntervalMilliseconds);
102
+ }
103
+ }
104
+ async enableDom() {
105
+ var _a;
106
+ await ((_a = this.getInternalCDPSession()) === null || _a === void 0 ? void 0 : _a.send('DOM.enable'));
107
+ }
108
+ async enableOverlay() {
109
+ var _a;
110
+ await ((_a = this.getInternalCDPSession()) === null || _a === void 0 ? void 0 : _a.send('Overlay.enable'));
111
+ }
112
+ async hideHighlight() {
113
+ var _a;
114
+ await ((_a = this.getInternalCDPSession()) === null || _a === void 0 ? void 0 : _a.send('Overlay.hideHighlight'));
115
+ }
116
+ getRemoteObjectId() {
117
+ var _a, _b, _c;
118
+ if (((_a = this.getElementImpl()) === null || _a === void 0 ? void 0 : _a._objectId) === undefined) {
119
+ (0, logUtils_1.logInternal)('ObjectId of an element handle was not found.');
120
+ }
121
+ return (_c = (_b = this.getElementImpl()) === null || _b === void 0 ? void 0 : _b._objectId) !== null && _c !== void 0 ? _c : '';
122
+ }
60
123
  getInternalCDPSession() {
61
124
  var _a, _b, _c;
62
125
  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._client;
@@ -74,7 +74,11 @@ class ChromiumPageDelegate {
74
74
  getCDPSession() {
75
75
  var _a, _b, _c, _d;
76
76
  this.checkCDPSession();
77
- return ((_d = (_c = (_b = (_a = this.pageImpl) === null || _a === void 0 ? void 0 : _a._delegate) === null || _b === void 0 ? void 0 : _b._mainFrameSession) === null || _c === void 0 ? void 0 : _c._client) !== null && _d !== void 0 ? _d : this.fallbackCDPSession);
77
+ const session = (_d = (_c = (_b = (_a = this.pageImpl) === null || _a === void 0 ? void 0 : _a._delegate) === null || _b === void 0 ? void 0 : _b._mainFrameSession) === null || _c === void 0 ? void 0 : _c._client) !== null && _d !== void 0 ? _d : this.fallbackCDPSession;
78
+ if (!session) {
79
+ throw new Error('Unable to get the CDP Session of the page');
80
+ }
81
+ return session;
78
82
  }
79
83
  checkCDPSession() {
80
84
  var _a, _b, _c, _d, _e, _f;
@@ -95,8 +99,14 @@ class ChromiumPageDelegate {
95
99
  var _a, _b;
96
100
  return (_b = (_a = this.pageImpl) === null || _a === void 0 ? void 0 : _a._delegate) === null || _b === void 0 ? void 0 : _b._targetId;
97
101
  }
98
- createCDPSession() {
99
- return this.page.context().newCDPSession(this.page);
102
+ async createCDPSession() {
103
+ try {
104
+ return await this.page.context().newCDPSession(this.page);
105
+ }
106
+ catch (e) {
107
+ (0, logUtils_1.logInternal)(`Unable to create a CDP session. Error: ${e}`);
108
+ return;
109
+ }
100
110
  }
101
111
  createElementHandleDelegate(element) {
102
112
  return new chromiumElementHandleDelegate_1.ChromiumElementHandleDelegate(element);
@@ -105,13 +115,18 @@ class ChromiumPageDelegate {
105
115
  return new chromiumFrameDelegate_1.ChromiumFrameDelegate(frame);
106
116
  }
107
117
  async enableScreencastMode() {
108
- const cdp = await this.createCDPSession();
109
- cdp.on('Page.screencastFrame', async (params) => {
110
- await cdp
111
- .send('Page.screencastFrameAck', { sessionId: params.sessionId })
112
- .catch(() => { });
113
- });
114
- await cdp.send('Page.startScreencast', {});
118
+ try {
119
+ const cdp = this.getCDPSession();
120
+ cdp.on('Page.screencastFrame', async (params) => {
121
+ await cdp
122
+ .send('Page.screencastFrameAck', { sessionId: params.sessionId })
123
+ .catch(() => { });
124
+ });
125
+ await cdp.send('Page.startScreencast', {});
126
+ }
127
+ catch (e) {
128
+ (0, logUtils_1.logInternal)(`Unable to enable screencast mode. No CDP session found. Error: ${e}`);
129
+ }
115
130
  }
116
131
  }
117
132
  exports.ChromiumPageDelegate = ChromiumPageDelegate;
@@ -26,29 +26,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.FirefoxBrowserDelegate = void 0;
27
27
  const playwright = __importStar(require("@playwright/test"));
28
28
  const firefoxPageDelegate_1 = require("./firefoxPageDelegate");
29
- class FirefoxBrowserDelegate {
29
+ const nonChromiumAbstractBrowserDelegate_1 = require("../nonChromium/nonChromiumAbstractBrowserDelegate");
30
+ class FirefoxBrowserDelegate extends nonChromiumAbstractBrowserDelegate_1.NonChromiumAbstractBrowserDelegate {
30
31
  constructor(context) {
32
+ super();
31
33
  this.context = context;
32
34
  const contextImpl = playwright._toImpl(context);
33
35
  this._browser = contextImpl._browser;
34
36
  }
35
- setDownloadBehavior(_downloadDirectory) {
36
- return Promise.resolve();
37
- }
38
- getCDPSession() {
39
- return this._browser._connection;
40
- }
41
37
  getBrowser() {
42
38
  return this._browser;
43
39
  }
44
40
  createPageDelegate(page) {
45
41
  return new firefoxPageDelegate_1.FirefoxPageDelegate(page);
46
42
  }
47
- downloadsUsingGuids() {
48
- return true;
49
- }
50
- supportsTracing() {
51
- return false;
43
+ getCDPSession() {
44
+ return this._browser._connection;
52
45
  }
53
46
  }
54
47
  exports.FirefoxBrowserDelegate = FirefoxBrowserDelegate;
@@ -1,61 +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.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;
4
+ const elementHandle_1 = require("../../elementHandle");
5
+ const nonChromiumAbstractElementHandleDelegate_1 = require("../nonChromium/nonChromiumAbstractElementHandleDelegate");
6
+ class FirefoxElementHandleDelegate extends nonChromiumAbstractElementHandleDelegate_1.NonChromiumAbstractElementHandleDelegate {
7
+ focusAndSelect(element) {
8
+ return (0, elementHandle_1.commonFocusAndSelect)(element);
59
9
  }
60
10
  }
61
11
  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,15 @@
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;
@@ -0,0 +1,65 @@
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
+ highlight(_highlightDurationMillis, _highlightPhases) {
39
+ (0, logUtils_1.logInternal)('Highlighting is not supported on non-chromium browsers.');
40
+ return Promise.resolve();
41
+ }
42
+ getElementImpl() {
43
+ return this.elementImpl;
44
+ }
45
+ checkCDPSession() {
46
+ var _a, _b, _c;
47
+ if (this.elementImpl === undefined) {
48
+ (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.`);
49
+ }
50
+ else if (this.getCDPSession() === undefined) {
51
+ const undefinedField = ((_b = (_a = this.elementImpl) === null || _a === void 0 ? void 0 : _a._context) === null || _b === void 0 ? void 0 : _b._delegate) !== undefined
52
+ ? '_client'
53
+ : ((_c = this.elementImpl) === null || _c === void 0 ? void 0 : _c._context) !== undefined
54
+ ? '_delegate'
55
+ : '_context';
56
+ (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.`);
57
+ }
58
+ }
59
+ getCDPSession() {
60
+ var _a, _b, _c;
61
+ this.checkCDPSession();
62
+ 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;
63
+ }
64
+ }
65
+ 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;