@checkly/playwright-core 1.41.2-beta.6 → 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
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.keypadLocation = exports.Touchscreen = exports.Mouse = exports.Keyboard = void 0;
7
7
  var _utils = require("../utils");
8
8
  var keyboardLayout = _interopRequireWildcard(require("./usKeyboardLayout"));
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 (c) Microsoft Corporation.
13
13
  *
@@ -177,7 +177,6 @@ function source() {
177
177
  } catch (e) {
178
178
  continue; // native bindings will throw sometimes
179
179
  }
180
-
181
180
  if (name === 'toJSON' && typeof item === 'function') o.push({
182
181
  k: name,
183
182
  v: {
@@ -14,8 +14,8 @@ var utilityScriptSource = _interopRequireWildcard(require("../generated/utilityS
14
14
  var _utilityScriptSerializers = require("./isomorphic/utilityScriptSerializers");
15
15
  var _instrumentation = require("./instrumentation");
16
16
  var _manualPromise = require("../utils/manualPromise");
17
- 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); }
18
- 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; }
17
+ 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); }
18
+ 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; }
19
19
  /**
20
20
  * Copyright (c) Microsoft Corporation.
21
21
  *
@@ -17,14 +17,15 @@ var _fileChooser = require("./fileChooser");
17
17
  var _progress = require("./progress");
18
18
  var _utils = require("../utils");
19
19
  var _manualPromise = require("../utils/manualPromise");
20
- var _debugLogger = require("../common/debugLogger");
20
+ var _debugLogger = require("../utils/debugLogger");
21
21
  var _comparators = require("../utils/comparators");
22
22
  var _instrumentation = require("./instrumentation");
23
23
  var _selectorParser = require("../utils/isomorphic/selectorParser");
24
24
  var _utilityScriptSerializers = require("./isomorphic/utilityScriptSerializers");
25
25
  var _errors = require("./errors");
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
+ var _locatorGenerators = require("../utils/isomorphic/locatorGenerators");
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; }
28
29
  /**
29
30
  * Copyright 2017 Google Inc. All rights reserved.
30
31
  * Modifications copyright (c) Microsoft Corporation.
@@ -76,6 +77,9 @@ class Page extends _instrumentation.SdkObject {
76
77
  this._video = null;
77
78
  this._opener = void 0;
78
79
  this._isServerSideOnly = false;
80
+ this._locatorHandlers = new Map();
81
+ this._lastLocatorHandlerUid = 0;
82
+ this._locatorHandlerRunningCounter = 0;
79
83
  // Aiming at 25 fps by default - each frame is 40ms, but we give some slack with 35ms.
80
84
  // When throttling for tracing, 200ms between frames, except for 10 frames around the action.
81
85
  this._frameThrottler = new FrameThrottler(10, 35, 200);
@@ -139,6 +143,7 @@ class Page extends _instrumentation.SdkObject {
139
143
  async resetForReuse(metadata) {
140
144
  this.setDefaultNavigationTimeout(undefined);
141
145
  this.setDefaultTimeout(undefined);
146
+ this._locatorHandlers.clear();
142
147
  await this._removeExposedBindings();
143
148
  await this._removeInitScripts();
144
149
  await this.setClientRequestInterceptor(undefined);
@@ -282,6 +287,43 @@ class Page extends _instrumentation.SdkObject {
282
287
  return response;
283
288
  }), this._timeoutSettings.navigationTimeout(options));
284
289
  }
290
+ registerLocatorHandler(selector) {
291
+ const uid = ++this._lastLocatorHandlerUid;
292
+ this._locatorHandlers.set(uid, {
293
+ selector
294
+ });
295
+ return uid;
296
+ }
297
+ resolveLocatorHandler(uid) {
298
+ const handler = this._locatorHandlers.get(uid);
299
+ if (handler) {
300
+ var _handler$resolved;
301
+ (_handler$resolved = handler.resolved) === null || _handler$resolved === void 0 || _handler$resolved.resolve();
302
+ handler.resolved = undefined;
303
+ }
304
+ }
305
+ async performLocatorHandlersCheckpoint(progress) {
306
+ // Do not run locator handlers from inside locator handler callbacks to avoid deadlocks.
307
+ if (this._locatorHandlerRunningCounter) return;
308
+ for (const [uid, handler] of this._locatorHandlers) {
309
+ if (!handler.resolved) {
310
+ if (await this.mainFrame().isVisibleInternal(handler.selector, {
311
+ strict: true
312
+ })) {
313
+ handler.resolved = new _manualPromise.ManualPromise();
314
+ this.emit(Page.Events.LocatorHandlerTriggered, uid);
315
+ }
316
+ }
317
+ if (handler.resolved) {
318
+ ++this._locatorHandlerRunningCounter;
319
+ progress.log(` found ${(0, _locatorGenerators.asLocator)(this.attribution.playwright.options.sdkLanguage, handler.selector)}, intercepting action to run the handler`);
320
+ await this.openScope.race(handler.resolved).finally(() => --this._locatorHandlerRunningCounter);
321
+ // Avoid side-effects after long-running operation.
322
+ progress.throwIfAborted();
323
+ progress.log(` interception handler has finished, continuing`);
324
+ }
325
+ }
326
+ }
285
327
  async emulateMedia(options) {
286
328
  if (options.media !== undefined) this._emulatedMedia.media = options.media;
287
329
  if (options.colorScheme !== undefined) this._emulatedMedia.colorScheme = options.colorScheme;
@@ -347,10 +389,11 @@ class Page extends _instrumentation.SdkObject {
347
389
  async expectScreenshot(metadata, options = {}) {
348
390
  const locator = options.locator;
349
391
  const rafrafScreenshot = locator ? async (progress, timeout) => {
350
- return await locator.frame.rafrafTimeoutScreenshotElementWithProgress(progress, locator.selector, timeout, options.screenshotOptions || {});
392
+ return await locator.frame.rafrafTimeoutScreenshotElementWithProgress(progress, locator.selector, timeout, options || {});
351
393
  } : async (progress, timeout) => {
394
+ await this.performLocatorHandlersCheckpoint(progress);
352
395
  await this.mainFrame().rafrafTimeout(timeout);
353
- return await this._screenshotter.screenshotPage(progress, options.screenshotOptions || {});
396
+ return await this._screenshotter.screenshotPage(progress, options || {});
354
397
  };
355
398
  const comparator = (0, _comparators.getComparator)('image/png');
356
399
  const controller = new _progress.ProgressController(metadata, this);
@@ -358,7 +401,7 @@ class Page extends _instrumentation.SdkObject {
358
401
  errorMessage: '"not" matcher requires expected result'
359
402
  };
360
403
  try {
361
- const format = (0, _screenshotter.validateScreenshotOptions)(options.screenshotOptions || {});
404
+ const format = (0, _screenshotter.validateScreenshotOptions)(options || {});
362
405
  if (format !== 'png') throw new Error('Only PNG screenshots are supported');
363
406
  } catch (error) {
364
407
  return {
@@ -367,7 +410,7 @@ class Page extends _instrumentation.SdkObject {
367
410
  }
368
411
  let intermediateResult = undefined;
369
412
  const areEqualScreenshots = (actual, expected, previous) => {
370
- const comparatorResult = actual && expected ? comparator(actual, expected, options.comparatorOptions) : undefined;
413
+ const comparatorResult = actual && expected ? comparator(actual, expected, options) : undefined;
371
414
  if (comparatorResult !== undefined && !!comparatorResult === !!options.isNot) return true;
372
415
  if (comparatorResult) intermediateResult = {
373
416
  errorMessage: comparatorResult.errorMessage,
@@ -520,6 +563,7 @@ Page.Events = {
520
563
  FrameAttached: 'frameattached',
521
564
  FrameDetached: 'framedetached',
522
565
  InternalFrameNavigatedToNewDocument: 'internalframenavigatedtonewdocument',
566
+ LocatorHandlerTriggered: 'locatorhandlertriggered',
523
567
  ScreencastFrame: 'screencastframe',
524
568
  Video: 'video',
525
569
  WebSocket: 'websocket',
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.PipeTransport = void 0;
7
7
  var _utils = require("../utils");
8
- var _debugLogger = require("../common/debugLogger");
8
+ var _debugLogger = require("../utils/debugLogger");
9
9
  /**
10
10
  * Copyright 2018 Google Inc. All rights reserved.
11
11
  * Modifications copyright (c) Microsoft Corporation.
@@ -13,7 +13,7 @@ var _firefox = require("./firefox/firefox");
13
13
  var _selectors = require("./selectors");
14
14
  var _webkit = require("./webkit/webkit");
15
15
  var _instrumentation = require("./instrumentation");
16
- var _debugLogger = require("../common/debugLogger");
16
+ var _debugLogger = require("../utils/debugLogger");
17
17
  var _debugController = require("./debugController");
18
18
  /**
19
19
  * Copyright (c) Microsoft Corporation.
@@ -40,7 +40,6 @@ class ProgressController {
40
40
  this.instrumentation = sdkObject.instrumentation;
41
41
  this._forceAbortPromise.catch(e => null); // Prevent unhandled promise rejection.
42
42
  }
43
-
44
43
  setLogName(logName) {
45
44
  this._logName = logName;
46
45
  }
@@ -55,20 +54,12 @@ class ProgressController {
55
54
  }
56
55
  (0, _utils.assert)(this._state === 'before');
57
56
  this._state = 'running';
58
- (_this$sdkObject$attri = this.sdkObject.attribution.context) === null || _this$sdkObject$attri === void 0 ? void 0 : _this$sdkObject$attri._activeProgressControllers.add(this);
57
+ (_this$sdkObject$attri = this.sdkObject.attribution.context) === null || _this$sdkObject$attri === void 0 || _this$sdkObject$attri._activeProgressControllers.add(this);
59
58
  const progress = {
60
59
  log: message => {
61
- progress.logEntry({
62
- message
63
- });
64
- },
65
- logEntry: entry => {
66
- if ('message' in entry) {
67
- const message = entry.message;
68
- if (this._state === 'running') this.metadata.log.push(message);
69
- // Note: we might be sending logs after progress has finished, for example browser logs.
70
- this.instrumentation.onCallLog(this.sdkObject, this.metadata, this._logName, message);
71
- }
60
+ if (this._state === 'running') this.metadata.log.push(message);
61
+ // Note: we might be sending logs after progress has finished, for example browser logs.
62
+ this.instrumentation.onCallLog(this.sdkObject, this.metadata, this._logName, message);
72
63
  },
73
64
  timeUntilDeadline: () => this._deadline ? this._deadline - (0, _utils.monotonicTime)() : 2147483647,
74
65
  // 2^31-1 safe setTimeout in Node.
@@ -97,7 +88,7 @@ class ProgressController {
97
88
  throw e;
98
89
  } finally {
99
90
  var _this$sdkObject$attri2;
100
- (_this$sdkObject$attri2 = this.sdkObject.attribution.context) === null || _this$sdkObject$attri2 === void 0 ? void 0 : _this$sdkObject$attri2._activeProgressControllers.delete(this);
91
+ (_this$sdkObject$attri2 = this.sdkObject.attribution.context) === null || _this$sdkObject$attri2 === void 0 || _this$sdkObject$attri2._activeProgressControllers.delete(this);
101
92
  clearTimeout(timer);
102
93
  }
103
94
  }
@@ -138,7 +138,7 @@ class CSharpLanguageGenerator {
138
138
  return `await Expect(${subject}.${this._asLocator(action.selector)}).ToBeVisibleAsync();`;
139
139
  case 'assertValue':
140
140
  {
141
- const assertion = action.value ? `ToHaveValueAsync(${quote(action.value)})` : `ToBeEmpty()`;
141
+ const assertion = action.value ? `ToHaveValueAsync(${quote(action.value)})` : `ToBeEmptyAsync()`;
142
142
  return `await Expect(${subject}.${this._asLocator(action.selector)}).${assertion};`;
143
143
  }
144
144
  }
@@ -21,7 +21,7 @@ exports.metadataToCallLog = metadataToCallLog;
21
21
  */
22
22
 
23
23
  function metadataToCallLog(metadata, status) {
24
- var _metadata$params, _metadata$params2, _metadata$error, _metadata$error$error;
24
+ var _metadata$params, _metadata$params2, _metadata$error;
25
25
  let title = metadata.apiName || metadata.method;
26
26
  if (metadata.method === 'waitForEventInfo') title += `(${metadata.params.info.event})`;
27
27
  title = title.replace('object.expect', 'expect');
@@ -40,7 +40,7 @@ function metadataToCallLog(metadata, status) {
40
40
  messages: metadata.log,
41
41
  title,
42
42
  status,
43
- error: (_metadata$error = metadata.error) === null || _metadata$error === void 0 ? void 0 : (_metadata$error$error = _metadata$error.error) === null || _metadata$error$error === void 0 ? void 0 : _metadata$error$error.message,
43
+ error: (_metadata$error = metadata.error) === null || _metadata$error === void 0 || (_metadata$error = _metadata$error.error) === null || _metadata$error === void 0 ? void 0 : _metadata$error.message,
44
44
  params,
45
45
  duration
46
46
  };
@@ -26,8 +26,8 @@ var _timeoutRunner = require("../utils/timeoutRunner");
26
26
  var _locatorParser = require("../utils/isomorphic/locatorParser");
27
27
  var _stringUtils = require("../utils/isomorphic/stringUtils");
28
28
  var _eventsHelper = require("./../utils/eventsHelper");
29
- 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); }
30
- 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; }
29
+ 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); }
30
+ 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; }
31
31
  /**
32
32
  * Copyright (c) Microsoft Corporation.
33
33
  *
@@ -144,7 +144,7 @@ class Recorder {
144
144
  var _this$_recorderApp;
145
145
  this._recorderSources = data.sources;
146
146
  this._pushAllSources();
147
- (_this$_recorderApp = this._recorderApp) === null || _this$_recorderApp === void 0 ? void 0 : _this$_recorderApp.setFileIfNeeded(data.primaryFileName);
147
+ (_this$_recorderApp = this._recorderApp) === null || _this$_recorderApp === void 0 || _this$_recorderApp.setFileIfNeeded(data.primaryFileName);
148
148
  });
149
149
  await this._context.exposeBinding('__pw_recorderState', false, source => {
150
150
  let actionSelector = '';
@@ -213,7 +213,7 @@ class Recorder {
213
213
  } of this._debugger.pausedDetails()) {
214
214
  if (!this._currentCallsMetadata.has(metadata)) this.onBeforeCall(sdkObject, metadata);
215
215
  }
216
- (_this$_recorderApp3 = this._recorderApp) === null || _this$_recorderApp3 === void 0 ? void 0 : _this$_recorderApp3.setPaused(this._debugger.isPaused());
216
+ (_this$_recorderApp3 = this._recorderApp) === null || _this$_recorderApp3 === void 0 || _this$_recorderApp3.setPaused(this._debugger.isPaused());
217
217
  this._updateUserSources();
218
218
  this.updateCallLog([...this._currentCallsMetadata.keys()]);
219
219
  }
@@ -222,7 +222,7 @@ class Recorder {
222
222
  if (this._mode === mode) return;
223
223
  this._highlightedSelector = '';
224
224
  this._mode = mode;
225
- (_this$_recorderApp4 = this._recorderApp) === null || _this$_recorderApp4 === void 0 ? void 0 : _this$_recorderApp4.setMode(this._mode);
225
+ (_this$_recorderApp4 = this._recorderApp) === null || _this$_recorderApp4 === void 0 || _this$_recorderApp4.setMode(this._mode);
226
226
  this._contextRecorder.setEnabled(this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue');
227
227
  this._debugger.setMuted(this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue');
228
228
  if (this._mode !== 'none' && this._mode !== 'standby' && this._context.pages().length === 1) this._context.pages()[0].bringToFront().catch(() => {});
@@ -258,7 +258,7 @@ class Recorder {
258
258
  } else if (metadata.params && metadata.params.selector) {
259
259
  var _this$_recorderApp5;
260
260
  this._highlightedSelector = metadata.params.selector;
261
- (_this$_recorderApp5 = this._recorderApp) === null || _this$_recorderApp5 === void 0 ? void 0 : _this$_recorderApp5.setSelector(this._highlightedSelector).catch(() => {});
261
+ (_this$_recorderApp5 = this._recorderApp) === null || _this$_recorderApp5 === void 0 || _this$_recorderApp5.setSelector(this._highlightedSelector).catch(() => {});
262
262
  }
263
263
  }
264
264
  async onAfterCall(sdkObject, metadata) {
@@ -306,11 +306,11 @@ class Recorder {
306
306
  }
307
307
  }
308
308
  this._pushAllSources();
309
- if (fileToSelect) (_this$_recorderApp6 = this._recorderApp) === null || _this$_recorderApp6 === void 0 ? void 0 : _this$_recorderApp6.setFileIfNeeded(fileToSelect);
309
+ if (fileToSelect) (_this$_recorderApp6 = this._recorderApp) === null || _this$_recorderApp6 === void 0 || _this$_recorderApp6.setFileIfNeeded(fileToSelect);
310
310
  }
311
311
  _pushAllSources() {
312
312
  var _this$_recorderApp7;
313
- (_this$_recorderApp7 = this._recorderApp) === null || _this$_recorderApp7 === void 0 ? void 0 : _this$_recorderApp7.setSources([...this._recorderSources, ...this._userSources.values()]);
313
+ (_this$_recorderApp7 = this._recorderApp) === null || _this$_recorderApp7 === void 0 || _this$_recorderApp7.setSources([...this._recorderSources, ...this._userSources.values()]);
314
314
  }
315
315
  async onBeforeInputAction(sdkObject, metadata) {}
316
316
  async onCallLog(sdkObject, metadata, logName, message) {
@@ -327,7 +327,7 @@ class Recorder {
327
327
  if (this._debugger.isPaused(metadata)) status = 'paused';
328
328
  logs.push((0, _recorderUtils.metadataToCallLog)(metadata, status));
329
329
  }
330
- (_this$_recorderApp8 = this._recorderApp) === null || _this$_recorderApp8 === void 0 ? void 0 : _this$_recorderApp8.updateCallLogs(logs);
330
+ (_this$_recorderApp8 = this._recorderApp) === null || _this$_recorderApp8 === void 0 || _this$_recorderApp8.updateCallLogs(logs);
331
331
  }
332
332
  _readSource(fileName) {
333
333
  try {
@@ -384,7 +384,7 @@ class ContextRecorder extends _events.EventEmitter {
384
384
  };
385
385
  source.revealLine = text.split('\n').length - 1;
386
386
  this._recorderSources.push(source);
387
- if (languageGenerator === this._orderedLanguages[0]) (_this$_throttledOutpu = this._throttledOutputFile) === null || _this$_throttledOutpu === void 0 ? void 0 : _this$_throttledOutpu.setContent(source.text);
387
+ if (languageGenerator === this._orderedLanguages[0]) (_this$_throttledOutpu = this._throttledOutputFile) === null || _this$_throttledOutpu === void 0 || _this$_throttledOutpu.setContent(source.text);
388
388
  }
389
389
  this.emit(ContextRecorder.Events.Change, {
390
390
  sources: this._recorderSources,
@@ -393,11 +393,11 @@ class ContextRecorder extends _events.EventEmitter {
393
393
  });
394
394
  context.on(_browserContext.BrowserContext.Events.BeforeClose, () => {
395
395
  var _this$_throttledOutpu2;
396
- (_this$_throttledOutpu2 = this._throttledOutputFile) === null || _this$_throttledOutpu2 === void 0 ? void 0 : _this$_throttledOutpu2.flush();
396
+ (_this$_throttledOutpu2 = this._throttledOutputFile) === null || _this$_throttledOutpu2 === void 0 || _this$_throttledOutpu2.flush();
397
397
  });
398
398
  this._listeners.push(_eventsHelper.eventsHelper.addEventListener(process, 'exit', () => {
399
399
  var _this$_throttledOutpu3;
400
- (_this$_throttledOutpu3 = this._throttledOutputFile) === null || _this$_throttledOutpu3 === void 0 ? void 0 : _this$_throttledOutpu3.flush();
400
+ (_this$_throttledOutpu3 = this._throttledOutputFile) === null || _this$_throttledOutpu3 === void 0 || _this$_throttledOutpu3.flush();
401
401
  }));
402
402
  this._generator = generator;
403
403
  }
@@ -409,7 +409,7 @@ class ContextRecorder extends _events.EventEmitter {
409
409
  languages.delete(primaryLanguage);
410
410
  this._orderedLanguages = [primaryLanguage, ...languages];
411
411
  this._throttledOutputFile = outputFile ? new ThrottledFile(outputFile) : null;
412
- (_this$_generator = this._generator) === null || _this$_generator === void 0 ? void 0 : _this$_generator.restart();
412
+ (_this$_generator = this._generator) === null || _this$_generator === void 0 || _this$_generator.restart();
413
413
  }
414
414
  languageName(id) {
415
415
  for (const lang of this._orderedLanguages) {
@@ -690,7 +690,7 @@ async function findFrameSelector(frame) {
690
690
  const utility = await parent._utilityContext();
691
691
  const injected = await utility.injectedScript();
692
692
  const selector = await injected.evaluate((injected, element) => {
693
- return injected.generateSelector(element, {
693
+ return injected.generateSelectorSimple(element, {
694
694
  testIdAttributeName: '',
695
695
  omitInternalEngines: true
696
696
  });
@@ -10,7 +10,7 @@ var _os = _interopRequireDefault(require("os"));
10
10
  var _path = _interopRequireDefault(require("path"));
11
11
  var _child_process = _interopRequireDefault(require("child_process"));
12
12
  var _fileUtils = require("../../utils/fileUtils");
13
- var _debugLogger = require("../../common/debugLogger");
13
+ var _debugLogger = require("../../utils/debugLogger");
14
14
  var _manualPromise = require("../../utils/manualPromise");
15
15
  var _utilsBundle = require("../../utilsBundle");
16
16
  var _ = require(".");
@@ -126,7 +126,6 @@ function logPolitely(toBeLogged) {
126
126
  const logLevelDisplay = ['silent', 'error', 'warn'].indexOf(logLevel || '') > -1;
127
127
  if (!logLevelDisplay) console.log(toBeLogged); // eslint-disable-line no-console
128
128
  }
129
-
130
129
  function getDownloadProgress() {
131
130
  if (process.stdout.isTTY) return getAnimatedDownloadProgress();
132
131
  return getBasicDownloadProgress();
@@ -21,8 +21,8 @@ var _hostPlatform = require("../../utils/hostPlatform");
21
21
  var _ = require(".");
22
22
  var _nativeDeps = require("./nativeDeps");
23
23
  var _userAgent = require("../../utils/userAgent");
24
- 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); }
25
- 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; }
24
+ 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); }
25
+ 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; }
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
  /**
28
28
  * Copyright (c) Microsoft Corporation.
@@ -166,7 +166,7 @@ async function validateDependenciesWindows(windowsExeAndDllDirectories) {
166
166
  }
167
167
  }
168
168
  async function validateDependenciesLinux(sdkLanguage, linuxLddDirectories, dlOpenLibraries) {
169
- var _deps$hostPlatform;
169
+ var _deps$hostPlatform, _process$getuid, _process;
170
170
  const directoryPaths = linuxLddDirectories;
171
171
  const lddPaths = [];
172
172
  for (const directoryPath of directoryPaths) lddPaths.push(...(await executablesOrSharedLibraries(directoryPath)));
@@ -192,7 +192,7 @@ async function validateDependenciesLinux(sdkLanguage, linuxLddDirectories, dlOpe
192
192
  missingDeps.delete(missingDep);
193
193
  }
194
194
  }
195
- const maybeSudo = process.getuid() !== 0 && os.platform() !== 'win32' ? 'sudo ' : '';
195
+ const maybeSudo = (_process$getuid = (_process = process).getuid) !== null && _process$getuid !== void 0 && _process$getuid.call(_process) && os.platform() !== 'win32' ? 'sudo ' : '';
196
196
  const dockerInfo = readDockerVersionSync();
197
197
  const errorLines = [`Host system is missing dependencies to run browsers.`];
198
198
  // Ignore patch versions when comparing docker container version and Playwright version:
@@ -202,7 +202,7 @@ async function validateDependenciesLinux(sdkLanguage, linuxLddDirectories, dlOpe
202
202
  // In this case, we know how to install dependencies in it.
203
203
  const pwVersion = (0, _userAgent.getPlaywrightVersion)();
204
204
  const requiredDockerImage = dockerInfo.dockerImageName.replace(dockerInfo.driverVersion, pwVersion);
205
- errorLines.push(...[`This is most likely due to docker image version not matching Playwright version:`, `- Playwright: ${pwVersion}`, `- Docker: ${dockerInfo.driverVersion}`, ``, `Either:`, `- (recommended) use docker image "${requiredDockerImage}"`, `- (alternative 1) run the following command inside docker to install missing dependencies:`, ``, ` ${maybeSudo}${(0, _.buildPlaywrightCLICommand)(sdkLanguage, 'install-deps')}`, ``, `- (alternative 2) use apt inside docker:`, ``, ` ${maybeSudo}apt-get install ${[...missingPackages].join('\\\n ')}`, ``, `<3 Playwright Team`]);
205
+ errorLines.push(...[`This is most likely due to Docker image version not matching Playwright version:`, `- Playwright : ${pwVersion}`, `- Docker image: ${dockerInfo.driverVersion}`, ``, `Either:`, `- (recommended) use Docker image "${requiredDockerImage}"`, `- (alternative 1) run the following command inside Docker to install missing dependencies:`, ``, ` ${maybeSudo}${(0, _.buildPlaywrightCLICommand)(sdkLanguage, 'install-deps')}`, ``, `- (alternative 2) use apt inside Docker:`, ``, ` ${maybeSudo}apt-get install ${[...missingPackages].join('\\\n ')}`, ``, `<3 Playwright Team`]);
206
206
  } else if (missingPackages.size && !missingDeps.size) {
207
207
  // Only known dependencies are missing for browsers.
208
208
  // Suggest installation with a Playwright CLI.
@@ -301,7 +301,8 @@ function quoteProcessArgs(args) {
301
301
  });
302
302
  }
303
303
  async function transformCommandsForRoot(commands) {
304
- const isRoot = process.getuid() === 0;
304
+ var _process$getuid2, _process2;
305
+ const isRoot = ((_process$getuid2 = (_process2 = process).getuid) === null || _process$getuid2 === void 0 ? void 0 : _process$getuid2.call(_process2)) === 0;
305
306
  if (isRoot) return {
306
307
  command: 'sh',
307
308
  args: ['-c', `${commands.join('&& ')}`],