@checkly/playwright-core 1.42.18 → 1.47.20-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.
Files changed (238) hide show
  1. package/ThirdPartyNotices.txt +144 -109
  2. package/browsers.json +15 -25
  3. package/lib/androidServerImpl.js +1 -1
  4. package/lib/browserServerImpl.js +1 -1
  5. package/lib/cli/driver.js +1 -3
  6. package/lib/cli/program.js +5 -10
  7. package/lib/client/android.js +1 -1
  8. package/lib/client/api.js +7 -0
  9. package/lib/client/browserContext.js +37 -5
  10. package/lib/client/browserType.js +19 -11
  11. package/lib/client/channelOwner.js +19 -16
  12. package/lib/client/clientInstrumentation.js +17 -7
  13. package/lib/client/clock.js +68 -0
  14. package/lib/client/connection.js +9 -6
  15. package/lib/client/electron.js +7 -5
  16. package/lib/client/elementHandle.js +44 -14
  17. package/lib/client/eventEmitter.js +314 -0
  18. package/lib/client/fetch.js +81 -28
  19. package/lib/client/frame.js +2 -4
  20. package/lib/client/jsHandle.js +7 -1
  21. package/lib/client/locator.js +9 -0
  22. package/lib/client/network.js +12 -9
  23. package/lib/client/page.js +45 -23
  24. package/lib/client/playwright.js +3 -0
  25. package/lib/client/tracing.js +7 -4
  26. package/lib/common/socksProxy.js +2 -2
  27. package/lib/generated/clockSource.js +7 -0
  28. package/lib/generated/injectedScriptSource.js +1 -1
  29. package/lib/generated/recorderSource.js +1 -1
  30. package/lib/generated/utilityScriptSource.js +1 -1
  31. package/lib/protocol/serializers.js +12 -11
  32. package/lib/protocol/validator.js +137 -55
  33. package/lib/server/bidi/bidiBrowser.js +296 -0
  34. package/lib/server/bidi/bidiConnection.js +206 -0
  35. package/lib/server/bidi/bidiExecutionContext.js +162 -0
  36. package/lib/server/bidi/bidiFirefox.js +110 -0
  37. package/lib/server/bidi/bidiInput.js +174 -0
  38. package/lib/server/bidi/bidiNetworkManager.js +304 -0
  39. package/lib/server/bidi/bidiPage.js +456 -0
  40. package/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
  41. package/lib/server/bidi/third_party/bidiKeyboard.js +238 -0
  42. package/lib/server/bidi/third_party/bidiProtocol.js +139 -0
  43. package/lib/server/bidi/third_party/bidiSerializer.js +144 -0
  44. package/lib/server/browser.js +9 -1
  45. package/lib/server/browserContext.js +97 -22
  46. package/lib/server/browserType.js +27 -20
  47. package/lib/server/chromium/chromium.js +30 -15
  48. package/lib/server/chromium/chromiumSwitches.js +6 -3
  49. package/lib/server/chromium/crBrowser.js +11 -17
  50. package/lib/server/chromium/crConnection.js +2 -2
  51. package/lib/server/chromium/crDragDrop.js +28 -29
  52. package/lib/server/chromium/crNetworkManager.js +130 -84
  53. package/lib/server/chromium/crPage.js +34 -79
  54. package/lib/server/chromium/crProtocolHelper.js +3 -1
  55. package/lib/server/chromium/crServiceWorker.js +20 -23
  56. package/lib/server/chromium/videoRecorder.js +1 -1
  57. package/lib/server/clock.js +125 -0
  58. package/lib/server/codegen/csharp.js +299 -0
  59. package/lib/server/codegen/java.js +235 -0
  60. package/lib/server/codegen/javascript.js +223 -0
  61. package/lib/server/codegen/jsonl.js +47 -0
  62. package/lib/server/codegen/language.js +76 -0
  63. package/lib/server/codegen/languages.js +30 -0
  64. package/lib/server/codegen/python.js +265 -0
  65. package/lib/server/codegen/types.js +5 -0
  66. package/lib/server/debugController.js +3 -5
  67. package/lib/server/deviceDescriptors.js +9 -4
  68. package/lib/server/deviceDescriptorsSource.json +239 -119
  69. package/lib/server/dispatchers/androidDispatcher.js +1 -1
  70. package/lib/server/dispatchers/browserContextDispatcher.js +51 -7
  71. package/lib/server/dispatchers/dispatcher.js +36 -40
  72. package/lib/server/dispatchers/frameDispatcher.js +1 -2
  73. package/lib/server/dispatchers/jsHandleDispatcher.js +1 -1
  74. package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -6
  75. package/lib/server/dispatchers/localUtilsDispatcher.js +19 -5
  76. package/lib/server/dispatchers/networkDispatchers.js +2 -2
  77. package/lib/server/dispatchers/pageDispatcher.js +5 -2
  78. package/lib/server/dispatchers/playwrightDispatcher.js +1 -0
  79. package/lib/server/dispatchers/writableStreamDispatcher.js +8 -5
  80. package/lib/server/dom.js +90 -53
  81. package/lib/server/electron/electron.js +21 -4
  82. package/lib/server/fetch.js +74 -25
  83. package/lib/server/fileUploadUtils.js +7 -3
  84. package/lib/server/firefox/ffBrowser.js +36 -25
  85. package/lib/server/firefox/ffConnection.js +2 -2
  86. package/lib/server/firefox/ffNetworkManager.js +6 -4
  87. package/lib/server/firefox/ffPage.js +22 -24
  88. package/lib/server/firefox/firefox.js +25 -6
  89. package/lib/server/frameSelectors.js +2 -2
  90. package/lib/server/frames.js +205 -159
  91. package/lib/server/har/harTracer.js +4 -12
  92. package/lib/server/helper.js +3 -3
  93. package/lib/server/index.js +18 -0
  94. package/lib/server/input.js +18 -8
  95. package/lib/server/instrumentation.js +0 -4
  96. package/lib/server/isomorphic/utilityScriptSerializers.js +19 -5
  97. package/lib/server/javascript.js +3 -2
  98. package/lib/server/launchApp.js +3 -2
  99. package/lib/server/network.js +14 -4
  100. package/lib/server/page.js +75 -46
  101. package/lib/server/playwright.js +5 -2
  102. package/lib/server/recorder/codeGenerator.js +2 -1
  103. package/lib/server/recorder/contextRecorder.js +316 -0
  104. package/lib/server/recorder/csharp.js +2 -1
  105. package/lib/server/recorder/java.js +2 -1
  106. package/lib/server/recorder/javascript.js +2 -1
  107. package/lib/server/recorder/jsonl.js +2 -1
  108. package/lib/server/recorder/language.js +2 -1
  109. package/lib/server/recorder/python.js +2 -1
  110. package/lib/server/recorder/recorderApp.js +14 -5
  111. package/lib/server/recorder/recorderCollection.js +127 -0
  112. package/lib/server/recorder/recorderRunner.js +177 -0
  113. package/lib/server/recorder/recorderUtils.js +23 -0
  114. package/lib/server/recorder/throttledFile.js +46 -0
  115. package/lib/server/recorder/utils.js +2 -1
  116. package/lib/server/recorder.js +42 -418
  117. package/lib/server/registry/index.js +99 -100
  118. package/lib/server/registry/nativeDeps.js +107 -0
  119. package/lib/server/screenshotter.js +6 -12
  120. package/lib/server/socksClientCertificatesInterceptor.js +328 -0
  121. package/lib/server/trace/recorder/snapshotter.js +4 -1
  122. package/lib/server/trace/recorder/tracing.js +27 -96
  123. package/lib/server/trace/viewer/traceViewer.js +54 -67
  124. package/lib/server/transport.js +1 -1
  125. package/lib/server/webkit/webkit.js +5 -5
  126. package/lib/server/webkit/wkBrowser.js +14 -14
  127. package/lib/server/webkit/wkConnection.js +3 -3
  128. package/lib/server/webkit/wkInterceptableRequest.js +8 -4
  129. package/lib/server/webkit/wkPage.js +52 -34
  130. package/lib/server/webkit/wkProvisionalPage.js +36 -1
  131. package/lib/utils/crypto.js +141 -0
  132. package/lib/utils/debugLogger.js +2 -0
  133. package/lib/utils/env.js +4 -2
  134. package/lib/utils/expectUtils.js +33 -0
  135. package/lib/utils/fileUtils.js +140 -1
  136. package/lib/utils/glob.js +2 -1
  137. package/lib/utils/happy-eyeballs.js +29 -2
  138. package/lib/utils/hostPlatform.js +13 -4
  139. package/lib/utils/httpServer.js +54 -13
  140. package/lib/utils/index.js +53 -31
  141. package/lib/utils/isomorphic/cssTokenizer.js +1 -1
  142. package/lib/utils/isomorphic/locatorParser.js +1 -1
  143. package/lib/utils/isomorphic/mimeType.js +29 -0
  144. package/lib/utils/isomorphic/stringUtils.js +28 -1
  145. package/lib/utils/isomorphic/urlMatch.js +120 -0
  146. package/lib/utils/mimeType.js +2 -1
  147. package/lib/utils/network.js +7 -35
  148. package/lib/utils/stackTrace.js +2 -4
  149. package/lib/utils/timeoutRunner.js +11 -76
  150. package/lib/utils/zones.js +23 -60
  151. package/lib/utilsBundle.js +2 -1
  152. package/lib/utilsBundleImpl/index.js +33 -31
  153. package/lib/vite/htmlReport/index.html +12 -12
  154. package/lib/vite/recorder/assets/codeMirrorModule-C-fQ5QZD.js +24 -0
  155. package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-DCmgc-ay.ttf} +0 -0
  156. package/lib/vite/recorder/assets/index-B-MT5gKo.css +1 -0
  157. package/lib/vite/recorder/assets/index-D-5S5PPN.js +47 -0
  158. package/lib/vite/recorder/index.html +2 -2
  159. package/lib/vite/traceViewer/assets/codeMirrorModule-5yiV-3wl.js +16831 -0
  160. package/lib/vite/traceViewer/assets/codeMirrorModule-B7Z3vq11.js +24 -0
  161. package/lib/vite/traceViewer/assets/codeMirrorModule-C6p3E9Zg.js +24 -0
  162. package/lib/vite/traceViewer/assets/codeMirrorModule-CqYUz5ms.js +24 -0
  163. package/lib/vite/traceViewer/assets/codeMirrorModule-Dx6AXgMV.js +16838 -0
  164. package/lib/vite/traceViewer/assets/codeMirrorModule-T_sdMrbM.js +24 -0
  165. package/lib/vite/traceViewer/assets/codeMirrorModule-V7N6ppkd.js +15585 -0
  166. package/lib/vite/traceViewer/assets/testServerConnection-D-tXL3sj.js +224 -0
  167. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +1 -0
  168. package/lib/vite/traceViewer/assets/workbench-Bjkiwcr1.js +19119 -0
  169. package/lib/vite/traceViewer/assets/workbench-C43LWZEX.js +72 -0
  170. package/lib/vite/traceViewer/assets/workbench-C5OQh9VX.js +19119 -0
  171. package/lib/vite/traceViewer/assets/workbench-DrQjKdyE.js +72 -0
  172. package/lib/vite/traceViewer/assets/workbench-caTaZnzx.js +72 -0
  173. package/lib/vite/traceViewer/assets/workbench-u2lRPMOT.js +72 -0
  174. package/lib/vite/traceViewer/assets/wsPort-EUvw-dwH.js +18540 -0
  175. package/lib/vite/traceViewer/assets/xtermModule-CZ7sDYXB.js +6529 -0
  176. package/lib/vite/traceViewer/assets/xtermModule-_6TC5FYT.js +6529 -0
  177. package/lib/vite/traceViewer/codeMirrorModule.Cy8X9Wtw.css +344 -0
  178. package/lib/vite/traceViewer/codeMirrorModule.svF_VrcJ.css +344 -0
  179. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  180. package/lib/vite/traceViewer/embedded.BQq6Psnz.js +104 -0
  181. package/lib/vite/traceViewer/embedded.BVDVQOzc.js +2 -0
  182. package/lib/vite/traceViewer/embedded.Bn8Ptzv6.js +2 -0
  183. package/lib/vite/traceViewer/embedded.CvhnUgIi.js +2 -0
  184. package/lib/vite/traceViewer/embedded.D27cnKiB.js +104 -0
  185. package/lib/vite/traceViewer/embedded.DPqrDeET.js +2 -0
  186. package/lib/vite/traceViewer/embedded.DjZq4InJ.css +68 -0
  187. package/lib/vite/traceViewer/embedded.html +16 -0
  188. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +1 -0
  189. package/lib/vite/traceViewer/index.5mge2rY_.css +124 -0
  190. package/lib/vite/traceViewer/index.6KJ-JQ0L.js +180 -0
  191. package/lib/vite/traceViewer/index.B8dgQwuN.js +2 -0
  192. package/lib/vite/traceViewer/index.BGj8jY3H.js +2 -0
  193. package/lib/vite/traceViewer/index.C0EgJ4oW.js +195 -0
  194. package/lib/vite/traceViewer/index.CUpI-BFe.js +195 -0
  195. package/lib/vite/traceViewer/{index.-g_5lMbJ.css → index.CrbWWHbf.css} +1 -1
  196. package/lib/vite/traceViewer/index.QanXxRUb.css +131 -0
  197. package/lib/vite/traceViewer/index._cX8k4co.js +2 -0
  198. package/lib/vite/traceViewer/index.html +5 -4
  199. package/lib/vite/traceViewer/index.pMAN88y-.js +2 -0
  200. package/lib/vite/traceViewer/snapshot.html +1 -1
  201. package/lib/vite/traceViewer/sw.bundle.js +3 -4
  202. package/lib/vite/traceViewer/uiMode.D-tg1Oci.js +1730 -0
  203. package/lib/vite/traceViewer/uiMode.D3cNFP6u.css +1 -0
  204. package/lib/vite/traceViewer/uiMode.DKjMBMlc.js +1730 -0
  205. package/lib/vite/traceViewer/uiMode.DVWUEIHq.css +1424 -0
  206. package/lib/vite/traceViewer/uiMode.DVrL7a1K.js +10 -0
  207. package/lib/vite/traceViewer/uiMode.Dg9oJCQU.js +10 -0
  208. package/lib/vite/traceViewer/uiMode.DwZAzstF.js +10 -0
  209. package/lib/vite/traceViewer/uiMode.html +5 -4
  210. package/lib/vite/traceViewer/uiMode.iq7CyYy7.js +1490 -0
  211. package/lib/vite/traceViewer/uiMode.jY2s-9ps.js +10 -0
  212. package/lib/vite/traceViewer/uiMode.xvJHbkzl.css +1324 -0
  213. package/lib/vite/traceViewer/workbench.B3X2QtYa.css +3702 -0
  214. package/lib/vite/traceViewer/workbench.DyTpxWVb.css +1 -0
  215. package/lib/vite/traceViewer/wsPort.p5jUwABW.css +3450 -0
  216. package/lib/vite/traceViewer/xtermModule.4oRVGWQ-.css +209 -0
  217. package/lib/vite/traceViewer/xtermModule.OKEVRlkP.css +209 -0
  218. package/package.json +2 -2
  219. package/types/protocol.d.ts +960 -78
  220. package/types/structs.d.ts +1 -1
  221. package/types/types.d.ts +3083 -2448
  222. package/lib/vite/recorder/assets/codeMirrorModule-W69B4LBB.js +0 -24
  223. package/lib/vite/recorder/assets/index-Ly3PcVUb.js +0 -47
  224. package/lib/vite/recorder/assets/index-ljsTwXtJ.css +0 -1
  225. package/lib/vite/traceViewer/assets/codeMirrorModule-0bpaqixv.js +0 -24
  226. package/lib/vite/traceViewer/assets/codeMirrorModule-wLpsbIhd.js +0 -24
  227. package/lib/vite/traceViewer/assets/wsPort-_JBDEilC.js +0 -69
  228. package/lib/vite/traceViewer/assets/wsPort-f2dAQL4I.js +0 -69
  229. package/lib/vite/traceViewer/index.-_8-eHEE.js +0 -2
  230. package/lib/vite/traceViewer/index.u51inEcm.js +0 -2
  231. package/lib/vite/traceViewer/uiMode.9CwNsWc6.js +0 -10
  232. package/lib/vite/traceViewer/uiMode.Fb0bNA4H.js +0 -10
  233. package/lib/vite/traceViewer/uiMode.pWy0Re7G.css +0 -1
  234. package/lib/vite/traceViewer/wsPort.zR1WIy9-.css +0 -1
  235. /package/lib/vite/recorder/assets/{codeMirrorModule-Hs9-1ZG4.css → codeMirrorModule-ez37Vkbh.css} +0 -0
  236. /package/lib/vite/traceViewer/assets/{xtermModule-Yt6xwiJ_.js → xtermModule-BeNbaIVa.js} +0 -0
  237. /package/lib/vite/traceViewer/{codeMirrorModule.Hs9-1ZG4.css → codeMirrorModule.ez37Vkbh.css} +0 -0
  238. /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;
@@ -42,4 +42,5 @@ function toModifiers(modifiers) {
42
42
  if (modifiers & 4) result.push('Meta');
43
43
  if (modifiers & 8) result.push('Shift');
44
44
  return result;
45
- }
45
+ }
46
+ //# sourceMappingURL=utils.js.map