@checkly/playwright-core 1.41.2-beta.0 → 1.41.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browserServerImpl.js +1 -1
- package/lib/cli/cli.js +61 -0
- package/lib/cli/driver.js +3 -11
- package/lib/cli/program.js +5 -13
- package/lib/client/android.js +1 -1
- package/lib/client/artifact.js +2 -2
- package/lib/client/browserContext.js +5 -5
- package/lib/client/browserType.js +1 -1
- package/lib/client/channelOwner.js +3 -3
- package/lib/client/clientHelper.js +1 -5
- package/lib/client/connection.js +2 -2
- package/lib/client/consoleMessage.js +2 -2
- package/lib/client/fetch.js +3 -3
- package/lib/client/frame.js +3 -4
- package/lib/client/harRouter.js +1 -1
- package/lib/client/locator.js +2 -2
- package/lib/client/page.js +1 -24
- package/lib/common/debugLogger.js +90 -0
- package/lib/common/socksProxy.js +17 -12
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/recorderSource.js +1 -1
- package/lib/outofprocess.js +3 -3
- package/lib/protocol/validator.js +7 -13
- package/lib/remote/playwrightConnection.js +2 -2
- package/lib/remote/playwrightServer.js +166 -72
- package/lib/server/android/android.js +2 -2
- package/lib/server/android/backendAdb.js +2 -2
- package/lib/server/browser.js +2 -2
- package/lib/server/browserContext.js +9 -8
- package/lib/server/browserType.js +5 -5
- package/lib/server/chromium/chromium.js +1 -1
- package/lib/server/chromium/crBrowser.js +3 -2
- package/lib/server/chromium/crConnection.js +2 -2
- package/lib/server/chromium/crExecutionContext.js +2 -2
- package/lib/server/chromium/crInput.js +2 -2
- package/lib/server/chromium/crNetworkManager.js +23 -37
- package/lib/server/chromium/crPage.js +7 -48
- package/lib/server/chromium/crServiceWorker.js +3 -2
- package/lib/server/debugController.js +3 -0
- package/lib/server/deviceDescriptorsSource.json +50 -50
- package/lib/server/dispatchers/browserContextDispatcher.js +4 -4
- package/lib/server/dispatchers/dispatcher.js +10 -10
- package/lib/server/dispatchers/localUtilsDispatcher.js +4 -4
- package/lib/server/dispatchers/pageDispatcher.js +0 -12
- package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
- package/lib/server/dispatchers/writableStreamDispatcher.js +2 -2
- package/lib/server/dom.js +170 -133
- package/lib/server/electron/electron.js +4 -5
- package/lib/server/electron/loader.js +2 -4
- package/lib/server/fetch.js +4 -4
- package/lib/server/firefox/ffBrowser.js +3 -3
- package/lib/server/firefox/ffConnection.js +1 -1
- package/lib/server/firefox/ffExecutionContext.js +2 -2
- package/lib/server/firefox/ffNetworkManager.js +7 -7
- package/lib/server/firefox/ffPage.js +5 -3
- package/lib/server/firefox/firefox.js +2 -2
- package/lib/server/frames.js +23 -31
- package/lib/server/har/harTracer.js +6 -6
- package/lib/server/helper.js +1 -1
- package/lib/server/input.js +2 -2
- package/lib/server/isomorphic/utilityScriptSerializers.js +1 -0
- package/lib/server/javascript.js +2 -2
- package/lib/server/network.js +23 -5
- package/lib/server/page.js +3 -44
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +1 -1
- package/lib/server/progress.js +14 -5
- package/lib/server/recorder/csharp.js +1 -1
- package/lib/server/recorder/recorderUtils.js +2 -2
- package/lib/server/recorder.js +14 -14
- package/lib/server/registry/browserFetcher.js +2 -1
- package/lib/server/registry/dependencies.js +6 -7
- package/lib/server/registry/index.js +33 -50
- package/lib/server/registry/nativeDeps.js +94 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +2 -2
- package/lib/server/screenshotter.js +1 -0
- package/lib/server/socksInterceptor.js +2 -2
- package/lib/server/trace/recorder/snapshotter.js +2 -2
- package/lib/server/trace/recorder/tracing.js +9 -7
- package/lib/server/trace/test/inMemorySnapshotter.js +1 -1
- package/lib/server/trace/viewer/traceViewer.js +2 -2
- package/lib/server/transport.js +13 -15
- package/lib/server/webkit/wkBrowser.js +3 -3
- package/lib/server/webkit/wkConnection.js +1 -1
- package/lib/server/webkit/wkExecutionContext.js +2 -2
- package/lib/server/webkit/wkInput.js +2 -2
- package/lib/server/webkit/wkInterceptableRequest.js +2 -2
- package/lib/server/webkit/wkPage.js +12 -10
- package/lib/utils/fileUtils.js +0 -4
- package/lib/utils/happy-eyeballs.js +4 -5
- package/lib/utils/hostPlatform.js +1 -1
- package/lib/utils/index.js +0 -11
- package/lib/utils/isomorphic/cssParser.js +2 -2
- package/lib/utils/isomorphic/locatorParser.js +4 -6
- package/lib/utils/isomorphic/selectorParser.js +1 -0
- package/lib/utils/network.js +0 -33
- package/lib/utils/processLauncher.js +2 -9
- package/lib/utils/profiler.js +2 -2
- package/lib/utils/zipFile.js +1 -1
- package/lib/vite/htmlReport/index.html +13 -12
- package/lib/vite/recorder/assets/codeMirrorModule-2a26f817.js +24 -0
- package/lib/vite/recorder/assets/codeMirrorModule-5d0f417c.css +1 -0
- package/lib/vite/recorder/assets/{index-ljsTwXtJ.css → index-64ce22d5.css} +1 -1
- package/lib/vite/recorder/assets/index-bbf80321.js +41 -0
- package/lib/vite/recorder/index.html +3 -2
- package/lib/vite/{recorder/assets/codeMirrorModule-I9ks4y7D.js → traceViewer/assets/codeMirrorModule-56536a77.js} +13 -13
- package/lib/vite/traceViewer/assets/wsPort-722747dc.js +64 -0
- package/lib/vite/traceViewer/assets/xtermModule-443332e6.js +9 -0
- package/lib/vite/traceViewer/codeMirrorModule.5d0f417c.css +1 -0
- package/lib/vite/traceViewer/codicon.79f233d0.ttf +0 -0
- package/lib/vite/traceViewer/index.1a1fe659.css +1 -0
- package/lib/vite/traceViewer/index.d05939c9.js +2 -0
- package/lib/vite/traceViewer/index.html +5 -4
- package/lib/vite/traceViewer/sw.bundle.js +1 -1
- package/lib/vite/traceViewer/uiMode.8b41a49d.css +1 -0
- package/lib/vite/traceViewer/uiMode.8e0454c4.js +4 -0
- package/lib/vite/traceViewer/uiMode.html +5 -4
- package/lib/vite/traceViewer/wsPort.9c9a6767.css +1 -0
- package/lib/vite/traceViewer/xtermModule.6428296b.css +32 -0
- package/package.json +1 -1
- package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +0 -1
- package/lib/vite/recorder/assets/index-yg8ypzl6.js +0 -47
- /package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-79f233d0.ttf} +0 -0
|
@@ -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("../../
|
|
17
|
+
var _debugLogger = require("../../common/debugLogger");
|
|
18
18
|
var _manualPromise = require("../../utils/manualPromise");
|
|
19
19
|
var _browserContext = require("../browserContext");
|
|
20
20
|
var _errors = require("../errors");
|
|
21
|
-
function _getRequireWildcardCache(
|
|
22
|
-
function _interopRequireWildcard(
|
|
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; }
|
|
23
23
|
/**
|
|
24
24
|
* Copyright 2019 Google Inc. All rights reserved.
|
|
25
25
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -267,6 +267,7 @@ class FFPage {
|
|
|
267
267
|
});
|
|
268
268
|
// Note: we receive worker exceptions directly from the page.
|
|
269
269
|
}
|
|
270
|
+
|
|
270
271
|
_onWorkerDestroyed(event) {
|
|
271
272
|
const workerId = event.workerId;
|
|
272
273
|
const worker = this._workers.get(workerId);
|
|
@@ -349,6 +350,7 @@ class FFPage {
|
|
|
349
350
|
enabled
|
|
350
351
|
}).catch(() => {}); // target can be closed.
|
|
351
352
|
}
|
|
353
|
+
|
|
352
354
|
async reload() {
|
|
353
355
|
await this._session.send('Page.reload');
|
|
354
356
|
}
|
|
@@ -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(
|
|
15
|
-
function _interopRequireWildcard(
|
|
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; }
|
|
16
16
|
/**
|
|
17
17
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
18
18
|
* Modifications copyright (c) Microsoft Corporation.
|
package/lib/server/frames.js
CHANGED
|
@@ -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("../
|
|
18
|
+
var _debugLogger = require("../common/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(
|
|
27
|
-
function _interopRequireWildcard(
|
|
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; }
|
|
28
28
|
/**
|
|
29
29
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
30
30
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -930,10 +930,9 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
930
930
|
// Retry upon all other errors.
|
|
931
931
|
return false;
|
|
932
932
|
}
|
|
933
|
-
async _retryWithProgressIfNotConnected(progress, selector, strict,
|
|
933
|
+
async _retryWithProgressIfNotConnected(progress, selector, strict, 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);
|
|
937
936
|
const resolved = await this.selectors.resolveInjectedForSelector(selector, {
|
|
938
937
|
strict
|
|
939
938
|
});
|
|
@@ -981,12 +980,12 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
981
980
|
}
|
|
982
981
|
return result;
|
|
983
982
|
} finally {
|
|
984
|
-
element === null || element === void 0
|
|
983
|
+
element === null || element === void 0 ? void 0 : element.dispose();
|
|
985
984
|
}
|
|
986
985
|
});
|
|
987
986
|
}
|
|
988
987
|
async rafrafTimeoutScreenshotElementWithProgress(progress, selector, timeout, options) {
|
|
989
|
-
return await this._retryWithProgressIfNotConnected(progress, selector, true /* strict */,
|
|
988
|
+
return await this._retryWithProgressIfNotConnected(progress, selector, true /* strict */, async handle => {
|
|
990
989
|
await handle._frame.rafrafTimeout(timeout);
|
|
991
990
|
return await this._page._screenshotter.screenshotElement(progress, handle, options);
|
|
992
991
|
});
|
|
@@ -994,19 +993,19 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
994
993
|
async click(metadata, selector, options) {
|
|
995
994
|
const controller = new _progress.ProgressController(metadata, this);
|
|
996
995
|
return controller.run(async progress => {
|
|
997
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
996
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._click(progress, options)));
|
|
998
997
|
}, this._page._timeoutSettings.timeout(options));
|
|
999
998
|
}
|
|
1000
999
|
async dblclick(metadata, selector, options = {}) {
|
|
1001
1000
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1002
1001
|
return controller.run(async progress => {
|
|
1003
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1002
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._dblclick(progress, options)));
|
|
1004
1003
|
}, this._page._timeoutSettings.timeout(options));
|
|
1005
1004
|
}
|
|
1006
1005
|
async dragAndDrop(metadata, source, target, options = {}) {
|
|
1007
1006
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1008
1007
|
await controller.run(async progress => {
|
|
1009
|
-
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, source, options.strict,
|
|
1008
|
+
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, source, options.strict, async handle => {
|
|
1010
1009
|
return handle._retryPointerAction(progress, 'move and down', false, async point => {
|
|
1011
1010
|
await this._page.mouse.move(point.x, point.y);
|
|
1012
1011
|
await this._page.mouse.down();
|
|
@@ -1016,8 +1015,7 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
1016
1015
|
timeout: progress.timeUntilDeadline()
|
|
1017
1016
|
});
|
|
1018
1017
|
}));
|
|
1019
|
-
|
|
1020
|
-
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, target, options.strict, false /* performLocatorHandlersCheckpoint */, async handle => {
|
|
1018
|
+
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, target, options.strict, async handle => {
|
|
1021
1019
|
return handle._retryPointerAction(progress, 'move and up', false, async point => {
|
|
1022
1020
|
await this._page.mouse.move(point.x, point.y);
|
|
1023
1021
|
await this._page.mouse.up();
|
|
@@ -1033,25 +1031,25 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
1033
1031
|
if (!this._page._browserContext._options.hasTouch) throw new Error('The page does not support tap. Use hasTouch context option to enable touch support.');
|
|
1034
1032
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1035
1033
|
return controller.run(async progress => {
|
|
1036
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1034
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._tap(progress, options)));
|
|
1037
1035
|
}, this._page._timeoutSettings.timeout(options));
|
|
1038
1036
|
}
|
|
1039
1037
|
async fill(metadata, selector, value, options) {
|
|
1040
1038
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1041
1039
|
return controller.run(async progress => {
|
|
1042
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1040
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._fill(progress, value, options)));
|
|
1043
1041
|
}, this._page._timeoutSettings.timeout(options));
|
|
1044
1042
|
}
|
|
1045
1043
|
async focus(metadata, selector, options = {}) {
|
|
1046
1044
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1047
1045
|
await controller.run(async progress => {
|
|
1048
|
-
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1046
|
+
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._focus(progress)));
|
|
1049
1047
|
}, this._page._timeoutSettings.timeout(options));
|
|
1050
1048
|
}
|
|
1051
1049
|
async blur(metadata, selector, options = {}) {
|
|
1052
1050
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1053
1051
|
await controller.run(async progress => {
|
|
1054
|
-
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1052
|
+
dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._blur(progress)));
|
|
1055
1053
|
}, this._page._timeoutSettings.timeout(options));
|
|
1056
1054
|
}
|
|
1057
1055
|
async textContent(metadata, selector, options = {}, scope) {
|
|
@@ -1110,11 +1108,6 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
1110
1108
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1111
1109
|
return controller.run(async progress => {
|
|
1112
1110
|
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 {
|
|
1118
1111
|
const resolved = await this.selectors.resolveInjectedForSelector(selector, options, scope);
|
|
1119
1112
|
if (!resolved) return false;
|
|
1120
1113
|
return await resolved.injected.evaluate((injected, {
|
|
@@ -1128,10 +1121,10 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
1128
1121
|
info: resolved.info,
|
|
1129
1122
|
root: resolved.frame === this ? scope : undefined
|
|
1130
1123
|
});
|
|
1131
|
-
} catch
|
|
1124
|
+
}, this._page._timeoutSettings.timeout({})).catch(e => {
|
|
1132
1125
|
if (js.isJavaScriptErrorInEvaluate(e) || (0, _selectorParser.isInvalidSelectorError)(e) || (0, _protocolError.isSessionClosedError)(e)) throw e;
|
|
1133
1126
|
return false;
|
|
1134
|
-
}
|
|
1127
|
+
});
|
|
1135
1128
|
}
|
|
1136
1129
|
async isHidden(metadata, selector, options = {}, scope) {
|
|
1137
1130
|
return !(await this.isVisible(metadata, selector, options, scope));
|
|
@@ -1151,44 +1144,44 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
1151
1144
|
async hover(metadata, selector, options = {}) {
|
|
1152
1145
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1153
1146
|
return controller.run(async progress => {
|
|
1154
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1147
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._hover(progress, options)));
|
|
1155
1148
|
}, this._page._timeoutSettings.timeout(options));
|
|
1156
1149
|
}
|
|
1157
1150
|
async selectOption(metadata, selector, elements, values, options = {}) {
|
|
1158
1151
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1159
1152
|
return controller.run(async progress => {
|
|
1160
|
-
return await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1153
|
+
return await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._selectOption(progress, elements, values, options));
|
|
1161
1154
|
}, this._page._timeoutSettings.timeout(options));
|
|
1162
1155
|
}
|
|
1163
1156
|
async setInputFiles(metadata, selector, params) {
|
|
1164
1157
|
const inputFileItems = await (0, _fileUploadUtils.prepareFilesForUpload)(this, params);
|
|
1165
1158
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1166
1159
|
return controller.run(async progress => {
|
|
1167
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, params.strict,
|
|
1160
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, params.strict, handle => handle._setInputFiles(progress, inputFileItems, params)));
|
|
1168
1161
|
}, this._page._timeoutSettings.timeout(params));
|
|
1169
1162
|
}
|
|
1170
1163
|
async type(metadata, selector, text, options = {}) {
|
|
1171
1164
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1172
1165
|
return controller.run(async progress => {
|
|
1173
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1166
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._type(progress, text, options)));
|
|
1174
1167
|
}, this._page._timeoutSettings.timeout(options));
|
|
1175
1168
|
}
|
|
1176
1169
|
async press(metadata, selector, key, options = {}) {
|
|
1177
1170
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1178
1171
|
return controller.run(async progress => {
|
|
1179
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1172
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._press(progress, key, options)));
|
|
1180
1173
|
}, this._page._timeoutSettings.timeout(options));
|
|
1181
1174
|
}
|
|
1182
1175
|
async check(metadata, selector, options = {}) {
|
|
1183
1176
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1184
1177
|
return controller.run(async progress => {
|
|
1185
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1178
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._setChecked(progress, true, options)));
|
|
1186
1179
|
}, this._page._timeoutSettings.timeout(options));
|
|
1187
1180
|
}
|
|
1188
1181
|
async uncheck(metadata, selector, options = {}) {
|
|
1189
1182
|
const controller = new _progress.ProgressController(metadata, this);
|
|
1190
1183
|
return controller.run(async progress => {
|
|
1191
|
-
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict,
|
|
1184
|
+
return dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => handle._setChecked(progress, false, options)));
|
|
1192
1185
|
}, this._page._timeoutSettings.timeout(options));
|
|
1193
1186
|
}
|
|
1194
1187
|
async waitForTimeout(metadata, timeout) {
|
|
@@ -1226,7 +1219,6 @@ class Frame extends _instrumentation.SdkObject {
|
|
|
1226
1219
|
}
|
|
1227
1220
|
return await this.retryWithProgressAndTimeouts(progress, [100, 250, 500, 1000], async continuePolling => {
|
|
1228
1221
|
var _info$world;
|
|
1229
|
-
await this._page.performLocatorHandlersCheckpoint(progress);
|
|
1230
1222
|
const selectorInFrame = await this.selectors.resolveFrameForSelector(selector, {
|
|
1231
1223
|
strict: true
|
|
1232
1224
|
});
|
|
@@ -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(
|
|
20
|
-
function _interopRequireWildcard(
|
|
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; }
|
|
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
|
|
266
|
+
compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? void 0 : compressionCalculationBarrier.setDecodedBodySize(0);
|
|
267
267
|
return;
|
|
268
268
|
}
|
|
269
269
|
const content = harEntry.response.content;
|
|
270
|
-
compressionCalculationBarrier === null || compressionCalculationBarrier === void 0
|
|
270
|
+
compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? void 0 : compressionCalculationBarrier.setDecodedBodySize(buffer.length);
|
|
271
271
|
this._storeResponseContent(buffer, content, request.resourceType());
|
|
272
272
|
}).catch(() => {
|
|
273
|
-
compressionCalculationBarrier === null || compressionCalculationBarrier === void 0
|
|
273
|
+
compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? 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
|
|
289
|
+
compressionCalculationBarrier === null || compressionCalculationBarrier === void 0 ? void 0 : compressionCalculationBarrier.setEncodedBodySize(sizes.responseBodySize);
|
|
290
290
|
}));
|
|
291
291
|
}
|
|
292
292
|
}
|
package/lib/server/helper.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.helper = void 0;
|
|
7
|
-
var _debugLogger = require("../
|
|
7
|
+
var _debugLogger = require("../common/debugLogger");
|
|
8
8
|
var _eventsHelper = require("../utils/eventsHelper");
|
|
9
9
|
/**
|
|
10
10
|
* Copyright 2017 Google Inc. All rights reserved.
|
package/lib/server/input.js
CHANGED
|
@@ -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(
|
|
10
|
-
function _interopRequireWildcard(
|
|
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; }
|
|
11
11
|
/**
|
|
12
12
|
* Copyright (c) Microsoft Corporation.
|
|
13
13
|
*
|
package/lib/server/javascript.js
CHANGED
|
@@ -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(
|
|
18
|
-
function _interopRequireWildcard(
|
|
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; }
|
|
19
19
|
/**
|
|
20
20
|
* Copyright (c) Microsoft Corporation.
|
|
21
21
|
*
|
package/lib/server/network.js
CHANGED
|
@@ -126,6 +126,15 @@ class Request extends _instrumentation.SdkObject {
|
|
|
126
126
|
this._failureText = failureText;
|
|
127
127
|
this._waitForResponsePromise.resolve(null);
|
|
128
128
|
}
|
|
129
|
+
async _waitForRequestFailure() {
|
|
130
|
+
const response = await this._waitForResponsePromise;
|
|
131
|
+
// If response is null it was a failure an we are done.
|
|
132
|
+
if (!response) return;
|
|
133
|
+
await response._finishedPromise;
|
|
134
|
+
if (this.failure()) return;
|
|
135
|
+
// If request finished without errors, we stall.
|
|
136
|
+
await new Promise(() => {});
|
|
137
|
+
}
|
|
129
138
|
_setOverrides(overrides) {
|
|
130
139
|
this._overrides = overrides;
|
|
131
140
|
this._updateHeadersMap();
|
|
@@ -232,7 +241,10 @@ class Route extends _instrumentation.SdkObject {
|
|
|
232
241
|
async abort(errorCode = 'failed') {
|
|
233
242
|
this._startHandling();
|
|
234
243
|
this._request._context.emit(_browserContext.BrowserContext.Events.RequestAborted, this._request);
|
|
235
|
-
await this._delegate.abort(errorCode)
|
|
244
|
+
await Promise.race([this._delegate.abort(errorCode),
|
|
245
|
+
// If the request is already cancelled by the page before we handle the route,
|
|
246
|
+
// we'll receive loading failed event and will ignore route handling error.
|
|
247
|
+
this._request._waitForRequestFailure()]);
|
|
236
248
|
this._endHandling();
|
|
237
249
|
}
|
|
238
250
|
async redirectNavigationRequest(url) {
|
|
@@ -258,12 +270,15 @@ class Route extends _instrumentation.SdkObject {
|
|
|
258
270
|
const headers = [...(overrides.headers || [])];
|
|
259
271
|
this._maybeAddCorsHeaders(headers);
|
|
260
272
|
this._request._context.emit(_browserContext.BrowserContext.Events.RequestFulfilled, this._request);
|
|
261
|
-
await this._delegate.fulfill({
|
|
273
|
+
await Promise.race([this._delegate.fulfill({
|
|
262
274
|
status: overrides.status || 200,
|
|
263
275
|
headers,
|
|
264
|
-
body
|
|
276
|
+
body,
|
|
265
277
|
isBase64
|
|
266
|
-
})
|
|
278
|
+
}),
|
|
279
|
+
// If the request is already cancelled by the page before we handle the route,
|
|
280
|
+
// we'll receive loading failed event and will ignore route handling error.
|
|
281
|
+
this._request._waitForRequestFailure()]);
|
|
267
282
|
this._endHandling();
|
|
268
283
|
}
|
|
269
284
|
|
|
@@ -300,7 +315,10 @@ class Route extends _instrumentation.SdkObject {
|
|
|
300
315
|
}
|
|
301
316
|
this._request._setOverrides(overrides);
|
|
302
317
|
if (!overrides.isFallback) this._request._context.emit(_browserContext.BrowserContext.Events.RequestContinued, this._request);
|
|
303
|
-
await this._delegate.continue(this._request, overrides)
|
|
318
|
+
await Promise.race([this._delegate.continue(this._request, overrides),
|
|
319
|
+
// If the request is already cancelled by the page before we handle the route,
|
|
320
|
+
// we'll receive loading failed event and will ignore route handling error.
|
|
321
|
+
this._request._waitForRequestFailure()]);
|
|
304
322
|
this._endHandling();
|
|
305
323
|
}
|
|
306
324
|
_startHandling() {
|
package/lib/server/page.js
CHANGED
|
@@ -17,14 +17,14 @@ 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("../
|
|
20
|
+
var _debugLogger = require("../common/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(
|
|
27
|
-
function _interopRequireWildcard(
|
|
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; }
|
|
28
28
|
/**
|
|
29
29
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
30
30
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -76,9 +76,6 @@ class Page extends _instrumentation.SdkObject {
|
|
|
76
76
|
this._video = null;
|
|
77
77
|
this._opener = void 0;
|
|
78
78
|
this._isServerSideOnly = false;
|
|
79
|
-
this._locatorHandlers = new Map();
|
|
80
|
-
this._lastLocatorHandlerUid = 0;
|
|
81
|
-
this._locatorHandlerRunningCounter = 0;
|
|
82
79
|
// Aiming at 25 fps by default - each frame is 40ms, but we give some slack with 35ms.
|
|
83
80
|
// When throttling for tracing, 200ms between frames, except for 10 frames around the action.
|
|
84
81
|
this._frameThrottler = new FrameThrottler(10, 35, 200);
|
|
@@ -142,7 +139,6 @@ class Page extends _instrumentation.SdkObject {
|
|
|
142
139
|
async resetForReuse(metadata) {
|
|
143
140
|
this.setDefaultNavigationTimeout(undefined);
|
|
144
141
|
this.setDefaultTimeout(undefined);
|
|
145
|
-
this._locatorHandlers.clear();
|
|
146
142
|
await this._removeExposedBindings();
|
|
147
143
|
await this._removeInitScripts();
|
|
148
144
|
await this.setClientRequestInterceptor(undefined);
|
|
@@ -286,41 +282,6 @@ class Page extends _instrumentation.SdkObject {
|
|
|
286
282
|
return response;
|
|
287
283
|
}), this._timeoutSettings.navigationTimeout(options));
|
|
288
284
|
}
|
|
289
|
-
registerLocatorHandler(selector) {
|
|
290
|
-
const uid = ++this._lastLocatorHandlerUid;
|
|
291
|
-
this._locatorHandlers.set(uid, {
|
|
292
|
-
selector
|
|
293
|
-
});
|
|
294
|
-
return uid;
|
|
295
|
-
}
|
|
296
|
-
resolveLocatorHandler(uid) {
|
|
297
|
-
const handler = this._locatorHandlers.get(uid);
|
|
298
|
-
if (handler) {
|
|
299
|
-
var _handler$resolved;
|
|
300
|
-
(_handler$resolved = handler.resolved) === null || _handler$resolved === void 0 || _handler$resolved.resolve();
|
|
301
|
-
handler.resolved = undefined;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
async performLocatorHandlersCheckpoint(progress) {
|
|
305
|
-
// Do not run locator handlers from inside locator handler callbacks to avoid deadlocks.
|
|
306
|
-
if (this._locatorHandlerRunningCounter) return;
|
|
307
|
-
for (const [uid, handler] of this._locatorHandlers) {
|
|
308
|
-
if (!handler.resolved) {
|
|
309
|
-
if (await this.mainFrame().isVisibleInternal(handler.selector, {
|
|
310
|
-
strict: true
|
|
311
|
-
})) {
|
|
312
|
-
handler.resolved = new _manualPromise.ManualPromise();
|
|
313
|
-
this.emit(Page.Events.LocatorHandlerTriggered, uid);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
if (handler.resolved) {
|
|
317
|
-
++this._locatorHandlerRunningCounter;
|
|
318
|
-
await this.openScope.race(handler.resolved).finally(() => --this._locatorHandlerRunningCounter);
|
|
319
|
-
// Avoid side-effects after long-running operation.
|
|
320
|
-
progress.throwIfAborted();
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
285
|
async emulateMedia(options) {
|
|
325
286
|
if (options.media !== undefined) this._emulatedMedia.media = options.media;
|
|
326
287
|
if (options.colorScheme !== undefined) this._emulatedMedia.colorScheme = options.colorScheme;
|
|
@@ -388,7 +349,6 @@ class Page extends _instrumentation.SdkObject {
|
|
|
388
349
|
const rafrafScreenshot = locator ? async (progress, timeout) => {
|
|
389
350
|
return await locator.frame.rafrafTimeoutScreenshotElementWithProgress(progress, locator.selector, timeout, options.screenshotOptions || {});
|
|
390
351
|
} : async (progress, timeout) => {
|
|
391
|
-
await this.performLocatorHandlersCheckpoint(progress);
|
|
392
352
|
await this.mainFrame().rafrafTimeout(timeout);
|
|
393
353
|
return await this._screenshotter.screenshotPage(progress, options.screenshotOptions || {});
|
|
394
354
|
};
|
|
@@ -560,7 +520,6 @@ Page.Events = {
|
|
|
560
520
|
FrameAttached: 'frameattached',
|
|
561
521
|
FrameDetached: 'framedetached',
|
|
562
522
|
InternalFrameNavigatedToNewDocument: 'internalframenavigatedtonewdocument',
|
|
563
|
-
LocatorHandlerTriggered: 'locatorhandlertriggered',
|
|
564
523
|
ScreencastFrame: 'screencastframe',
|
|
565
524
|
Video: 'video',
|
|
566
525
|
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("../
|
|
8
|
+
var _debugLogger = require("../common/debugLogger");
|
|
9
9
|
/**
|
|
10
10
|
* Copyright 2018 Google Inc. All rights reserved.
|
|
11
11
|
* Modifications copyright (c) Microsoft Corporation.
|
package/lib/server/playwright.js
CHANGED
|
@@ -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("../
|
|
16
|
+
var _debugLogger = require("../common/debugLogger");
|
|
17
17
|
var _debugController = require("./debugController");
|
|
18
18
|
/**
|
|
19
19
|
* Copyright (c) Microsoft Corporation.
|
package/lib/server/progress.js
CHANGED
|
@@ -40,6 +40,7 @@ class ProgressController {
|
|
|
40
40
|
this.instrumentation = sdkObject.instrumentation;
|
|
41
41
|
this._forceAbortPromise.catch(e => null); // Prevent unhandled promise rejection.
|
|
42
42
|
}
|
|
43
|
+
|
|
43
44
|
setLogName(logName) {
|
|
44
45
|
this._logName = logName;
|
|
45
46
|
}
|
|
@@ -54,12 +55,20 @@ class ProgressController {
|
|
|
54
55
|
}
|
|
55
56
|
(0, _utils.assert)(this._state === 'before');
|
|
56
57
|
this._state = 'running';
|
|
57
|
-
(_this$sdkObject$attri = this.sdkObject.attribution.context) === null || _this$sdkObject$attri === void 0
|
|
58
|
+
(_this$sdkObject$attri = this.sdkObject.attribution.context) === null || _this$sdkObject$attri === void 0 ? void 0 : _this$sdkObject$attri._activeProgressControllers.add(this);
|
|
58
59
|
const progress = {
|
|
59
60
|
log: message => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
+
}
|
|
63
72
|
},
|
|
64
73
|
timeUntilDeadline: () => this._deadline ? this._deadline - (0, _utils.monotonicTime)() : 2147483647,
|
|
65
74
|
// 2^31-1 safe setTimeout in Node.
|
|
@@ -88,7 +97,7 @@ class ProgressController {
|
|
|
88
97
|
throw e;
|
|
89
98
|
} finally {
|
|
90
99
|
var _this$sdkObject$attri2;
|
|
91
|
-
(_this$sdkObject$attri2 = this.sdkObject.attribution.context) === null || _this$sdkObject$attri2 === void 0
|
|
100
|
+
(_this$sdkObject$attri2 = this.sdkObject.attribution.context) === null || _this$sdkObject$attri2 === void 0 ? void 0 : _this$sdkObject$attri2._activeProgressControllers.delete(this);
|
|
92
101
|
clearTimeout(timer);
|
|
93
102
|
}
|
|
94
103
|
}
|
|
@@ -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)})` : `
|
|
141
|
+
const assertion = action.value ? `ToHaveValueAsync(${quote(action.value)})` : `ToBeEmpty()`;
|
|
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;
|
|
24
|
+
var _metadata$params, _metadata$params2, _metadata$error, _metadata$error$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
|
|
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,
|
|
44
44
|
params,
|
|
45
45
|
duration
|
|
46
46
|
};
|