@checkly/playwright-core 1.47.12 → 1.48.10-alpha
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/cli/program.js +22 -12
- 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 +79 -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 +15 -9
- 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 +28 -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 +58 -2
- 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-CND2fZ5Q.js +24 -0
- package/lib/vite/recorder/assets/{index-NC7rIA63.css → index-BW-aOBcL.css} +1 -1
- package/lib/vite/recorder/assets/{index-A2TWT47O.js → index-CEc83sSS.js} +10 -15
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-5yiV-3wl.js +16831 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-B7Z3vq11.js +24 -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-C6p3E9Zg.js +24 -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/{recorder/assets/codeMirrorModule-vr7pfcwZ.js → traceViewer/assets/codeMirrorModule-CqYUz5ms.js} +1 -1
- package/lib/vite/traceViewer/assets/codeMirrorModule-DS3v0XrQ.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-Dx6AXgMV.js +16838 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-EhKN7Okm.js +16449 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-MzSmL4X2.js +24 -0
- package/lib/vite/traceViewer/assets/{codeMirrorModule-cCPLLRBo.js → codeMirrorModule-T_sdMrbM.js} +1 -1
- package/lib/vite/traceViewer/assets/codeMirrorModule-U6XMqGkV.js +16437 -0
- package/lib/vite/traceViewer/assets/inspectorTab-BABZNwlH.js +17351 -0
- package/lib/vite/traceViewer/assets/inspectorTab-BPzVEZSf.js +17351 -0
- package/lib/vite/traceViewer/assets/inspectorTab-Bbgq0hgt.js +64 -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/testServerConnection-D-tXL3sj.js +224 -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/{wsPort-MnTGOuCA.js → workbench-Bjkiwcr1.js} +1505 -926
- 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-z8ylMSQK.js → workbench-C43LWZEX.js} +7 -7
- package/lib/vite/traceViewer/assets/workbench-C5OQh9VX.js +19119 -0
- package/lib/vite/traceViewer/assets/workbench-Crj6jzdv.js +19119 -0
- package/lib/vite/traceViewer/assets/workbench-DhqI6jeL.js +1473 -0
- package/lib/vite/traceViewer/assets/workbench-DrQjKdyE.js +72 -0
- package/lib/vite/traceViewer/assets/workbench-Pa1v1Ojh.js +72 -0
- package/lib/vite/traceViewer/assets/workbench-caTaZnzx.js +72 -0
- package/lib/vite/traceViewer/assets/workbench-gtYcQBNA.js +9 -0
- package/lib/vite/traceViewer/assets/workbench-u2lRPMOT.js +72 -0
- package/lib/vite/traceViewer/assets/xtermModule-CZ7sDYXB.js +6529 -0
- package/lib/vite/traceViewer/assets/xtermModule-DZP0glxx.js +5982 -0
- package/lib/vite/traceViewer/codeMirrorModule.Cy8X9Wtw.css +344 -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.BQq6Psnz.js +104 -0
- package/lib/vite/traceViewer/{embedded.TOXRJZ9A.js → embedded.BVDVQOzc.js} +1 -1
- package/lib/vite/traceViewer/embedded.Bn8Ptzv6.js +2 -0
- package/lib/vite/traceViewer/embedded.CorI3dFX.js +104 -0
- package/lib/vite/traceViewer/embedded.CvhnUgIi.js +2 -0
- package/lib/vite/traceViewer/embedded.D27cnKiB.js +104 -0
- package/lib/vite/traceViewer/embedded.D4lqGydT.js +2 -0
- package/lib/vite/traceViewer/embedded.DPqrDeET.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.DjZq4InJ.css +68 -0
- package/lib/vite/traceViewer/embedded.SsjKHrxC.js +105 -0
- package/lib/vite/traceViewer/embedded.f-PLGsBT.js +2 -0
- package/lib/vite/traceViewer/embedded.html +6 -4
- package/lib/vite/traceViewer/index.B7aiTMfZ.js +2 -0
- package/lib/vite/traceViewer/{index.e7qpO0B0.js → index.B8dgQwuN.js} +1 -1
- package/lib/vite/traceViewer/index.BGj8jY3H.js +2 -0
- package/lib/vite/traceViewer/index.BSak5QT9.js +2 -0
- package/lib/vite/traceViewer/index.BrT2kfuc.js +2 -0
- package/lib/vite/traceViewer/{index.RT4iItO_.js → index.C0EgJ4oW.js} +36 -21
- package/lib/vite/traceViewer/index.CUpI-BFe.js +195 -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.QanXxRUb.css +131 -0
- package/lib/vite/traceViewer/index._cX8k4co.js +2 -0
- package/lib/vite/traceViewer/index.html +7 -5
- package/lib/vite/traceViewer/index.pMAN88y-.js +2 -0
- 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.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.BufKu9Hp.js +550 -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.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/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.BEZVCe5O.js +5 -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.D-tg1Oci.js +1730 -0
- package/lib/vite/traceViewer/uiMode.DKjMBMlc.js +1730 -0
- package/lib/vite/traceViewer/uiMode.DRmgrHSk.css +1462 -0
- package/lib/vite/traceViewer/uiMode.DVWUEIHq.css +1424 -0
- package/lib/vite/traceViewer/{uiMode.MTXOs_2V.js → uiMode.DVrL7a1K.js} +5 -5
- package/lib/vite/traceViewer/uiMode.DdtUZZVS.js +5 -0
- package/lib/vite/traceViewer/uiMode.Dg9oJCQU.js +10 -0
- package/lib/vite/traceViewer/uiMode.Dlo9s_YX.js +1723 -0
- package/lib/vite/traceViewer/uiMode.DwZAzstF.js +10 -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 +7 -5
- package/lib/vite/traceViewer/uiMode.jY2s-9ps.js +10 -0
- package/lib/vite/traceViewer/uiMode.wsGnVMQK.js +1723 -0
- package/lib/vite/traceViewer/workbench.B3X2QtYa.css +3702 -0
- package/lib/vite/traceViewer/workbench.BQNDbcQ0.css +550 -0
- package/lib/vite/traceViewer/{workbench.NokwQoMV.css → workbench.DjbIuxix.css} +1 -1
- package/lib/vite/traceViewer/workbench.DlsCx8k5.css +1 -0
- package/lib/vite/traceViewer/workbench.DyTpxWVb.css +1 -0
- package/lib/vite/traceViewer/workbench.wuxQoE2z.css +3703 -0
- package/lib/vite/traceViewer/xtermModule.4oRVGWQ-.css +209 -0
- package/package.json +1 -1
- package/types/protocol.d.ts +610 -173
- package/types/types.d.ts +2037 -949
- package/lib/vite/traceViewer/assets/codeMirrorModule-0bpaqixv.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-clyjx5sb.js +0 -15578
- package/lib/vite/traceViewer/assets/codeMirrorModule-wLpsbIhd.js +0 -24
- package/lib/vite/traceViewer/assets/wsPort-_JBDEilC.js +0 -69
- package/lib/vite/traceViewer/assets/wsPort-f2dAQL4I.js +0 -69
- package/lib/vite/traceViewer/index.-_8-eHEE.js +0 -2
- package/lib/vite/traceViewer/index.-g_5lMbJ.css +0 -1
- package/lib/vite/traceViewer/index.u51inEcm.js +0 -2
- package/lib/vite/traceViewer/uiMode.9CwNsWc6.js +0 -10
- package/lib/vite/traceViewer/uiMode.Fb0bNA4H.js +0 -10
- package/lib/vite/traceViewer/uiMode.pWy0Re7G.css +0 -1
- package/lib/vite/traceViewer/uiMode.yLNTmFO4.js +0 -1490
- package/lib/vite/traceViewer/wsPort.zR1WIy9-.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-Hs9-1ZG4.css → codeMirrorModule-ez37Vkbh.css} +0 -0
- /package/lib/vite/recorder/assets/{codicon-wpoHPmsu.ttf → codicon-DCmgc-ay.ttf} +0 -0
- /package/lib/vite/traceViewer/assets/{testServerConnection-_1gRQKgk.js → testServerConnection-DeE2kSzz.js} +0 -0
- /package/lib/vite/traceViewer/assets/{xtermModule-Yt6xwiJ_.js → xtermModule-BeNbaIVa.js} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.Hs9-1ZG4.css → codeMirrorModule.ez37Vkbh.css} +0 -0
- /package/lib/vite/traceViewer/{codicon.wpoHPmsu.ttf → codicon.DCmgc-ay.ttf} +0 -0
- /package/lib/vite/traceViewer/{embedded.MO1jdrtU.css → embedded.w7WN2u1R.css} +0 -0
- /package/lib/vite/traceViewer/{index.q21lh23x.css → index.CrbWWHbf.css} +0 -0
- /package/lib/vite/traceViewer/{uiMode.93DRT-rm.css → uiMode.D3cNFP6u.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.0lwXJFHT.css → xtermModule.DSXBckUd.css} +0 -0
|
@@ -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,28 @@ 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) {
|
|
55
58
|
this._context = void 0;
|
|
56
59
|
this._mode = void 0;
|
|
57
60
|
this._highlightedSelector = '';
|
|
@@ -67,7 +70,7 @@ class Recorder {
|
|
|
67
70
|
this._omitCallTracking = false;
|
|
68
71
|
this._currentLanguage = void 0;
|
|
69
72
|
this._mode = params.mode || 'none';
|
|
70
|
-
this._contextRecorder = new _contextRecorder.ContextRecorder(context, params, {});
|
|
73
|
+
this._contextRecorder = new _contextRecorder.ContextRecorder(codegenMode, context, params, {});
|
|
71
74
|
this._context = context;
|
|
72
75
|
this._omitCallTracking = !!params.omitCallTracking;
|
|
73
76
|
this._debugger = context.debugger();
|
|
@@ -123,10 +126,10 @@ class Recorder {
|
|
|
123
126
|
(_this$_recorderApp = this._recorderApp) === null || _this$_recorderApp === void 0 || _this$_recorderApp.close().catch(() => {});
|
|
124
127
|
});
|
|
125
128
|
this._contextRecorder.on(_contextRecorder.ContextRecorder.Events.Change, data => {
|
|
126
|
-
var _this$_recorderApp2;
|
|
127
129
|
this._recorderSources = data.sources;
|
|
130
|
+
recorderApp.setActions(data.actions, data.sources);
|
|
131
|
+
recorderApp.setRunningFile(undefined);
|
|
128
132
|
this._pushAllSources();
|
|
129
|
-
(_this$_recorderApp2 = this._recorderApp) === null || _this$_recorderApp2 === void 0 || _this$_recorderApp2.setFileIfNeeded(data.primaryFileName);
|
|
130
133
|
});
|
|
131
134
|
await this._context.exposeBinding('__pw_recorderState', false, source => {
|
|
132
135
|
let actionSelector = '';
|
|
@@ -154,9 +157,9 @@ class Recorder {
|
|
|
154
157
|
await this._context.exposeBinding('__pw_recorderSetSelector', false, async ({
|
|
155
158
|
frame
|
|
156
159
|
}, selector) => {
|
|
157
|
-
var _this$
|
|
160
|
+
var _this$_recorderApp2;
|
|
158
161
|
const selectorChain = await (0, _contextRecorder.generateFrameSelector)(frame);
|
|
159
|
-
await ((_this$
|
|
162
|
+
await ((_this$_recorderApp2 = this._recorderApp) === null || _this$_recorderApp2 === void 0 ? void 0 : _this$_recorderApp2.setSelector((0, _recorderUtils2.buildFullSelector)(selectorChain, selector), true));
|
|
160
163
|
});
|
|
161
164
|
await this._context.exposeBinding('__pw_recorderSetMode', false, async ({
|
|
162
165
|
frame
|
|
@@ -180,7 +183,7 @@ class Recorder {
|
|
|
180
183
|
this._context.recorderAppForTest = this._recorderApp;
|
|
181
184
|
}
|
|
182
185
|
_pausedStateChanged() {
|
|
183
|
-
var _this$
|
|
186
|
+
var _this$_recorderApp3;
|
|
184
187
|
// If we are called upon page.pause, we don't have metadatas, populate them.
|
|
185
188
|
for (const {
|
|
186
189
|
metadata,
|
|
@@ -188,16 +191,16 @@ class Recorder {
|
|
|
188
191
|
} of this._debugger.pausedDetails()) {
|
|
189
192
|
if (!this._currentCallsMetadata.has(metadata)) this.onBeforeCall(sdkObject, metadata);
|
|
190
193
|
}
|
|
191
|
-
(_this$
|
|
194
|
+
(_this$_recorderApp3 = this._recorderApp) === null || _this$_recorderApp3 === void 0 || _this$_recorderApp3.setPaused(this._debugger.isPaused());
|
|
192
195
|
this._updateUserSources();
|
|
193
196
|
this.updateCallLog([...this._currentCallsMetadata.keys()]);
|
|
194
197
|
}
|
|
195
198
|
setMode(mode) {
|
|
196
|
-
var _this$
|
|
199
|
+
var _this$_recorderApp4;
|
|
197
200
|
if (this._mode === mode) return;
|
|
198
201
|
this._highlightedSelector = '';
|
|
199
202
|
this._mode = mode;
|
|
200
|
-
(_this$
|
|
203
|
+
(_this$_recorderApp4 = this._recorderApp) === null || _this$_recorderApp4 === void 0 || _this$_recorderApp4.setMode(this._mode);
|
|
201
204
|
this._contextRecorder.setEnabled(this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue');
|
|
202
205
|
this._debugger.setMuted(this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue');
|
|
203
206
|
if (this._mode !== 'none' && this._mode !== 'standby' && this._context.pages().length === 1) this._context.pages()[0].bringToFront().catch(() => {});
|
|
@@ -231,9 +234,9 @@ class Recorder {
|
|
|
231
234
|
if (isScreenshotCommand(metadata)) {
|
|
232
235
|
this.hideHighlightedSelector();
|
|
233
236
|
} else if (metadata.params && metadata.params.selector) {
|
|
234
|
-
var _this$
|
|
237
|
+
var _this$_recorderApp5;
|
|
235
238
|
this._highlightedSelector = metadata.params.selector;
|
|
236
|
-
(_this$
|
|
239
|
+
(_this$_recorderApp5 = this._recorderApp) === null || _this$_recorderApp5 === void 0 || _this$_recorderApp5.setSelector(this._highlightedSelector).catch(() => {});
|
|
237
240
|
}
|
|
238
241
|
}
|
|
239
242
|
async onAfterCall(sdkObject, metadata) {
|
|
@@ -243,7 +246,7 @@ class Recorder {
|
|
|
243
246
|
this.updateCallLog([metadata]);
|
|
244
247
|
}
|
|
245
248
|
_updateUserSources() {
|
|
246
|
-
var _this$
|
|
249
|
+
var _this$_recorderApp6;
|
|
247
250
|
// Remove old decorations.
|
|
248
251
|
for (const source of this._userSources.values()) {
|
|
249
252
|
source.highlight = [];
|
|
@@ -281,18 +284,18 @@ class Recorder {
|
|
|
281
284
|
}
|
|
282
285
|
}
|
|
283
286
|
this._pushAllSources();
|
|
284
|
-
if (fileToSelect) (_this$
|
|
287
|
+
if (fileToSelect) (_this$_recorderApp6 = this._recorderApp) === null || _this$_recorderApp6 === void 0 || _this$_recorderApp6.setRunningFile(fileToSelect);
|
|
285
288
|
}
|
|
286
289
|
_pushAllSources() {
|
|
287
|
-
var _this$
|
|
288
|
-
(_this$
|
|
290
|
+
var _this$_recorderApp7;
|
|
291
|
+
(_this$_recorderApp7 = this._recorderApp) === null || _this$_recorderApp7 === void 0 || _this$_recorderApp7.setSources([...this._recorderSources, ...this._userSources.values()]);
|
|
289
292
|
}
|
|
290
293
|
async onBeforeInputAction(sdkObject, metadata) {}
|
|
291
294
|
async onCallLog(sdkObject, metadata, logName, message) {
|
|
292
295
|
this.updateCallLog([metadata]);
|
|
293
296
|
}
|
|
294
297
|
updateCallLog(metadatas) {
|
|
295
|
-
var _this$
|
|
298
|
+
var _this$_recorderApp8;
|
|
296
299
|
if (this._mode === 'recording' || this._mode === 'assertingText' || this._mode === 'assertingVisibility' || this._mode === 'assertingValue') return;
|
|
297
300
|
const logs = [];
|
|
298
301
|
for (const metadata of metadatas) {
|
|
@@ -302,7 +305,7 @@ class Recorder {
|
|
|
302
305
|
if (this._debugger.isPaused(metadata)) status = 'paused';
|
|
303
306
|
logs.push((0, _recorderUtils.metadataToCallLog)(metadata, status));
|
|
304
307
|
}
|
|
305
|
-
(_this$
|
|
308
|
+
(_this$_recorderApp8 = this._recorderApp) === null || _this$_recorderApp8 === void 0 || _this$_recorderApp8.updateCallLogs(logs);
|
|
306
309
|
}
|
|
307
310
|
_readSource(fileName) {
|
|
308
311
|
try {
|