@checkly/playwright-core 1.42.18 → 1.47.11
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/ThirdPartyNotices.txt +144 -109
- package/browsers.json +15 -25
- package/lib/androidServerImpl.js +1 -1
- package/lib/browserServerImpl.js +1 -1
- package/lib/cli/driver.js +1 -3
- package/lib/cli/program.js +5 -10
- package/lib/client/android.js +1 -1
- package/lib/client/api.js +7 -0
- package/lib/client/browserContext.js +37 -5
- package/lib/client/browserType.js +19 -11
- package/lib/client/channelOwner.js +19 -16
- package/lib/client/clientInstrumentation.js +17 -7
- package/lib/client/clock.js +68 -0
- package/lib/client/connection.js +9 -6
- package/lib/client/electron.js +7 -5
- package/lib/client/elementHandle.js +44 -14
- package/lib/client/eventEmitter.js +314 -0
- package/lib/client/fetch.js +81 -28
- package/lib/client/frame.js +2 -4
- package/lib/client/jsHandle.js +7 -1
- package/lib/client/locator.js +9 -0
- package/lib/client/network.js +12 -9
- package/lib/client/page.js +45 -23
- package/lib/client/playwright.js +3 -0
- package/lib/client/tracing.js +7 -4
- package/lib/common/socksProxy.js +2 -2
- package/lib/generated/clockSource.js +7 -0
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/recorderSource.js +1 -1
- package/lib/generated/utilityScriptSource.js +1 -1
- package/lib/protocol/serializers.js +12 -11
- package/lib/protocol/validator.js +137 -55
- package/lib/server/bidi/bidiBrowser.js +296 -0
- package/lib/server/bidi/bidiConnection.js +206 -0
- package/lib/server/bidi/bidiExecutionContext.js +162 -0
- package/lib/server/bidi/bidiFirefox.js +110 -0
- package/lib/server/bidi/bidiInput.js +174 -0
- package/lib/server/bidi/bidiNetworkManager.js +304 -0
- package/lib/server/bidi/bidiPage.js +456 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
- package/lib/server/bidi/third_party/bidiKeyboard.js +238 -0
- package/lib/server/bidi/third_party/bidiProtocol.js +139 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +144 -0
- package/lib/server/browser.js +9 -1
- package/lib/server/browserContext.js +97 -22
- package/lib/server/browserType.js +27 -20
- package/lib/server/chromium/chromium.js +30 -15
- package/lib/server/chromium/chromiumSwitches.js +6 -3
- package/lib/server/chromium/crBrowser.js +11 -17
- package/lib/server/chromium/crConnection.js +2 -2
- package/lib/server/chromium/crDragDrop.js +28 -29
- package/lib/server/chromium/crNetworkManager.js +130 -84
- package/lib/server/chromium/crPage.js +34 -79
- package/lib/server/chromium/crProtocolHelper.js +3 -1
- package/lib/server/chromium/crServiceWorker.js +20 -23
- package/lib/server/chromium/videoRecorder.js +1 -1
- package/lib/server/clock.js +125 -0
- package/lib/server/codegen/csharp.js +299 -0
- package/lib/server/codegen/java.js +235 -0
- package/lib/server/codegen/javascript.js +223 -0
- package/lib/server/codegen/jsonl.js +47 -0
- package/lib/server/codegen/language.js +76 -0
- package/lib/server/codegen/languages.js +30 -0
- package/lib/server/codegen/python.js +265 -0
- package/lib/server/codegen/types.js +5 -0
- package/lib/server/debugController.js +3 -5
- package/lib/server/deviceDescriptors.js +9 -4
- package/lib/server/deviceDescriptorsSource.json +239 -119
- package/lib/server/dispatchers/androidDispatcher.js +1 -1
- package/lib/server/dispatchers/browserContextDispatcher.js +51 -7
- package/lib/server/dispatchers/dispatcher.js +36 -40
- package/lib/server/dispatchers/frameDispatcher.js +1 -2
- package/lib/server/dispatchers/jsHandleDispatcher.js +1 -1
- package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -6
- package/lib/server/dispatchers/localUtilsDispatcher.js +19 -5
- package/lib/server/dispatchers/networkDispatchers.js +2 -2
- package/lib/server/dispatchers/pageDispatcher.js +5 -2
- package/lib/server/dispatchers/playwrightDispatcher.js +1 -0
- package/lib/server/dispatchers/writableStreamDispatcher.js +8 -5
- package/lib/server/dom.js +90 -53
- package/lib/server/electron/electron.js +21 -4
- package/lib/server/fetch.js +74 -25
- package/lib/server/fileUploadUtils.js +7 -3
- package/lib/server/firefox/ffBrowser.js +36 -25
- package/lib/server/firefox/ffConnection.js +2 -2
- package/lib/server/firefox/ffNetworkManager.js +6 -4
- package/lib/server/firefox/ffPage.js +22 -24
- package/lib/server/firefox/firefox.js +25 -6
- package/lib/server/frameSelectors.js +2 -2
- package/lib/server/frames.js +205 -159
- package/lib/server/har/harTracer.js +4 -12
- package/lib/server/helper.js +3 -3
- package/lib/server/index.js +18 -0
- package/lib/server/input.js +18 -8
- package/lib/server/instrumentation.js +0 -4
- package/lib/server/isomorphic/utilityScriptSerializers.js +19 -5
- package/lib/server/javascript.js +3 -2
- package/lib/server/launchApp.js +3 -2
- package/lib/server/network.js +14 -4
- package/lib/server/page.js +75 -46
- package/lib/server/playwright.js +5 -2
- package/lib/server/recorder/codeGenerator.js +2 -1
- package/lib/server/recorder/contextRecorder.js +316 -0
- package/lib/server/recorder/csharp.js +2 -1
- package/lib/server/recorder/java.js +2 -1
- package/lib/server/recorder/javascript.js +2 -1
- package/lib/server/recorder/jsonl.js +2 -1
- package/lib/server/recorder/language.js +2 -1
- package/lib/server/recorder/python.js +2 -1
- package/lib/server/recorder/recorderApp.js +14 -5
- package/lib/server/recorder/recorderCollection.js +127 -0
- package/lib/server/recorder/recorderRunner.js +177 -0
- package/lib/server/recorder/recorderUtils.js +23 -0
- package/lib/server/recorder/throttledFile.js +46 -0
- package/lib/server/recorder/utils.js +2 -1
- package/lib/server/recorder.js +42 -418
- package/lib/server/registry/index.js +99 -100
- package/lib/server/registry/nativeDeps.js +107 -0
- package/lib/server/screenshotter.js +6 -12
- package/lib/server/socksClientCertificatesInterceptor.js +328 -0
- package/lib/server/trace/recorder/snapshotter.js +4 -1
- package/lib/server/trace/recorder/tracing.js +27 -96
- package/lib/server/trace/viewer/traceViewer.js +54 -67
- package/lib/server/transport.js +1 -1
- package/lib/server/webkit/webkit.js +5 -5
- package/lib/server/webkit/wkBrowser.js +14 -14
- package/lib/server/webkit/wkConnection.js +3 -3
- package/lib/server/webkit/wkInterceptableRequest.js +8 -4
- package/lib/server/webkit/wkPage.js +52 -34
- package/lib/server/webkit/wkProvisionalPage.js +36 -1
- package/lib/utils/crypto.js +141 -0
- package/lib/utils/debugLogger.js +2 -0
- package/lib/utils/env.js +4 -2
- package/lib/utils/expectUtils.js +33 -0
- package/lib/utils/fileUtils.js +140 -1
- package/lib/utils/glob.js +2 -1
- package/lib/utils/happy-eyeballs.js +29 -2
- package/lib/utils/hostPlatform.js +13 -4
- package/lib/utils/httpServer.js +54 -13
- package/lib/utils/index.js +53 -31
- package/lib/utils/isomorphic/cssTokenizer.js +1 -1
- package/lib/utils/isomorphic/locatorParser.js +1 -1
- package/lib/utils/isomorphic/mimeType.js +29 -0
- package/lib/utils/isomorphic/stringUtils.js +28 -1
- package/lib/utils/isomorphic/urlMatch.js +120 -0
- package/lib/utils/mimeType.js +2 -1
- package/lib/utils/network.js +7 -35
- package/lib/utils/stackTrace.js +2 -4
- package/lib/utils/timeoutRunner.js +11 -76
- package/lib/utils/zones.js +23 -60
- package/lib/utilsBundle.js +2 -1
- package/lib/utilsBundleImpl/index.js +33 -31
- package/lib/vite/htmlReport/index.html +12 -12
- package/lib/vite/recorder/assets/codeMirrorModule-BN0yUF4I.js +24 -0
- package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-DCmgc-ay.ttf} +0 -0
- package/lib/vite/recorder/assets/index-B-MT5gKo.css +1 -0
- package/lib/vite/recorder/assets/index-DVt3E1Ef.js +47 -0
- 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-C6p3E9Zg.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-CcviAl53.js +16831 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-CqYUz5ms.js +24 -0
- 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-T_sdMrbM.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-V7N6ppkd.js +15585 -0
- package/lib/vite/traceViewer/assets/testServerConnection-D-tXL3sj.js +224 -0
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +1 -0
- package/lib/vite/traceViewer/assets/workbench-Bjkiwcr1.js +19119 -0
- package/lib/vite/traceViewer/assets/workbench-C43LWZEX.js +72 -0
- 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-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-u2lRPMOT.js +72 -0
- package/lib/vite/traceViewer/assets/wsPort-EUvw-dwH.js +18540 -0
- package/lib/vite/traceViewer/assets/xtermModule-CZ7sDYXB.js +6529 -0
- package/lib/vite/traceViewer/assets/xtermModule-_6TC5FYT.js +6529 -0
- package/lib/vite/traceViewer/codeMirrorModule.Cy8X9Wtw.css +344 -0
- package/lib/vite/traceViewer/codeMirrorModule.svF_VrcJ.css +344 -0
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/embedded.BBZ9gQEw.js +104 -0
- package/lib/vite/traceViewer/embedded.BQq6Psnz.js +104 -0
- package/lib/vite/traceViewer/embedded.BVDVQOzc.js +2 -0
- package/lib/vite/traceViewer/embedded.Bn8Ptzv6.js +2 -0
- package/lib/vite/traceViewer/embedded.CvhnUgIi.js +2 -0
- package/lib/vite/traceViewer/embedded.D27cnKiB.js +104 -0
- package/lib/vite/traceViewer/embedded.DPqrDeET.js +2 -0
- package/lib/vite/traceViewer/embedded.DbzY7Q8w.js +2 -0
- package/lib/vite/traceViewer/embedded.DjZq4InJ.css +68 -0
- package/lib/vite/traceViewer/embedded.html +16 -0
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +1 -0
- package/lib/vite/traceViewer/index.5mge2rY_.css +124 -0
- package/lib/vite/traceViewer/index.6KJ-JQ0L.js +180 -0
- package/lib/vite/traceViewer/index.B8dgQwuN.js +2 -0
- package/lib/vite/traceViewer/index.BGj8jY3H.js +2 -0
- package/lib/vite/traceViewer/index.BSak5QT9.js +2 -0
- package/lib/vite/traceViewer/index.C0EgJ4oW.js +195 -0
- package/lib/vite/traceViewer/index.CUpI-BFe.js +195 -0
- package/lib/vite/traceViewer/{index.-g_5lMbJ.css → index.CrbWWHbf.css} +1 -1
- package/lib/vite/traceViewer/index.DkRbtWVo.js +195 -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 +5 -4
- package/lib/vite/traceViewer/index.pMAN88y-.js +2 -0
- package/lib/vite/traceViewer/snapshot.html +1 -1
- package/lib/vite/traceViewer/sw.bundle.js +3 -4
- package/lib/vite/traceViewer/uiMode.D-tg1Oci.js +1730 -0
- package/lib/vite/traceViewer/uiMode.D3cNFP6u.css +1 -0
- package/lib/vite/traceViewer/uiMode.DKjMBMlc.js +1730 -0
- package/lib/vite/traceViewer/uiMode.DVWUEIHq.css +1424 -0
- package/lib/vite/traceViewer/uiMode.DVrL7a1K.js +10 -0
- package/lib/vite/traceViewer/uiMode.Dg9oJCQU.js +10 -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 +5 -4
- package/lib/vite/traceViewer/uiMode.iq7CyYy7.js +1490 -0
- package/lib/vite/traceViewer/uiMode.jY2s-9ps.js +10 -0
- package/lib/vite/traceViewer/uiMode.xvJHbkzl.css +1324 -0
- package/lib/vite/traceViewer/workbench.B3X2QtYa.css +3702 -0
- package/lib/vite/traceViewer/workbench.DjbIuxix.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/wsPort.p5jUwABW.css +3450 -0
- package/lib/vite/traceViewer/xtermModule.4oRVGWQ-.css +209 -0
- package/lib/vite/traceViewer/xtermModule.OKEVRlkP.css +209 -0
- package/package.json +2 -2
- package/types/protocol.d.ts +960 -78
- package/types/structs.d.ts +1 -1
- package/types/types.d.ts +3083 -2448
- package/lib/vite/recorder/assets/codeMirrorModule-W69B4LBB.js +0 -24
- package/lib/vite/recorder/assets/index-Ly3PcVUb.js +0 -47
- package/lib/vite/recorder/assets/index-ljsTwXtJ.css +0 -1
- package/lib/vite/traceViewer/assets/codeMirrorModule-0bpaqixv.js +0 -24
- 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.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/wsPort.zR1WIy9-.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-Hs9-1ZG4.css → codeMirrorModule-ez37Vkbh.css} +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/{xtermModule.0lwXJFHT.css → xtermModule.DSXBckUd.css} +0 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.performAction = performAction;
|
|
7
|
+
var _utils = require("../../utils");
|
|
8
|
+
var _language = require("../codegen/language");
|
|
9
|
+
var _recorderUtils = require("./recorderUtils");
|
|
10
|
+
/**
|
|
11
|
+
* Copyright (c) Microsoft Corporation.
|
|
12
|
+
*
|
|
13
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
|
+
* you may not use this file except in compliance with the License.
|
|
15
|
+
* You may obtain a copy of the License at
|
|
16
|
+
*
|
|
17
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
*
|
|
19
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
20
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
21
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22
|
+
* See the License for the specific language governing permissions and
|
|
23
|
+
* limitations under the License.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
async function innerPerformAction(mainFrame, action, params, cb) {
|
|
27
|
+
const callMetadata = {
|
|
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();
|
|
58
|
+
const {
|
|
59
|
+
action
|
|
60
|
+
} = actionInContext;
|
|
61
|
+
const kActionTimeout = 5000;
|
|
62
|
+
if (action.name === 'navigate') return await innerPerformAction(mainFrame, 'goto', {
|
|
63
|
+
url: action.url
|
|
64
|
+
}, callMetadata => mainFrame.goto(callMetadata, action.url, {
|
|
65
|
+
timeout: kActionTimeout
|
|
66
|
+
}));
|
|
67
|
+
if (action.name === 'openPage') throw Error('Not reached');
|
|
68
|
+
if (action.name === 'closePage') return await innerPerformAction(mainFrame, 'close', {}, callMetadata => mainFrame._page.close(callMetadata));
|
|
69
|
+
const selector = (0, _recorderUtils.buildFullSelector)(actionInContext.frame.framePath, action.selector);
|
|
70
|
+
if (action.name === 'click') {
|
|
71
|
+
const options = (0, _language.toClickOptions)(action);
|
|
72
|
+
return await innerPerformAction(mainFrame, 'click', {
|
|
73
|
+
selector
|
|
74
|
+
}, callMetadata => mainFrame.click(callMetadata, selector, {
|
|
75
|
+
...options,
|
|
76
|
+
timeout: kActionTimeout,
|
|
77
|
+
strict: true
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
if (action.name === 'press') {
|
|
81
|
+
const modifiers = (0, _language.toKeyboardModifiers)(action.modifiers);
|
|
82
|
+
const shortcut = [...modifiers, action.key].join('+');
|
|
83
|
+
return await innerPerformAction(mainFrame, 'press', {
|
|
84
|
+
selector,
|
|
85
|
+
key: shortcut
|
|
86
|
+
}, callMetadata => mainFrame.press(callMetadata, selector, shortcut, {
|
|
87
|
+
timeout: kActionTimeout,
|
|
88
|
+
strict: true
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
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
|
+
if (action.name === 'select') {
|
|
120
|
+
const values = action.options.map(value => ({
|
|
121
|
+
value
|
|
122
|
+
}));
|
|
123
|
+
return await innerPerformAction(mainFrame, 'selectOption', {
|
|
124
|
+
selector,
|
|
125
|
+
values
|
|
126
|
+
}, callMetadata => mainFrame.selectOption(callMetadata, selector, [], values, {
|
|
127
|
+
timeout: kActionTimeout,
|
|
128
|
+
strict: true
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
if (action.name === 'assertChecked') {
|
|
132
|
+
return await innerPerformAction(mainFrame, 'expect', {
|
|
133
|
+
selector
|
|
134
|
+
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
135
|
+
selector,
|
|
136
|
+
expression: 'to.be.checked',
|
|
137
|
+
isNot: !action.checked,
|
|
138
|
+
timeout: kActionTimeout
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
if (action.name === 'assertText') {
|
|
142
|
+
return await innerPerformAction(mainFrame, 'expect', {
|
|
143
|
+
selector
|
|
144
|
+
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
145
|
+
selector,
|
|
146
|
+
expression: 'to.have.text',
|
|
147
|
+
expectedText: (0, _utils.serializeExpectedTextValues)([action.text], {
|
|
148
|
+
matchSubstring: true,
|
|
149
|
+
normalizeWhiteSpace: true
|
|
150
|
+
}),
|
|
151
|
+
isNot: false,
|
|
152
|
+
timeout: kActionTimeout
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
if (action.name === 'assertValue') {
|
|
156
|
+
return await innerPerformAction(mainFrame, 'expect', {
|
|
157
|
+
selector
|
|
158
|
+
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
159
|
+
selector,
|
|
160
|
+
expression: 'to.have.value',
|
|
161
|
+
expectedValue: action.value,
|
|
162
|
+
isNot: false,
|
|
163
|
+
timeout: kActionTimeout
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
if (action.name === 'assertVisible') {
|
|
167
|
+
return await innerPerformAction(mainFrame, 'expect', {
|
|
168
|
+
selector
|
|
169
|
+
}, callMetadata => mainFrame.expect(callMetadata, selector, {
|
|
170
|
+
selector,
|
|
171
|
+
expression: 'to.be.visible',
|
|
172
|
+
isNot: false,
|
|
173
|
+
timeout: kActionTimeout
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
throw new Error('Internal error: unexpected action ' + action.name);
|
|
177
|
+
}
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.buildFullSelector = buildFullSelector;
|
|
7
|
+
exports.frameForAction = frameForAction;
|
|
8
|
+
exports.mainFrameForAction = mainFrameForAction;
|
|
6
9
|
exports.metadataToCallLog = metadataToCallLog;
|
|
7
10
|
/**
|
|
8
11
|
* Copyright (c) Microsoft Corporation.
|
|
@@ -45,4 +48,24 @@ function metadataToCallLog(metadata, status) {
|
|
|
45
48
|
duration
|
|
46
49
|
};
|
|
47
50
|
return callLog;
|
|
51
|
+
}
|
|
52
|
+
function buildFullSelector(framePath, selector) {
|
|
53
|
+
return [...framePath, selector].join(' >> internal:control=enter-frame >> ');
|
|
54
|
+
}
|
|
55
|
+
function mainFrameForAction(pageAliases, actionInContext) {
|
|
56
|
+
var _find;
|
|
57
|
+
const pageAlias = actionInContext.frame.pageAlias;
|
|
58
|
+
const page = (_find = [...pageAliases.entries()].find(([, alias]) => pageAlias === alias)) === null || _find === void 0 ? void 0 : _find[0];
|
|
59
|
+
if (!page) throw new Error('Internal error: page not found');
|
|
60
|
+
return page.mainFrame();
|
|
61
|
+
}
|
|
62
|
+
async function frameForAction(pageAliases, actionInContext, action) {
|
|
63
|
+
var _find2;
|
|
64
|
+
const pageAlias = actionInContext.frame.pageAlias;
|
|
65
|
+
const page = (_find2 = [...pageAliases.entries()].find(([, alias]) => pageAlias === alias)) === null || _find2 === void 0 ? void 0 : _find2[0];
|
|
66
|
+
if (!page) throw new Error('Internal error: page not found');
|
|
67
|
+
const fullSelector = buildFullSelector(actionInContext.frame.framePath, action.selector);
|
|
68
|
+
const result = await page.mainFrame().selectors.resolveFrameForSelector(fullSelector);
|
|
69
|
+
if (!result) throw new Error('Internal error: frame not found');
|
|
70
|
+
return result.frame;
|
|
48
71
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ThrottledFile = void 0;
|
|
7
|
+
var fs = _interopRequireWildcard(require("fs"));
|
|
8
|
+
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); }
|
|
9
|
+
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; }
|
|
10
|
+
/**
|
|
11
|
+
* Copyright (c) Microsoft Corporation.
|
|
12
|
+
*
|
|
13
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
|
+
* you may not use this file except in compliance with the License.
|
|
15
|
+
* You may obtain a copy of the License at
|
|
16
|
+
*
|
|
17
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
*
|
|
19
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
20
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
21
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22
|
+
* See the License for the specific language governing permissions and
|
|
23
|
+
* limitations under the License.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
class ThrottledFile {
|
|
27
|
+
constructor(file) {
|
|
28
|
+
this._file = void 0;
|
|
29
|
+
this._timer = void 0;
|
|
30
|
+
this._text = void 0;
|
|
31
|
+
this._file = file;
|
|
32
|
+
}
|
|
33
|
+
setContent(text) {
|
|
34
|
+
this._text = text;
|
|
35
|
+
if (!this._timer) this._timer = setTimeout(() => this.flush(), 250);
|
|
36
|
+
}
|
|
37
|
+
flush() {
|
|
38
|
+
if (this._timer) {
|
|
39
|
+
clearTimeout(this._timer);
|
|
40
|
+
this._timer = undefined;
|
|
41
|
+
}
|
|
42
|
+
if (this._text) fs.writeFileSync(this._file, this._text);
|
|
43
|
+
this._text = undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.ThrottledFile = ThrottledFile;
|