@checkly/playwright-core 1.41.21 → 1.41.23

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 (126) hide show
  1. package/lib/browserServerImpl.js +1 -1
  2. package/lib/cli/driver.js +11 -3
  3. package/lib/cli/program.js +13 -5
  4. package/lib/client/android.js +1 -1
  5. package/lib/client/artifact.js +2 -2
  6. package/lib/client/browserContext.js +5 -5
  7. package/lib/client/browserType.js +1 -1
  8. package/lib/client/channelOwner.js +3 -3
  9. package/lib/client/clientHelper.js +5 -1
  10. package/lib/client/connection.js +2 -2
  11. package/lib/client/consoleMessage.js +3 -3
  12. package/lib/client/electron.js +3 -0
  13. package/lib/client/events.js +1 -0
  14. package/lib/client/fetch.js +3 -3
  15. package/lib/client/frame.js +4 -3
  16. package/lib/client/harRouter.js +7 -1
  17. package/lib/client/locator.js +2 -2
  18. package/lib/client/page.js +26 -7
  19. package/lib/common/socksProxy.js +12 -17
  20. package/lib/generated/consoleApiSource.js +1 -1
  21. package/lib/generated/injectedScriptSource.js +1 -1
  22. package/lib/generated/recorderSource.js +1 -1
  23. package/lib/outofprocess.js +3 -3
  24. package/lib/protocol/validator.js +46 -29
  25. package/lib/remote/playwrightConnection.js +2 -2
  26. package/lib/remote/playwrightServer.js +72 -166
  27. package/lib/server/android/android.js +2 -2
  28. package/lib/server/android/backendAdb.js +2 -2
  29. package/lib/server/browser.js +2 -2
  30. package/lib/server/browserContext.js +8 -9
  31. package/lib/server/browserType.js +5 -5
  32. package/lib/server/chromium/chromium.js +5 -4
  33. package/lib/server/chromium/crBrowser.js +2 -3
  34. package/lib/server/chromium/crConnection.js +2 -2
  35. package/lib/server/chromium/crExecutionContext.js +2 -2
  36. package/lib/server/chromium/crInput.js +2 -2
  37. package/lib/server/chromium/crNetworkManager.js +10 -11
  38. package/lib/server/chromium/crPage.js +48 -7
  39. package/lib/server/chromium/crServiceWorker.js +2 -3
  40. package/lib/server/console.js +1 -3
  41. package/lib/server/debugController.js +0 -3
  42. package/lib/server/deviceDescriptorsSource.json +50 -50
  43. package/lib/server/dispatchers/browserContextDispatcher.js +7 -6
  44. package/lib/server/dispatchers/dispatcher.js +19 -20
  45. package/lib/server/dispatchers/electronDispatcher.js +13 -0
  46. package/lib/server/dispatchers/frameDispatcher.js +0 -6
  47. package/lib/server/dispatchers/localUtilsDispatcher.js +4 -4
  48. package/lib/server/dispatchers/pageDispatcher.js +14 -10
  49. package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
  50. package/lib/server/dispatchers/writableStreamDispatcher.js +2 -2
  51. package/lib/server/dom.js +133 -170
  52. package/lib/server/electron/electron.js +40 -14
  53. package/lib/server/electron/loader.js +4 -2
  54. package/lib/server/fetch.js +4 -4
  55. package/lib/server/firefox/ffAccessibility.js +2 -1
  56. package/lib/server/firefox/ffBrowser.js +3 -3
  57. package/lib/server/firefox/ffConnection.js +1 -1
  58. package/lib/server/firefox/ffExecutionContext.js +2 -2
  59. package/lib/server/firefox/ffNetworkManager.js +7 -7
  60. package/lib/server/firefox/ffPage.js +3 -5
  61. package/lib/server/firefox/firefox.js +2 -2
  62. package/lib/server/frames.js +42 -23
  63. package/lib/server/har/harTracer.js +6 -6
  64. package/lib/server/helper.js +1 -1
  65. package/lib/server/input.js +2 -2
  66. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -1
  67. package/lib/server/javascript.js +2 -2
  68. package/lib/server/page.js +51 -7
  69. package/lib/server/pipeTransport.js +1 -1
  70. package/lib/server/playwright.js +1 -1
  71. package/lib/server/progress.js +5 -14
  72. package/lib/server/recorder/csharp.js +1 -1
  73. package/lib/server/recorder/recorderUtils.js +2 -2
  74. package/lib/server/recorder.js +14 -14
  75. package/lib/server/registry/browserFetcher.js +1 -2
  76. package/lib/server/registry/dependencies.js +7 -6
  77. package/lib/server/registry/index.js +50 -33
  78. package/lib/server/registry/nativeDeps.js +0 -94
  79. package/lib/server/registry/oopDownloadBrowserMain.js +2 -2
  80. package/lib/server/screenshotter.js +0 -1
  81. package/lib/server/socksInterceptor.js +2 -2
  82. package/lib/server/trace/recorder/snapshotter.js +2 -2
  83. package/lib/server/trace/recorder/tracing.js +12 -11
  84. package/lib/server/trace/test/inMemorySnapshotter.js +1 -1
  85. package/lib/server/trace/viewer/traceViewer.js +2 -2
  86. package/lib/server/transport.js +15 -13
  87. package/lib/server/webkit/wkBrowser.js +3 -3
  88. package/lib/server/webkit/wkConnection.js +1 -1
  89. package/lib/server/webkit/wkExecutionContext.js +2 -2
  90. package/lib/server/webkit/wkInput.js +2 -2
  91. package/lib/server/webkit/wkInterceptableRequest.js +2 -2
  92. package/lib/server/webkit/wkPage.js +10 -12
  93. package/lib/utils/comparators.js +4 -4
  94. package/lib/utils/fileUtils.js +4 -0
  95. package/lib/utils/happy-eyeballs.js +5 -4
  96. package/lib/utils/hostPlatform.js +1 -1
  97. package/lib/utils/index.js +11 -0
  98. package/lib/utils/isomorphic/cssParser.js +2 -2
  99. package/lib/utils/isomorphic/locatorParser.js +6 -4
  100. package/lib/utils/isomorphic/selectorParser.js +0 -1
  101. package/lib/utils/network.js +33 -0
  102. package/lib/utils/processLauncher.js +9 -2
  103. package/lib/utils/profiler.js +2 -2
  104. package/lib/utils/zipFile.js +1 -1
  105. package/lib/vite/htmlReport/index.html +12 -13
  106. package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +1 -0
  107. package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +24 -0
  108. package/lib/vite/recorder/assets/{index-64ce22d5.css → index-ljsTwXtJ.css} +1 -1
  109. package/lib/vite/recorder/assets/index-yg8ypzl6.js +47 -0
  110. package/lib/vite/recorder/index.html +2 -3
  111. package/lib/vite/traceViewer/assets/codeMirrorModule-A2_PGeGB.js +24 -0
  112. package/lib/vite/{recorder/assets/codeMirrorModule-85487eb6.js → traceViewer/assets/codeMirrorModule-aUzO-LID.js} +1 -1
  113. package/lib/vite/traceViewer/assets/wsPort-L8WBvZfK.js +69 -0
  114. package/lib/vite/traceViewer/assets/wsPort-uVqol1LI.js +69 -0
  115. package/lib/vite/traceViewer/index.4xhUWj1f.js +2 -0
  116. package/lib/vite/traceViewer/index.html +4 -5
  117. package/lib/vite/traceViewer/index.o6j3Cv4u.js +2 -0
  118. package/lib/vite/traceViewer/sw.bundle.js +4 -4
  119. package/lib/vite/traceViewer/uiMode.PlLkrJDI.js +10 -0
  120. package/lib/vite/traceViewer/uiMode.html +4 -5
  121. package/lib/vite/traceViewer/uiMode.qpn6w4df.js +10 -0
  122. package/lib/vite/traceViewer/wsPort.zR1WIy9-.css +1 -0
  123. package/package.json +1 -1
  124. package/lib/vite/recorder/assets/codeMirrorModule-5d0f417c.css +0 -1
  125. package/lib/vite/recorder/assets/index-b14c63fe.js +0 -41
  126. /package/lib/vite/recorder/assets/{codicon-79f233d0.ttf → codicon-zGuYmc9o.ttf} +0 -0
@@ -20,10 +20,12 @@ var _progress = require("../progress");
20
20
  var _helper = require("../helper");
21
21
  var _eventsHelper = require("../../utils/eventsHelper");
22
22
  var readline = _interopRequireWildcard(require("readline"));
23
- var _debugLogger = require("../../common/debugLogger");
23
+ var _debugLogger = require("../../utils/debugLogger");
24
24
  var _instrumentation = require("../instrumentation");
25
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+ var _crProtocolHelper = require("../chromium/crProtocolHelper");
26
+ var _console = require("../console");
27
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
28
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
29
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
30
  /**
29
31
  * Copyright (c) Microsoft Corporation.
@@ -54,10 +56,6 @@ class ElectronApplication extends _instrumentation.SdkObject {
54
56
  this._process = void 0;
55
57
  this._process = process;
56
58
  this._browserContext = browser._defaultContext;
57
- this._browserContext.on(_browserContext.BrowserContext.Events.Close, () => {
58
- // Emit application closed after context closed.
59
- Promise.resolve().then(() => this.emit(ElectronApplication.Events.Close));
60
- });
61
59
  this._nodeConnection = nodeConnection;
62
60
  this._nodeSession = nodeConnection.rootSession;
63
61
  this._nodeSession.on('Runtime.executionContextCreated', async event => {
@@ -74,14 +72,40 @@ class ElectronApplication extends _instrumentation.SdkObject {
74
72
  });
75
73
  this._nodeElectronHandlePromise.resolve(new js.JSHandle(this._nodeExecutionContext, 'object', 'ElectronModule', remoteObject.objectId));
76
74
  });
75
+ this._nodeSession.on('Runtime.consoleAPICalled', event => this._onConsoleAPI(event));
76
+ const appClosePromise = new Promise(f => this.once(ElectronApplication.Events.Close, f));
77
77
  this._browserContext.setCustomCloseHandler(async () => {
78
78
  await this._browserContext.stopVideoRecording();
79
79
  const electronHandle = await this._nodeElectronHandlePromise;
80
80
  await electronHandle.evaluate(({
81
81
  app
82
82
  }) => app.quit()).catch(() => {});
83
+ this._nodeConnection.close();
84
+ await appClosePromise;
83
85
  });
84
86
  }
87
+ async _onConsoleAPI(event) {
88
+ if (event.executionContextId === 0) {
89
+ // DevTools protocol stores the last 1000 console messages. These
90
+ // messages are always reported even for removed execution contexts. In
91
+ // this case, they are marked with executionContextId = 0 and are
92
+ // reported upon enabling Runtime agent.
93
+ //
94
+ // Ignore these messages since:
95
+ // - there's no execution context we can use to operate with message
96
+ // arguments
97
+ // - these messages are reported before Playwright clients can subscribe
98
+ // to the 'console'
99
+ // page event.
100
+ //
101
+ // @see https://github.com/GoogleChrome/puppeteer/issues/3865
102
+ return;
103
+ }
104
+ if (!this._nodeExecutionContext) return;
105
+ const args = event.args.map(arg => this._nodeExecutionContext.createHandle(arg));
106
+ const message = new _console.ConsoleMessage(null, event.type, undefined, args, (0, _crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
107
+ this.emit(ElectronApplication.Events.Console, message);
108
+ }
85
109
  async initialize() {
86
110
  await this._nodeSession.send('Runtime.enable', {});
87
111
  // Delay loading the app until browser is started and the browser targets are configured to auto-attach.
@@ -96,13 +120,10 @@ class ElectronApplication extends _instrumentation.SdkObject {
96
120
  return this._browserContext;
97
121
  }
98
122
  async close() {
99
- const progressController = new _progress.ProgressController((0, _instrumentation.serverSideCallMetadata)(), this);
100
- const closed = progressController.run(progress => _helper.helper.waitForEvent(progress, this, ElectronApplication.Events.Close).promise);
123
+ // This will call BrowserContext.setCustomCloseHandler.
101
124
  await this._browserContext.close({
102
125
  reason: 'Application exited'
103
126
  });
104
- this._nodeConnection.close();
105
- await closed;
106
127
  }
107
128
  async browserWindow(page) {
108
129
  // Assume CRPage as Electron is always Chromium.
@@ -119,7 +140,8 @@ class ElectronApplication extends _instrumentation.SdkObject {
119
140
  }
120
141
  exports.ElectronApplication = ElectronApplication;
121
142
  ElectronApplication.Events = {
122
- Close: 'close'
143
+ Close: 'close',
144
+ Console: 'console'
123
145
  };
124
146
  class Electron extends _instrumentation.SdkObject {
125
147
  constructor(playwright) {
@@ -133,10 +155,11 @@ class Electron extends _instrumentation.SdkObject {
133
155
  controller.setLogName('browser');
134
156
  return controller.run(async progress => {
135
157
  let app = undefined;
158
+ // --remote-debugging-port=0 must be the last playwright's argument, loader.ts relies on it.
136
159
  const electronArguments = ['--inspect=0', '--remote-debugging-port=0', ...args];
137
160
  if (_os.default.platform() === 'linux') {
138
161
  const runningAsRoot = process.geteuid && process.geteuid() === 0;
139
- if (runningAsRoot && electronArguments.indexOf('--no-sandbox') === -1) electronArguments.push('--no-sandbox');
162
+ if (runningAsRoot && electronArguments.indexOf('--no-sandbox') === -1) electronArguments.unshift('--no-sandbox');
140
163
  }
141
164
  const artifactsDir = await _fs.default.promises.mkdtemp(ARTIFACTS_FOLDER);
142
165
  const browserLogsCollector = new _debugLogger.RecentLogsCollector();
@@ -183,7 +206,10 @@ class Electron extends _instrumentation.SdkObject {
183
206
  handleSIGINT: true,
184
207
  handleSIGTERM: true,
185
208
  handleSIGHUP: true,
186
- onExit: () => {}
209
+ onExit: () => {
210
+ var _app;
211
+ return (_app = app) === null || _app === void 0 ? void 0 : _app.emit(ElectronApplication.Events.Close);
212
+ }
187
213
  });
188
214
  const waitForXserverError = new Promise(async (resolve, reject) => {
189
215
  waitForLine(progress, launchedProcess, /Unable to open X display/).then(() => reject(new Error(['Unable to open X display!', `================================`, 'Most likely this is because there is no X server available.', "Use 'xvfb-run' on Linux to launch your tests with an emulated display server.", "For example: 'xvfb-run npm run test:e2e'", `================================`, progress.metadata.log].join('\n')))).catch(() => {});
@@ -23,8 +23,10 @@ const {
23
23
  chromiumSwitches
24
24
  } = require('../chromium/chromiumSwitches');
25
25
 
26
- // [Electron, -r, loader.js, --inspect=0, --remote-debugging-port=0, ...args]
27
- process.argv.splice(1, 4);
26
+ // Always pass user arguments first, see https://github.com/microsoft/playwright/issues/16614 and
27
+ // https://github.com/microsoft/playwright/issues/29198.
28
+ // [Electron, -r, loader.js[, --no-sandbox>], --inspect=0, --remote-debugging-port=0, ...args]
29
+ process.argv.splice(1, process.argv.indexOf('--remote-debugging-port=0'));
28
30
  for (const arg of chromiumSwitches) {
29
31
  const match = arg.match(/--([^=]*)=?(.*)/);
30
32
  app.commandLine.appendSwitch(match[1], match[2]);
@@ -24,8 +24,8 @@ var _tracing = require("./trace/recorder/tracing");
24
24
  var _network = require("./network");
25
25
  var _fetch = require("../checkly/fetch");
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
28
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
29
29
  /**
30
30
  * Copyright (c) Microsoft Corporation.
31
31
  *
@@ -379,8 +379,8 @@ class APIRequestContext extends _instrumentation.SdkObject {
379
379
  });
380
380
  }
381
381
  _getHttpCredentials(url) {
382
- var _this$_defaultOptions, _this$_defaultOptions2, _this$_defaultOptions3;
383
- if (!((_this$_defaultOptions = this._defaultOptions().httpCredentials) !== null && _this$_defaultOptions !== void 0 && _this$_defaultOptions.origin) || url.origin.toLowerCase() === ((_this$_defaultOptions2 = this._defaultOptions().httpCredentials) === null || _this$_defaultOptions2 === void 0 ? void 0 : (_this$_defaultOptions3 = _this$_defaultOptions2.origin) === null || _this$_defaultOptions3 === void 0 ? void 0 : _this$_defaultOptions3.toLowerCase())) return this._defaultOptions().httpCredentials;
382
+ var _this$_defaultOptions, _this$_defaultOptions2;
383
+ if (!((_this$_defaultOptions = this._defaultOptions().httpCredentials) !== null && _this$_defaultOptions !== void 0 && _this$_defaultOptions.origin) || url.origin.toLowerCase() === ((_this$_defaultOptions2 = this._defaultOptions().httpCredentials) === null || _this$_defaultOptions2 === void 0 || (_this$_defaultOptions2 = _this$_defaultOptions2.origin) === null || _this$_defaultOptions2 === void 0 ? void 0 : _this$_defaultOptions2.toLowerCase())) return this._defaultOptions().httpCredentials;
384
384
  return undefined;
385
385
  }
386
386
  }
@@ -200,7 +200,7 @@ class FFAXNode {
200
200
  if (!(numericalProperty in this._payload)) continue;
201
201
  node[numericalProperty] = this._payload[numericalProperty];
202
202
  }
203
- const tokenProperties = ['autocomplete', 'haspopup', 'invalid', 'orientation'];
203
+ const tokenProperties = ['autocomplete', 'haspopup', 'orientation'];
204
204
  for (const tokenProperty of tokenProperties) {
205
205
  const value = this._payload[tokenProperty];
206
206
  if (!value || value === 'false') continue;
@@ -210,6 +210,7 @@ class FFAXNode {
210
210
  axNode.valueString = this._payload.value;
211
211
  if ('checked' in this._payload) axNode.checked = this._payload.checked === true ? 'checked' : this._payload.checked === 'mixed' ? 'mixed' : 'unchecked';
212
212
  if ('pressed' in this._payload) axNode.pressed = this._payload.pressed === true ? 'pressed' : 'released';
213
+ if ('invalid' in this._payload) axNode.invalid = this._payload.invalid === true ? 'true' : 'false';
213
214
  return axNode;
214
215
  }
215
216
  }
@@ -11,8 +11,8 @@ var _browserContext = require("../browserContext");
11
11
  var network = _interopRequireWildcard(require("../network"));
12
12
  var _ffConnection = require("./ffConnection");
13
13
  var _ffPage = require("./ffPage");
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
16
  /**
17
17
  * Copyright 2018 Google Inc. All rights reserved.
18
18
  * Modifications copyright (c) Microsoft Corporation.
@@ -147,7 +147,7 @@ class FFBrowser extends _browser.Browser {
147
147
  }
148
148
  _onVideoRecordingFinished(payload) {
149
149
  var _this$_takeVideo;
150
- (_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 ? void 0 : _this$_takeVideo.reportFinished();
150
+ (_this$_takeVideo = this._takeVideo(payload.screencastId)) === null || _this$_takeVideo === void 0 || _this$_takeVideo.reportFinished();
151
151
  }
152
152
  _onDisconnect() {
153
153
  for (const video of this._idToVideo.values()) video.artifact.reportFinished(new _errors.TargetClosedError());
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.kBrowserCloseMessageId = exports.FFSession = exports.FFConnection = exports.ConnectionEvents = void 0;
7
7
  var _events = require("events");
8
- var _debugLogger = require("../../common/debugLogger");
8
+ var _debugLogger = require("../../utils/debugLogger");
9
9
  var _helper = require("../helper");
10
10
  var _protocolError = require("../protocolError");
11
11
  /**
@@ -8,8 +8,8 @@ var js = _interopRequireWildcard(require("../javascript"));
8
8
  var _stackTrace = require("../../utils/stackTrace");
9
9
  var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
10
10
  var _protocolError = require("../protocolError");
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  /**
14
14
  * Copyright 2019 Google Inc. All rights reserved.
15
15
  * Modifications copyright (c) Microsoft Corporation.
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.FFNetworkManager = void 0;
7
7
  var _eventsHelper = require("../../utils/eventsHelper");
8
8
  var network = _interopRequireWildcard(require("../network"));
9
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
11
  /**
12
12
  * Copyright 2019 Google Inc. All rights reserved.
13
13
  * Modifications copyright (c) Microsoft Corporation.
@@ -91,11 +91,11 @@ class FFNetworkManager {
91
91
  response._serverAddrFinished();
92
92
  }
93
93
  response._securityDetailsFinished({
94
- protocol: event === null || event === void 0 ? void 0 : (_event$securityDetail = event.securityDetails) === null || _event$securityDetail === void 0 ? void 0 : _event$securityDetail.protocol,
95
- subjectName: event === null || event === void 0 ? void 0 : (_event$securityDetail2 = event.securityDetails) === null || _event$securityDetail2 === void 0 ? void 0 : _event$securityDetail2.subjectName,
96
- issuer: event === null || event === void 0 ? void 0 : (_event$securityDetail3 = event.securityDetails) === null || _event$securityDetail3 === void 0 ? void 0 : _event$securityDetail3.issuer,
97
- validFrom: event === null || event === void 0 ? void 0 : (_event$securityDetail4 = event.securityDetails) === null || _event$securityDetail4 === void 0 ? void 0 : _event$securityDetail4.validFrom,
98
- validTo: event === null || event === void 0 ? void 0 : (_event$securityDetail5 = event.securityDetails) === null || _event$securityDetail5 === void 0 ? void 0 : _event$securityDetail5.validTo
94
+ protocol: event === null || event === void 0 || (_event$securityDetail = event.securityDetails) === null || _event$securityDetail === void 0 ? void 0 : _event$securityDetail.protocol,
95
+ subjectName: event === null || event === void 0 || (_event$securityDetail2 = event.securityDetails) === null || _event$securityDetail2 === void 0 ? void 0 : _event$securityDetail2.subjectName,
96
+ issuer: event === null || event === void 0 || (_event$securityDetail3 = event.securityDetails) === null || _event$securityDetail3 === void 0 ? void 0 : _event$securityDetail3.issuer,
97
+ validFrom: event === null || event === void 0 || (_event$securityDetail4 = event.securityDetails) === null || _event$securityDetail4 === void 0 ? void 0 : _event$securityDetail4.validFrom,
98
+ validTo: event === null || event === void 0 || (_event$securityDetail5 = event.securityDetails) === null || _event$securityDetail5 === void 0 ? void 0 : _event$securityDetail5.validTo
99
99
  });
100
100
  // "raw" headers are the same as "provisional" headers in Firefox.
101
101
  response.setRawResponseHeaders(null);
@@ -14,12 +14,12 @@ var _ffExecutionContext = require("./ffExecutionContext");
14
14
  var _ffInput = require("./ffInput");
15
15
  var _ffNetworkManager = require("./ffNetworkManager");
16
16
  var _stackTrace = require("../../utils/stackTrace");
17
- var _debugLogger = require("../../common/debugLogger");
17
+ var _debugLogger = require("../../utils/debugLogger");
18
18
  var _manualPromise = require("../../utils/manualPromise");
19
19
  var _browserContext = require("../browserContext");
20
20
  var _errors = require("../errors");
21
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
23
  /**
24
24
  * Copyright 2019 Google Inc. All rights reserved.
25
25
  * Modifications copyright (c) Microsoft Corporation.
@@ -267,7 +267,6 @@ class FFPage {
267
267
  });
268
268
  // Note: we receive worker exceptions directly from the page.
269
269
  }
270
-
271
270
  _onWorkerDestroyed(event) {
272
271
  const workerId = event.workerId;
273
272
  const worker = this._workers.get(workerId);
@@ -350,7 +349,6 @@ class FFPage {
350
349
  enabled
351
350
  }).catch(() => {}); // target can be closed.
352
351
  }
353
-
354
352
  async reload() {
355
353
  await this._session.send('Page.reload');
356
354
  }
@@ -11,8 +11,8 @@ var _ffConnection = require("./ffConnection");
11
11
  var _browserType = require("../browserType");
12
12
  var _utils = require("../../utils");
13
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
16
  /**
17
17
  * Copyright 2017 Google Inc. All rights reserved.
18
18
  * Modifications copyright (c) Microsoft Corporation.
@@ -15,7 +15,7 @@ var _browserContext = require("./browserContext");
15
15
  var _progress = require("./progress");
16
16
  var _utils = require("../utils");
17
17
  var _manualPromise = require("../utils/manualPromise");
18
- var _debugLogger = require("../common/debugLogger");
18
+ var _debugLogger = require("../utils/debugLogger");
19
19
  var _instrumentation = require("./instrumentation");
20
20
  var _protocolError = require("./protocolError");
21
21
  var _selectorParser = require("../utils/isomorphic/selectorParser");
@@ -23,8 +23,8 @@ var _locatorGenerators = require("../utils/isomorphic/locatorGenerators");
23
23
  var _frameSelectors = require("./frameSelectors");
24
24
  var _errors = require("./errors");
25
25
  var _fileUploadUtils = require("./fileUploadUtils");
26
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
27
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
28
  /**
29
29
  * Copyright 2017 Google Inc. All rights reserved.
30
30
  * Modifications copyright (c) Microsoft Corporation.
@@ -930,9 +930,10 @@ class Frame extends _instrumentation.SdkObject {
930
930
  // Retry upon all other errors.
931
931
  return false;
932
932
  }
933
- async _retryWithProgressIfNotConnected(progress, selector, strict, action) {
933
+ async _retryWithProgressIfNotConnected(progress, selector, strict, performLocatorHandlersCheckpoint, action) {
934
934
  progress.log(`waiting for ${this._asLocator(selector)}`);
935
935
  return this.retryWithProgressAndTimeouts(progress, [0, 20, 50, 100, 100, 500], async continuePolling => {
936
+ if (performLocatorHandlersCheckpoint) await this._page.performLocatorHandlersCheckpoint(progress);
936
937
  const resolved = await this.selectors.resolveInjectedForSelector(selector, {
937
938
  strict
938
939
  });
@@ -980,12 +981,12 @@ class Frame extends _instrumentation.SdkObject {
980
981
  }
981
982
  return result;
982
983
  } finally {
983
- element === null || element === void 0 ? void 0 : element.dispose();
984
+ element === null || element === void 0 || element.dispose();
984
985
  }
985
986
  });
986
987
  }
987
988
  async rafrafTimeoutScreenshotElementWithProgress(progress, selector, timeout, options) {
988
- return await this._retryWithProgressIfNotConnected(progress, selector, true /* strict */, async handle => {
989
+ return await this._retryWithProgressIfNotConnected(progress, selector, true /* strict */, true /* performLocatorHandlersCheckpoint */, async handle => {
989
990
  await handle._frame.rafrafTimeout(timeout);
990
991
  return await this._page._screenshotter.screenshotElement(progress, handle, options);
991
992
  });
@@ -993,19 +994,19 @@ class Frame extends _instrumentation.SdkObject {
993
994
  async click(metadata, selector, options) {
994
995
  const controller = new _progress.ProgressController(metadata, this);
995
996
  return controller.run(async progress => {
996
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._click(progress, options)));
997
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._click(progress, options)));
997
998
  }, this._page._timeoutSettings.timeout(options));
998
999
  }
999
1000
  async dblclick(metadata, selector, options = {}) {
1000
1001
  const controller = new _progress.ProgressController(metadata, this);
1001
1002
  return controller.run(async progress => {
1002
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._dblclick(progress, options)));
1003
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._dblclick(progress, options)));
1003
1004
  }, this._page._timeoutSettings.timeout(options));
1004
1005
  }
1005
1006
  async dragAndDrop(metadata, source, target, options = {}) {
1006
1007
  const controller = new _progress.ProgressController(metadata, this);
1007
1008
  await controller.run(async progress => {
1008
- dom.assertDone(await this._retryWithProgressIfNotConnected(progress, source, options.strict, async handle => {
1009
+ dom.assertDone(await this._retryWithProgressIfNotConnected(progress, source, options.strict, !options.force /* performLocatorHandlersCheckpoint */, async handle => {
1009
1010
  return handle._retryPointerAction(progress, 'move and down', false, async point => {
1010
1011
  await this._page.mouse.move(point.x, point.y);
1011
1012
  await this._page.mouse.down();
@@ -1015,7 +1016,8 @@ class Frame extends _instrumentation.SdkObject {
1015
1016
  timeout: progress.timeUntilDeadline()
1016
1017
  });
1017
1018
  }));
1018
- dom.assertDone(await this._retryWithProgressIfNotConnected(progress, target, options.strict, async handle => {
1019
+ // Note: do not perform locator handlers checkpoint to avoid moving the mouse in the middle of a drag operation.
1020
+ dom.assertDone(await this._retryWithProgressIfNotConnected(progress, target, options.strict, false /* performLocatorHandlersCheckpoint */, async handle => {
1019
1021
  return handle._retryPointerAction(progress, 'move and up', false, async point => {
1020
1022
  await this._page.mouse.move(point.x, point.y);
1021
1023
  await this._page.mouse.up();
@@ -1031,25 +1033,25 @@ class Frame extends _instrumentation.SdkObject {
1031
1033
  if (!this._page._browserContext._options.hasTouch) throw new Error('The page does not support tap. Use hasTouch context option to enable touch support.');
1032
1034
  const controller = new _progress.ProgressController(metadata, this);
1033
1035
  return controller.run(async progress => {
1034
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._tap(progress, options)));
1036
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._tap(progress, options)));
1035
1037
  }, this._page._timeoutSettings.timeout(options));
1036
1038
  }
1037
1039
  async fill(metadata, selector, value, options) {
1038
1040
  const controller = new _progress.ProgressController(metadata, this);
1039
1041
  return controller.run(async progress => {
1040
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._fill(progress, value, options)));
1042
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._fill(progress, value, options)));
1041
1043
  }, this._page._timeoutSettings.timeout(options));
1042
1044
  }
1043
1045
  async focus(metadata, selector, options = {}) {
1044
1046
  const controller = new _progress.ProgressController(metadata, this);
1045
1047
  await controller.run(async progress => {
1046
- dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._focus(progress)));
1048
+ dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, true /* performLocatorHandlersCheckpoint */, handle => handle._focus(progress)));
1047
1049
  }, this._page._timeoutSettings.timeout(options));
1048
1050
  }
1049
1051
  async blur(metadata, selector, options = {}) {
1050
1052
  const controller = new _progress.ProgressController(metadata, this);
1051
1053
  await controller.run(async progress => {
1052
- dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._blur(progress)));
1054
+ dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, true /* performLocatorHandlersCheckpoint */, handle => handle._blur(progress)));
1053
1055
  }, this._page._timeoutSettings.timeout(options));
1054
1056
  }
1055
1057
  async textContent(metadata, selector, options = {}, scope) {
@@ -1108,6 +1110,11 @@ class Frame extends _instrumentation.SdkObject {
1108
1110
  const controller = new _progress.ProgressController(metadata, this);
1109
1111
  return controller.run(async progress => {
1110
1112
  progress.log(` checking visibility of ${this._asLocator(selector)}`);
1113
+ return await this.isVisibleInternal(selector, options, scope);
1114
+ }, this._page._timeoutSettings.timeout({}));
1115
+ }
1116
+ async isVisibleInternal(selector, options = {}, scope) {
1117
+ try {
1111
1118
  const resolved = await this.selectors.resolveInjectedForSelector(selector, options, scope);
1112
1119
  if (!resolved) return false;
1113
1120
  return await resolved.injected.evaluate((injected, {
@@ -1121,10 +1128,10 @@ class Frame extends _instrumentation.SdkObject {
1121
1128
  info: resolved.info,
1122
1129
  root: resolved.frame === this ? scope : undefined
1123
1130
  });
1124
- }, this._page._timeoutSettings.timeout({})).catch(e => {
1131
+ } catch (e) {
1125
1132
  if (js.isJavaScriptErrorInEvaluate(e) || (0, _selectorParser.isInvalidSelectorError)(e) || (0, _protocolError.isSessionClosedError)(e)) throw e;
1126
1133
  return false;
1127
- });
1134
+ }
1128
1135
  }
1129
1136
  async isHidden(metadata, selector, options = {}, scope) {
1130
1137
  return !(await this.isVisible(metadata, selector, options, scope));
@@ -1144,44 +1151,44 @@ class Frame extends _instrumentation.SdkObject {
1144
1151
  async hover(metadata, selector, options = {}) {
1145
1152
  const controller = new _progress.ProgressController(metadata, this);
1146
1153
  return controller.run(async progress => {
1147
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._hover(progress, options)));
1154
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._hover(progress, options)));
1148
1155
  }, this._page._timeoutSettings.timeout(options));
1149
1156
  }
1150
1157
  async selectOption(metadata, selector, elements, values, options = {}) {
1151
1158
  const controller = new _progress.ProgressController(metadata, this);
1152
1159
  return controller.run(async progress => {
1153
- return await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._selectOption(progress, elements, values, options));
1160
+ return await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._selectOption(progress, elements, values, options));
1154
1161
  }, this._page._timeoutSettings.timeout(options));
1155
1162
  }
1156
1163
  async setInputFiles(metadata, selector, params) {
1157
1164
  const inputFileItems = await (0, _fileUploadUtils.prepareFilesForUpload)(this, params);
1158
1165
  const controller = new _progress.ProgressController(metadata, this);
1159
1166
  return controller.run(async progress => {
1160
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, params.strict, handle => handle._setInputFiles(progress, inputFileItems, params)));
1167
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, params.strict, true /* performLocatorHandlersCheckpoint */, handle => handle._setInputFiles(progress, inputFileItems, params)));
1161
1168
  }, this._page._timeoutSettings.timeout(params));
1162
1169
  }
1163
1170
  async type(metadata, selector, text, options = {}) {
1164
1171
  const controller = new _progress.ProgressController(metadata, this);
1165
1172
  return controller.run(async progress => {
1166
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._type(progress, text, options)));
1173
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, true /* performLocatorHandlersCheckpoint */, handle => handle._type(progress, text, options)));
1167
1174
  }, this._page._timeoutSettings.timeout(options));
1168
1175
  }
1169
1176
  async press(metadata, selector, key, options = {}) {
1170
1177
  const controller = new _progress.ProgressController(metadata, this);
1171
1178
  return controller.run(async progress => {
1172
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._press(progress, key, options)));
1179
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, true /* performLocatorHandlersCheckpoint */, handle => handle._press(progress, key, options)));
1173
1180
  }, this._page._timeoutSettings.timeout(options));
1174
1181
  }
1175
1182
  async check(metadata, selector, options = {}) {
1176
1183
  const controller = new _progress.ProgressController(metadata, this);
1177
1184
  return controller.run(async progress => {
1178
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._setChecked(progress, true, options)));
1185
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._setChecked(progress, true, options)));
1179
1186
  }, this._page._timeoutSettings.timeout(options));
1180
1187
  }
1181
1188
  async uncheck(metadata, selector, options = {}) {
1182
1189
  const controller = new _progress.ProgressController(metadata, this);
1183
1190
  return controller.run(async progress => {
1184
- return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._setChecked(progress, false, options)));
1191
+ return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, !options.force /* performLocatorHandlersCheckpoint */, handle => handle._setChecked(progress, false, options)));
1185
1192
  }, this._page._timeoutSettings.timeout(options));
1186
1193
  }
1187
1194
  async waitForTimeout(metadata, timeout) {
@@ -1191,6 +1198,17 @@ class Frame extends _instrumentation.SdkObject {
1191
1198
  });
1192
1199
  }
1193
1200
  async expect(metadata, selector, options) {
1201
+ const result = await this._expectImpl(metadata, selector, options);
1202
+ // Library mode special case for the expect errors which are return values, not exceptions.
1203
+ if (result.matches === options.isNot) metadata.error = {
1204
+ error: {
1205
+ name: 'Expect',
1206
+ message: 'Expect failed'
1207
+ }
1208
+ };
1209
+ return result;
1210
+ }
1211
+ async _expectImpl(metadata, selector, options) {
1194
1212
  let timeout = this._page._timeoutSettings.timeout(options);
1195
1213
  const start = timeout > 0 ? (0, _utils.monotonicTime)() : 0;
1196
1214
  const lastIntermediateResult = {
@@ -1219,6 +1237,7 @@ class Frame extends _instrumentation.SdkObject {
1219
1237
  }
1220
1238
  return await this.retryWithProgressAndTimeouts(progress, [100, 250, 500, 1000], async continuePolling => {
1221
1239
  var _info$world;
1240
+ await this._page.performLocatorHandlersCheckpoint(progress);
1222
1241
  const selectorInFrame = await this.selectors.resolveFrameForSelector(selector, {
1223
1242
  strict: true
1224
1243
  });
@@ -16,8 +16,8 @@ var _userAgent = require("../../utils/userAgent");
16
16
  var _network2 = require("../../utils/network");
17
17
  var _frames = require("../frames");
18
18
  var _mimeType = require("../../utils/mimeType");
19
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
21
  /**
22
22
  * Copyright (c) Microsoft Corporation.
23
23
  *
@@ -263,14 +263,14 @@ class HarTracer {
263
263
  if (compressionCalculationBarrier) this._addBarrier(page || request.serviceWorker(), compressionCalculationBarrier.barrier);
264
264
  const promise = response.body().then(buffer => {
265
265
  if (this._options.omitScripts && request.resourceType() === 'script') {
266
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? void 0 : compressionCalculationBarrier.setDecodedBodySize(0);
266
+ compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setDecodedBodySize(0);
267
267
  return;
268
268
  }
269
269
  const content = harEntry.response.content;
270
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? void 0 : compressionCalculationBarrier.setDecodedBodySize(buffer.length);
270
+ compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setDecodedBodySize(buffer.length);
271
271
  this._storeResponseContent(buffer, content, request.resourceType());
272
272
  }).catch(() => {
273
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? void 0 : compressionCalculationBarrier.setDecodedBodySize(0);
273
+ compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setDecodedBodySize(0);
274
274
  }).then(() => {
275
275
  if (this._started) this._delegate.onEntryFinished(harEntry);
276
276
  });
@@ -286,7 +286,7 @@ class HarTracer {
286
286
  harEntry.response.headersSize = sizes.responseHeadersSize;
287
287
  harEntry.response._transferSize = sizes.transferSize;
288
288
  harEntry.request.headersSize = sizes.requestHeadersSize;
289
- compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? void 0 : compressionCalculationBarrier.setEncodedBodySize(sizes.responseBodySize);
289
+ compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 || compressionCalculationBarrier.setEncodedBodySize(sizes.responseBodySize);
290
290
  }));
291
291
  }
292
292
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.helper = void 0;
7
- var _debugLogger = require("../common/debugLogger");
7
+ var _debugLogger = require("../utils/debugLogger");
8
8
  var _eventsHelper = require("../utils/eventsHelper");
9
9
  /**
10
10
  * Copyright 2017 Google Inc. All rights reserved.