patchright-core 1.51.3 → 1.52.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 (303) hide show
  1. package/browsers.json +15 -13
  2. package/lib/androidServerImpl.js +42 -48
  3. package/lib/browserServerImpl.js +54 -67
  4. package/lib/cli/driver.js +71 -69
  5. package/lib/cli/program.js +312 -328
  6. package/lib/cli/programWithTestStub.js +51 -45
  7. package/lib/client/accessibility.js +31 -32
  8. package/lib/client/android.js +141 -228
  9. package/lib/client/api.js +135 -283
  10. package/lib/client/artifact.js +39 -36
  11. package/lib/client/browser.js +57 -61
  12. package/lib/client/browserContext.js +297 -326
  13. package/lib/client/browserType.js +92 -106
  14. package/lib/client/cdpSession.js +29 -31
  15. package/lib/client/channelOwner.js +82 -95
  16. package/lib/client/clientHelper.js +46 -38
  17. package/lib/client/clientInstrumentation.js +40 -37
  18. package/lib/client/clientStackTrace.js +41 -37
  19. package/lib/client/clock.js +36 -36
  20. package/lib/client/connection.js +190 -212
  21. package/lib/client/consoleMessage.js +31 -28
  22. package/lib/client/coverage.js +25 -22
  23. package/lib/client/dialog.js +30 -31
  24. package/lib/client/download.js +25 -25
  25. package/lib/client/electron.js +73 -75
  26. package/lib/client/elementHandle.js +111 -147
  27. package/lib/client/errors.js +53 -53
  28. package/lib/client/eventEmitter.js +124 -121
  29. package/lib/client/events.js +72 -68
  30. package/lib/client/fetch.js +135 -158
  31. package/lib/client/fileChooser.js +25 -24
  32. package/lib/client/fileUtils.js +31 -28
  33. package/lib/client/frame.js +187 -306
  34. package/lib/client/harRouter.js +42 -52
  35. package/lib/client/input.js +40 -69
  36. package/lib/client/jsHandle.js +54 -69
  37. package/lib/client/jsonPipe.js +27 -23
  38. package/lib/client/localUtils.js +29 -28
  39. package/lib/client/locator.js +161 -245
  40. package/lib/client/network.js +277 -295
  41. package/lib/client/page.js +270 -318
  42. package/lib/client/platform.js +46 -43
  43. package/lib/client/playwright.js +51 -66
  44. package/lib/client/selectors.js +48 -46
  45. package/lib/client/stream.js +29 -25
  46. package/lib/client/timeoutSettings.js +49 -39
  47. package/lib/client/tracing.js +48 -84
  48. package/lib/client/types.js +26 -22
  49. package/lib/client/video.js +35 -27
  50. package/lib/client/waiter.js +69 -88
  51. package/lib/client/webError.js +25 -23
  52. package/lib/client/webSocket.js +61 -56
  53. package/lib/client/worker.js +48 -58
  54. package/lib/client/writableStream.js +27 -23
  55. package/lib/generated/clockSource.js +26 -5
  56. package/lib/generated/consoleApiSource.js +26 -5
  57. package/lib/generated/injectedScriptSource.js +26 -5
  58. package/lib/generated/pollingRecorderSource.js +26 -5
  59. package/lib/generated/utilityScriptSource.js +26 -5
  60. package/lib/generated/webSocketMockSource.js +375 -4
  61. package/lib/inProcessFactory.js +53 -53
  62. package/lib/inprocess.js +2 -19
  63. package/lib/outofprocess.js +53 -46
  64. package/lib/protocol/debug.js +209 -25
  65. package/lib/protocol/serializers.js +153 -134
  66. package/lib/protocol/validator.js +2714 -2714
  67. package/lib/protocol/validatorPrimitives.js +114 -73
  68. package/lib/remote/playwrightConnection.js +140 -157
  69. package/lib/remote/playwrightServer.js +99 -84
  70. package/lib/server/accessibility.js +44 -37
  71. package/lib/server/android/android.js +216 -209
  72. package/lib/server/android/backendAdb.js +89 -82
  73. package/lib/server/artifact.js +78 -55
  74. package/lib/server/bidi/bidiBrowser.js +221 -155
  75. package/lib/server/bidi/bidiChromium.js +106 -79
  76. package/lib/server/bidi/bidiConnection.js +66 -83
  77. package/lib/server/bidi/bidiExecutionContext.js +128 -113
  78. package/lib/server/bidi/bidiFirefox.js +76 -69
  79. package/lib/server/bidi/bidiInput.js +86 -97
  80. package/lib/server/bidi/bidiNetworkManager.js +137 -154
  81. package/lib/server/bidi/bidiOverCdp.js +57 -58
  82. package/lib/server/bidi/bidiPage.js +247 -219
  83. package/lib/server/bidi/bidiPdf.js +52 -86
  84. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  85. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  86. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  87. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  88. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  89. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  90. package/lib/server/browser.js +76 -84
  91. package/lib/server/browserContext.js +321 -346
  92. package/lib/server/browserType.js +169 -182
  93. package/lib/server/callLog.js +47 -44
  94. package/lib/server/chromium/chromium.js +212 -190
  95. package/lib/server/chromium/chromiumSwitches.js +86 -64
  96. package/lib/server/chromium/crAccessibility.js +157 -131
  97. package/lib/server/chromium/crBrowser.js +253 -273
  98. package/lib/server/chromium/crConnection.js +91 -116
  99. package/lib/server/chromium/crCoverage.js +113 -127
  100. package/lib/server/chromium/crDevTools.js +59 -51
  101. package/lib/server/chromium/crDragDrop.js +62 -79
  102. package/lib/server/chromium/crExecutionContext.js +88 -83
  103. package/lib/server/chromium/crInput.js +97 -95
  104. package/lib/server/chromium/crNetworkManager.js +284 -404
  105. package/lib/server/chromium/crPage.js +522 -608
  106. package/lib/server/chromium/crPdf.js +54 -86
  107. package/lib/server/chromium/crProtocolHelper.js +92 -80
  108. package/lib/server/chromium/crServiceWorker.js +82 -67
  109. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  110. package/lib/server/chromium/protocol.d.js +16 -0
  111. package/lib/server/chromium/videoRecorder.js +65 -99
  112. package/lib/server/clock.js +62 -50
  113. package/lib/server/codegen/csharp.js +185 -160
  114. package/lib/server/codegen/java.js +155 -128
  115. package/lib/server/codegen/javascript.js +163 -148
  116. package/lib/server/codegen/jsonl.js +32 -28
  117. package/lib/server/codegen/language.js +75 -52
  118. package/lib/server/codegen/languages.js +65 -27
  119. package/lib/server/codegen/python.js +140 -125
  120. package/lib/server/codegen/types.js +15 -4
  121. package/lib/server/console.js +28 -32
  122. package/lib/server/cookieStore.js +105 -86
  123. package/lib/server/debugController.js +97 -124
  124. package/lib/server/debugger.js +82 -78
  125. package/lib/server/deviceDescriptors.js +37 -24
  126. package/lib/server/deviceDescriptorsSource.json +50 -50
  127. package/lib/server/dialog.js +36 -35
  128. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  129. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  130. package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
  131. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  132. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  133. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  134. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
  135. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  136. package/lib/server/dispatchers/dispatcher.js +169 -220
  137. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  138. package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
  139. package/lib/server/dispatchers/frameDispatcher.js +99 -163
  140. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  141. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  142. package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
  143. package/lib/server/dispatchers/networkDispatchers.js +90 -107
  144. package/lib/server/dispatchers/pageDispatcher.js +128 -169
  145. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  146. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  147. package/lib/server/dispatchers/streamDispatcher.js +42 -45
  148. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  149. package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
  150. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
  151. package/lib/server/dom.js +413 -443
  152. package/lib/server/download.js +45 -35
  153. package/lib/server/electron/electron.js +156 -176
  154. package/lib/server/electron/loader.js +8 -36
  155. package/lib/server/errors.js +47 -46
  156. package/lib/server/fetch.js +289 -323
  157. package/lib/server/fileChooser.js +25 -24
  158. package/lib/server/fileUploadUtils.js +65 -59
  159. package/lib/server/firefox/ffAccessibility.js +153 -131
  160. package/lib/server/firefox/ffBrowser.js +213 -277
  161. package/lib/server/firefox/ffConnection.js +63 -84
  162. package/lib/server/firefox/ffExecutionContext.js +91 -73
  163. package/lib/server/firefox/ffInput.js +67 -69
  164. package/lib/server/firefox/ffNetworkManager.js +131 -110
  165. package/lib/server/firefox/ffPage.js +236 -273
  166. package/lib/server/firefox/firefox.js +76 -67
  167. package/lib/server/firefox/protocol.d.js +16 -0
  168. package/lib/server/formData.js +107 -35
  169. package/lib/server/frameSelectors.js +77 -111
  170. package/lib/server/frames.js +730 -894
  171. package/lib/server/har/harRecorder.js +85 -77
  172. package/lib/server/har/harTracer.js +287 -222
  173. package/lib/server/harBackend.js +80 -80
  174. package/lib/server/helper.js +56 -59
  175. package/lib/server/index.js +59 -99
  176. package/lib/server/input.js +134 -163
  177. package/lib/server/instrumentation.js +49 -44
  178. package/lib/server/javascript.js +143 -134
  179. package/lib/server/launchApp.js +92 -73
  180. package/lib/server/localUtils.js +130 -122
  181. package/lib/server/macEditingCommands.js +141 -137
  182. package/lib/server/network.js +262 -296
  183. package/lib/server/page.js +329 -426
  184. package/lib/server/pageBinding.js +88 -0
  185. package/lib/server/pipeTransport.js +49 -45
  186. package/lib/server/playwright.js +60 -67
  187. package/lib/server/progress.js +56 -51
  188. package/lib/server/protocolError.js +34 -31
  189. package/lib/server/recorder/chat.js +70 -86
  190. package/lib/server/recorder/contextRecorder.js +134 -138
  191. package/lib/server/recorder/recorderApp.js +127 -136
  192. package/lib/server/recorder/recorderCollection.js +56 -44
  193. package/lib/server/recorder/recorderFrontend.js +15 -4
  194. package/lib/server/recorder/recorderRunner.js +79 -103
  195. package/lib/server/recorder/recorderUtils.js +56 -45
  196. package/lib/server/recorder/throttledFile.js +42 -30
  197. package/lib/server/recorder.js +177 -186
  198. package/lib/server/registry/browserFetcher.js +106 -101
  199. package/lib/server/registry/dependencies.js +245 -196
  200. package/lib/server/registry/index.js +904 -792
  201. package/lib/server/registry/nativeDeps.js +1073 -464
  202. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  203. package/lib/server/screenshotter.js +166 -182
  204. package/lib/server/selectors.js +85 -46
  205. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  206. package/lib/server/socksInterceptor.js +62 -70
  207. package/lib/server/storageScript.js +94 -100
  208. package/lib/server/timeoutSettings.js +58 -43
  209. package/lib/server/trace/recorder/snapshotter.js +70 -89
  210. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  211. package/lib/server/trace/recorder/tracing.js +321 -333
  212. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  213. package/lib/server/trace/viewer/traceViewer.js +168 -146
  214. package/lib/server/transport.js +124 -133
  215. package/lib/server/types.js +26 -22
  216. package/lib/server/usKeyboardLayout.js +135 -545
  217. package/lib/server/utils/ascii.js +39 -26
  218. package/lib/server/utils/comparators.js +105 -103
  219. package/lib/server/utils/crypto.js +157 -112
  220. package/lib/server/utils/debug.js +37 -28
  221. package/lib/server/utils/debugLogger.js +69 -48
  222. package/lib/server/utils/env.js +52 -37
  223. package/lib/server/utils/eventsHelper.js +29 -28
  224. package/lib/server/utils/expectUtils.js +31 -26
  225. package/lib/server/utils/fileUtils.js +123 -136
  226. package/lib/server/utils/happyEyeballs.js +138 -123
  227. package/lib/server/utils/hostPlatform.js +84 -120
  228. package/lib/server/utils/httpServer.js +106 -121
  229. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  230. package/lib/server/utils/image_tools/compare.js +44 -43
  231. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  232. package/lib/server/utils/image_tools/stats.js +40 -40
  233. package/lib/server/utils/linuxUtils.js +50 -37
  234. package/lib/server/utils/network.js +143 -86
  235. package/lib/server/utils/nodePlatform.js +87 -79
  236. package/lib/server/utils/pipeTransport.js +44 -42
  237. package/lib/server/utils/processLauncher.js +111 -121
  238. package/lib/server/utils/profiler.js +52 -39
  239. package/lib/server/utils/socksProxy.js +280 -339
  240. package/lib/server/utils/spawnAsync.js +37 -41
  241. package/lib/server/utils/task.js +31 -38
  242. package/lib/server/utils/userAgent.js +73 -66
  243. package/lib/server/utils/wsServer.js +73 -69
  244. package/lib/server/utils/zipFile.js +36 -37
  245. package/lib/server/utils/zones.js +37 -34
  246. package/lib/server/webkit/protocol.d.js +16 -0
  247. package/lib/server/webkit/webkit.js +76 -63
  248. package/lib/server/webkit/wkAccessibility.js +161 -118
  249. package/lib/server/webkit/wkBrowser.js +159 -176
  250. package/lib/server/webkit/wkConnection.js +59 -83
  251. package/lib/server/webkit/wkExecutionContext.js +84 -70
  252. package/lib/server/webkit/wkInput.js +82 -80
  253. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  254. package/lib/server/webkit/wkPage.js +525 -619
  255. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  256. package/lib/server/webkit/wkWorkers.js +77 -77
  257. package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
  258. package/lib/utils/isomorphic/assert.js +28 -22
  259. package/lib/utils/isomorphic/builtins.js +90 -0
  260. package/lib/utils/isomorphic/colors.js +66 -59
  261. package/lib/utils/isomorphic/cssParser.js +121 -125
  262. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  263. package/lib/utils/isomorphic/headers.js +38 -37
  264. package/lib/utils/isomorphic/locatorGenerators.js +340 -357
  265. package/lib/utils/isomorphic/locatorParser.js +96 -105
  266. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  267. package/lib/utils/isomorphic/manualPromise.js +47 -39
  268. package/lib/utils/isomorphic/mimeType.js +448 -25
  269. package/lib/utils/isomorphic/multimap.js +35 -27
  270. package/lib/utils/isomorphic/rtti.js +35 -33
  271. package/lib/utils/isomorphic/selectorParser.js +183 -193
  272. package/lib/utils/isomorphic/semaphore.js +27 -24
  273. package/lib/utils/isomorphic/stackTrace.js +87 -98
  274. package/lib/utils/isomorphic/stringUtils.js +113 -106
  275. package/lib/utils/isomorphic/time.js +41 -22
  276. package/lib/utils/isomorphic/timeoutRunner.js +55 -54
  277. package/lib/utils/isomorphic/traceUtils.js +38 -41
  278. package/lib/utils/isomorphic/types.js +15 -4
  279. package/lib/utils/isomorphic/urlMatch.js +112 -67
  280. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  281. package/lib/utils.js +97 -443
  282. package/lib/utilsBundle.js +101 -52
  283. package/lib/vite/htmlReport/index.html +21 -15
  284. package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-DVQi6prl.js} +1 -1
  285. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  286. package/lib/vite/recorder/index.html +1 -1
  287. package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-dvXVzLxY.js} +1 -1
  288. package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
  289. package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
  290. package/lib/vite/traceViewer/index.ChIUCJnj.js +2 -0
  291. package/lib/vite/traceViewer/index.html +3 -3
  292. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  293. package/lib/vite/traceViewer/uiMode.html +3 -3
  294. package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
  295. package/lib/zipBundle.js +32 -23
  296. package/package.json +1 -1
  297. package/types/protocol.d.ts +436 -17
  298. package/types/types.d.ts +35 -16
  299. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  300. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  301. package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
  302. package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
  303. package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
@@ -1,39 +1,37 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ariaSnapshot_exports = {};
20
+ __export(ariaSnapshot_exports, {
21
+ KeyParser: () => KeyParser,
22
+ ParserError: () => ParserError,
23
+ parseAriaSnapshot: () => parseAriaSnapshot,
24
+ parseAriaSnapshotUnsafe: () => parseAriaSnapshotUnsafe,
25
+ valueOrRegex: () => valueOrRegex
5
26
  });
6
- exports.ParserError = exports.KeyParser = void 0;
7
- exports.parseAriaSnapshot = parseAriaSnapshot;
8
- exports.parseAriaSnapshotUnsafe = parseAriaSnapshotUnsafe;
9
- exports.valueOrRegex = valueOrRegex;
10
- /**
11
- * Copyright (c) Microsoft Corporation.
12
- *
13
- * Licensed under the Apache License, Version 2.0 (the "License");
14
- * you may not use this file except in compliance with the License.
15
- * You may obtain a copy of the License at
16
- *
17
- * http://www.apache.org/licenses/LICENSE-2.0
18
- *
19
- * Unless required by applicable law or agreed to in writing, software
20
- * distributed under the License is distributed on an "AS IS" BASIS,
21
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
- * See the License for the specific language governing permissions and
23
- * limitations under the License.
24
- */
25
-
26
- // https://www.w3.org/TR/wai-aria-1.2/#role_definitions
27
-
28
- // We pass parsed template between worlds using JSON, make it easy.
29
-
27
+ module.exports = __toCommonJS(ariaSnapshot_exports);
30
28
  function parseAriaSnapshotUnsafe(yaml, text) {
31
29
  const result = parseAriaSnapshot(yaml, text);
32
- if (result.errors.length) throw new Error(result.errors[0].message);
30
+ if (result.errors.length)
31
+ throw new Error(result.errors[0].message);
33
32
  return result.fragment;
34
33
  }
35
34
  function parseAriaSnapshot(yaml, text, options = {}) {
36
- var _fragment$children;
37
35
  const lineCounter = new yaml.LineCounter();
38
36
  const parseOptions = {
39
37
  keepSourceTokens: true,
@@ -42,10 +40,10 @@ function parseAriaSnapshot(yaml, text, options = {}) {
42
40
  };
43
41
  const yamlDoc = yaml.parseDocument(text, parseOptions);
44
42
  const errors = [];
45
- const convertRange = range => {
43
+ const convertRange = (range) => {
46
44
  return [lineCounter.linePos(range[0]), lineCounter.linePos(range[1])];
47
45
  };
48
- const addError = error => {
46
+ const addError = (error) => {
49
47
  errors.push({
50
48
  message: error.message,
51
49
  range: [lineCounter.linePos(error.pos[0]), lineCounter.linePos(error.pos[1])]
@@ -53,7 +51,7 @@ function parseAriaSnapshot(yaml, text, options = {}) {
53
51
  };
54
52
  const convertSeq = (container, seq) => {
55
53
  for (const item of seq.items) {
56
- const itemIsString = item instanceof yaml.Scalar && typeof item.value === 'string';
54
+ const itemIsString = item instanceof yaml.Scalar && typeof item.value === "string";
57
55
  if (itemIsString) {
58
56
  const childNode = KeyParser.parse(item, parseOptions, errors);
59
57
  if (childNode) {
@@ -68,7 +66,7 @@ function parseAriaSnapshot(yaml, text, options = {}) {
68
66
  continue;
69
67
  }
70
68
  errors.push({
71
- message: 'Sequence items should be strings or maps',
69
+ message: "Sequence items should be strings or maps",
72
70
  range: convertRange(item.range || seq.range)
73
71
  });
74
72
  }
@@ -76,46 +74,65 @@ function parseAriaSnapshot(yaml, text, options = {}) {
76
74
  const convertMap = (container, map) => {
77
75
  for (const entry of map.items) {
78
76
  container.children = container.children || [];
79
- // Key must by a string
80
- const keyIsString = entry.key instanceof yaml.Scalar && typeof entry.key.value === 'string';
77
+ const keyIsString = entry.key instanceof yaml.Scalar && typeof entry.key.value === "string";
81
78
  if (!keyIsString) {
82
79
  errors.push({
83
- message: 'Only string keys are supported',
80
+ message: "Only string keys are supported",
84
81
  range: convertRange(entry.key.range || map.range)
85
82
  });
86
83
  continue;
87
84
  }
88
85
  const key = entry.key;
89
86
  const value = entry.value;
90
-
91
- // - text: "text"
92
- if (key.value === 'text') {
93
- const valueIsString = value instanceof yaml.Scalar && typeof value.value === 'string';
87
+ if (key.value === "text") {
88
+ const valueIsString = value instanceof yaml.Scalar && typeof value.value === "string";
94
89
  if (!valueIsString) {
95
90
  errors.push({
96
- message: 'Text value should be a string',
91
+ message: "Text value should be a string",
97
92
  range: convertRange(entry.value.range || map.range)
98
93
  });
99
94
  continue;
100
95
  }
101
96
  container.children.push({
102
- kind: 'text',
97
+ kind: "text",
103
98
  text: valueOrRegex(value.value)
104
99
  });
105
100
  continue;
106
101
  }
107
-
108
- // role "name": ...
102
+ if (key.value === "/children") {
103
+ const valueIsString = value instanceof yaml.Scalar && typeof value.value === "string";
104
+ if (!valueIsString || value.value !== "contain" && value.value !== "equal" && value.value !== "deep-equal") {
105
+ errors.push({
106
+ message: 'Strict value should be "contain", "equal" or "deep-equal"',
107
+ range: convertRange(entry.value.range || map.range)
108
+ });
109
+ continue;
110
+ }
111
+ container.containerMode = value.value;
112
+ continue;
113
+ }
114
+ if (key.value.startsWith("/")) {
115
+ const valueIsString = value instanceof yaml.Scalar && typeof value.value === "string";
116
+ if (!valueIsString) {
117
+ errors.push({
118
+ message: "Property value should be a string",
119
+ range: convertRange(entry.value.range || map.range)
120
+ });
121
+ continue;
122
+ }
123
+ container.props = container.props ?? {};
124
+ container.props[key.value.slice(1)] = valueOrRegex(value.value);
125
+ continue;
126
+ }
109
127
  const childNode = KeyParser.parse(key, parseOptions, errors);
110
- if (!childNode) continue;
111
-
112
- // - role "name": "text"
128
+ if (!childNode)
129
+ continue;
113
130
  const valueIsScalar = value instanceof yaml.Scalar;
114
131
  if (valueIsScalar) {
115
132
  const type = typeof value.value;
116
- if (type !== 'string' && type !== 'number' && type !== 'boolean') {
133
+ if (type !== "string" && type !== "number" && type !== "boolean") {
117
134
  errors.push({
118
- message: 'Node value should be a string or a sequence',
135
+ message: "Node value should be a string or a sequence",
119
136
  range: convertRange(entry.value.range || map.range)
120
137
  });
121
138
  continue;
@@ -123,15 +140,12 @@ function parseAriaSnapshot(yaml, text, options = {}) {
123
140
  container.children.push({
124
141
  ...childNode,
125
142
  children: [{
126
- kind: 'text',
143
+ kind: "text",
127
144
  text: valueOrRegex(String(value.value))
128
145
  }]
129
146
  });
130
147
  continue;
131
148
  }
132
-
133
- // - role "name":
134
- // - child
135
149
  const valueIsSequence = value instanceof yaml.YAMLSeq;
136
150
  if (valueIsSequence) {
137
151
  container.children.push(childNode);
@@ -139,62 +153,36 @@ function parseAriaSnapshot(yaml, text, options = {}) {
139
153
  continue;
140
154
  }
141
155
  errors.push({
142
- message: 'Map values should be strings or sequences',
156
+ message: "Map values should be strings or sequences",
143
157
  range: convertRange(entry.value.range || map.range)
144
158
  });
145
159
  }
146
160
  };
147
- const fragment = {
148
- kind: 'role',
149
- role: 'fragment'
150
- };
161
+ const fragment = { kind: "role", role: "fragment" };
151
162
  yamlDoc.errors.forEach(addError);
152
- if (errors.length) return {
153
- errors,
154
- fragment
155
- };
163
+ if (errors.length)
164
+ return { errors, fragment };
156
165
  if (!(yamlDoc.contents instanceof yaml.YAMLSeq)) {
157
166
  errors.push({
158
167
  message: 'Aria snapshot must be a YAML sequence, elements starting with " -"',
159
- range: yamlDoc.contents ? convertRange(yamlDoc.contents.range) : [{
160
- line: 0,
161
- col: 0
162
- }, {
163
- line: 0,
164
- col: 0
165
- }]
168
+ range: yamlDoc.contents ? convertRange(yamlDoc.contents.range) : [{ line: 0, col: 0 }, { line: 0, col: 0 }]
166
169
  });
167
170
  }
168
- if (errors.length) return {
169
- errors,
170
- fragment
171
- };
171
+ if (errors.length)
172
+ return { errors, fragment };
172
173
  convertSeq(fragment, yamlDoc.contents);
173
- if (errors.length) return {
174
- errors,
175
- fragment: emptyFragment
176
- };
177
- if (((_fragment$children = fragment.children) === null || _fragment$children === void 0 ? void 0 : _fragment$children.length) === 1) return {
178
- fragment: fragment.children[0],
179
- errors
180
- };
181
- return {
182
- fragment,
183
- errors
184
- };
174
+ if (errors.length)
175
+ return { errors, fragment: emptyFragment };
176
+ if (fragment.children?.length === 1)
177
+ return { fragment: fragment.children[0], errors };
178
+ return { fragment, errors };
185
179
  }
186
- const emptyFragment = {
187
- kind: 'role',
188
- role: 'fragment'
189
- };
180
+ const emptyFragment = { kind: "role", role: "fragment" };
190
181
  function normalizeWhitespace(text) {
191
- // TODO: why is this different from normalizeWhitespace in stringUtils.ts?
192
- return text.replace(/[\u200b\u00ad]/g, '').replace(/[\r\n\s\t]+/g, ' ').trim();
182
+ return text.replace(/[\u200b\u00ad]/g, "").replace(/[\r\n\s\t]+/g, " ").trim();
193
183
  }
194
184
  function valueOrRegex(value) {
195
- return value.startsWith('/') && value.endsWith('/') && value.length > 1 ? {
196
- pattern: value.slice(1, -1)
197
- } : normalizeWhitespace(value);
185
+ return value.startsWith("/") && value.endsWith("/") && value.length > 1 ? { pattern: value.slice(1, -1) } : normalizeWhitespace(value);
198
186
  }
199
187
  class KeyParser {
200
188
  static parse(text, options, errors) {
@@ -202,7 +190,7 @@ class KeyParser {
202
190
  return new KeyParser(text.value)._parse();
203
191
  } catch (e) {
204
192
  if (e instanceof ParserError) {
205
- const message = options.prettyErrors === false ? e.message : e.message + ':\n\n' + text.value + '\n' + ' '.repeat(e.pos) + '^\n';
193
+ const message = options.prettyErrors === false ? e.message : e.message + ":\n\n" + text.value + "\n" + " ".repeat(e.pos) + "^\n";
206
194
  errors.push({
207
195
  message,
208
196
  range: [options.lineCounter.linePos(text.range[0]), options.lineCounter.linePos(text.range[0] + e.pos)]
@@ -213,18 +201,16 @@ class KeyParser {
213
201
  }
214
202
  }
215
203
  constructor(input) {
216
- this._input = void 0;
217
- this._pos = void 0;
218
- this._length = void 0;
219
204
  this._input = input;
220
205
  this._pos = 0;
221
206
  this._length = input.length;
222
207
  }
223
208
  _peek() {
224
- return this._input[this._pos] || '';
209
+ return this._input[this._pos] || "";
225
210
  }
226
211
  _next() {
227
- if (this._pos < this._length) return this._input[this._pos++];
212
+ if (this._pos < this._length)
213
+ return this._input[this._pos++];
228
214
  return null;
229
215
  }
230
216
  _eof() {
@@ -234,23 +220,26 @@ class KeyParser {
234
220
  return !this._eof() && /\s/.test(this._peek());
235
221
  }
236
222
  _skipWhitespace() {
237
- while (this._isWhitespace()) this._pos++;
223
+ while (this._isWhitespace())
224
+ this._pos++;
238
225
  }
239
226
  _readIdentifier(type) {
240
- if (this._eof()) this._throwError(`Unexpected end of input when expecting ${type}`);
227
+ if (this._eof())
228
+ this._throwError(`Unexpected end of input when expecting ${type}`);
241
229
  const start = this._pos;
242
- while (!this._eof() && /[a-zA-Z]/.test(this._peek())) this._pos++;
230
+ while (!this._eof() && /[a-zA-Z]/.test(this._peek()))
231
+ this._pos++;
243
232
  return this._input.slice(start, this._pos);
244
233
  }
245
234
  _readString() {
246
- let result = '';
235
+ let result = "";
247
236
  let escaped = false;
248
237
  while (!this._eof()) {
249
238
  const ch = this._next();
250
239
  if (escaped) {
251
240
  result += ch;
252
241
  escaped = false;
253
- } else if (ch === '\\') {
242
+ } else if (ch === "\\") {
254
243
  escaped = true;
255
244
  } else if (ch === '"') {
256
245
  return result;
@@ -258,13 +247,13 @@ class KeyParser {
258
247
  result += ch;
259
248
  }
260
249
  }
261
- this._throwError('Unterminated string');
250
+ this._throwError("Unterminated string");
262
251
  }
263
252
  _throwError(message, offset = 0) {
264
253
  throw new ParserError(message, offset || this._pos);
265
254
  }
266
255
  _readRegex() {
267
- let result = '';
256
+ let result = "";
268
257
  let escaped = false;
269
258
  let insideClass = false;
270
259
  while (!this._eof()) {
@@ -272,24 +261,22 @@ class KeyParser {
272
261
  if (escaped) {
273
262
  result += ch;
274
263
  escaped = false;
275
- } else if (ch === '\\') {
264
+ } else if (ch === "\\") {
276
265
  escaped = true;
277
266
  result += ch;
278
- } else if (ch === '/' && !insideClass) {
279
- return {
280
- pattern: result
281
- };
282
- } else if (ch === '[') {
267
+ } else if (ch === "/" && !insideClass) {
268
+ return { pattern: result };
269
+ } else if (ch === "[") {
283
270
  insideClass = true;
284
271
  result += ch;
285
- } else if (ch === ']' && insideClass) {
272
+ } else if (ch === "]" && insideClass) {
286
273
  result += ch;
287
274
  insideClass = false;
288
275
  } else {
289
276
  result += ch;
290
277
  }
291
278
  }
292
- this._throwError('Unterminated regex');
279
+ this._throwError("Unterminated regex");
293
280
  }
294
281
  _readStringOrRegex() {
295
282
  const ch = this._peek();
@@ -297,7 +284,7 @@ class KeyParser {
297
284
  this._next();
298
285
  return normalizeWhitespace(this._readString());
299
286
  }
300
- if (ch === '/') {
287
+ if (ch === "/") {
301
288
  this._next();
302
289
  return this._readRegex();
303
290
  }
@@ -307,23 +294,25 @@ class KeyParser {
307
294
  let errorPos = this._pos;
308
295
  while (true) {
309
296
  this._skipWhitespace();
310
- if (this._peek() === '[') {
297
+ if (this._peek() === "[") {
311
298
  this._next();
312
299
  this._skipWhitespace();
313
300
  errorPos = this._pos;
314
- const flagName = this._readIdentifier('attribute');
301
+ const flagName = this._readIdentifier("attribute");
315
302
  this._skipWhitespace();
316
- let flagValue = '';
317
- if (this._peek() === '=') {
303
+ let flagValue = "";
304
+ if (this._peek() === "=") {
318
305
  this._next();
319
306
  this._skipWhitespace();
320
307
  errorPos = this._pos;
321
- while (this._peek() !== ']' && !this._isWhitespace() && !this._eof()) flagValue += this._next();
308
+ while (this._peek() !== "]" && !this._isWhitespace() && !this._eof())
309
+ flagValue += this._next();
322
310
  }
323
311
  this._skipWhitespace();
324
- if (this._peek() !== ']') this._throwError('Expected ]');
325
- this._next(); // Consume ']'
326
- this._applyAttribute(result, flagName, flagValue || 'true', errorPos);
312
+ if (this._peek() !== "]")
313
+ this._throwError("Expected ]");
314
+ this._next();
315
+ this._applyAttribute(result, flagName, flagValue || "true", errorPos);
327
316
  } else {
328
317
  break;
329
318
  }
@@ -331,62 +320,65 @@ class KeyParser {
331
320
  }
332
321
  _parse() {
333
322
  this._skipWhitespace();
334
- const role = this._readIdentifier('role');
323
+ const role = this._readIdentifier("role");
335
324
  this._skipWhitespace();
336
- const name = this._readStringOrRegex() || '';
337
- const result = {
338
- kind: 'role',
339
- role,
340
- name
341
- };
325
+ const name = this._readStringOrRegex() || "";
326
+ const result = { kind: "role", role, name };
342
327
  this._readAttributes(result);
343
328
  this._skipWhitespace();
344
- if (!this._eof()) this._throwError('Unexpected input');
329
+ if (!this._eof())
330
+ this._throwError("Unexpected input");
345
331
  return result;
346
332
  }
347
333
  _applyAttribute(node, key, value, errorPos) {
348
- if (key === 'checked') {
349
- this._assert(value === 'true' || value === 'false' || value === 'mixed', 'Value of "checked\" attribute must be a boolean or "mixed"', errorPos);
350
- node.checked = value === 'true' ? true : value === 'false' ? false : 'mixed';
334
+ if (key === "checked") {
335
+ this._assert(value === "true" || value === "false" || value === "mixed", 'Value of "checked" attribute must be a boolean or "mixed"', errorPos);
336
+ node.checked = value === "true" ? true : value === "false" ? false : "mixed";
351
337
  return;
352
338
  }
353
- if (key === 'disabled') {
354
- this._assert(value === 'true' || value === 'false', 'Value of "disabled" attribute must be a boolean', errorPos);
355
- node.disabled = value === 'true';
339
+ if (key === "disabled") {
340
+ this._assert(value === "true" || value === "false", 'Value of "disabled" attribute must be a boolean', errorPos);
341
+ node.disabled = value === "true";
356
342
  return;
357
343
  }
358
- if (key === 'expanded') {
359
- this._assert(value === 'true' || value === 'false', 'Value of "expanded" attribute must be a boolean', errorPos);
360
- node.expanded = value === 'true';
344
+ if (key === "expanded") {
345
+ this._assert(value === "true" || value === "false", 'Value of "expanded" attribute must be a boolean', errorPos);
346
+ node.expanded = value === "true";
361
347
  return;
362
348
  }
363
- if (key === 'level') {
349
+ if (key === "level") {
364
350
  this._assert(!isNaN(Number(value)), 'Value of "level" attribute must be a number', errorPos);
365
351
  node.level = Number(value);
366
352
  return;
367
353
  }
368
- if (key === 'pressed') {
369
- this._assert(value === 'true' || value === 'false' || value === 'mixed', 'Value of "pressed" attribute must be a boolean or "mixed"', errorPos);
370
- node.pressed = value === 'true' ? true : value === 'false' ? false : 'mixed';
354
+ if (key === "pressed") {
355
+ this._assert(value === "true" || value === "false" || value === "mixed", 'Value of "pressed" attribute must be a boolean or "mixed"', errorPos);
356
+ node.pressed = value === "true" ? true : value === "false" ? false : "mixed";
371
357
  return;
372
358
  }
373
- if (key === 'selected') {
374
- this._assert(value === 'true' || value === 'false', 'Value of "selected" attribute must be a boolean', errorPos);
375
- node.selected = value === 'true';
359
+ if (key === "selected") {
360
+ this._assert(value === "true" || value === "false", 'Value of "selected" attribute must be a boolean', errorPos);
361
+ node.selected = value === "true";
376
362
  return;
377
363
  }
378
364
  this._assert(false, `Unsupported attribute [${key}]`, errorPos);
379
365
  }
380
366
  _assert(value, message, valuePos) {
381
- if (!value) this._throwError(message || 'Assertion error', valuePos);
367
+ if (!value)
368
+ this._throwError(message || "Assertion error", valuePos);
382
369
  }
383
370
  }
384
- exports.KeyParser = KeyParser;
385
371
  class ParserError extends Error {
386
372
  constructor(message, pos) {
387
373
  super(message);
388
- this.pos = void 0;
389
374
  this.pos = pos;
390
375
  }
391
376
  }
392
- exports.ParserError = ParserError;
377
+ // Annotate the CommonJS export names for ESM import in node:
378
+ 0 && (module.exports = {
379
+ KeyParser,
380
+ ParserError,
381
+ parseAriaSnapshot,
382
+ parseAriaSnapshotUnsafe,
383
+ valueOrRegex
384
+ });
@@ -1,25 +1,31 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var assert_exports = {};
20
+ __export(assert_exports, {
21
+ assert: () => assert
5
22
  });
6
- exports.assert = assert;
7
- /**
8
- * Copyright (c) Microsoft Corporation.
9
- *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
- * you may not use this file except in compliance with the License.
12
- * You may obtain a copy of the License at
13
- *
14
- * http://www.apache.org/licenses/LICENSE-2.0
15
- *
16
- * Unless required by applicable law or agreed to in writing, software
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- * See the License for the specific language governing permissions and
20
- * limitations under the License.
21
- */
22
-
23
+ module.exports = __toCommonJS(assert_exports);
23
24
  function assert(value, message) {
24
- if (!value) throw new Error(message || 'Assertion error');
25
- }
25
+ if (!value)
26
+ throw new Error(message || "Assertion error");
27
+ }
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ assert
31
+ });
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var builtins_exports = {};
20
+ __export(builtins_exports, {
21
+ Date: () => Date,
22
+ Intl: () => Intl,
23
+ Map: () => Map,
24
+ Set: () => Set,
25
+ builtins: () => builtins,
26
+ cancelAnimationFrame: () => cancelAnimationFrame,
27
+ cancelIdleCallback: () => cancelIdleCallback,
28
+ clearInterval: () => clearInterval,
29
+ clearTimeout: () => clearTimeout,
30
+ performance: () => performance,
31
+ requestAnimationFrame: () => requestAnimationFrame,
32
+ requestIdleCallback: () => requestIdleCallback,
33
+ setInterval: () => setInterval,
34
+ setTimeout: () => setTimeout
35
+ });
36
+ module.exports = __toCommonJS(builtins_exports);
37
+ function builtins(global) {
38
+ global = global ?? globalThis;
39
+ if (!global["__playwright_builtins__"]) {
40
+ const builtins2 = {
41
+ setTimeout: global.setTimeout?.bind(global),
42
+ clearTimeout: global.clearTimeout?.bind(global),
43
+ setInterval: global.setInterval?.bind(global),
44
+ clearInterval: global.clearInterval?.bind(global),
45
+ requestAnimationFrame: global.requestAnimationFrame?.bind(global),
46
+ cancelAnimationFrame: global.cancelAnimationFrame?.bind(global),
47
+ requestIdleCallback: global.requestIdleCallback?.bind(global),
48
+ cancelIdleCallback: global.cancelIdleCallback?.bind(global),
49
+ performance: global.performance,
50
+ eval: global.eval?.bind(global),
51
+ Intl: global.Intl,
52
+ Date: global.Date,
53
+ Map: global.Map,
54
+ Set: global.Set
55
+ };
56
+ Object.defineProperty(global, "__playwright_builtins__", { value: builtins2, configurable: false, enumerable: false, writable: false });
57
+ }
58
+ return global["__playwright_builtins__"];
59
+ }
60
+ const instance = builtins();
61
+ const setTimeout = instance.setTimeout;
62
+ const clearTimeout = instance.clearTimeout;
63
+ const setInterval = instance.setInterval;
64
+ const clearInterval = instance.clearInterval;
65
+ const requestAnimationFrame = instance.requestAnimationFrame;
66
+ const cancelAnimationFrame = instance.cancelAnimationFrame;
67
+ const requestIdleCallback = instance.requestIdleCallback;
68
+ const cancelIdleCallback = instance.cancelIdleCallback;
69
+ const performance = instance.performance;
70
+ const Intl = instance.Intl;
71
+ const Date = instance.Date;
72
+ const Map = instance.Map;
73
+ const Set = instance.Set;
74
+ // Annotate the CommonJS export names for ESM import in node:
75
+ 0 && (module.exports = {
76
+ Date,
77
+ Intl,
78
+ Map,
79
+ Set,
80
+ builtins,
81
+ cancelAnimationFrame,
82
+ cancelIdleCallback,
83
+ clearInterval,
84
+ clearTimeout,
85
+ performance,
86
+ requestAnimationFrame,
87
+ requestIdleCallback,
88
+ setInterval,
89
+ setTimeout
90
+ });