@checkly/playwright-core 1.41.2-beta.0

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 (305) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +3 -0
  4. package/ThirdPartyNotices.txt +1513 -0
  5. package/bin/PrintDeps.exe +0 -0
  6. package/bin/README.md +2 -0
  7. package/bin/install_media_pack.ps1 +5 -0
  8. package/bin/reinstall_chrome_beta_linux.sh +40 -0
  9. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  10. package/bin/reinstall_chrome_beta_win.ps1 +23 -0
  11. package/bin/reinstall_chrome_stable_linux.sh +40 -0
  12. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  13. package/bin/reinstall_chrome_stable_win.ps1 +23 -0
  14. package/bin/reinstall_msedge_beta_linux.sh +40 -0
  15. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  16. package/bin/reinstall_msedge_beta_win.ps1 +22 -0
  17. package/bin/reinstall_msedge_dev_linux.sh +40 -0
  18. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  19. package/bin/reinstall_msedge_dev_win.ps1 +22 -0
  20. package/bin/reinstall_msedge_stable_linux.sh +40 -0
  21. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  22. package/bin/reinstall_msedge_stable_win.ps1 +23 -0
  23. package/browsers.json +64 -0
  24. package/cli.js +17 -0
  25. package/index.d.ts +17 -0
  26. package/index.js +33 -0
  27. package/index.mjs +28 -0
  28. package/lib/androidServerImpl.js +69 -0
  29. package/lib/browserServerImpl.js +92 -0
  30. package/lib/cli/driver.js +97 -0
  31. package/lib/cli/program.js +582 -0
  32. package/lib/cli/programWithTestStub.js +67 -0
  33. package/lib/client/accessibility.js +50 -0
  34. package/lib/client/android.js +473 -0
  35. package/lib/client/api.js +272 -0
  36. package/lib/client/artifact.js +79 -0
  37. package/lib/client/browser.js +145 -0
  38. package/lib/client/browserContext.js +509 -0
  39. package/lib/client/browserType.js +233 -0
  40. package/lib/client/cdpSession.js +53 -0
  41. package/lib/client/channelOwner.js +229 -0
  42. package/lib/client/clientHelper.js +57 -0
  43. package/lib/client/clientInstrumentation.js +40 -0
  44. package/lib/client/connection.js +327 -0
  45. package/lib/client/consoleMessage.js +55 -0
  46. package/lib/client/coverage.js +41 -0
  47. package/lib/client/dialog.js +57 -0
  48. package/lib/client/download.js +62 -0
  49. package/lib/client/electron.js +130 -0
  50. package/lib/client/elementHandle.js +291 -0
  51. package/lib/client/errors.js +77 -0
  52. package/lib/client/events.js +93 -0
  53. package/lib/client/fetch.js +343 -0
  54. package/lib/client/fileChooser.js +45 -0
  55. package/lib/client/frame.js +506 -0
  56. package/lib/client/harRouter.js +93 -0
  57. package/lib/client/input.js +111 -0
  58. package/lib/client/jsHandle.js +123 -0
  59. package/lib/client/jsonPipe.js +35 -0
  60. package/lib/client/localUtils.js +35 -0
  61. package/lib/client/locator.js +432 -0
  62. package/lib/client/network.js +601 -0
  63. package/lib/client/page.js +707 -0
  64. package/lib/client/playwright.js +74 -0
  65. package/lib/client/selectors.js +67 -0
  66. package/lib/client/stream.js +54 -0
  67. package/lib/client/tracing.js +135 -0
  68. package/lib/client/types.js +24 -0
  69. package/lib/client/video.js +51 -0
  70. package/lib/client/waiter.js +158 -0
  71. package/lib/client/webError.js +37 -0
  72. package/lib/client/worker.js +71 -0
  73. package/lib/client/writableStream.js +54 -0
  74. package/lib/common/socksProxy.js +569 -0
  75. package/lib/common/timeoutSettings.js +73 -0
  76. package/lib/common/types.js +5 -0
  77. package/lib/generated/consoleApiSource.js +7 -0
  78. package/lib/generated/injectedScriptSource.js +7 -0
  79. package/lib/generated/recorderSource.js +7 -0
  80. package/lib/generated/utilityScriptSource.js +7 -0
  81. package/lib/image_tools/colorUtils.js +98 -0
  82. package/lib/image_tools/compare.js +108 -0
  83. package/lib/image_tools/imageChannel.js +70 -0
  84. package/lib/image_tools/stats.js +102 -0
  85. package/lib/inProcessFactory.js +54 -0
  86. package/lib/inprocess.js +20 -0
  87. package/lib/outofprocess.js +67 -0
  88. package/lib/protocol/debug.js +27 -0
  89. package/lib/protocol/serializers.js +172 -0
  90. package/lib/protocol/transport.js +82 -0
  91. package/lib/protocol/validator.js +2599 -0
  92. package/lib/protocol/validatorPrimitives.js +139 -0
  93. package/lib/remote/playwrightConnection.js +274 -0
  94. package/lib/remote/playwrightServer.js +110 -0
  95. package/lib/server/accessibility.js +62 -0
  96. package/lib/server/android/android.js +441 -0
  97. package/lib/server/android/backendAdb.js +172 -0
  98. package/lib/server/artifact.js +104 -0
  99. package/lib/server/browser.js +129 -0
  100. package/lib/server/browserContext.js +609 -0
  101. package/lib/server/browserType.js +300 -0
  102. package/lib/server/chromium/appIcon.png +0 -0
  103. package/lib/server/chromium/chromium.js +346 -0
  104. package/lib/server/chromium/chromiumSwitches.js +41 -0
  105. package/lib/server/chromium/crAccessibility.js +237 -0
  106. package/lib/server/chromium/crBrowser.js +521 -0
  107. package/lib/server/chromium/crConnection.js +228 -0
  108. package/lib/server/chromium/crCoverage.js +246 -0
  109. package/lib/server/chromium/crDevTools.js +104 -0
  110. package/lib/server/chromium/crDragDrop.js +144 -0
  111. package/lib/server/chromium/crExecutionContext.js +156 -0
  112. package/lib/server/chromium/crInput.js +171 -0
  113. package/lib/server/chromium/crNetworkManager.js +723 -0
  114. package/lib/server/chromium/crPage.js +1173 -0
  115. package/lib/server/chromium/crPdf.js +147 -0
  116. package/lib/server/chromium/crProtocolHelper.js +131 -0
  117. package/lib/server/chromium/crServiceWorker.js +115 -0
  118. package/lib/server/chromium/defaultFontFamilies.js +145 -0
  119. package/lib/server/chromium/videoRecorder.js +155 -0
  120. package/lib/server/console.js +59 -0
  121. package/lib/server/cookieStore.js +112 -0
  122. package/lib/server/debugController.js +236 -0
  123. package/lib/server/debugger.js +132 -0
  124. package/lib/server/deviceDescriptors.js +21 -0
  125. package/lib/server/deviceDescriptorsSource.json +1549 -0
  126. package/lib/server/dialog.js +70 -0
  127. package/lib/server/dispatchers/androidDispatcher.js +193 -0
  128. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  129. package/lib/server/dispatchers/browserContextDispatcher.js +306 -0
  130. package/lib/server/dispatchers/browserDispatcher.js +170 -0
  131. package/lib/server/dispatchers/browserTypeDispatcher.js +55 -0
  132. package/lib/server/dispatchers/cdpSessionDispatcher.js +48 -0
  133. package/lib/server/dispatchers/debugControllerDispatcher.js +103 -0
  134. package/lib/server/dispatchers/dialogDispatcher.js +44 -0
  135. package/lib/server/dispatchers/dispatcher.js +400 -0
  136. package/lib/server/dispatchers/electronDispatcher.js +80 -0
  137. package/lib/server/dispatchers/elementHandlerDispatcher.js +228 -0
  138. package/lib/server/dispatchers/frameDispatcher.js +287 -0
  139. package/lib/server/dispatchers/jsHandleDispatcher.js +102 -0
  140. package/lib/server/dispatchers/jsonPipeDispatcher.js +61 -0
  141. package/lib/server/dispatchers/localUtilsDispatcher.js +399 -0
  142. package/lib/server/dispatchers/networkDispatchers.js +221 -0
  143. package/lib/server/dispatchers/pageDispatcher.js +363 -0
  144. package/lib/server/dispatchers/playwrightDispatcher.js +105 -0
  145. package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  146. package/lib/server/dispatchers/streamDispatcher.js +62 -0
  147. package/lib/server/dispatchers/tracingDispatcher.js +54 -0
  148. package/lib/server/dispatchers/writableStreamDispatcher.js +55 -0
  149. package/lib/server/dom.js +808 -0
  150. package/lib/server/download.js +53 -0
  151. package/lib/server/electron/electron.js +254 -0
  152. package/lib/server/electron/loader.js +57 -0
  153. package/lib/server/errors.js +68 -0
  154. package/lib/server/fetch.js +611 -0
  155. package/lib/server/fileChooser.js +42 -0
  156. package/lib/server/fileUploadUtils.js +71 -0
  157. package/lib/server/firefox/ffAccessibility.js +215 -0
  158. package/lib/server/firefox/ffBrowser.js +447 -0
  159. package/lib/server/firefox/ffConnection.js +168 -0
  160. package/lib/server/firefox/ffExecutionContext.js +138 -0
  161. package/lib/server/firefox/ffInput.js +150 -0
  162. package/lib/server/firefox/ffNetworkManager.js +231 -0
  163. package/lib/server/firefox/ffPage.js +558 -0
  164. package/lib/server/firefox/firefox.js +91 -0
  165. package/lib/server/formData.js +75 -0
  166. package/lib/server/frameSelectors.js +171 -0
  167. package/lib/server/frames.js +1597 -0
  168. package/lib/server/har/harRecorder.js +139 -0
  169. package/lib/server/har/harTracer.js +539 -0
  170. package/lib/server/helper.js +103 -0
  171. package/lib/server/index.js +96 -0
  172. package/lib/server/input.js +301 -0
  173. package/lib/server/instrumentation.js +74 -0
  174. package/lib/server/isomorphic/utilityScriptSerializers.js +212 -0
  175. package/lib/server/javascript.js +305 -0
  176. package/lib/server/launchApp.js +90 -0
  177. package/lib/server/macEditingCommands.js +139 -0
  178. package/lib/server/network.js +607 -0
  179. package/lib/server/page.js +793 -0
  180. package/lib/server/pipeTransport.js +85 -0
  181. package/lib/server/playwright.js +82 -0
  182. package/lib/server/progress.js +102 -0
  183. package/lib/server/protocolError.js +49 -0
  184. package/lib/server/recorder/codeGenerator.js +153 -0
  185. package/lib/server/recorder/csharp.js +310 -0
  186. package/lib/server/recorder/java.js +216 -0
  187. package/lib/server/recorder/javascript.js +229 -0
  188. package/lib/server/recorder/jsonl.js +47 -0
  189. package/lib/server/recorder/language.js +44 -0
  190. package/lib/server/recorder/python.js +275 -0
  191. package/lib/server/recorder/recorderActions.js +5 -0
  192. package/lib/server/recorder/recorderApp.js +181 -0
  193. package/lib/server/recorder/recorderUtils.js +48 -0
  194. package/lib/server/recorder/utils.js +45 -0
  195. package/lib/server/recorder.js +700 -0
  196. package/lib/server/registry/browserFetcher.js +168 -0
  197. package/lib/server/registry/dependencies.js +322 -0
  198. package/lib/server/registry/index.js +925 -0
  199. package/lib/server/registry/nativeDeps.js +383 -0
  200. package/lib/server/registry/oopDownloadBrowserMain.js +138 -0
  201. package/lib/server/screenshotter.js +354 -0
  202. package/lib/server/selectors.js +73 -0
  203. package/lib/server/socksInterceptor.js +100 -0
  204. package/lib/server/trace/recorder/snapshotter.js +168 -0
  205. package/lib/server/trace/recorder/snapshotterInjected.js +493 -0
  206. package/lib/server/trace/recorder/tracing.js +552 -0
  207. package/lib/server/trace/test/inMemorySnapshotter.js +93 -0
  208. package/lib/server/trace/viewer/traceViewer.js +229 -0
  209. package/lib/server/transport.js +191 -0
  210. package/lib/server/types.js +24 -0
  211. package/lib/server/usKeyboardLayout.js +555 -0
  212. package/lib/server/webkit/webkit.js +87 -0
  213. package/lib/server/webkit/wkAccessibility.js +194 -0
  214. package/lib/server/webkit/wkBrowser.js +328 -0
  215. package/lib/server/webkit/wkConnection.js +173 -0
  216. package/lib/server/webkit/wkExecutionContext.js +146 -0
  217. package/lib/server/webkit/wkInput.js +169 -0
  218. package/lib/server/webkit/wkInterceptableRequest.js +158 -0
  219. package/lib/server/webkit/wkPage.js +1198 -0
  220. package/lib/server/webkit/wkProvisionalPage.js +59 -0
  221. package/lib/server/webkit/wkWorkers.js +104 -0
  222. package/lib/third_party/diff_match_patch.js +2222 -0
  223. package/lib/third_party/pixelmatch.js +255 -0
  224. package/lib/utils/ascii.js +31 -0
  225. package/lib/utils/comparators.js +171 -0
  226. package/lib/utils/crypto.js +33 -0
  227. package/lib/utils/debug.js +46 -0
  228. package/lib/utils/debugLogger.js +89 -0
  229. package/lib/utils/env.js +47 -0
  230. package/lib/utils/eventsHelper.js +38 -0
  231. package/lib/utils/fileUtils.js +66 -0
  232. package/lib/utils/glob.js +83 -0
  233. package/lib/utils/happy-eyeballs.js +154 -0
  234. package/lib/utils/headers.js +52 -0
  235. package/lib/utils/hostPlatform.js +124 -0
  236. package/lib/utils/httpServer.js +195 -0
  237. package/lib/utils/index.js +324 -0
  238. package/lib/utils/isomorphic/cssParser.js +250 -0
  239. package/lib/utils/isomorphic/cssTokenizer.js +979 -0
  240. package/lib/utils/isomorphic/locatorGenerators.js +651 -0
  241. package/lib/utils/isomorphic/locatorParser.js +179 -0
  242. package/lib/utils/isomorphic/locatorUtils.js +62 -0
  243. package/lib/utils/isomorphic/selectorParser.js +397 -0
  244. package/lib/utils/isomorphic/stringUtils.js +107 -0
  245. package/lib/utils/isomorphic/traceUtils.js +39 -0
  246. package/lib/utils/linuxUtils.js +78 -0
  247. package/lib/utils/manualPromise.js +109 -0
  248. package/lib/utils/mimeType.js +29 -0
  249. package/lib/utils/multimap.js +75 -0
  250. package/lib/utils/network.js +189 -0
  251. package/lib/utils/processLauncher.js +248 -0
  252. package/lib/utils/profiler.js +53 -0
  253. package/lib/utils/rtti.js +41 -0
  254. package/lib/utils/semaphore.js +51 -0
  255. package/lib/utils/spawnAsync.js +45 -0
  256. package/lib/utils/stackTrace.js +123 -0
  257. package/lib/utils/task.js +58 -0
  258. package/lib/utils/time.js +37 -0
  259. package/lib/utils/timeoutRunner.js +131 -0
  260. package/lib/utils/traceUtils.js +44 -0
  261. package/lib/utils/userAgent.js +105 -0
  262. package/lib/utils/wsServer.js +125 -0
  263. package/lib/utils/zipFile.js +75 -0
  264. package/lib/utils/zones.js +99 -0
  265. package/lib/utilsBundle.js +81 -0
  266. package/lib/utilsBundleImpl/index.js +51 -0
  267. package/lib/utilsBundleImpl/xdg-open +1066 -0
  268. package/lib/vite/htmlReport/index.html +66 -0
  269. package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +1 -0
  270. package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +24 -0
  271. package/lib/vite/recorder/assets/codicon-zGuYmc9o.ttf +0 -0
  272. package/lib/vite/recorder/assets/index-ljsTwXtJ.css +1 -0
  273. package/lib/vite/recorder/assets/index-yg8ypzl6.js +47 -0
  274. package/lib/vite/recorder/index.html +29 -0
  275. package/lib/vite/recorder/playwright-logo.svg +9 -0
  276. package/lib/vite/traceViewer/assets/codeMirrorModule-GluP1cQ1.js +24 -0
  277. package/lib/vite/traceViewer/assets/codeMirrorModule-fqJB1XDu.js +24 -0
  278. package/lib/vite/traceViewer/assets/codeMirrorModule-y3M3aAqy.js +24 -0
  279. package/lib/vite/traceViewer/assets/wsPort-Rvwd4WC-.js +69 -0
  280. package/lib/vite/traceViewer/assets/wsPort-dlD7vDkY.js +69 -0
  281. package/lib/vite/traceViewer/assets/wsPort-qOE2NWrO.js +69 -0
  282. package/lib/vite/traceViewer/assets/xtermModule-Yt6xwiJ_.js +9 -0
  283. package/lib/vite/traceViewer/codeMirrorModule.Hs9-1ZG4.css +1 -0
  284. package/lib/vite/traceViewer/codicon.zGuYmc9o.ttf +0 -0
  285. package/lib/vite/traceViewer/index.-g_5lMbJ.css +1 -0
  286. package/lib/vite/traceViewer/index.4X7zDysg.js +2 -0
  287. package/lib/vite/traceViewer/index.HkJgzlGy.js +2 -0
  288. package/lib/vite/traceViewer/index.html +26 -0
  289. package/lib/vite/traceViewer/index.kRjx5sAJ.js +2 -0
  290. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  291. package/lib/vite/traceViewer/snapshot.html +21 -0
  292. package/lib/vite/traceViewer/sw.bundle.js +4 -0
  293. package/lib/vite/traceViewer/uiMode.1Wcp_Kto.js +10 -0
  294. package/lib/vite/traceViewer/uiMode.GTNzARcV.js +10 -0
  295. package/lib/vite/traceViewer/uiMode.html +17 -0
  296. package/lib/vite/traceViewer/uiMode.pWy0Re7G.css +1 -0
  297. package/lib/vite/traceViewer/uiMode.zV-7Lf9v.js +10 -0
  298. package/lib/vite/traceViewer/wsPort.kSgQKQ0y.css +1 -0
  299. package/lib/vite/traceViewer/xtermModule.0lwXJFHT.css +32 -0
  300. package/lib/zipBundle.js +25 -0
  301. package/lib/zipBundleImpl.js +5 -0
  302. package/package.json +43 -0
  303. package/types/protocol.d.ts +20304 -0
  304. package/types/structs.d.ts +45 -0
  305. package/types/types.d.ts +20626 -0
@@ -0,0 +1,506 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Frame = void 0;
7
+ exports.verifyLoadState = verifyLoadState;
8
+ var _utils = require("../utils");
9
+ var _channelOwner = require("./channelOwner");
10
+ var _locator = require("./locator");
11
+ var _locatorUtils = require("../utils/isomorphic/locatorUtils");
12
+ var _elementHandle = require("./elementHandle");
13
+ var _jsHandle = require("./jsHandle");
14
+ var _fs = _interopRequireDefault(require("fs"));
15
+ var network = _interopRequireWildcard(require("./network"));
16
+ var _events = require("events");
17
+ var _waiter = require("./waiter");
18
+ var _events2 = require("./events");
19
+ var _types = require("./types");
20
+ var _network2 = require("../utils/network");
21
+ var _clientHelper = require("./clientHelper");
22
+ 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); }
23
+ 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; }
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+ /**
26
+ * Copyright 2017 Google Inc. All rights reserved.
27
+ * Modifications copyright (c) Microsoft Corporation.
28
+ *
29
+ * Licensed under the Apache License, Version 2.0 (the "License");
30
+ * you may not use this file except in compliance with the License.
31
+ * You may obtain a copy of the License at
32
+ *
33
+ * http://www.apache.org/licenses/LICENSE-2.0
34
+ *
35
+ * Unless required by applicable law or agreed to in writing, software
36
+ * distributed under the License is distributed on an "AS IS" BASIS,
37
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
38
+ * See the License for the specific language governing permissions and
39
+ * limitations under the License.
40
+ */
41
+
42
+ class Frame extends _channelOwner.ChannelOwner {
43
+ static from(frame) {
44
+ return frame._object;
45
+ }
46
+ static fromNullable(frame) {
47
+ return frame ? Frame.from(frame) : null;
48
+ }
49
+ constructor(parent, type, guid, initializer) {
50
+ super(parent, type, guid, initializer);
51
+ this._eventEmitter = void 0;
52
+ this._loadStates = void 0;
53
+ this._parentFrame = null;
54
+ this._url = '';
55
+ this._name = '';
56
+ this._detached = false;
57
+ this._childFrames = new Set();
58
+ this._page = void 0;
59
+ this._eventEmitter = new _events.EventEmitter();
60
+ this._eventEmitter.setMaxListeners(0);
61
+ this._parentFrame = Frame.fromNullable(initializer.parentFrame);
62
+ if (this._parentFrame) this._parentFrame._childFrames.add(this);
63
+ this._name = initializer.name;
64
+ this._url = initializer.url;
65
+ this._loadStates = new Set(initializer.loadStates);
66
+ this._channel.on('loadstate', event => {
67
+ if (event.add) {
68
+ this._loadStates.add(event.add);
69
+ this._eventEmitter.emit('loadstate', event.add);
70
+ }
71
+ if (event.remove) this._loadStates.delete(event.remove);
72
+ if (!this._parentFrame && event.add === 'load' && this._page) this._page.emit(_events2.Events.Page.Load, this._page);
73
+ if (!this._parentFrame && event.add === 'domcontentloaded' && this._page) this._page.emit(_events2.Events.Page.DOMContentLoaded, this._page);
74
+ });
75
+ this._channel.on('navigated', event => {
76
+ this._url = event.url;
77
+ this._name = event.name;
78
+ this._eventEmitter.emit('navigated', event);
79
+ if (!event.error && this._page) this._page.emit(_events2.Events.Page.FrameNavigated, this);
80
+ });
81
+ }
82
+ page() {
83
+ return this._page;
84
+ }
85
+ async goto(url, options = {}) {
86
+ const waitUntil = verifyLoadState('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
87
+ return network.Response.fromNullable((await this._channel.goto({
88
+ url,
89
+ ...options,
90
+ waitUntil
91
+ })).response);
92
+ }
93
+ _setupNavigationWaiter(options) {
94
+ const waiter = new _waiter.Waiter(this._page, '');
95
+ if (this._page.isClosed()) waiter.rejectImmediately(this._page._closeErrorWithReason());
96
+ waiter.rejectOnEvent(this._page, _events2.Events.Page.Close, () => this._page._closeErrorWithReason());
97
+ waiter.rejectOnEvent(this._page, _events2.Events.Page.Crash, new Error('Navigation failed because page crashed!'));
98
+ waiter.rejectOnEvent(this._page, _events2.Events.Page.FrameDetached, new Error('Navigating frame was detached!'), frame => frame === this);
99
+ const timeout = this._page._timeoutSettings.navigationTimeout(options);
100
+ waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded.`);
101
+ return waiter;
102
+ }
103
+ async waitForNavigation(options = {}) {
104
+ return await this._page._wrapApiCall(async () => {
105
+ const waitUntil = verifyLoadState('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
106
+ const waiter = this._setupNavigationWaiter(options);
107
+ const toUrl = typeof options.url === 'string' ? ` to "${options.url}"` : '';
108
+ waiter.log(`waiting for navigation${toUrl} until "${waitUntil}"`);
109
+ const navigatedEvent = await waiter.waitForEvent(this._eventEmitter, 'navigated', event => {
110
+ var _this$_page;
111
+ // Any failed navigation results in a rejection.
112
+ if (event.error) return true;
113
+ waiter.log(` navigated to "${event.url}"`);
114
+ return (0, _network2.urlMatches)((_this$_page = this._page) === null || _this$_page === void 0 ? void 0 : _this$_page.context()._options.baseURL, event.url, options.url);
115
+ });
116
+ if (navigatedEvent.error) {
117
+ const e = new Error(navigatedEvent.error);
118
+ e.stack = '';
119
+ await waiter.waitForPromise(Promise.reject(e));
120
+ }
121
+ if (!this._loadStates.has(waitUntil)) {
122
+ await waiter.waitForEvent(this._eventEmitter, 'loadstate', s => {
123
+ waiter.log(` "${s}" event fired`);
124
+ return s === waitUntil;
125
+ });
126
+ }
127
+ const request = navigatedEvent.newDocument ? network.Request.fromNullable(navigatedEvent.newDocument.request) : null;
128
+ const response = request ? await waiter.waitForPromise(request._finalRequest()._internalResponse()) : null;
129
+ waiter.dispose();
130
+ return response;
131
+ });
132
+ }
133
+ async waitForLoadState(state = 'load', options = {}) {
134
+ state = verifyLoadState('state', state);
135
+ return await this._page._wrapApiCall(async () => {
136
+ const waiter = this._setupNavigationWaiter(options);
137
+ if (this._loadStates.has(state)) {
138
+ waiter.log(` not waiting, "${state}" event already fired`);
139
+ } else {
140
+ await waiter.waitForEvent(this._eventEmitter, 'loadstate', s => {
141
+ waiter.log(` "${s}" event fired`);
142
+ return s === state;
143
+ });
144
+ }
145
+ waiter.dispose();
146
+ });
147
+ }
148
+ async waitForURL(url, options = {}) {
149
+ var _this$_page2;
150
+ if ((0, _network2.urlMatches)((_this$_page2 = this._page) === null || _this$_page2 === void 0 ? void 0 : _this$_page2.context()._options.baseURL, this.url(), url)) return await this.waitForLoadState(options.waitUntil, options);
151
+ await this.waitForNavigation({
152
+ url,
153
+ ...options
154
+ });
155
+ }
156
+ async frameElement() {
157
+ return _elementHandle.ElementHandle.from((await this._channel.frameElement()).element);
158
+ }
159
+ async evaluateHandle(pageFunction, arg) {
160
+ (0, _jsHandle.assertMaxArguments)(arguments.length, 2);
161
+ const result = await this._channel.evaluateExpressionHandle({
162
+ expression: String(pageFunction),
163
+ isFunction: typeof pageFunction === 'function',
164
+ arg: (0, _jsHandle.serializeArgument)(arg)
165
+ });
166
+ return _jsHandle.JSHandle.from(result.handle);
167
+ }
168
+ async evaluate(pageFunction, arg) {
169
+ (0, _jsHandle.assertMaxArguments)(arguments.length, 2);
170
+ const result = await this._channel.evaluateExpression({
171
+ expression: String(pageFunction),
172
+ isFunction: typeof pageFunction === 'function',
173
+ arg: (0, _jsHandle.serializeArgument)(arg)
174
+ });
175
+ return (0, _jsHandle.parseResult)(result.value);
176
+ }
177
+ async _evaluateExposeUtilityScript(pageFunction, arg) {
178
+ (0, _jsHandle.assertMaxArguments)(arguments.length, 2);
179
+ const result = await this._channel.evaluateExpression({
180
+ expression: String(pageFunction),
181
+ isFunction: typeof pageFunction === 'function',
182
+ exposeUtilityScript: true,
183
+ arg: (0, _jsHandle.serializeArgument)(arg)
184
+ });
185
+ return (0, _jsHandle.parseResult)(result.value);
186
+ }
187
+ async $(selector, options) {
188
+ const result = await this._channel.querySelector({
189
+ selector,
190
+ ...options
191
+ });
192
+ return _elementHandle.ElementHandle.fromNullable(result.element);
193
+ }
194
+ async waitForSelector(selector, options = {}) {
195
+ if (options.visibility) throw new Error('options.visibility is not supported, did you mean options.state?');
196
+ if (options.waitFor && options.waitFor !== 'visible') throw new Error('options.waitFor is not supported, did you mean options.state?');
197
+ const result = await this._channel.waitForSelector({
198
+ selector,
199
+ ...options
200
+ });
201
+ return _elementHandle.ElementHandle.fromNullable(result.element);
202
+ }
203
+ async dispatchEvent(selector, type, eventInit, options = {}) {
204
+ await this._channel.dispatchEvent({
205
+ selector,
206
+ type,
207
+ eventInit: (0, _jsHandle.serializeArgument)(eventInit),
208
+ ...options
209
+ });
210
+ }
211
+ async $eval(selector, pageFunction, arg) {
212
+ (0, _jsHandle.assertMaxArguments)(arguments.length, 3);
213
+ const result = await this._channel.evalOnSelector({
214
+ selector,
215
+ expression: String(pageFunction),
216
+ isFunction: typeof pageFunction === 'function',
217
+ arg: (0, _jsHandle.serializeArgument)(arg)
218
+ });
219
+ return (0, _jsHandle.parseResult)(result.value);
220
+ }
221
+ async $$eval(selector, pageFunction, arg) {
222
+ (0, _jsHandle.assertMaxArguments)(arguments.length, 3);
223
+ const result = await this._channel.evalOnSelectorAll({
224
+ selector,
225
+ expression: String(pageFunction),
226
+ isFunction: typeof pageFunction === 'function',
227
+ arg: (0, _jsHandle.serializeArgument)(arg)
228
+ });
229
+ return (0, _jsHandle.parseResult)(result.value);
230
+ }
231
+ async $$(selector) {
232
+ const result = await this._channel.querySelectorAll({
233
+ selector
234
+ });
235
+ return result.elements.map(e => _elementHandle.ElementHandle.from(e));
236
+ }
237
+ async _queryCount(selector) {
238
+ return (await this._channel.queryCount({
239
+ selector
240
+ })).value;
241
+ }
242
+ async content() {
243
+ return (await this._channel.content()).value;
244
+ }
245
+ async setContent(html, options = {}) {
246
+ const waitUntil = verifyLoadState('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
247
+ await this._channel.setContent({
248
+ html,
249
+ ...options,
250
+ waitUntil
251
+ });
252
+ }
253
+ name() {
254
+ return this._name || '';
255
+ }
256
+ url() {
257
+ return this._url;
258
+ }
259
+ parentFrame() {
260
+ return this._parentFrame;
261
+ }
262
+ childFrames() {
263
+ return Array.from(this._childFrames);
264
+ }
265
+ isDetached() {
266
+ return this._detached;
267
+ }
268
+ async addScriptTag(options = {}) {
269
+ const copy = {
270
+ ...options
271
+ };
272
+ if (copy.path) {
273
+ copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
274
+ copy.content = (0, _clientHelper.addSourceUrlToScript)(copy.content, copy.path);
275
+ }
276
+ return _elementHandle.ElementHandle.from((await this._channel.addScriptTag({
277
+ ...copy
278
+ })).element);
279
+ }
280
+ async addStyleTag(options = {}) {
281
+ const copy = {
282
+ ...options
283
+ };
284
+ if (copy.path) {
285
+ copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
286
+ copy.content += '/*# sourceURL=' + copy.path.replace(/\n/g, '') + '*/';
287
+ }
288
+ return _elementHandle.ElementHandle.from((await this._channel.addStyleTag({
289
+ ...copy
290
+ })).element);
291
+ }
292
+ async click(selector, options = {}) {
293
+ return await this._channel.click({
294
+ selector,
295
+ ...options
296
+ });
297
+ }
298
+ async dblclick(selector, options = {}) {
299
+ return await this._channel.dblclick({
300
+ selector,
301
+ ...options
302
+ });
303
+ }
304
+ async dragAndDrop(source, target, options = {}) {
305
+ return await this._channel.dragAndDrop({
306
+ source,
307
+ target,
308
+ ...options
309
+ });
310
+ }
311
+ async tap(selector, options = {}) {
312
+ return await this._channel.tap({
313
+ selector,
314
+ ...options
315
+ });
316
+ }
317
+ async fill(selector, value, options = {}) {
318
+ return await this._channel.fill({
319
+ selector,
320
+ value,
321
+ ...options
322
+ });
323
+ }
324
+ async _highlight(selector) {
325
+ return await this._channel.highlight({
326
+ selector
327
+ });
328
+ }
329
+ locator(selector, options) {
330
+ return new _locator.Locator(this, selector, options);
331
+ }
332
+ getByTestId(testId) {
333
+ return this.locator((0, _locatorUtils.getByTestIdSelector)((0, _locator.testIdAttributeName)(), testId));
334
+ }
335
+ getByAltText(text, options) {
336
+ return this.locator((0, _locatorUtils.getByAltTextSelector)(text, options));
337
+ }
338
+ getByLabel(text, options) {
339
+ return this.locator((0, _locatorUtils.getByLabelSelector)(text, options));
340
+ }
341
+ getByPlaceholder(text, options) {
342
+ return this.locator((0, _locatorUtils.getByPlaceholderSelector)(text, options));
343
+ }
344
+ getByText(text, options) {
345
+ return this.locator((0, _locatorUtils.getByTextSelector)(text, options));
346
+ }
347
+ getByTitle(text, options) {
348
+ return this.locator((0, _locatorUtils.getByTitleSelector)(text, options));
349
+ }
350
+ getByRole(role, options = {}) {
351
+ return this.locator((0, _locatorUtils.getByRoleSelector)(role, options));
352
+ }
353
+ frameLocator(selector) {
354
+ return new _locator.FrameLocator(this, selector);
355
+ }
356
+ async focus(selector, options = {}) {
357
+ await this._channel.focus({
358
+ selector,
359
+ ...options
360
+ });
361
+ }
362
+ async textContent(selector, options = {}) {
363
+ const value = (await this._channel.textContent({
364
+ selector,
365
+ ...options
366
+ })).value;
367
+ return value === undefined ? null : value;
368
+ }
369
+ async innerText(selector, options = {}) {
370
+ return (await this._channel.innerText({
371
+ selector,
372
+ ...options
373
+ })).value;
374
+ }
375
+ async innerHTML(selector, options = {}) {
376
+ return (await this._channel.innerHTML({
377
+ selector,
378
+ ...options
379
+ })).value;
380
+ }
381
+ async getAttribute(selector, name, options = {}) {
382
+ const value = (await this._channel.getAttribute({
383
+ selector,
384
+ name,
385
+ ...options
386
+ })).value;
387
+ return value === undefined ? null : value;
388
+ }
389
+ async inputValue(selector, options = {}) {
390
+ return (await this._channel.inputValue({
391
+ selector,
392
+ ...options
393
+ })).value;
394
+ }
395
+ async isChecked(selector, options = {}) {
396
+ return (await this._channel.isChecked({
397
+ selector,
398
+ ...options
399
+ })).value;
400
+ }
401
+ async isDisabled(selector, options = {}) {
402
+ return (await this._channel.isDisabled({
403
+ selector,
404
+ ...options
405
+ })).value;
406
+ }
407
+ async isEditable(selector, options = {}) {
408
+ return (await this._channel.isEditable({
409
+ selector,
410
+ ...options
411
+ })).value;
412
+ }
413
+ async isEnabled(selector, options = {}) {
414
+ return (await this._channel.isEnabled({
415
+ selector,
416
+ ...options
417
+ })).value;
418
+ }
419
+ async isHidden(selector, options = {}) {
420
+ return (await this._channel.isHidden({
421
+ selector,
422
+ ...options
423
+ })).value;
424
+ }
425
+ async isVisible(selector, options = {}) {
426
+ return (await this._channel.isVisible({
427
+ selector,
428
+ ...options
429
+ })).value;
430
+ }
431
+ async hover(selector, options = {}) {
432
+ await this._channel.hover({
433
+ selector,
434
+ ...options
435
+ });
436
+ }
437
+ async selectOption(selector, values, options = {}) {
438
+ return (await this._channel.selectOption({
439
+ selector,
440
+ ...(0, _elementHandle.convertSelectOptionValues)(values),
441
+ ...options
442
+ })).values;
443
+ }
444
+ async setInputFiles(selector, files, options = {}) {
445
+ const converted = await (0, _elementHandle.convertInputFiles)(files, this.page().context());
446
+ await this._channel.setInputFiles({
447
+ selector,
448
+ ...converted,
449
+ ...options
450
+ });
451
+ }
452
+ async type(selector, text, options = {}) {
453
+ await this._channel.type({
454
+ selector,
455
+ text,
456
+ ...options
457
+ });
458
+ }
459
+ async press(selector, key, options = {}) {
460
+ await this._channel.press({
461
+ selector,
462
+ key,
463
+ ...options
464
+ });
465
+ }
466
+ async check(selector, options = {}) {
467
+ await this._channel.check({
468
+ selector,
469
+ ...options
470
+ });
471
+ }
472
+ async uncheck(selector, options = {}) {
473
+ await this._channel.uncheck({
474
+ selector,
475
+ ...options
476
+ });
477
+ }
478
+ async setChecked(selector, checked, options) {
479
+ if (checked) await this.check(selector, options);else await this.uncheck(selector, options);
480
+ }
481
+ async waitForTimeout(timeout) {
482
+ await this._channel.waitForTimeout({
483
+ timeout
484
+ });
485
+ }
486
+ async waitForFunction(pageFunction, arg, options = {}) {
487
+ if (typeof options.polling === 'string') (0, _utils.assert)(options.polling === 'raf', 'Unknown polling option: ' + options.polling);
488
+ const result = await this._channel.waitForFunction({
489
+ ...options,
490
+ pollingInterval: options.polling === 'raf' ? undefined : options.polling,
491
+ expression: String(pageFunction),
492
+ isFunction: typeof pageFunction === 'function',
493
+ arg: (0, _jsHandle.serializeArgument)(arg)
494
+ });
495
+ return _jsHandle.JSHandle.from(result.handle);
496
+ }
497
+ async title() {
498
+ return (await this._channel.title()).value;
499
+ }
500
+ }
501
+ exports.Frame = Frame;
502
+ function verifyLoadState(name, waitUntil) {
503
+ if (waitUntil === 'networkidle0') waitUntil = 'networkidle';
504
+ if (!_types.kLifecycleEvents.has(waitUntil)) throw new Error(`${name}: expected one of (load|domcontentloaded|networkidle|commit)`);
505
+ return waitUntil;
506
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HarRouter = void 0;
7
+ var _debugLogger = require("../utils/debugLogger");
8
+ let _Symbol$asyncDispose;
9
+ /**
10
+ * Copyright (c) Microsoft Corporation.
11
+ *
12
+ * Licensed under the Apache License, Version 2.0 (the "License");
13
+ * you may not use this file except in compliance with the License.
14
+ * You may obtain a copy of the License at
15
+ *
16
+ * http://www.apache.org/licenses/LICENSE-2.0
17
+ *
18
+ * Unless required by applicable law or agreed to in writing, software
19
+ * distributed under the License is distributed on an "AS IS" BASIS,
20
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ * See the License for the specific language governing permissions and
22
+ * limitations under the License.
23
+ */
24
+ _Symbol$asyncDispose = Symbol.asyncDispose;
25
+ class HarRouter {
26
+ static async create(localUtils, file, notFoundAction, options) {
27
+ const {
28
+ harId,
29
+ error
30
+ } = await localUtils._channel.harOpen({
31
+ file
32
+ });
33
+ if (error) throw new Error(error);
34
+ return new HarRouter(localUtils, harId, notFoundAction, options);
35
+ }
36
+ constructor(localUtils, harId, notFoundAction, options) {
37
+ this._localUtils = void 0;
38
+ this._harId = void 0;
39
+ this._notFoundAction = void 0;
40
+ this._options = void 0;
41
+ this._localUtils = localUtils;
42
+ this._harId = harId;
43
+ this._options = options;
44
+ this._notFoundAction = notFoundAction;
45
+ }
46
+ async _handle(route) {
47
+ const request = route.request();
48
+ const response = await this._localUtils._channel.harLookup({
49
+ harId: this._harId,
50
+ url: request.url(),
51
+ method: request.method(),
52
+ headers: await request.headersArray(),
53
+ postData: request.postDataBuffer() || undefined,
54
+ isNavigationRequest: request.isNavigationRequest()
55
+ });
56
+ if (response.action === 'redirect') {
57
+ _debugLogger.debugLogger.log('api', `HAR: ${route.request().url()} redirected to ${response.redirectURL}`);
58
+ await route._redirectNavigationRequest(response.redirectURL);
59
+ return;
60
+ }
61
+ if (response.action === 'fulfill') {
62
+ await route.fulfill({
63
+ status: response.status,
64
+ headers: Object.fromEntries(response.headers.map(h => [h.name, h.value])),
65
+ body: response.body
66
+ });
67
+ return;
68
+ }
69
+ if (response.action === 'error') _debugLogger.debugLogger.log('api', 'HAR: ' + response.message);
70
+ // Report the error, but fall through to the default handler.
71
+
72
+ if (this._notFoundAction === 'abort') {
73
+ await route.abort();
74
+ return;
75
+ }
76
+ await route.fallback();
77
+ }
78
+ async addContextRoute(context) {
79
+ await context.route(this._options.urlMatch || '**/*', route => this._handle(route));
80
+ }
81
+ async addPageRoute(page) {
82
+ await page.route(this._options.urlMatch || '**/*', route => this._handle(route));
83
+ }
84
+ async [_Symbol$asyncDispose]() {
85
+ await this.dispose();
86
+ }
87
+ dispose() {
88
+ this._localUtils._channel.harClose({
89
+ harId: this._harId
90
+ }).catch(() => {});
91
+ }
92
+ }
93
+ exports.HarRouter = HarRouter;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Touchscreen = exports.Mouse = exports.Keyboard = void 0;
7
+ /**
8
+ * Copyright 2017 Google Inc. All rights reserved.
9
+ * Modifications copyright (c) Microsoft Corporation.
10
+ *
11
+ * Licensed under the Apache License, Version 2.0 (the "License");
12
+ * you may not use this file except in compliance with the License.
13
+ * You may obtain a copy of the License at
14
+ *
15
+ * http://www.apache.org/licenses/LICENSE-2.0
16
+ *
17
+ * Unless required by applicable law or agreed to in writing, software
18
+ * distributed under the License is distributed on an "AS IS" BASIS,
19
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ * See the License for the specific language governing permissions and
21
+ * limitations under the License.
22
+ */
23
+
24
+ class Keyboard {
25
+ constructor(page) {
26
+ this._page = void 0;
27
+ this._page = page;
28
+ }
29
+ async down(key) {
30
+ await this._page._channel.keyboardDown({
31
+ key
32
+ });
33
+ }
34
+ async up(key) {
35
+ await this._page._channel.keyboardUp({
36
+ key
37
+ });
38
+ }
39
+ async insertText(text) {
40
+ await this._page._channel.keyboardInsertText({
41
+ text
42
+ });
43
+ }
44
+ async type(text, options = {}) {
45
+ await this._page._channel.keyboardType({
46
+ text,
47
+ ...options
48
+ });
49
+ }
50
+ async press(key, options = {}) {
51
+ await this._page._channel.keyboardPress({
52
+ key,
53
+ ...options
54
+ });
55
+ }
56
+ }
57
+ exports.Keyboard = Keyboard;
58
+ class Mouse {
59
+ constructor(page) {
60
+ this._page = void 0;
61
+ this._page = page;
62
+ }
63
+ async move(x, y, options = {}) {
64
+ await this._page._channel.mouseMove({
65
+ x,
66
+ y,
67
+ ...options
68
+ });
69
+ }
70
+ async down(options = {}) {
71
+ await this._page._channel.mouseDown({
72
+ ...options
73
+ });
74
+ }
75
+ async up(options = {}) {
76
+ await this._page._channel.mouseUp(options);
77
+ }
78
+ async click(x, y, options = {}) {
79
+ await this._page._channel.mouseClick({
80
+ x,
81
+ y,
82
+ ...options
83
+ });
84
+ }
85
+ async dblclick(x, y, options = {}) {
86
+ await this.click(x, y, {
87
+ ...options,
88
+ clickCount: 2
89
+ });
90
+ }
91
+ async wheel(deltaX, deltaY) {
92
+ await this._page._channel.mouseWheel({
93
+ deltaX,
94
+ deltaY
95
+ });
96
+ }
97
+ }
98
+ exports.Mouse = Mouse;
99
+ class Touchscreen {
100
+ constructor(page) {
101
+ this._page = void 0;
102
+ this._page = page;
103
+ }
104
+ async tap(x, y) {
105
+ await this._page._channel.touchscreenTap({
106
+ x,
107
+ y
108
+ });
109
+ }
110
+ }
111
+ exports.Touchscreen = Touchscreen;