@checkly/playwright-core 1.47.20-alpha → 1.48.20
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/browsers.json +14 -10
- package/lib/checkly/escapeRegExp.js +33 -0
- package/lib/checkly/secretsFilter.js +23 -0
- package/lib/cli/program.js +26 -14
- package/lib/client/api.js +6 -0
- package/lib/client/browserContext.js +20 -2
- package/lib/client/channelOwner.js +5 -2
- package/lib/client/connection.js +3 -0
- package/lib/client/fetch.js +16 -3
- package/lib/client/jsHandle.js +0 -8
- package/lib/client/localUtils.js +1 -0
- package/lib/client/network.js +175 -17
- package/lib/client/page.js +21 -0
- package/lib/client/playwright.js +6 -3
- package/lib/client/tracing.js +16 -20
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +7 -0
- package/lib/generated/webSocketMockSource.js +7 -0
- package/lib/protocol/validator.js +80 -14
- package/lib/server/bidi/bidiBrowser.js +23 -8
- package/lib/server/bidi/bidiChromium.js +124 -0
- package/lib/server/bidi/bidiConnection.js +1 -1
- package/lib/server/bidi/bidiExecutionContext.js +0 -3
- package/lib/server/bidi/bidiFirefox.js +15 -21
- package/lib/server/bidi/bidiInput.js +16 -32
- package/lib/server/bidi/bidiNetworkManager.js +39 -5
- package/lib/server/bidi/bidiOverCdp.js +103 -0
- package/lib/server/bidi/bidiPage.js +98 -25
- package/lib/server/bidi/bidiPdf.js +140 -0
- package/lib/server/bidi/third_party/firefoxPrefs.js +221 -0
- package/lib/server/browser.js +13 -2
- package/lib/server/browserContext.js +6 -23
- package/lib/server/browserType.js +39 -11
- package/lib/server/chromium/chromium.js +3 -15
- package/lib/server/chromium/chromiumSwitches.js +3 -1
- package/lib/server/chromium/crBrowser.js +4 -3
- package/lib/server/chromium/crExecutionContext.js +0 -7
- package/lib/server/chromium/crPage.js +5 -2
- package/lib/server/chromium/videoRecorder.js +1 -1
- package/lib/server/codegen/csharp.js +2 -2
- package/lib/server/codegen/java.js +1 -1
- package/lib/server/codegen/javascript.js +1 -1
- package/lib/server/codegen/language.js +14 -2
- package/lib/server/codegen/python.js +2 -2
- package/lib/server/cookieStore.js +73 -0
- package/lib/server/debugController.js +2 -2
- package/lib/server/deviceDescriptorsSource.json +51 -51
- package/lib/server/dialog.js +1 -0
- package/lib/server/dispatchers/browserContextDispatcher.js +19 -2
- package/lib/server/dispatchers/jsHandleDispatcher.js +0 -5
- package/lib/server/dispatchers/pageDispatcher.js +9 -0
- package/lib/server/dispatchers/playwrightDispatcher.js +2 -1
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +189 -0
- package/lib/server/download.js +9 -2
- package/lib/server/fetch.js +96 -99
- package/lib/server/firefox/ffBrowser.js +6 -4
- package/lib/server/firefox/ffExecutionContext.js +0 -3
- package/lib/server/firefox/ffPage.js +3 -0
- package/lib/server/firefox/firefox.js +2 -13
- package/lib/server/frameSelectors.js +1 -1
- package/lib/server/frames.js +3 -2
- package/lib/server/har/harTracer.js +11 -0
- package/lib/server/input.js +0 -1
- package/lib/server/javascript.js +0 -7
- package/lib/server/page.js +5 -1
- package/lib/server/playwright.js +5 -2
- package/lib/server/recorder/contextRecorder.js +33 -50
- package/lib/server/recorder/recorderActions.js +2 -1
- package/lib/server/recorder/recorderApp.js +16 -10
- package/lib/server/recorder/recorderCollection.js +68 -79
- package/lib/server/recorder/recorderFrontend.js +5 -0
- package/lib/server/recorder/recorderInTraceViewer.js +144 -0
- package/lib/server/recorder/recorderRunner.js +75 -97
- package/lib/server/recorder/recorderUtils.js +47 -6
- package/lib/server/recorder.js +30 -25
- package/lib/server/registry/index.js +85 -4
- package/lib/server/socksClientCertificatesInterceptor.js +15 -3
- package/lib/server/trace/recorder/snapshotter.js +1 -0
- package/lib/server/trace/recorder/snapshotterInjected.js +2 -2
- package/lib/server/trace/recorder/tracing.js +70 -5
- package/lib/server/trace/test/inMemorySnapshotter.js +1 -1
- package/lib/server/trace/viewer/traceViewer.js +2 -5
- package/lib/server/webkit/webkit.js +1 -1
- package/lib/server/webkit/wkBrowser.js +6 -5
- package/lib/server/webkit/wkExecutionContext.js +0 -3
- package/lib/server/webkit/wkPage.js +4 -1
- package/lib/utils/happy-eyeballs.js +13 -0
- package/lib/utils/hostPlatform.js +2 -2
- package/lib/utils/httpServer.js +1 -0
- package/lib/utils/isomorphic/locatorGenerators.js +9 -18
- package/lib/utils/isomorphic/locatorParser.js +2 -2
- package/lib/utils/isomorphic/recorderUtils.js +195 -0
- package/lib/vite/htmlReport/index.html +12 -12
- package/lib/vite/recorder/assets/codeMirrorModule-d0KhC1qL.js +24 -0
- package/lib/vite/recorder/assets/{index-B-MT5gKo.css → index-BW-aOBcL.css} +1 -1
- package/lib/vite/recorder/assets/{index-D-5S5PPN.js → index-Bxxcmxlu.js} +10 -15
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-BTYWvxEC.js +16437 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-BdBhzV6t.js +16443 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-BqcXH1AO.js +16838 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-Ca-1BNel.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-CcviAl53.js +16831 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-DS3v0XrQ.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-DZoSgqUd.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-DblsdhjA.js +16449 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-DtXZtbmO.js +16437 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-EhKN7Okm.js +16449 -0
- package/lib/vite/{recorder/assets/codeMirrorModule-C-fQ5QZD.js → traceViewer/assets/codeMirrorModule-MzSmL4X2.js} +1 -1
- package/lib/vite/traceViewer/assets/codeMirrorModule-U6XMqGkV.js +16437 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-lDjkI8Ax.js +24 -0
- package/lib/vite/traceViewer/assets/inspectorTab-BABZNwlH.js +17351 -0
- package/lib/vite/traceViewer/assets/inspectorTab-BB2Bm-wy.js +17361 -0
- package/lib/vite/traceViewer/assets/inspectorTab-BHcfR9dD.js +64 -0
- package/lib/vite/traceViewer/assets/inspectorTab-BPzVEZSf.js +17351 -0
- package/lib/vite/traceViewer/assets/inspectorTab-BPzhNk9r.js +64 -0
- package/lib/vite/traceViewer/assets/inspectorTab-Bbgq0hgt.js +64 -0
- package/lib/vite/traceViewer/assets/inspectorTab-C_OTuI8x.js +17361 -0
- package/lib/vite/traceViewer/assets/inspectorTab-DOc4D3cX.js +17361 -0
- package/lib/vite/traceViewer/assets/inspectorTab-DhBbZz8I.js +64 -0
- package/lib/vite/traceViewer/assets/inspectorTab-DpvLVMq5.js +17351 -0
- package/lib/vite/traceViewer/assets/workbench-B13nfocr.js +9 -0
- package/lib/vite/traceViewer/assets/workbench-BcgGQnKb.js +1473 -0
- package/lib/vite/traceViewer/assets/workbench-BwodYCgl.js +19119 -0
- package/lib/vite/traceViewer/assets/workbench-ByyWxoT8.js +1473 -0
- package/lib/vite/traceViewer/assets/workbench-CWtpwfKK.js +1473 -0
- package/lib/vite/traceViewer/assets/workbench-Crj6jzdv.js +19119 -0
- package/lib/vite/traceViewer/assets/workbench-DLv_q9ji.js +9 -0
- package/lib/vite/traceViewer/assets/workbench-DZqNXdoV.js +9 -0
- package/lib/vite/traceViewer/assets/workbench-DhqI6jeL.js +1473 -0
- package/lib/vite/traceViewer/assets/workbench-I4s6sWjN.js +1473 -0
- package/lib/vite/traceViewer/assets/workbench-M-Dh_RgU.js +1473 -0
- package/lib/vite/traceViewer/assets/workbench-Pa1v1Ojh.js +72 -0
- package/lib/vite/traceViewer/assets/workbench-gtYcQBNA.js +9 -0
- package/lib/vite/traceViewer/assets/xtermModule-DZP0glxx.js +5982 -0
- package/lib/vite/traceViewer/embedded.27BGR_eD.js +105 -0
- package/lib/vite/traceViewer/embedded.BBZ9gQEw.js +104 -0
- package/lib/vite/traceViewer/embedded.BIubxTi3.js +2 -0
- package/lib/vite/traceViewer/embedded.CHH7D63q.js +106 -0
- package/lib/vite/traceViewer/embedded.CorI3dFX.js +104 -0
- package/lib/vite/traceViewer/embedded.D4lqGydT.js +2 -0
- package/lib/vite/traceViewer/embedded.DTjd2aiy.js +105 -0
- package/lib/vite/traceViewer/embedded.DbzY7Q8w.js +2 -0
- package/lib/vite/traceViewer/embedded.Dxe2heQk.js +2 -0
- package/lib/vite/traceViewer/embedded.SsjKHrxC.js +105 -0
- package/lib/vite/traceViewer/embedded.Zu332ZC1.js +106 -0
- package/lib/vite/traceViewer/embedded.f-PLGsBT.js +2 -0
- package/lib/vite/traceViewer/embedded.html +5 -3
- package/lib/vite/traceViewer/embedded.ymLJ2mBS.js +106 -0
- package/lib/vite/traceViewer/index.B7aiTMfZ.js +2 -0
- package/lib/vite/traceViewer/index.BSak5QT9.js +2 -0
- package/lib/vite/traceViewer/index.Bfh46hDK.js +197 -0
- package/lib/vite/traceViewer/index.BrT2kfuc.js +2 -0
- package/lib/vite/traceViewer/index.C8ZWP1Qw.js +197 -0
- package/lib/vite/traceViewer/index.CB297BuW.js +2 -0
- package/lib/vite/traceViewer/index.CLxsp2W_.js +197 -0
- package/lib/vite/traceViewer/index.DPD22sZn.js +2 -0
- package/lib/vite/traceViewer/index.DkRbtWVo.js +195 -0
- package/lib/vite/traceViewer/index.DsjmhbB6.js +195 -0
- package/lib/vite/traceViewer/index.Dz3icWJV.js +196 -0
- package/lib/vite/traceViewer/index.PqcsvBxQ.js +196 -0
- package/lib/vite/traceViewer/index.html +5 -3
- package/lib/vite/traceViewer/index.yxAwzeWG.js +196 -0
- package/lib/vite/traceViewer/inspectorTab.DGJWXOSd.css +3145 -0
- package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +1 -0
- package/lib/vite/traceViewer/recorder.7Wl6HrQl.js +550 -0
- package/lib/vite/traceViewer/recorder.BHq8OXiu.js +551 -0
- package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.BaRuS6Pc.js +2 -0
- package/lib/vite/traceViewer/recorder.BufKu9Hp.js +550 -0
- package/lib/vite/traceViewer/recorder.C88JDknq.js +2 -0
- package/lib/vite/traceViewer/recorder.Ch-WHviK.js +2 -0
- package/lib/vite/traceViewer/recorder.DBDpiNOK.css +15 -0
- package/lib/vite/traceViewer/recorder.Fwf59ZKh.js +551 -0
- package/lib/vite/traceViewer/recorder.POd-toIn.js +2 -0
- package/lib/vite/traceViewer/recorder.am-MV-DQ.js +550 -0
- package/lib/vite/traceViewer/recorder.html +17 -0
- package/lib/vite/traceViewer/recorder.zV_xPHM4.js +551 -0
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.2tr9k625.js +5 -0
- package/lib/vite/traceViewer/uiMode.B11wexdJ.js +5 -0
- package/lib/vite/traceViewer/uiMode.BEZVCe5O.js +5 -0
- package/lib/vite/traceViewer/uiMode.BH2Nj2h0.js +1724 -0
- package/lib/vite/traceViewer/uiMode.BZoFj6zV.js +1723 -0
- package/lib/vite/traceViewer/uiMode.C4nbcio6.js +1730 -0
- package/lib/vite/traceViewer/uiMode.CAYqod-m.css +1 -0
- package/lib/vite/traceViewer/uiMode.CBRJkC_K.js +1724 -0
- package/lib/vite/traceViewer/uiMode.CpC2B27N.js +1724 -0
- package/lib/vite/traceViewer/uiMode.DRmgrHSk.css +1462 -0
- package/lib/vite/traceViewer/uiMode.DdtUZZVS.js +5 -0
- package/lib/vite/traceViewer/uiMode.Dlo9s_YX.js +1723 -0
- package/lib/vite/traceViewer/uiMode.O07awP3T.js +10 -0
- package/lib/vite/traceViewer/uiMode.gGHHTsyL.js +1730 -0
- package/lib/vite/traceViewer/uiMode.html +6 -4
- package/lib/vite/traceViewer/uiMode.wsGnVMQK.js +1723 -0
- package/lib/vite/traceViewer/workbench.9Es1K_T7.css +549 -0
- package/lib/vite/traceViewer/workbench.BQNDbcQ0.css +550 -0
- package/lib/vite/traceViewer/workbench.DjbIuxix.css +1 -0
- package/lib/vite/traceViewer/workbench.DlsCx8k5.css +1 -0
- package/lib/vite/traceViewer/workbench.wuxQoE2z.css +3703 -0
- package/package.json +1 -1
- package/types/protocol.d.ts +610 -173
- package/types/types.d.ts +2037 -949
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RecorderInTraceViewer = void 0;
|
|
7
|
+
var _path = _interopRequireDefault(require("path"));
|
|
8
|
+
var _events = require("events");
|
|
9
|
+
var _traceViewer = require("../trace/viewer/traceViewer");
|
|
10
|
+
var _manualPromise = require("../../utils/manualPromise");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
/**
|
|
13
|
+
* Copyright (c) Microsoft Corporation.
|
|
14
|
+
*
|
|
15
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16
|
+
* you may not use this file except in compliance with the License.
|
|
17
|
+
* You may obtain a copy of the License at
|
|
18
|
+
*
|
|
19
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
20
|
+
*
|
|
21
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
22
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
23
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
24
|
+
* See the License for the specific language governing permissions and
|
|
25
|
+
* limitations under the License.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
class RecorderInTraceViewer extends _events.EventEmitter {
|
|
29
|
+
static factory(context) {
|
|
30
|
+
return async recorder => {
|
|
31
|
+
const transport = new RecorderTransport();
|
|
32
|
+
const trace = _path.default.join(context._browser.options.tracesDir, 'trace');
|
|
33
|
+
const {
|
|
34
|
+
wsEndpointForTest,
|
|
35
|
+
tracePage,
|
|
36
|
+
traceServer
|
|
37
|
+
} = await openApp(trace, {
|
|
38
|
+
transport,
|
|
39
|
+
headless: !context._browser.options.headful
|
|
40
|
+
});
|
|
41
|
+
return new RecorderInTraceViewer(transport, tracePage, traceServer, wsEndpointForTest);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
constructor(transport, tracePage, traceServer, wsEndpointForTest) {
|
|
45
|
+
super();
|
|
46
|
+
this.wsEndpointForTest = void 0;
|
|
47
|
+
this._transport = void 0;
|
|
48
|
+
this._tracePage = void 0;
|
|
49
|
+
this._traceServer = void 0;
|
|
50
|
+
this._transport = transport;
|
|
51
|
+
this._transport.eventSink.resolve(this);
|
|
52
|
+
this._tracePage = tracePage;
|
|
53
|
+
this._traceServer = traceServer;
|
|
54
|
+
this.wsEndpointForTest = wsEndpointForTest;
|
|
55
|
+
this._tracePage.once('close', () => {
|
|
56
|
+
this.close();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async close() {
|
|
60
|
+
await this._tracePage.context().close({
|
|
61
|
+
reason: 'Recorder window closed'
|
|
62
|
+
});
|
|
63
|
+
await this._traceServer.stop();
|
|
64
|
+
}
|
|
65
|
+
async setPaused(paused) {
|
|
66
|
+
this._transport.deliverEvent('setPaused', {
|
|
67
|
+
paused
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async setMode(mode) {
|
|
71
|
+
this._transport.deliverEvent('setMode', {
|
|
72
|
+
mode
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async setRunningFile(file) {
|
|
76
|
+
this._transport.deliverEvent('setRunningFile', {
|
|
77
|
+
file
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
async setSelector(selector, userGesture) {
|
|
81
|
+
this._transport.deliverEvent('setSelector', {
|
|
82
|
+
selector,
|
|
83
|
+
userGesture
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
async updateCallLogs(callLogs) {
|
|
87
|
+
this._transport.deliverEvent('updateCallLogs', {
|
|
88
|
+
callLogs
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async setSources(sources) {
|
|
92
|
+
this._transport.deliverEvent('setSources', {
|
|
93
|
+
sources
|
|
94
|
+
});
|
|
95
|
+
if (process.env.PWTEST_CLI_IS_UNDER_TEST && sources.length) {
|
|
96
|
+
if (process._didSetSourcesForTest(sources[0].text)) this.close();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async setActions(actions, sources) {
|
|
100
|
+
this._transport.deliverEvent('setActions', {
|
|
101
|
+
actions,
|
|
102
|
+
sources
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.RecorderInTraceViewer = RecorderInTraceViewer;
|
|
107
|
+
async function openApp(trace, options) {
|
|
108
|
+
const traceServer = await (0, _traceViewer.startTraceViewerServer)(options);
|
|
109
|
+
await (0, _traceViewer.installRootRedirect)(traceServer, [trace], {
|
|
110
|
+
...options,
|
|
111
|
+
webApp: 'recorder.html'
|
|
112
|
+
});
|
|
113
|
+
const page = await (0, _traceViewer.openTraceViewerApp)(traceServer.urlPrefix('precise'), 'chromium', options);
|
|
114
|
+
return {
|
|
115
|
+
wsEndpointForTest: page.context()._browser.options.wsEndpoint,
|
|
116
|
+
tracePage: page,
|
|
117
|
+
traceServer
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
class RecorderTransport {
|
|
121
|
+
constructor() {
|
|
122
|
+
this._connected = new _manualPromise.ManualPromise();
|
|
123
|
+
this.eventSink = new _manualPromise.ManualPromise();
|
|
124
|
+
this.sendEvent = void 0;
|
|
125
|
+
this.close = void 0;
|
|
126
|
+
}
|
|
127
|
+
onconnect() {
|
|
128
|
+
this._connected.resolve();
|
|
129
|
+
}
|
|
130
|
+
async dispatch(method, params) {
|
|
131
|
+
const eventSink = await this.eventSink;
|
|
132
|
+
eventSink.emit('event', {
|
|
133
|
+
event: method,
|
|
134
|
+
params
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
onclose() {}
|
|
138
|
+
deliverEvent(method, params) {
|
|
139
|
+
this._connected.then(() => {
|
|
140
|
+
var _this$sendEvent;
|
|
141
|
+
return (_this$sendEvent = this.sendEvent) === null || _this$sendEvent === void 0 ? void 0 : _this$sendEvent.call(this, method, params);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -4,9 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.performAction = performAction;
|
|
7
|
+
exports.toClickOptions = toClickOptions;
|
|
7
8
|
var _utils = require("../../utils");
|
|
8
9
|
var _language = require("../codegen/language");
|
|
9
10
|
var _recorderUtils = require("./recorderUtils");
|
|
11
|
+
var _recorderUtils2 = require("../../utils/isomorphic/recorderUtils");
|
|
10
12
|
/**
|
|
11
13
|
* Copyright (c) Microsoft Corporation.
|
|
12
14
|
*
|
|
@@ -23,125 +25,93 @@ var _recorderUtils = require("./recorderUtils");
|
|
|
23
25
|
* limitations under the License.
|
|
24
26
|
*/
|
|
25
27
|
|
|
26
|
-
async function
|
|
27
|
-
const
|
|
28
|
-
id: `call@${(0, _utils.createGuid)()}`,
|
|
29
|
-
apiName: 'frame.' + action,
|
|
30
|
-
objectId: mainFrame.guid,
|
|
31
|
-
pageId: mainFrame._page.guid,
|
|
32
|
-
frameId: mainFrame.guid,
|
|
33
|
-
startTime: (0, _utils.monotonicTime)(),
|
|
34
|
-
endTime: 0,
|
|
35
|
-
type: 'Frame',
|
|
36
|
-
method: action,
|
|
37
|
-
params,
|
|
38
|
-
log: []
|
|
39
|
-
};
|
|
40
|
-
try {
|
|
41
|
-
await mainFrame.instrumentation.onBeforeCall(mainFrame, callMetadata);
|
|
42
|
-
await cb(callMetadata);
|
|
43
|
-
} catch (e) {
|
|
44
|
-
callMetadata.endTime = (0, _utils.monotonicTime)();
|
|
45
|
-
await mainFrame.instrumentation.onAfterCall(mainFrame, callMetadata);
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
callMetadata.endTime = (0, _utils.monotonicTime)();
|
|
49
|
-
await mainFrame.instrumentation.onAfterCall(mainFrame, callMetadata);
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
async function performAction(pageAliases, actionInContext) {
|
|
53
|
-
var _find;
|
|
54
|
-
const pageAlias = actionInContext.frame.pageAlias;
|
|
55
|
-
const page = (_find = [...pageAliases.entries()].find(([, alias]) => pageAlias === alias)) === null || _find === void 0 ? void 0 : _find[0];
|
|
56
|
-
if (!page) throw new Error('Internal error: page not found');
|
|
57
|
-
const mainFrame = page.mainFrame();
|
|
28
|
+
async function performAction(callMetadata, pageAliases, actionInContext) {
|
|
29
|
+
const mainFrame = (0, _recorderUtils.mainFrameForAction)(pageAliases, actionInContext);
|
|
58
30
|
const {
|
|
59
31
|
action
|
|
60
32
|
} = actionInContext;
|
|
61
33
|
const kActionTimeout = 5000;
|
|
62
|
-
if (action.name === 'navigate')
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
34
|
+
if (action.name === 'navigate') {
|
|
35
|
+
await mainFrame.goto(callMetadata, action.url, {
|
|
36
|
+
timeout: kActionTimeout
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
67
40
|
if (action.name === 'openPage') throw Error('Not reached');
|
|
68
|
-
if (action.name === 'closePage')
|
|
69
|
-
|
|
41
|
+
if (action.name === 'closePage') {
|
|
42
|
+
await mainFrame._page.close(callMetadata);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const selector = (0, _recorderUtils2.buildFullSelector)(actionInContext.frame.framePath, action.selector);
|
|
70
46
|
if (action.name === 'click') {
|
|
71
|
-
const options =
|
|
72
|
-
|
|
73
|
-
selector
|
|
74
|
-
}, callMetadata => mainFrame.click(callMetadata, selector, {
|
|
47
|
+
const options = toClickOptions(action);
|
|
48
|
+
await mainFrame.click(callMetadata, selector, {
|
|
75
49
|
...options,
|
|
76
50
|
timeout: kActionTimeout,
|
|
77
51
|
strict: true
|
|
78
|
-
})
|
|
52
|
+
});
|
|
53
|
+
return;
|
|
79
54
|
}
|
|
80
55
|
if (action.name === 'press') {
|
|
81
56
|
const modifiers = (0, _language.toKeyboardModifiers)(action.modifiers);
|
|
82
57
|
const shortcut = [...modifiers, action.key].join('+');
|
|
83
|
-
|
|
58
|
+
await mainFrame.press(callMetadata, selector, shortcut, {
|
|
59
|
+
timeout: kActionTimeout,
|
|
60
|
+
strict: true
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (action.name === 'fill') {
|
|
65
|
+
await mainFrame.fill(callMetadata, selector, action.text, {
|
|
66
|
+
timeout: kActionTimeout,
|
|
67
|
+
strict: true
|
|
68
|
+
});
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (action.name === 'setInputFiles') {
|
|
72
|
+
await mainFrame.setInputFiles(callMetadata, selector, {
|
|
84
73
|
selector,
|
|
85
|
-
|
|
86
|
-
}, callMetadata => mainFrame.press(callMetadata, selector, shortcut, {
|
|
74
|
+
payloads: [],
|
|
87
75
|
timeout: kActionTimeout,
|
|
88
76
|
strict: true
|
|
89
|
-
})
|
|
77
|
+
});
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (action.name === 'check') {
|
|
81
|
+
await mainFrame.check(callMetadata, selector, {
|
|
82
|
+
timeout: kActionTimeout,
|
|
83
|
+
strict: true
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (action.name === 'uncheck') {
|
|
88
|
+
await mainFrame.uncheck(callMetadata, selector, {
|
|
89
|
+
timeout: kActionTimeout,
|
|
90
|
+
strict: true
|
|
91
|
+
});
|
|
92
|
+
return;
|
|
90
93
|
}
|
|
91
|
-
if (action.name === 'fill') return await innerPerformAction(mainFrame, 'fill', {
|
|
92
|
-
selector,
|
|
93
|
-
text: action.text
|
|
94
|
-
}, callMetadata => mainFrame.fill(callMetadata, selector, action.text, {
|
|
95
|
-
timeout: kActionTimeout,
|
|
96
|
-
strict: true
|
|
97
|
-
}));
|
|
98
|
-
if (action.name === 'setInputFiles') return await innerPerformAction(mainFrame, 'setInputFiles', {
|
|
99
|
-
selector,
|
|
100
|
-
files: action.files
|
|
101
|
-
}, callMetadata => mainFrame.setInputFiles(callMetadata, selector, {
|
|
102
|
-
selector,
|
|
103
|
-
payloads: [],
|
|
104
|
-
timeout: kActionTimeout,
|
|
105
|
-
strict: true
|
|
106
|
-
}));
|
|
107
|
-
if (action.name === 'check') return await innerPerformAction(mainFrame, 'check', {
|
|
108
|
-
selector
|
|
109
|
-
}, callMetadata => mainFrame.check(callMetadata, selector, {
|
|
110
|
-
timeout: kActionTimeout,
|
|
111
|
-
strict: true
|
|
112
|
-
}));
|
|
113
|
-
if (action.name === 'uncheck') return await innerPerformAction(mainFrame, 'uncheck', {
|
|
114
|
-
selector
|
|
115
|
-
}, callMetadata => mainFrame.uncheck(callMetadata, selector, {
|
|
116
|
-
timeout: kActionTimeout,
|
|
117
|
-
strict: true
|
|
118
|
-
}));
|
|
119
94
|
if (action.name === 'select') {
|
|
120
95
|
const values = action.options.map(value => ({
|
|
121
96
|
value
|
|
122
97
|
}));
|
|
123
|
-
|
|
124
|
-
selector,
|
|
125
|
-
values
|
|
126
|
-
}, callMetadata => mainFrame.selectOption(callMetadata, selector, [], values, {
|
|
98
|
+
await mainFrame.selectOption(callMetadata, selector, [], values, {
|
|
127
99
|
timeout: kActionTimeout,
|
|
128
100
|
strict: true
|
|
129
|
-
})
|
|
101
|
+
});
|
|
102
|
+
return;
|
|
130
103
|
}
|
|
131
104
|
if (action.name === 'assertChecked') {
|
|
132
|
-
|
|
133
|
-
selector
|
|
134
|
-
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
105
|
+
await mainFrame.expect(callMetadata, selector, {
|
|
135
106
|
selector,
|
|
136
107
|
expression: 'to.be.checked',
|
|
137
108
|
isNot: !action.checked,
|
|
138
109
|
timeout: kActionTimeout
|
|
139
|
-
})
|
|
110
|
+
});
|
|
111
|
+
return;
|
|
140
112
|
}
|
|
141
113
|
if (action.name === 'assertText') {
|
|
142
|
-
|
|
143
|
-
selector
|
|
144
|
-
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
114
|
+
await mainFrame.expect(callMetadata, selector, {
|
|
145
115
|
selector,
|
|
146
116
|
expression: 'to.have.text',
|
|
147
117
|
expectedText: (0, _utils.serializeExpectedTextValues)([action.text], {
|
|
@@ -150,28 +120,36 @@ async function performAction(pageAliases, actionInContext) {
|
|
|
150
120
|
}),
|
|
151
121
|
isNot: false,
|
|
152
122
|
timeout: kActionTimeout
|
|
153
|
-
})
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
154
125
|
}
|
|
155
126
|
if (action.name === 'assertValue') {
|
|
156
|
-
|
|
157
|
-
selector
|
|
158
|
-
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
127
|
+
await mainFrame.expect(callMetadata, selector, {
|
|
159
128
|
selector,
|
|
160
129
|
expression: 'to.have.value',
|
|
161
130
|
expectedValue: action.value,
|
|
162
131
|
isNot: false,
|
|
163
132
|
timeout: kActionTimeout
|
|
164
|
-
})
|
|
133
|
+
});
|
|
134
|
+
return;
|
|
165
135
|
}
|
|
166
136
|
if (action.name === 'assertVisible') {
|
|
167
|
-
|
|
168
|
-
selector
|
|
169
|
-
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
137
|
+
await mainFrame.expect(callMetadata, selector, {
|
|
170
138
|
selector,
|
|
171
139
|
expression: 'to.be.visible',
|
|
172
140
|
isNot: false,
|
|
173
141
|
timeout: kActionTimeout
|
|
174
|
-
})
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
175
144
|
}
|
|
176
145
|
throw new Error('Internal error: unexpected action ' + action.name);
|
|
146
|
+
}
|
|
147
|
+
function toClickOptions(action) {
|
|
148
|
+
const modifiers = (0, _language.toKeyboardModifiers)(action.modifiers);
|
|
149
|
+
const options = {};
|
|
150
|
+
if (action.button !== 'left') options.button = action.button;
|
|
151
|
+
if (modifiers.length) options.modifiers = modifiers;
|
|
152
|
+
if (action.clickCount > 1) options.clickCount = action.clickCount;
|
|
153
|
+
if (action.position) options.position = action.position;
|
|
154
|
+
return options;
|
|
177
155
|
}
|
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.callMetadataForAction = callMetadataForAction;
|
|
7
|
+
exports.collapseActions = collapseActions;
|
|
7
8
|
exports.frameForAction = frameForAction;
|
|
8
9
|
exports.mainFrameForAction = mainFrameForAction;
|
|
9
10
|
exports.metadataToCallLog = metadataToCallLog;
|
|
11
|
+
var _utils = require("../../utils");
|
|
12
|
+
var _recorderUtils = require("../../utils/isomorphic/recorderUtils");
|
|
10
13
|
/**
|
|
11
14
|
* Copyright (c) Microsoft Corporation.
|
|
12
15
|
*
|
|
@@ -49,14 +52,11 @@ function metadataToCallLog(metadata, status) {
|
|
|
49
52
|
};
|
|
50
53
|
return callLog;
|
|
51
54
|
}
|
|
52
|
-
function buildFullSelector(framePath, selector) {
|
|
53
|
-
return [...framePath, selector].join(' >> internal:control=enter-frame >> ');
|
|
54
|
-
}
|
|
55
55
|
function mainFrameForAction(pageAliases, actionInContext) {
|
|
56
56
|
var _find;
|
|
57
57
|
const pageAlias = actionInContext.frame.pageAlias;
|
|
58
58
|
const page = (_find = [...pageAliases.entries()].find(([, alias]) => pageAlias === alias)) === null || _find === void 0 ? void 0 : _find[0];
|
|
59
|
-
if (!page) throw new Error(
|
|
59
|
+
if (!page) throw new Error(`Internal error: page ${pageAlias} not found in [${[...pageAliases.values()]}]`);
|
|
60
60
|
return page.mainFrame();
|
|
61
61
|
}
|
|
62
62
|
async function frameForAction(pageAliases, actionInContext, action) {
|
|
@@ -64,8 +64,49 @@ async function frameForAction(pageAliases, actionInContext, action) {
|
|
|
64
64
|
const pageAlias = actionInContext.frame.pageAlias;
|
|
65
65
|
const page = (_find2 = [...pageAliases.entries()].find(([, alias]) => pageAlias === alias)) === null || _find2 === void 0 ? void 0 : _find2[0];
|
|
66
66
|
if (!page) throw new Error('Internal error: page not found');
|
|
67
|
-
const fullSelector = buildFullSelector(actionInContext.frame.framePath, action.selector);
|
|
67
|
+
const fullSelector = (0, _recorderUtils.buildFullSelector)(actionInContext.frame.framePath, action.selector);
|
|
68
68
|
const result = await page.mainFrame().selectors.resolveFrameForSelector(fullSelector);
|
|
69
69
|
if (!result) throw new Error('Internal error: frame not found');
|
|
70
70
|
return result.frame;
|
|
71
|
+
}
|
|
72
|
+
function callMetadataForAction(pageAliases, actionInContext) {
|
|
73
|
+
const mainFrame = mainFrameForAction(pageAliases, actionInContext);
|
|
74
|
+
const {
|
|
75
|
+
method,
|
|
76
|
+
params
|
|
77
|
+
} = (0, _recorderUtils.traceParamsForAction)(actionInContext);
|
|
78
|
+
const callMetadata = {
|
|
79
|
+
id: `call@${(0, _utils.createGuid)()}`,
|
|
80
|
+
apiName: 'page.' + method,
|
|
81
|
+
objectId: mainFrame.guid,
|
|
82
|
+
pageId: mainFrame._page.guid,
|
|
83
|
+
frameId: mainFrame.guid,
|
|
84
|
+
startTime: actionInContext.startTime,
|
|
85
|
+
endTime: 0,
|
|
86
|
+
type: 'Frame',
|
|
87
|
+
method,
|
|
88
|
+
params,
|
|
89
|
+
log: []
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
callMetadata,
|
|
93
|
+
mainFrame
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function collapseActions(actions) {
|
|
97
|
+
const result = [];
|
|
98
|
+
for (const action of actions) {
|
|
99
|
+
const lastAction = result[result.length - 1];
|
|
100
|
+
const isSameAction = lastAction && lastAction.action.name === action.action.name && lastAction.frame.pageAlias === action.frame.pageAlias && lastAction.frame.framePath.join('|') === action.frame.framePath.join('|');
|
|
101
|
+
const isSameSelector = lastAction && 'selector' in lastAction.action && 'selector' in action.action && action.action.selector === lastAction.action.selector;
|
|
102
|
+
const shouldMerge = isSameAction && (action.action.name === 'navigate' || action.action.name === 'fill' && isSameSelector);
|
|
103
|
+
if (!shouldMerge) {
|
|
104
|
+
result.push(action);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const startTime = result[result.length - 1].startTime;
|
|
108
|
+
result[result.length - 1] = action;
|
|
109
|
+
result[result.length - 1].startTime = startTime;
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
71
112
|
}
|
package/lib/server/recorder.js
CHANGED
|
@@ -12,6 +12,7 @@ var _browserContext = require("./browserContext");
|
|
|
12
12
|
var _debugger = require("./debugger");
|
|
13
13
|
var _contextRecorder = require("./recorder/contextRecorder");
|
|
14
14
|
var _recorderUtils = require("./recorder/recorderUtils");
|
|
15
|
+
var _recorderUtils2 = require("../utils/isomorphic/recorderUtils");
|
|
15
16
|
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); }
|
|
16
17
|
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; }
|
|
17
18
|
/**
|
|
@@ -32,26 +33,29 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
32
33
|
|
|
33
34
|
const recorderSymbol = Symbol('recorderSymbol');
|
|
34
35
|
class Recorder {
|
|
35
|
-
static showInspector(context, recorderAppFactory) {
|
|
36
|
-
const params = {};
|
|
36
|
+
static async showInspector(context, params, recorderAppFactory) {
|
|
37
37
|
if ((0, _utils.isUnderTest)()) params.language = process.env.TEST_INSPECTOR_LANGUAGE;
|
|
38
|
-
Recorder.show(context, recorderAppFactory, params)
|
|
38
|
+
return await Recorder.show('actions', context, recorderAppFactory, params);
|
|
39
39
|
}
|
|
40
|
-
static
|
|
40
|
+
static showInspectorNoReply(context, recorderAppFactory) {
|
|
41
|
+
Recorder.showInspector(context, {}, recorderAppFactory).catch(() => {});
|
|
42
|
+
}
|
|
43
|
+
static show(codegenMode, context, recorderAppFactory, params) {
|
|
41
44
|
let recorderPromise = context[recorderSymbol];
|
|
42
45
|
if (!recorderPromise) {
|
|
43
|
-
recorderPromise = Recorder._create(context, recorderAppFactory, params);
|
|
46
|
+
recorderPromise = Recorder._create(codegenMode, context, recorderAppFactory, params);
|
|
44
47
|
context[recorderSymbol] = recorderPromise;
|
|
45
48
|
}
|
|
46
49
|
return recorderPromise;
|
|
47
50
|
}
|
|
48
|
-
static async _create(context, recorderAppFactory, params = {}) {
|
|
49
|
-
const recorder = new Recorder(context, params);
|
|
51
|
+
static async _create(codegenMode, context, recorderAppFactory, params = {}) {
|
|
52
|
+
const recorder = new Recorder(codegenMode, context, params);
|
|
50
53
|
const recorderApp = await recorderAppFactory(recorder);
|
|
51
54
|
await recorder._install(recorderApp);
|
|
52
55
|
return recorder;
|
|
53
56
|
}
|
|
54
|
-
constructor(context, params) {
|
|
57
|
+
constructor(codegenMode, context, params) {
|
|
58
|
+
this.handleSIGINT = void 0;
|
|
55
59
|
this._context = void 0;
|
|
56
60
|
this._mode = void 0;
|
|
57
61
|
this._highlightedSelector = '';
|
|
@@ -67,7 +71,8 @@ class Recorder {
|
|
|
67
71
|
this._omitCallTracking = false;
|
|
68
72
|
this._currentLanguage = void 0;
|
|
69
73
|
this._mode = params.mode || 'none';
|
|
70
|
-
this.
|
|
74
|
+
this.handleSIGINT = params.handleSIGINT;
|
|
75
|
+
this._contextRecorder = new _contextRecorder.ContextRecorder(codegenMode, context, params, {});
|
|
71
76
|
this._context = context;
|
|
72
77
|
this._omitCallTracking = !!params.omitCallTracking;
|
|
73
78
|
this._debugger = context.debugger();
|
|
@@ -123,10 +128,10 @@ class Recorder {
|
|
|
123
128
|
(_this$_recorderApp = this._recorderApp) === null || _this$_recorderApp === void 0 || _this$_recorderApp.close().catch(() => {});
|
|
124
129
|
});
|
|
125
130
|
this._contextRecorder.on(_contextRecorder.ContextRecorder.Events.Change, data => {
|
|
126
|
-
var _this$_recorderApp2;
|
|
127
131
|
this._recorderSources = data.sources;
|
|
132
|
+
recorderApp.setActions(data.actions, data.sources);
|
|
133
|
+
recorderApp.setRunningFile(undefined);
|
|
128
134
|
this._pushAllSources();
|
|
129
|
-
(_this$_recorderApp2 = this._recorderApp) === null || _this$_recorderApp2 === void 0 || _this$_recorderApp2.setFileIfNeeded(data.primaryFileName);
|
|
130
135
|
});
|
|
131
136
|
await this._context.exposeBinding('__pw_recorderState', false, source => {
|
|
132
137
|
let actionSelector = '';
|
|
@@ -154,9 +159,9 @@ class Recorder {
|
|
|
154
159
|
await this._context.exposeBinding('__pw_recorderSetSelector', false, async ({
|
|
155
160
|
frame
|
|
156
161
|
}, selector) => {
|
|
157
|
-
var _this$
|
|
162
|
+
var _this$_recorderApp2;
|
|
158
163
|
const selectorChain = await (0, _contextRecorder.generateFrameSelector)(frame);
|
|
159
|
-
await ((_this$
|
|
164
|
+
await ((_this$_recorderApp2 = this._recorderApp) === null || _this$_recorderApp2 === void 0 ? void 0 : _this$_recorderApp2.setSelector((0, _recorderUtils2.buildFullSelector)(selectorChain, selector), true));
|
|
160
165
|
});
|
|
161
166
|
await this._context.exposeBinding('__pw_recorderSetMode', false, async ({
|
|
162
167
|
frame
|
|
@@ -180,7 +185,7 @@ class Recorder {
|
|
|
180
185
|
this._context.recorderAppForTest = this._recorderApp;
|
|
181
186
|
}
|
|
182
187
|
_pausedStateChanged() {
|
|
183
|
-
var _this$
|
|
188
|
+
var _this$_recorderApp3;
|
|
184
189
|
// If we are called upon page.pause, we don't have metadatas, populate them.
|
|
185
190
|
for (const {
|
|
186
191
|
metadata,
|
|
@@ -188,16 +193,16 @@ class Recorder {
|
|
|
188
193
|
} of this._debugger.pausedDetails()) {
|
|
189
194
|
if (!this._currentCallsMetadata.has(metadata)) this.onBeforeCall(sdkObject, metadata);
|
|
190
195
|
}
|
|
191
|
-
(_this$
|
|
196
|
+
(_this$_recorderApp3 = this._recorderApp) === null || _this$_recorderApp3 === void 0 || _this$_recorderApp3.setPaused(this._debugger.isPaused());
|
|
192
197
|
this._updateUserSources();
|
|
193
198
|
this.updateCallLog([...this._currentCallsMetadata.keys()]);
|
|
194
199
|
}
|
|
195
200
|
setMode(mode) {
|
|
196
|
-
var _this$
|
|
201
|
+
var _this$_recorderApp4;
|
|
197
202
|
if (this._mode === mode) return;
|
|
198
203
|
this._highlightedSelector = '';
|
|
199
204
|
this._mode = mode;
|
|
200
|
-
(_this$
|
|
205
|
+
(_this$_recorderApp4 = this._recorderApp) === null || _this$_recorderApp4 === void 0 || _this$_recorderApp4.setMode(this._mode);
|
|
201
206
|
this._contextRecorder.setEnabled(this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue');
|
|
202
207
|
this._debugger.setMuted(this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue');
|
|
203
208
|
if (this._mode !== 'none' && this._mode !== 'standby' && this._context.pages().length === 1) this._context.pages()[0].bringToFront().catch(() => {});
|
|
@@ -231,9 +236,9 @@ class Recorder {
|
|
|
231
236
|
if (isScreenshotCommand(metadata)) {
|
|
232
237
|
this.hideHighlightedSelector();
|
|
233
238
|
} else if (metadata.params && metadata.params.selector) {
|
|
234
|
-
var _this$
|
|
239
|
+
var _this$_recorderApp5;
|
|
235
240
|
this._highlightedSelector = metadata.params.selector;
|
|
236
|
-
(_this$
|
|
241
|
+
(_this$_recorderApp5 = this._recorderApp) === null || _this$_recorderApp5 === void 0 || _this$_recorderApp5.setSelector(this._highlightedSelector).catch(() => {});
|
|
237
242
|
}
|
|
238
243
|
}
|
|
239
244
|
async onAfterCall(sdkObject, metadata) {
|
|
@@ -243,7 +248,7 @@ class Recorder {
|
|
|
243
248
|
this.updateCallLog([metadata]);
|
|
244
249
|
}
|
|
245
250
|
_updateUserSources() {
|
|
246
|
-
var _this$
|
|
251
|
+
var _this$_recorderApp6;
|
|
247
252
|
// Remove old decorations.
|
|
248
253
|
for (const source of this._userSources.values()) {
|
|
249
254
|
source.highlight = [];
|
|
@@ -281,18 +286,18 @@ class Recorder {
|
|
|
281
286
|
}
|
|
282
287
|
}
|
|
283
288
|
this._pushAllSources();
|
|
284
|
-
if (fileToSelect) (_this$
|
|
289
|
+
if (fileToSelect) (_this$_recorderApp6 = this._recorderApp) === null || _this$_recorderApp6 === void 0 || _this$_recorderApp6.setRunningFile(fileToSelect);
|
|
285
290
|
}
|
|
286
291
|
_pushAllSources() {
|
|
287
|
-
var _this$
|
|
288
|
-
(_this$
|
|
292
|
+
var _this$_recorderApp7;
|
|
293
|
+
(_this$_recorderApp7 = this._recorderApp) === null || _this$_recorderApp7 === void 0 || _this$_recorderApp7.setSources([...this._recorderSources, ...this._userSources.values()]);
|
|
289
294
|
}
|
|
290
295
|
async onBeforeInputAction(sdkObject, metadata) {}
|
|
291
296
|
async onCallLog(sdkObject, metadata, logName, message) {
|
|
292
297
|
this.updateCallLog([metadata]);
|
|
293
298
|
}
|
|
294
299
|
updateCallLog(metadatas) {
|
|
295
|
-
var _this$
|
|
300
|
+
var _this$_recorderApp8;
|
|
296
301
|
if (this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue') return;
|
|
297
302
|
const logs = [];
|
|
298
303
|
for (const metadata of metadatas) {
|
|
@@ -302,7 +307,7 @@ class Recorder {
|
|
|
302
307
|
if (this._debugger.isPaused(metadata)) status = 'paused';
|
|
303
308
|
logs.push((0, _recorderUtils.metadataToCallLog)(metadata, status));
|
|
304
309
|
}
|
|
305
|
-
(_this$
|
|
310
|
+
(_this$_recorderApp8 = this._recorderApp) === null || _this$_recorderApp8 === void 0 || _this$_recorderApp8.updateCallLogs(logs);
|
|
306
311
|
}
|
|
307
312
|
_readSource(fileName) {
|
|
308
313
|
try {
|