pure-patchright 1.52.5__py3-none-any.whl

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 (381) hide show
  1. patchright/__init__.py +5 -0
  2. patchright/__main__.py +18 -0
  3. patchright/_impl/__init__.py +0 -0
  4. patchright/_impl/__pyinstaller/__init__.py +20 -0
  5. patchright/_impl/__pyinstaller/hook-playwright.async_api.py +3 -0
  6. patchright/_impl/__pyinstaller/hook-playwright.sync_api.py +3 -0
  7. patchright/_impl/_accessibility.py +50 -0
  8. patchright/_impl/_api_structures.py +277 -0
  9. patchright/_impl/_artifact.py +45 -0
  10. patchright/_impl/_assertions.py +867 -0
  11. patchright/_impl/_async_base.py +92 -0
  12. patchright/_impl/_browser.py +248 -0
  13. patchright/_impl/_browser_context.py +743 -0
  14. patchright/_impl/_browser_type.py +276 -0
  15. patchright/_impl/_cdp_session.py +21 -0
  16. patchright/_impl/_clock.py +57 -0
  17. patchright/_impl/_connection.py +562 -0
  18. patchright/_impl/_console_message.py +45 -0
  19. patchright/_impl/_dialog.py +40 -0
  20. patchright/_impl/_download.py +50 -0
  21. patchright/_impl/_driver.py +24 -0
  22. patchright/_impl/_element_handle.py +376 -0
  23. patchright/_impl/_errors.py +44 -0
  24. patchright/_impl/_event_context_manager.py +20 -0
  25. patchright/_impl/_fetch.py +518 -0
  26. patchright/_impl/_file_chooser.py +43 -0
  27. patchright/_impl/_frame.py +779 -0
  28. patchright/_impl/_glob.py +46 -0
  29. patchright/_impl/_greenlets.py +39 -0
  30. patchright/_impl/_har_router.py +99 -0
  31. patchright/_impl/_helper.py +481 -0
  32. patchright/_impl/_impl_to_api_mapping.py +123 -0
  33. patchright/_impl/_input.py +71 -0
  34. patchright/_impl/_js_handle.py +300 -0
  35. patchright/_impl/_json_pipe.py +56 -0
  36. patchright/_impl/_local_utils.py +73 -0
  37. patchright/_impl/_locator.py +814 -0
  38. patchright/_impl/_map.py +19 -0
  39. patchright/_impl/_network.py +958 -0
  40. patchright/_impl/_object_factory.py +91 -0
  41. patchright/_impl/_page.py +1485 -0
  42. patchright/_impl/_path_utils.py +11 -0
  43. patchright/_impl/_playwright.py +51 -0
  44. patchright/_impl/_selectors.py +62 -0
  45. patchright/_impl/_set_input_files_helpers.py +135 -0
  46. patchright/_impl/_str_utils.py +57 -0
  47. patchright/_impl/_stream.py +32 -0
  48. patchright/_impl/_sync_base.py +134 -0
  49. patchright/_impl/_tracing.py +110 -0
  50. patchright/_impl/_transport.py +150 -0
  51. patchright/_impl/_video.py +57 -0
  52. patchright/_impl/_waiter.py +142 -0
  53. patchright/_impl/_web_error.py +27 -0
  54. patchright/_impl/_writable_stream.py +27 -0
  55. patchright/_repo_version.py +1 -0
  56. patchright/async_api/__init__.py +179 -0
  57. patchright/async_api/_context_manager.py +39 -0
  58. patchright/async_api/_generated.py +20416 -0
  59. patchright/driver/README.md +1 -0
  60. patchright/driver/package/README.md +3 -0
  61. patchright/driver/package/ThirdPartyNotices.txt +1560 -0
  62. patchright/driver/package/bin/install_media_pack.ps1 +5 -0
  63. patchright/driver/package/bin/reinstall_chrome_beta_linux.sh +42 -0
  64. patchright/driver/package/bin/reinstall_chrome_beta_mac.sh +13 -0
  65. patchright/driver/package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  66. patchright/driver/package/bin/reinstall_chrome_stable_linux.sh +42 -0
  67. patchright/driver/package/bin/reinstall_chrome_stable_mac.sh +12 -0
  68. patchright/driver/package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  69. patchright/driver/package/bin/reinstall_msedge_beta_linux.sh +48 -0
  70. patchright/driver/package/bin/reinstall_msedge_beta_mac.sh +11 -0
  71. patchright/driver/package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  72. patchright/driver/package/bin/reinstall_msedge_dev_linux.sh +48 -0
  73. patchright/driver/package/bin/reinstall_msedge_dev_mac.sh +11 -0
  74. patchright/driver/package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  75. patchright/driver/package/bin/reinstall_msedge_stable_linux.sh +48 -0
  76. patchright/driver/package/bin/reinstall_msedge_stable_mac.sh +11 -0
  77. patchright/driver/package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  78. patchright/driver/package/browsers.json +80 -0
  79. patchright/driver/package/cli.js +18 -0
  80. patchright/driver/package/index.js +32 -0
  81. patchright/driver/package/index.mjs +28 -0
  82. patchright/driver/package/lib/androidServerImpl.js +63 -0
  83. patchright/driver/package/lib/browserServerImpl.js +88 -0
  84. patchright/driver/package/lib/cli/driver.js +97 -0
  85. patchright/driver/package/lib/cli/program.js +567 -0
  86. patchright/driver/package/lib/cli/programWithTestStub.js +74 -0
  87. patchright/driver/package/lib/client/accessibility.js +49 -0
  88. patchright/driver/package/lib/client/android.js +365 -0
  89. patchright/driver/package/lib/client/api.js +137 -0
  90. patchright/driver/package/lib/client/artifact.js +79 -0
  91. patchright/driver/package/lib/client/browser.js +136 -0
  92. patchright/driver/package/lib/client/browserContext.js +539 -0
  93. patchright/driver/package/lib/client/browserType.js +193 -0
  94. patchright/driver/package/lib/client/cdpSession.js +51 -0
  95. patchright/driver/package/lib/client/channelOwner.js +205 -0
  96. patchright/driver/package/lib/client/clientHelper.js +64 -0
  97. patchright/driver/package/lib/client/clientInstrumentation.js +55 -0
  98. patchright/driver/package/lib/client/clientStackTrace.js +69 -0
  99. patchright/driver/package/lib/client/clock.js +68 -0
  100. patchright/driver/package/lib/client/connection.js +318 -0
  101. patchright/driver/package/lib/client/consoleMessage.js +55 -0
  102. patchright/driver/package/lib/client/coverage.js +44 -0
  103. patchright/driver/package/lib/client/dialog.js +56 -0
  104. patchright/driver/package/lib/client/download.js +62 -0
  105. patchright/driver/package/lib/client/electron.js +133 -0
  106. patchright/driver/package/lib/client/elementHandle.js +284 -0
  107. patchright/driver/package/lib/client/errors.js +77 -0
  108. patchright/driver/package/lib/client/eventEmitter.js +314 -0
  109. patchright/driver/package/lib/client/events.js +98 -0
  110. patchright/driver/package/lib/client/fetch.js +367 -0
  111. patchright/driver/package/lib/client/fileChooser.js +46 -0
  112. patchright/driver/package/lib/client/fileUtils.js +34 -0
  113. patchright/driver/package/lib/client/frame.js +386 -0
  114. patchright/driver/package/lib/client/harRouter.js +87 -0
  115. patchright/driver/package/lib/client/input.js +82 -0
  116. patchright/driver/package/lib/client/jsHandle.js +105 -0
  117. patchright/driver/package/lib/client/jsonPipe.js +39 -0
  118. patchright/driver/package/lib/client/localUtils.js +61 -0
  119. patchright/driver/package/lib/client/locator.js +362 -0
  120. patchright/driver/package/lib/client/network.js +751 -0
  121. patchright/driver/package/lib/client/page.js +709 -0
  122. patchright/driver/package/lib/client/platform.js +74 -0
  123. patchright/driver/package/lib/client/playwright.js +85 -0
  124. patchright/driver/package/lib/client/selectors.js +75 -0
  125. patchright/driver/package/lib/client/stream.js +39 -0
  126. patchright/driver/package/lib/client/timeoutSettings.js +75 -0
  127. patchright/driver/package/lib/client/tracing.js +114 -0
  128. patchright/driver/package/lib/client/types.js +28 -0
  129. patchright/driver/package/lib/client/video.js +59 -0
  130. patchright/driver/package/lib/client/waiter.js +142 -0
  131. patchright/driver/package/lib/client/webError.js +39 -0
  132. patchright/driver/package/lib/client/webSocket.js +111 -0
  133. patchright/driver/package/lib/client/worker.js +63 -0
  134. patchright/driver/package/lib/client/writableStream.js +39 -0
  135. patchright/driver/package/lib/generated/clockSource.js +28 -0
  136. patchright/driver/package/lib/generated/consoleApiSource.js +28 -0
  137. patchright/driver/package/lib/generated/injectedScriptSource.js +28 -0
  138. patchright/driver/package/lib/generated/pollingRecorderSource.js +28 -0
  139. patchright/driver/package/lib/generated/utilityScriptSource.js +28 -0
  140. patchright/driver/package/lib/generated/webSocketMockSource.js +374 -0
  141. patchright/driver/package/lib/inProcessFactory.js +59 -0
  142. patchright/driver/package/lib/inprocess.js +3 -0
  143. patchright/driver/package/lib/outofprocess.js +78 -0
  144. patchright/driver/package/lib/protocol/debug.js +211 -0
  145. patchright/driver/package/lib/protocol/serializers.js +192 -0
  146. patchright/driver/package/lib/protocol/validator.js +2832 -0
  147. patchright/driver/package/lib/protocol/validatorPrimitives.js +179 -0
  148. patchright/driver/package/lib/remote/playwrightConnection.js +266 -0
  149. patchright/driver/package/lib/remote/playwrightServer.js +139 -0
  150. patchright/driver/package/lib/server/accessibility.js +69 -0
  151. patchright/driver/package/lib/server/android/android.js +451 -0
  152. patchright/driver/package/lib/server/android/backendAdb.js +179 -0
  153. patchright/driver/package/lib/server/artifact.js +127 -0
  154. patchright/driver/package/lib/server/bidi/bidiBrowser.js +380 -0
  155. patchright/driver/package/lib/server/bidi/bidiChromium.js +152 -0
  156. patchright/driver/package/lib/server/bidi/bidiConnection.js +187 -0
  157. patchright/driver/package/lib/server/bidi/bidiExecutionContext.js +220 -0
  158. patchright/driver/package/lib/server/bidi/bidiFirefox.js +112 -0
  159. patchright/driver/package/lib/server/bidi/bidiInput.js +146 -0
  160. patchright/driver/package/lib/server/bidi/bidiNetworkManager.js +320 -0
  161. patchright/driver/package/lib/server/bidi/bidiOverCdp.js +102 -0
  162. patchright/driver/package/lib/server/bidi/bidiPage.js +530 -0
  163. patchright/driver/package/lib/server/bidi/bidiPdf.js +106 -0
  164. patchright/driver/package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  165. patchright/driver/package/lib/server/bidi/third_party/bidiDeserializer.js +98 -0
  166. patchright/driver/package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  167. patchright/driver/package/lib/server/bidi/third_party/bidiProtocol.js +152 -0
  168. patchright/driver/package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  169. patchright/driver/package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  170. patchright/driver/package/lib/server/browser.js +140 -0
  171. patchright/driver/package/lib/server/browserContext.js +646 -0
  172. patchright/driver/package/lib/server/browserType.js +326 -0
  173. patchright/driver/package/lib/server/callLog.js +82 -0
  174. patchright/driver/package/lib/server/chromium/appIcon.png +0 -0
  175. patchright/driver/package/lib/server/chromium/chromium.js +376 -0
  176. patchright/driver/package/lib/server/chromium/chromiumSwitches.js +89 -0
  177. patchright/driver/package/lib/server/chromium/crAccessibility.js +263 -0
  178. patchright/driver/package/lib/server/chromium/crBrowser.js +503 -0
  179. patchright/driver/package/lib/server/chromium/crConnection.js +203 -0
  180. patchright/driver/package/lib/server/chromium/crCoverage.js +232 -0
  181. patchright/driver/package/lib/server/chromium/crDevTools.js +112 -0
  182. patchright/driver/package/lib/server/chromium/crDragDrop.js +126 -0
  183. patchright/driver/package/lib/server/chromium/crExecutionContext.js +145 -0
  184. patchright/driver/package/lib/server/chromium/crInput.js +184 -0
  185. patchright/driver/package/lib/server/chromium/crNetworkManager.js +742 -0
  186. patchright/driver/package/lib/server/chromium/crPage.js +1134 -0
  187. patchright/driver/package/lib/server/chromium/crPdf.js +121 -0
  188. patchright/driver/package/lib/server/chromium/crProtocolHelper.js +145 -0
  189. patchright/driver/package/lib/server/chromium/crServiceWorker.js +126 -0
  190. patchright/driver/package/lib/server/chromium/defaultFontFamilies.js +162 -0
  191. patchright/driver/package/lib/server/chromium/protocol.d.js +16 -0
  192. patchright/driver/package/lib/server/chromium/videoRecorder.js +121 -0
  193. patchright/driver/package/lib/server/clock.js +145 -0
  194. patchright/driver/package/lib/server/codegen/csharp.js +329 -0
  195. patchright/driver/package/lib/server/codegen/java.js +270 -0
  196. patchright/driver/package/lib/server/codegen/javascript.js +268 -0
  197. patchright/driver/package/lib/server/codegen/jsonl.js +51 -0
  198. patchright/driver/package/lib/server/codegen/language.js +111 -0
  199. patchright/driver/package/lib/server/codegen/languages.js +68 -0
  200. patchright/driver/package/lib/server/codegen/python.js +277 -0
  201. patchright/driver/package/lib/server/codegen/types.js +16 -0
  202. patchright/driver/package/lib/server/console.js +53 -0
  203. patchright/driver/package/lib/server/cookieStore.js +204 -0
  204. patchright/driver/package/lib/server/debugController.js +185 -0
  205. patchright/driver/package/lib/server/debugger.js +136 -0
  206. patchright/driver/package/lib/server/deviceDescriptors.js +39 -0
  207. patchright/driver/package/lib/server/deviceDescriptorsSource.json +1669 -0
  208. patchright/driver/package/lib/server/dialog.js +72 -0
  209. patchright/driver/package/lib/server/dispatchers/androidDispatcher.js +293 -0
  210. patchright/driver/package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  211. patchright/driver/package/lib/server/dispatchers/browserContextDispatcher.js +328 -0
  212. patchright/driver/package/lib/server/dispatchers/browserDispatcher.js +151 -0
  213. patchright/driver/package/lib/server/dispatchers/browserTypeDispatcher.js +55 -0
  214. patchright/driver/package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  215. patchright/driver/package/lib/server/dispatchers/debugControllerDispatcher.js +87 -0
  216. patchright/driver/package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  217. patchright/driver/package/lib/server/dispatchers/dispatcher.js +346 -0
  218. patchright/driver/package/lib/server/dispatchers/electronDispatcher.js +90 -0
  219. patchright/driver/package/lib/server/dispatchers/elementHandlerDispatcher.js +191 -0
  220. patchright/driver/package/lib/server/dispatchers/frameDispatcher.js +230 -0
  221. patchright/driver/package/lib/server/dispatchers/jsHandleDispatcher.js +80 -0
  222. patchright/driver/package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  223. patchright/driver/package/lib/server/dispatchers/localUtilsDispatcher.js +155 -0
  224. patchright/driver/package/lib/server/dispatchers/networkDispatchers.js +204 -0
  225. patchright/driver/package/lib/server/dispatchers/pageDispatcher.js +328 -0
  226. patchright/driver/package/lib/server/dispatchers/playwrightDispatcher.js +100 -0
  227. patchright/driver/package/lib/server/dispatchers/selectorsDispatcher.js +40 -0
  228. patchright/driver/package/lib/server/dispatchers/streamDispatcher.js +60 -0
  229. patchright/driver/package/lib/server/dispatchers/tracingDispatcher.js +59 -0
  230. patchright/driver/package/lib/server/dispatchers/webSocketRouteDispatcher.js +154 -0
  231. patchright/driver/package/lib/server/dispatchers/writableStreamDispatcher.js +73 -0
  232. patchright/driver/package/lib/server/dom.js +869 -0
  233. patchright/driver/package/lib/server/download.js +70 -0
  234. patchright/driver/package/lib/server/electron/electron.js +277 -0
  235. patchright/driver/package/lib/server/electron/loader.js +29 -0
  236. patchright/driver/package/lib/server/errors.js +69 -0
  237. patchright/driver/package/lib/server/fetch.js +640 -0
  238. patchright/driver/package/lib/server/fileChooser.js +43 -0
  239. patchright/driver/package/lib/server/fileUploadUtils.js +84 -0
  240. patchright/driver/package/lib/server/firefox/ffAccessibility.js +238 -0
  241. patchright/driver/package/lib/server/firefox/ffBrowser.js +404 -0
  242. patchright/driver/package/lib/server/firefox/ffConnection.js +147 -0
  243. patchright/driver/package/lib/server/firefox/ffExecutionContext.js +149 -0
  244. patchright/driver/package/lib/server/firefox/ffInput.js +159 -0
  245. patchright/driver/package/lib/server/firefox/ffNetworkManager.js +254 -0
  246. patchright/driver/package/lib/server/firefox/ffPage.js +501 -0
  247. patchright/driver/package/lib/server/firefox/firefox.js +106 -0
  248. patchright/driver/package/lib/server/firefox/protocol.d.js +16 -0
  249. patchright/driver/package/lib/server/formData.js +147 -0
  250. patchright/driver/package/lib/server/frameSelectors.js +274 -0
  251. patchright/driver/package/lib/server/frames.js +1834 -0
  252. patchright/driver/package/lib/server/har/harRecorder.js +147 -0
  253. patchright/driver/package/lib/server/har/harTracer.js +606 -0
  254. patchright/driver/package/lib/server/harBackend.js +157 -0
  255. patchright/driver/package/lib/server/helper.js +100 -0
  256. patchright/driver/package/lib/server/index.js +61 -0
  257. patchright/driver/package/lib/server/input.js +280 -0
  258. patchright/driver/package/lib/server/instrumentation.js +75 -0
  259. patchright/driver/package/lib/server/javascript.js +315 -0
  260. patchright/driver/package/lib/server/launchApp.js +110 -0
  261. patchright/driver/package/lib/server/localUtils.js +211 -0
  262. patchright/driver/package/lib/server/macEditingCommands.js +143 -0
  263. patchright/driver/package/lib/server/network.js +583 -0
  264. patchright/driver/package/lib/server/page.js +775 -0
  265. patchright/driver/package/lib/server/pageBinding.js +88 -0
  266. patchright/driver/package/lib/server/pipeTransport.js +89 -0
  267. patchright/driver/package/lib/server/playwright.js +81 -0
  268. patchright/driver/package/lib/server/progress.js +104 -0
  269. patchright/driver/package/lib/server/protocolError.js +52 -0
  270. patchright/driver/package/lib/server/recorder/chat.js +161 -0
  271. patchright/driver/package/lib/server/recorder/contextRecorder.js +286 -0
  272. patchright/driver/package/lib/server/recorder/recorderApp.js +184 -0
  273. patchright/driver/package/lib/server/recorder/recorderCollection.js +116 -0
  274. patchright/driver/package/lib/server/recorder/recorderFrontend.js +16 -0
  275. patchright/driver/package/lib/server/recorder/recorderRunner.js +135 -0
  276. patchright/driver/package/lib/server/recorder/recorderUtils.js +100 -0
  277. patchright/driver/package/lib/server/recorder/throttledFile.js +57 -0
  278. patchright/driver/package/lib/server/recorder.js +360 -0
  279. patchright/driver/package/lib/server/registry/browserFetcher.js +175 -0
  280. patchright/driver/package/lib/server/registry/dependencies.js +371 -0
  281. patchright/driver/package/lib/server/registry/index.js +1271 -0
  282. patchright/driver/package/lib/server/registry/nativeDeps.js +1105 -0
  283. patchright/driver/package/lib/server/registry/oopDownloadBrowserMain.js +120 -0
  284. patchright/driver/package/lib/server/screenshotter.js +332 -0
  285. patchright/driver/package/lib/server/selectors.js +112 -0
  286. patchright/driver/package/lib/server/socksClientCertificatesInterceptor.js +321 -0
  287. patchright/driver/package/lib/server/socksInterceptor.js +95 -0
  288. patchright/driver/package/lib/server/storageScript.js +154 -0
  289. patchright/driver/package/lib/server/timeoutSettings.js +89 -0
  290. patchright/driver/package/lib/server/trace/recorder/snapshotter.js +143 -0
  291. patchright/driver/package/lib/server/trace/recorder/snapshotterInjected.js +539 -0
  292. patchright/driver/package/lib/server/trace/recorder/tracing.js +593 -0
  293. patchright/driver/package/lib/server/trace/test/inMemorySnapshotter.js +87 -0
  294. patchright/driver/package/lib/server/trace/viewer/traceViewer.js +249 -0
  295. patchright/driver/package/lib/server/transport.js +183 -0
  296. patchright/driver/package/lib/server/types.js +28 -0
  297. patchright/driver/package/lib/server/usKeyboardLayout.js +145 -0
  298. patchright/driver/package/lib/server/utils/ascii.js +44 -0
  299. patchright/driver/package/lib/server/utils/comparators.js +161 -0
  300. patchright/driver/package/lib/server/utils/crypto.js +216 -0
  301. patchright/driver/package/lib/server/utils/debug.js +47 -0
  302. patchright/driver/package/lib/server/utils/debugLogger.js +114 -0
  303. patchright/driver/package/lib/server/utils/env.js +68 -0
  304. patchright/driver/package/lib/server/utils/eventsHelper.js +39 -0
  305. patchright/driver/package/lib/server/utils/expectUtils.js +38 -0
  306. patchright/driver/package/lib/server/utils/fileUtils.js +191 -0
  307. patchright/driver/package/lib/server/utils/happyEyeballs.js +207 -0
  308. patchright/driver/package/lib/server/utils/hostPlatform.js +109 -0
  309. patchright/driver/package/lib/server/utils/httpServer.js +218 -0
  310. patchright/driver/package/lib/server/utils/image_tools/colorUtils.js +89 -0
  311. patchright/driver/package/lib/server/utils/image_tools/compare.js +109 -0
  312. patchright/driver/package/lib/server/utils/image_tools/imageChannel.js +78 -0
  313. patchright/driver/package/lib/server/utils/image_tools/stats.js +102 -0
  314. patchright/driver/package/lib/server/utils/linuxUtils.js +71 -0
  315. patchright/driver/package/lib/server/utils/network.js +217 -0
  316. patchright/driver/package/lib/server/utils/nodePlatform.js +148 -0
  317. patchright/driver/package/lib/server/utils/pipeTransport.js +84 -0
  318. patchright/driver/package/lib/server/utils/processLauncher.js +238 -0
  319. patchright/driver/package/lib/server/utils/profiler.js +65 -0
  320. patchright/driver/package/lib/server/utils/socksProxy.js +511 -0
  321. patchright/driver/package/lib/server/utils/spawnAsync.js +41 -0
  322. patchright/driver/package/lib/server/utils/task.js +51 -0
  323. patchright/driver/package/lib/server/utils/userAgent.js +98 -0
  324. patchright/driver/package/lib/server/utils/wsServer.js +132 -0
  325. patchright/driver/package/lib/server/utils/zipFile.js +74 -0
  326. patchright/driver/package/lib/server/utils/zones.js +57 -0
  327. patchright/driver/package/lib/server/webkit/protocol.d.js +16 -0
  328. patchright/driver/package/lib/server/webkit/webkit.js +100 -0
  329. patchright/driver/package/lib/server/webkit/wkAccessibility.js +237 -0
  330. patchright/driver/package/lib/server/webkit/wkBrowser.js +312 -0
  331. patchright/driver/package/lib/server/webkit/wkConnection.js +149 -0
  332. patchright/driver/package/lib/server/webkit/wkExecutionContext.js +153 -0
  333. patchright/driver/package/lib/server/webkit/wkInput.js +181 -0
  334. patchright/driver/package/lib/server/webkit/wkInterceptableRequest.js +169 -0
  335. patchright/driver/package/lib/server/webkit/wkPage.js +1114 -0
  336. patchright/driver/package/lib/server/webkit/wkProvisionalPage.js +83 -0
  337. patchright/driver/package/lib/server/webkit/wkWorkers.js +104 -0
  338. patchright/driver/package/lib/third_party/pixelmatch.js +255 -0
  339. patchright/driver/package/lib/utils/isomorphic/ariaSnapshot.js +384 -0
  340. patchright/driver/package/lib/utils/isomorphic/assert.js +31 -0
  341. patchright/driver/package/lib/utils/isomorphic/builtins.js +86 -0
  342. patchright/driver/package/lib/utils/isomorphic/colors.js +72 -0
  343. patchright/driver/package/lib/utils/isomorphic/cssParser.js +246 -0
  344. patchright/driver/package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  345. patchright/driver/package/lib/utils/isomorphic/headers.js +53 -0
  346. patchright/driver/package/lib/utils/isomorphic/locatorGenerators.js +655 -0
  347. patchright/driver/package/lib/utils/isomorphic/locatorParser.js +176 -0
  348. patchright/driver/package/lib/utils/isomorphic/locatorUtils.js +81 -0
  349. patchright/driver/package/lib/utils/isomorphic/manualPromise.js +115 -0
  350. patchright/driver/package/lib/utils/isomorphic/mimeType.js +460 -0
  351. patchright/driver/package/lib/utils/isomorphic/multimap.js +81 -0
  352. patchright/driver/package/lib/utils/isomorphic/rtti.js +43 -0
  353. patchright/driver/package/lib/utils/isomorphic/selectorParser.js +387 -0
  354. patchright/driver/package/lib/utils/isomorphic/semaphore.js +54 -0
  355. patchright/driver/package/lib/utils/isomorphic/stackTrace.js +158 -0
  356. patchright/driver/package/lib/utils/isomorphic/stringUtils.js +176 -0
  357. patchright/driver/package/lib/utils/isomorphic/time.js +44 -0
  358. patchright/driver/package/lib/utils/isomorphic/timeoutRunner.js +67 -0
  359. patchright/driver/package/lib/utils/isomorphic/traceUtils.js +59 -0
  360. patchright/driver/package/lib/utils/isomorphic/types.js +16 -0
  361. patchright/driver/package/lib/utils/isomorphic/urlMatch.js +167 -0
  362. patchright/driver/package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  363. patchright/driver/package/lib/utils.js +101 -0
  364. patchright/driver/package/lib/utilsBundle.js +106 -0
  365. patchright/driver/package/lib/utilsBundleImpl/index.js +208 -0
  366. patchright/driver/package/lib/utilsBundleImpl/xdg-open +1066 -0
  367. patchright/driver/package/lib/zipBundle.js +34 -0
  368. patchright/driver/package/lib/zipBundleImpl.js +5 -0
  369. patchright/driver/package/package.json +44 -0
  370. patchright/driver/package/protocol.yml +3313 -0
  371. patchright/py.typed +0 -0
  372. patchright/sync_api/__init__.py +179 -0
  373. patchright/sync_api/_context_manager.py +74 -0
  374. patchright/sync_api/_generated.py +20632 -0
  375. pure_patchright-1.52.5.dist-info/LICENSE +201 -0
  376. pure_patchright-1.52.5.dist-info/METADATA +96 -0
  377. pure_patchright-1.52.5.dist-info/RECORD +381 -0
  378. pure_patchright-1.52.5.dist-info/WHEEL +4 -0
  379. pure_patchright-1.52.5.dist-info/entry_points.txt +5 -0
  380. pure_patchright-1.52.5.dist-info/licenses/LICENSE +202 -0
  381. pure_patchright-1.52.5.dist-info/top_level.txt +1 -0
@@ -0,0 +1,867 @@
1
+ import collections.abc
2
+ from typing import Any, List, Optional, Pattern, Sequence, Union
3
+ from urllib.parse import urljoin
4
+ from patchright._impl._api_structures import (
5
+ AriaRole,
6
+ ExpectedTextValue,
7
+ FrameExpectOptions,
8
+ )
9
+ from patchright._impl._connection import format_call_log
10
+ from patchright._impl._errors import Error
11
+ from patchright._impl._fetch import APIResponse
12
+ from patchright._impl._helper import is_textual_mime_type
13
+ from patchright._impl._locator import Locator
14
+ from patchright._impl._page import Page
15
+ from patchright._impl._str_utils import escape_regex_flags
16
+
17
+
18
+ class AssertionsBase:
19
+
20
+ def __init__(
21
+ self,
22
+ locator: Locator,
23
+ timeout: float = None,
24
+ is_not: bool = False,
25
+ message: Optional[str] = None,
26
+ ) -> None:
27
+ self._actual_locator = locator
28
+ self._loop = locator._loop
29
+ self._dispatcher_fiber = locator._dispatcher_fiber
30
+ self._timeout = timeout
31
+ self._is_not = is_not
32
+ self._custom_message = message
33
+
34
+ async def _expect_impl(
35
+ self,
36
+ expression: str,
37
+ expect_options: FrameExpectOptions,
38
+ expected: Any,
39
+ message: str,
40
+ ) -> None:
41
+ __tracebackhide__ = True
42
+ expect_options["isNot"] = self._is_not
43
+ if expect_options.get("timeout") is None:
44
+ expect_options["timeout"] = self._timeout or 5000
45
+ if expect_options["isNot"]:
46
+ message = message.replace("expected to", "expected not to")
47
+ if "useInnerText" in expect_options and expect_options["useInnerText"] is None:
48
+ del expect_options["useInnerText"]
49
+ result = await self._actual_locator._expect(expression, expect_options)
50
+ if result["matches"] == self._is_not:
51
+ actual = result.get("received")
52
+ if self._custom_message:
53
+ out_message = self._custom_message
54
+ if expected is not None:
55
+ out_message += f"\nExpected value: '{expected or '<None>'}'"
56
+ else:
57
+ out_message = (
58
+ f"{message} '{expected}'" if expected is not None else f"{message}"
59
+ )
60
+ raise AssertionError(
61
+ f"{out_message}\nActual value: {actual} {format_call_log(result.get('log'))}"
62
+ )
63
+
64
+
65
+ class PageAssertions(AssertionsBase):
66
+
67
+ def __init__(
68
+ self,
69
+ page: Page,
70
+ timeout: float = None,
71
+ is_not: bool = False,
72
+ message: Optional[str] = None,
73
+ ) -> None:
74
+ super().__init__(page.locator(":root"), timeout, is_not, message)
75
+ self._actual_page = page
76
+
77
+ @property
78
+ def _not(self) -> "PageAssertions":
79
+ return PageAssertions(
80
+ self._actual_page, self._timeout, not self._is_not, self._custom_message
81
+ )
82
+
83
+ async def to_have_title(
84
+ self, titleOrRegExp: Union[Pattern[str], str], timeout: float = None
85
+ ) -> None:
86
+ __tracebackhide__ = True
87
+ expected_values = to_expected_text_values(
88
+ [titleOrRegExp], normalize_white_space=True
89
+ )
90
+ await self._expect_impl(
91
+ "to.have.title",
92
+ FrameExpectOptions(expectedText=expected_values, timeout=timeout),
93
+ titleOrRegExp,
94
+ "Page title expected to be",
95
+ )
96
+
97
+ async def not_to_have_title(
98
+ self, titleOrRegExp: Union[Pattern[str], str], timeout: float = None
99
+ ) -> None:
100
+ __tracebackhide__ = True
101
+ await self._not.to_have_title(titleOrRegExp, timeout)
102
+
103
+ async def to_have_url(
104
+ self,
105
+ urlOrRegExp: Union[str, Pattern[str]],
106
+ timeout: float = None,
107
+ ignoreCase: bool = None,
108
+ ) -> None:
109
+ __tracebackhide__ = True
110
+ base_url = self._actual_page.context._options.get("baseURL")
111
+ if isinstance(urlOrRegExp, str) and base_url:
112
+ urlOrRegExp = urljoin(base_url, urlOrRegExp)
113
+ expected_text = to_expected_text_values([urlOrRegExp], ignoreCase=ignoreCase)
114
+ await self._expect_impl(
115
+ "to.have.url",
116
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
117
+ urlOrRegExp,
118
+ "Page URL expected to be",
119
+ )
120
+
121
+ async def not_to_have_url(
122
+ self,
123
+ urlOrRegExp: Union[Pattern[str], str],
124
+ timeout: float = None,
125
+ ignoreCase: bool = None,
126
+ ) -> None:
127
+ __tracebackhide__ = True
128
+ await self._not.to_have_url(urlOrRegExp, timeout, ignoreCase)
129
+
130
+
131
+ class LocatorAssertions(AssertionsBase):
132
+
133
+ def __init__(
134
+ self,
135
+ locator: Locator,
136
+ timeout: float = None,
137
+ is_not: bool = False,
138
+ message: Optional[str] = None,
139
+ ) -> None:
140
+ super().__init__(locator, timeout, is_not, message)
141
+ self._actual_locator = locator
142
+
143
+ @property
144
+ def _not(self) -> "LocatorAssertions":
145
+ return LocatorAssertions(
146
+ self._actual_locator, self._timeout, not self._is_not, self._custom_message
147
+ )
148
+
149
+ async def to_contain_text(
150
+ self,
151
+ expected: Union[
152
+ Sequence[str],
153
+ Sequence[Pattern[str]],
154
+ Sequence[Union[Pattern[str], str]],
155
+ Pattern[str],
156
+ str,
157
+ ],
158
+ useInnerText: bool = None,
159
+ timeout: float = None,
160
+ ignoreCase: bool = None,
161
+ ) -> None:
162
+ __tracebackhide__ = True
163
+ if isinstance(expected, collections.abc.Sequence) and (
164
+ not isinstance(expected, str)
165
+ ):
166
+ expected_text = to_expected_text_values(
167
+ expected,
168
+ match_substring=True,
169
+ normalize_white_space=True,
170
+ ignoreCase=ignoreCase,
171
+ )
172
+ await self._expect_impl(
173
+ "to.contain.text.array",
174
+ FrameExpectOptions(
175
+ expectedText=expected_text,
176
+ useInnerText=useInnerText,
177
+ timeout=timeout,
178
+ ),
179
+ expected,
180
+ "Locator expected to contain text",
181
+ )
182
+ else:
183
+ expected_text = to_expected_text_values(
184
+ [expected],
185
+ match_substring=True,
186
+ normalize_white_space=True,
187
+ ignoreCase=ignoreCase,
188
+ )
189
+ await self._expect_impl(
190
+ "to.have.text",
191
+ FrameExpectOptions(
192
+ expectedText=expected_text,
193
+ useInnerText=useInnerText,
194
+ timeout=timeout,
195
+ ),
196
+ expected,
197
+ "Locator expected to contain text",
198
+ )
199
+
200
+ async def not_to_contain_text(
201
+ self,
202
+ expected: Union[
203
+ Sequence[str],
204
+ Sequence[Pattern[str]],
205
+ Sequence[Union[Pattern[str], str]],
206
+ Pattern[str],
207
+ str,
208
+ ],
209
+ useInnerText: bool = None,
210
+ timeout: float = None,
211
+ ignoreCase: bool = None,
212
+ ) -> None:
213
+ __tracebackhide__ = True
214
+ await self._not.to_contain_text(expected, useInnerText, timeout, ignoreCase)
215
+
216
+ async def to_have_attribute(
217
+ self,
218
+ name: str,
219
+ value: Union[str, Pattern[str]],
220
+ ignoreCase: bool = None,
221
+ timeout: float = None,
222
+ ) -> None:
223
+ __tracebackhide__ = True
224
+ expected_text = to_expected_text_values([value], ignoreCase=ignoreCase)
225
+ await self._expect_impl(
226
+ "to.have.attribute.value",
227
+ FrameExpectOptions(
228
+ expressionArg=name, expectedText=expected_text, timeout=timeout
229
+ ),
230
+ value,
231
+ "Locator expected to have attribute",
232
+ )
233
+
234
+ async def not_to_have_attribute(
235
+ self,
236
+ name: str,
237
+ value: Union[str, Pattern[str]],
238
+ ignoreCase: bool = None,
239
+ timeout: float = None,
240
+ ) -> None:
241
+ __tracebackhide__ = True
242
+ await self._not.to_have_attribute(
243
+ name, value, ignoreCase=ignoreCase, timeout=timeout
244
+ )
245
+
246
+ async def to_have_class(
247
+ self,
248
+ expected: Union[
249
+ Sequence[str],
250
+ Sequence[Pattern[str]],
251
+ Sequence[Union[Pattern[str], str]],
252
+ Pattern[str],
253
+ str,
254
+ ],
255
+ timeout: float = None,
256
+ ) -> None:
257
+ __tracebackhide__ = True
258
+ if isinstance(expected, collections.abc.Sequence) and (
259
+ not isinstance(expected, str)
260
+ ):
261
+ expected_text = to_expected_text_values(expected)
262
+ await self._expect_impl(
263
+ "to.have.class.array",
264
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
265
+ expected,
266
+ "Locator expected to have class",
267
+ )
268
+ else:
269
+ expected_text = to_expected_text_values([expected])
270
+ await self._expect_impl(
271
+ "to.have.class",
272
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
273
+ expected,
274
+ "Locator expected to have class",
275
+ )
276
+
277
+ async def not_to_have_class(
278
+ self,
279
+ expected: Union[
280
+ Sequence[str],
281
+ Sequence[Pattern[str]],
282
+ Sequence[Union[Pattern[str], str]],
283
+ Pattern[str],
284
+ str,
285
+ ],
286
+ timeout: float = None,
287
+ ) -> None:
288
+ __tracebackhide__ = True
289
+ await self._not.to_have_class(expected, timeout)
290
+
291
+ async def to_contain_class(
292
+ self, expected: Union[Sequence[str], str], timeout: float = None
293
+ ) -> None:
294
+ __tracebackhide__ = True
295
+ if isinstance(expected, collections.abc.Sequence) and (
296
+ not isinstance(expected, str)
297
+ ):
298
+ expected_text = to_expected_text_values(expected)
299
+ await self._expect_impl(
300
+ "to.contain.class.array",
301
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
302
+ expected,
303
+ "Locator expected to contain class names",
304
+ )
305
+ else:
306
+ expected_text = to_expected_text_values([expected])
307
+ await self._expect_impl(
308
+ "to.contain.class",
309
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
310
+ expected,
311
+ "Locator expected to contain class",
312
+ )
313
+
314
+ async def not_to_contain_class(
315
+ self, expected: Union[Sequence[str], str], timeout: float = None
316
+ ) -> None:
317
+ __tracebackhide__ = True
318
+ await self._not.to_contain_class(expected, timeout)
319
+
320
+ async def to_have_count(self, count: int, timeout: float = None) -> None:
321
+ __tracebackhide__ = True
322
+ await self._expect_impl(
323
+ "to.have.count",
324
+ FrameExpectOptions(expectedNumber=count, timeout=timeout),
325
+ count,
326
+ "Locator expected to have count",
327
+ )
328
+
329
+ async def not_to_have_count(self, count: int, timeout: float = None) -> None:
330
+ __tracebackhide__ = True
331
+ await self._not.to_have_count(count, timeout)
332
+
333
+ async def to_have_css(
334
+ self, name: str, value: Union[str, Pattern[str]], timeout: float = None
335
+ ) -> None:
336
+ __tracebackhide__ = True
337
+ expected_text = to_expected_text_values([value])
338
+ await self._expect_impl(
339
+ "to.have.css",
340
+ FrameExpectOptions(
341
+ expressionArg=name, expectedText=expected_text, timeout=timeout
342
+ ),
343
+ value,
344
+ "Locator expected to have CSS",
345
+ )
346
+
347
+ async def not_to_have_css(
348
+ self, name: str, value: Union[str, Pattern[str]], timeout: float = None
349
+ ) -> None:
350
+ __tracebackhide__ = True
351
+ await self._not.to_have_css(name, value, timeout)
352
+
353
+ async def to_have_id(
354
+ self, id: Union[str, Pattern[str]], timeout: float = None
355
+ ) -> None:
356
+ __tracebackhide__ = True
357
+ expected_text = to_expected_text_values([id])
358
+ await self._expect_impl(
359
+ "to.have.id",
360
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
361
+ id,
362
+ "Locator expected to have ID",
363
+ )
364
+
365
+ async def not_to_have_id(
366
+ self, id: Union[str, Pattern[str]], timeout: float = None
367
+ ) -> None:
368
+ __tracebackhide__ = True
369
+ await self._not.to_have_id(id, timeout)
370
+
371
+ async def to_have_js_property(
372
+ self, name: str, value: Any, timeout: float = None
373
+ ) -> None:
374
+ __tracebackhide__ = True
375
+ await self._expect_impl(
376
+ "to.have.property",
377
+ FrameExpectOptions(
378
+ expressionArg=name, expectedValue=value, timeout=timeout
379
+ ),
380
+ value,
381
+ "Locator expected to have JS Property",
382
+ )
383
+
384
+ async def not_to_have_js_property(
385
+ self, name: str, value: Any, timeout: float = None
386
+ ) -> None:
387
+ __tracebackhide__ = True
388
+ await self._not.to_have_js_property(name, value, timeout)
389
+
390
+ async def to_have_value(
391
+ self, value: Union[str, Pattern[str]], timeout: float = None
392
+ ) -> None:
393
+ __tracebackhide__ = True
394
+ expected_text = to_expected_text_values([value])
395
+ await self._expect_impl(
396
+ "to.have.value",
397
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
398
+ value,
399
+ "Locator expected to have Value",
400
+ )
401
+
402
+ async def not_to_have_value(
403
+ self, value: Union[str, Pattern[str]], timeout: float = None
404
+ ) -> None:
405
+ __tracebackhide__ = True
406
+ await self._not.to_have_value(value, timeout)
407
+
408
+ async def to_have_values(
409
+ self,
410
+ values: Union[
411
+ Sequence[str], Sequence[Pattern[str]], Sequence[Union[Pattern[str], str]]
412
+ ],
413
+ timeout: float = None,
414
+ ) -> None:
415
+ __tracebackhide__ = True
416
+ expected_text = to_expected_text_values(values)
417
+ await self._expect_impl(
418
+ "to.have.values",
419
+ FrameExpectOptions(expectedText=expected_text, timeout=timeout),
420
+ values,
421
+ "Locator expected to have Values",
422
+ )
423
+
424
+ async def not_to_have_values(
425
+ self,
426
+ values: Union[
427
+ Sequence[str], Sequence[Pattern[str]], Sequence[Union[Pattern[str], str]]
428
+ ],
429
+ timeout: float = None,
430
+ ) -> None:
431
+ __tracebackhide__ = True
432
+ await self._not.to_have_values(values, timeout)
433
+
434
+ async def to_have_text(
435
+ self,
436
+ expected: Union[
437
+ Sequence[str],
438
+ Sequence[Pattern[str]],
439
+ Sequence[Union[Pattern[str], str]],
440
+ Pattern[str],
441
+ str,
442
+ ],
443
+ useInnerText: bool = None,
444
+ timeout: float = None,
445
+ ignoreCase: bool = None,
446
+ ) -> None:
447
+ __tracebackhide__ = True
448
+ if isinstance(expected, collections.abc.Sequence) and (
449
+ not isinstance(expected, str)
450
+ ):
451
+ expected_text = to_expected_text_values(
452
+ expected, normalize_white_space=True, ignoreCase=ignoreCase
453
+ )
454
+ await self._expect_impl(
455
+ "to.have.text.array",
456
+ FrameExpectOptions(
457
+ expectedText=expected_text,
458
+ useInnerText=useInnerText,
459
+ timeout=timeout,
460
+ ),
461
+ expected,
462
+ "Locator expected to have text",
463
+ )
464
+ else:
465
+ expected_text = to_expected_text_values(
466
+ [expected], normalize_white_space=True, ignoreCase=ignoreCase
467
+ )
468
+ await self._expect_impl(
469
+ "to.have.text",
470
+ FrameExpectOptions(
471
+ expectedText=expected_text,
472
+ useInnerText=useInnerText,
473
+ timeout=timeout,
474
+ ),
475
+ expected,
476
+ "Locator expected to have text",
477
+ )
478
+
479
+ async def not_to_have_text(
480
+ self,
481
+ expected: Union[
482
+ Sequence[str],
483
+ Sequence[Pattern[str]],
484
+ Sequence[Union[Pattern[str], str]],
485
+ Pattern[str],
486
+ str,
487
+ ],
488
+ useInnerText: bool = None,
489
+ timeout: float = None,
490
+ ignoreCase: bool = None,
491
+ ) -> None:
492
+ __tracebackhide__ = True
493
+ await self._not.to_have_text(expected, useInnerText, timeout, ignoreCase)
494
+
495
+ async def to_be_attached(
496
+ self, attached: bool = None, timeout: float = None
497
+ ) -> None:
498
+ __tracebackhide__ = True
499
+ if attached is None:
500
+ attached = True
501
+ attached_string = "attached" if attached else "detached"
502
+ await self._expect_impl(
503
+ "to.be.attached" if attached else "to.be.detached",
504
+ FrameExpectOptions(timeout=timeout),
505
+ None,
506
+ f"Locator expected to be {attached_string}",
507
+ )
508
+
509
+ async def to_be_checked(
510
+ self, timeout: float = None, checked: bool = None, indeterminate: bool = None
511
+ ) -> None:
512
+ __tracebackhide__ = True
513
+ expected_value = {}
514
+ if indeterminate is not None:
515
+ expected_value["indeterminate"] = indeterminate
516
+ if checked is not None:
517
+ expected_value["checked"] = checked
518
+ checked_string: str
519
+ if indeterminate:
520
+ checked_string = "indeterminate"
521
+ else:
522
+ checked_string = "unchecked" if checked is False else "checked"
523
+ await self._expect_impl(
524
+ "to.be.checked",
525
+ FrameExpectOptions(timeout=timeout, expectedValue=expected_value),
526
+ None,
527
+ f"Locator expected to be {checked_string}",
528
+ )
529
+
530
+ async def not_to_be_attached(
531
+ self, attached: bool = None, timeout: float = None
532
+ ) -> None:
533
+ __tracebackhide__ = True
534
+ await self._not.to_be_attached(attached=attached, timeout=timeout)
535
+
536
+ async def not_to_be_checked(self, timeout: float = None) -> None:
537
+ __tracebackhide__ = True
538
+ await self._not.to_be_checked(timeout)
539
+
540
+ async def to_be_disabled(self, timeout: float = None) -> None:
541
+ __tracebackhide__ = True
542
+ await self._expect_impl(
543
+ "to.be.disabled",
544
+ FrameExpectOptions(timeout=timeout),
545
+ None,
546
+ "Locator expected to be disabled",
547
+ )
548
+
549
+ async def not_to_be_disabled(self, timeout: float = None) -> None:
550
+ __tracebackhide__ = True
551
+ await self._not.to_be_disabled(timeout)
552
+
553
+ async def to_be_editable(
554
+ self, editable: bool = None, timeout: float = None
555
+ ) -> None:
556
+ __tracebackhide__ = True
557
+ if editable is None:
558
+ editable = True
559
+ editable_string = "editable" if editable else "readonly"
560
+ await self._expect_impl(
561
+ "to.be.editable" if editable else "to.be.readonly",
562
+ FrameExpectOptions(timeout=timeout),
563
+ None,
564
+ f"Locator expected to be {editable_string}",
565
+ )
566
+
567
+ async def not_to_be_editable(
568
+ self, editable: bool = None, timeout: float = None
569
+ ) -> None:
570
+ __tracebackhide__ = True
571
+ await self._not.to_be_editable(editable, timeout)
572
+
573
+ async def to_be_empty(self, timeout: float = None) -> None:
574
+ __tracebackhide__ = True
575
+ await self._expect_impl(
576
+ "to.be.empty",
577
+ FrameExpectOptions(timeout=timeout),
578
+ None,
579
+ "Locator expected to be empty",
580
+ )
581
+
582
+ async def not_to_be_empty(self, timeout: float = None) -> None:
583
+ __tracebackhide__ = True
584
+ await self._not.to_be_empty(timeout)
585
+
586
+ async def to_be_enabled(self, enabled: bool = None, timeout: float = None) -> None:
587
+ __tracebackhide__ = True
588
+ if enabled is None:
589
+ enabled = True
590
+ enabled_string = "enabled" if enabled else "disabled"
591
+ await self._expect_impl(
592
+ "to.be.enabled" if enabled else "to.be.disabled",
593
+ FrameExpectOptions(timeout=timeout),
594
+ None,
595
+ f"Locator expected to be {enabled_string}",
596
+ )
597
+
598
+ async def not_to_be_enabled(
599
+ self, enabled: bool = None, timeout: float = None
600
+ ) -> None:
601
+ __tracebackhide__ = True
602
+ await self._not.to_be_enabled(enabled, timeout)
603
+
604
+ async def to_be_hidden(self, timeout: float = None) -> None:
605
+ __tracebackhide__ = True
606
+ await self._expect_impl(
607
+ "to.be.hidden",
608
+ FrameExpectOptions(timeout=timeout),
609
+ None,
610
+ "Locator expected to be hidden",
611
+ )
612
+
613
+ async def not_to_be_hidden(self, timeout: float = None) -> None:
614
+ __tracebackhide__ = True
615
+ await self._not.to_be_hidden(timeout)
616
+
617
+ async def to_be_visible(self, visible: bool = None, timeout: float = None) -> None:
618
+ __tracebackhide__ = True
619
+ if visible is None:
620
+ visible = True
621
+ visible_string = "visible" if visible else "hidden"
622
+ await self._expect_impl(
623
+ "to.be.visible" if visible else "to.be.hidden",
624
+ FrameExpectOptions(timeout=timeout),
625
+ None,
626
+ f"Locator expected to be {visible_string}",
627
+ )
628
+
629
+ async def not_to_be_visible(
630
+ self, visible: bool = None, timeout: float = None
631
+ ) -> None:
632
+ __tracebackhide__ = True
633
+ await self._not.to_be_visible(visible, timeout)
634
+
635
+ async def to_be_focused(self, timeout: float = None) -> None:
636
+ __tracebackhide__ = True
637
+ await self._expect_impl(
638
+ "to.be.focused",
639
+ FrameExpectOptions(timeout=timeout),
640
+ None,
641
+ "Locator expected to be focused",
642
+ )
643
+
644
+ async def not_to_be_focused(self, timeout: float = None) -> None:
645
+ __tracebackhide__ = True
646
+ await self._not.to_be_focused(timeout)
647
+
648
+ async def to_be_in_viewport(
649
+ self, ratio: float = None, timeout: float = None
650
+ ) -> None:
651
+ __tracebackhide__ = True
652
+ await self._expect_impl(
653
+ "to.be.in.viewport",
654
+ FrameExpectOptions(timeout=timeout, expectedNumber=ratio),
655
+ None,
656
+ "Locator expected to be in viewport",
657
+ )
658
+
659
+ async def not_to_be_in_viewport(
660
+ self, ratio: float = None, timeout: float = None
661
+ ) -> None:
662
+ __tracebackhide__ = True
663
+ await self._not.to_be_in_viewport(ratio=ratio, timeout=timeout)
664
+
665
+ async def to_have_accessible_description(
666
+ self,
667
+ description: Union[str, Pattern[str]],
668
+ ignoreCase: bool = None,
669
+ timeout: float = None,
670
+ ) -> None:
671
+ __tracebackhide__ = True
672
+ expected_values = to_expected_text_values(
673
+ [description], ignoreCase=ignoreCase, normalize_white_space=True
674
+ )
675
+ await self._expect_impl(
676
+ "to.have.accessible.description",
677
+ FrameExpectOptions(expectedText=expected_values, timeout=timeout),
678
+ None,
679
+ "Locator expected to have accessible description",
680
+ )
681
+
682
+ async def not_to_have_accessible_description(
683
+ self,
684
+ name: Union[str, Pattern[str]],
685
+ ignoreCase: bool = None,
686
+ timeout: float = None,
687
+ ) -> None:
688
+ __tracebackhide__ = True
689
+ await self._not.to_have_accessible_description(name, ignoreCase, timeout)
690
+
691
+ async def to_have_accessible_name(
692
+ self,
693
+ name: Union[str, Pattern[str]],
694
+ ignoreCase: bool = None,
695
+ timeout: float = None,
696
+ ) -> None:
697
+ __tracebackhide__ = True
698
+ expected_values = to_expected_text_values(
699
+ [name], ignoreCase=ignoreCase, normalize_white_space=True
700
+ )
701
+ await self._expect_impl(
702
+ "to.have.accessible.name",
703
+ FrameExpectOptions(expectedText=expected_values, timeout=timeout),
704
+ None,
705
+ "Locator expected to have accessible name",
706
+ )
707
+
708
+ async def not_to_have_accessible_name(
709
+ self,
710
+ name: Union[str, Pattern[str]],
711
+ ignoreCase: bool = None,
712
+ timeout: float = None,
713
+ ) -> None:
714
+ __tracebackhide__ = True
715
+ await self._not.to_have_accessible_name(name, ignoreCase, timeout)
716
+
717
+ async def to_have_role(self, role: AriaRole, timeout: float = None) -> None:
718
+ __tracebackhide__ = True
719
+ if isinstance(role, Pattern):
720
+ raise Error('"role" argument in to_have_role must be a string')
721
+ expected_values = to_expected_text_values([role])
722
+ await self._expect_impl(
723
+ "to.have.role",
724
+ FrameExpectOptions(expectedText=expected_values, timeout=timeout),
725
+ None,
726
+ "Locator expected to have accessible role",
727
+ )
728
+
729
+ async def to_have_accessible_error_message(
730
+ self,
731
+ errorMessage: Union[str, Pattern[str]],
732
+ ignoreCase: bool = None,
733
+ timeout: float = None,
734
+ ) -> None:
735
+ __tracebackhide__ = True
736
+ expected_values = to_expected_text_values(
737
+ [errorMessage], ignoreCase=ignoreCase, normalize_white_space=True
738
+ )
739
+ await self._expect_impl(
740
+ "to.have.accessible.error.message",
741
+ FrameExpectOptions(expectedText=expected_values, timeout=timeout),
742
+ None,
743
+ "Locator expected to have accessible error message",
744
+ )
745
+
746
+ async def not_to_have_accessible_error_message(
747
+ self,
748
+ errorMessage: Union[str, Pattern[str]],
749
+ ignoreCase: bool = None,
750
+ timeout: float = None,
751
+ ) -> None:
752
+ __tracebackhide__ = True
753
+ await self._not.to_have_accessible_error_message(
754
+ errorMessage=errorMessage, ignoreCase=ignoreCase, timeout=timeout
755
+ )
756
+
757
+ async def not_to_have_role(self, role: AriaRole, timeout: float = None) -> None:
758
+ __tracebackhide__ = True
759
+ await self._not.to_have_role(role, timeout)
760
+
761
+ async def to_match_aria_snapshot(
762
+ self, expected: str, timeout: float = None
763
+ ) -> None:
764
+ __tracebackhide__ = True
765
+ await self._expect_impl(
766
+ "to.match.aria",
767
+ FrameExpectOptions(expectedValue=expected, timeout=timeout),
768
+ expected,
769
+ "Locator expected to match Aria snapshot",
770
+ )
771
+
772
+ async def not_to_match_aria_snapshot(
773
+ self, expected: str, timeout: float = None
774
+ ) -> None:
775
+ __tracebackhide__ = True
776
+ await self._not.to_match_aria_snapshot(expected, timeout)
777
+
778
+
779
+ class APIResponseAssertions:
780
+
781
+ def __init__(
782
+ self,
783
+ response: APIResponse,
784
+ timeout: float = None,
785
+ is_not: bool = False,
786
+ message: Optional[str] = None,
787
+ ) -> None:
788
+ self._loop = response._loop
789
+ self._dispatcher_fiber = response._dispatcher_fiber
790
+ self._timeout = timeout
791
+ self._is_not = is_not
792
+ self._actual = response
793
+ self._custom_message = message
794
+
795
+ @property
796
+ def _not(self) -> "APIResponseAssertions":
797
+ return APIResponseAssertions(
798
+ self._actual, self._timeout, not self._is_not, self._custom_message
799
+ )
800
+
801
+ async def to_be_ok(self) -> None:
802
+ __tracebackhide__ = True
803
+ if self._is_not is not self._actual.ok:
804
+ return
805
+ message = f"Response status expected to be within [200..299] range, was '{self._actual.status}'"
806
+ if self._is_not:
807
+ message = message.replace("expected to", "expected not to")
808
+ out_message = self._custom_message or message
809
+ out_message += format_call_log(await self._actual._fetch_log())
810
+ content_type = self._actual.headers.get("content-type")
811
+ is_text_encoding = content_type and is_textual_mime_type(content_type)
812
+ text = await self._actual.text() if is_text_encoding else None
813
+ if text is not None:
814
+ out_message += f"\n Response Text:\n{text[:1000]}"
815
+ raise AssertionError(out_message)
816
+
817
+ async def not_to_be_ok(self) -> None:
818
+ __tracebackhide__ = True
819
+ await self._not.to_be_ok()
820
+
821
+
822
+ def expected_regex(
823
+ pattern: Pattern[str],
824
+ match_substring: bool,
825
+ normalize_white_space: bool,
826
+ ignoreCase: Optional[bool] = None,
827
+ ) -> ExpectedTextValue:
828
+ expected = ExpectedTextValue(
829
+ regexSource=pattern.pattern,
830
+ regexFlags=escape_regex_flags(pattern),
831
+ matchSubstring=match_substring,
832
+ normalizeWhiteSpace=normalize_white_space,
833
+ ignoreCase=ignoreCase,
834
+ )
835
+ if expected["ignoreCase"] is None:
836
+ del expected["ignoreCase"]
837
+ return expected
838
+
839
+
840
+ def to_expected_text_values(
841
+ items: Union[
842
+ Sequence[Pattern[str]], Sequence[str], Sequence[Union[str, Pattern[str]]]
843
+ ],
844
+ match_substring: bool = False,
845
+ normalize_white_space: bool = False,
846
+ ignoreCase: Optional[bool] = None,
847
+ ) -> Sequence[ExpectedTextValue]:
848
+ out: List[ExpectedTextValue] = []
849
+ assert isinstance(items, (list, tuple))
850
+ for item in items:
851
+ if isinstance(item, str):
852
+ o = ExpectedTextValue(
853
+ string=item,
854
+ matchSubstring=match_substring,
855
+ normalizeWhiteSpace=normalize_white_space,
856
+ ignoreCase=ignoreCase,
857
+ )
858
+ if o["ignoreCase"] is None:
859
+ del o["ignoreCase"]
860
+ out.append(o)
861
+ elif isinstance(item, Pattern):
862
+ out.append(
863
+ expected_regex(item, match_substring, normalize_white_space, ignoreCase)
864
+ )
865
+ else:
866
+ raise Error("value must be a string or regular expression")
867
+ return out