@browserbasehq/orca 3.4.0-preview-4 → 3.4.0-preview-5

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 (765) hide show
  1. package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +1 -1
  2. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  3. package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
  4. package/dist/cjs/lib/v3/launch/local.js +47 -7
  5. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  6. package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
  7. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  8. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  9. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  10. package/dist/cjs/lib/v3/types/public/api.d.ts +283 -0
  11. package/dist/cjs/lib/v3/types/public/api.js +50 -3
  12. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  13. package/dist/cjs/lib/v3/types/public/model.d.ts +11 -7
  14. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  15. package/dist/cjs/lib/v3/v3.js +2 -47
  16. package/dist/cjs/lib/v3/v3.js.map +1 -1
  17. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
  18. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  19. package/dist/esm/lib/v3/launch/local.d.ts +2 -7
  20. package/dist/esm/lib/v3/launch/local.js +48 -8
  21. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  22. package/dist/esm/lib/v3/llm/aisdk.js +5 -0
  23. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  24. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  25. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  26. package/dist/esm/lib/v3/types/public/api.d.ts +283 -0
  27. package/dist/esm/lib/v3/types/public/api.js +48 -1
  28. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  29. package/dist/esm/lib/v3/types/public/model.d.ts +11 -7
  30. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  31. package/dist/esm/lib/v3/v3.js +2 -47
  32. package/dist/esm/lib/v3/v3.js.map +1 -1
  33. package/package.json +4 -5
  34. package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
  35. package/dist/cjs/tests/cache-variables.test.js +0 -221
  36. package/dist/cjs/tests/cache-variables.test.js.map +0 -1
  37. package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  38. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
  39. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
  40. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  41. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
  42. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  43. package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
  44. package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
  45. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
  46. package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  47. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
  48. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  49. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  50. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
  51. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  52. package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  53. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
  54. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
  55. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
  56. package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
  57. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
  58. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  59. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
  60. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  61. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  62. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
  63. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
  64. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  65. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
  66. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
  67. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  68. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
  69. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  70. package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
  71. package/dist/cjs/tests/integration/click-count.spec.js +0 -163
  72. package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
  73. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  74. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
  75. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  76. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
  77. package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
  78. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
  79. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  80. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
  81. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  82. package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
  83. package/dist/cjs/tests/integration/cookies.spec.js +0 -187
  84. package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
  85. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
  86. package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
  87. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
  88. package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
  89. package/dist/cjs/tests/integration/downloads.spec.js +0 -52
  90. package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
  91. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
  92. package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
  93. package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
  94. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  95. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
  96. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  97. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  98. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
  99. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  100. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  101. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
  102. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  103. package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
  104. package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
  105. package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
  106. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
  107. package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
  108. package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
  109. package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
  110. package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
  111. package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
  112. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  113. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
  114. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  115. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
  116. package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
  117. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
  118. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  119. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
  120. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
  121. package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
  122. package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
  123. package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
  124. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
  125. package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
  126. package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
  127. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
  128. package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
  129. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
  130. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
  131. package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
  132. package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
  133. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
  134. package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
  135. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
  136. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
  137. package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
  138. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
  139. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  140. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
  141. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
  142. package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
  143. package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
  144. package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
  145. package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  146. package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
  147. package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
  148. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
  149. package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
  150. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
  151. package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
  152. package/dist/cjs/tests/integration/page-console.spec.js +0 -47
  153. package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
  154. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  155. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
  156. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  157. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  158. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
  159. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  160. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
  161. package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
  162. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
  163. package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
  164. package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
  165. package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
  166. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
  167. package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
  168. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
  169. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
  170. package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
  171. package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
  172. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
  173. package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
  174. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
  175. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  176. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
  177. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
  178. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
  179. package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
  180. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
  181. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  182. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
  183. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  184. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  185. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
  186. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  187. package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
  188. package/dist/cjs/tests/integration/testUtils.js +0 -188
  189. package/dist/cjs/tests/integration/testUtils.js.map +0 -1
  190. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  191. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
  192. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
  193. package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
  194. package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
  195. package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
  196. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
  197. package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
  198. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
  199. package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
  200. package/dist/cjs/tests/integration/v3.config.js +0 -11
  201. package/dist/cjs/tests/integration/v3.config.js.map +0 -1
  202. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
  203. package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
  204. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
  205. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
  206. package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
  207. package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
  208. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
  209. package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
  210. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
  211. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  212. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
  213. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
  214. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  215. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
  216. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  217. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  218. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
  219. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  220. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
  221. package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
  222. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
  223. package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
  224. package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
  225. package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
  226. package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
  227. package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
  228. package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
  229. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  230. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
  231. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  232. package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
  233. package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
  234. package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
  235. package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
  236. package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
  237. package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
  238. package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
  239. package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
  240. package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
  241. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  242. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
  243. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  244. package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.d.ts +0 -1
  245. package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.js +0 -87
  246. package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.js.map +0 -1
  247. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  248. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -135
  249. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
  250. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
  251. package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
  252. package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
  253. package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  254. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
  255. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  256. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
  257. package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -69
  258. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
  259. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  260. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
  261. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  262. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  263. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
  264. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
  265. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
  266. package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
  267. package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
  268. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
  269. package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
  270. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
  271. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  272. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
  273. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
  274. package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
  275. package/dist/cjs/tests/unit/cookies.test.js +0 -944
  276. package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
  277. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  278. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
  279. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  280. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  281. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
  282. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  283. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  284. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
  285. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  286. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  287. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
  288. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  289. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  290. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
  291. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
  292. package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
  293. package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
  294. package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
  295. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
  296. package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
  297. package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
  298. package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
  299. package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
  300. package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
  301. package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  302. package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
  303. package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
  304. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
  305. package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
  306. package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
  307. package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
  308. package/dist/cjs/tests/unit/model-utils.test.js +0 -42
  309. package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
  310. package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  311. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
  312. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  313. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
  314. package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
  315. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
  316. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  317. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
  318. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
  319. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
  320. package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
  321. package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
  322. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  323. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
  324. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
  325. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
  326. package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
  327. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
  328. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  329. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
  330. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  331. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  332. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
  333. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
  334. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
  335. package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
  336. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
  337. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  338. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
  339. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  340. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  341. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
  342. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
  343. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  344. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
  345. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  346. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  347. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
  348. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  349. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
  350. package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
  351. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
  352. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
  353. package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
  354. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
  355. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  356. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
  357. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  358. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  359. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -339
  360. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  361. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  362. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
  363. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  364. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
  365. package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
  366. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
  367. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  368. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
  369. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  370. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  371. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
  372. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  373. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  374. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
  375. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  376. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  377. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
  378. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  379. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  380. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -127
  381. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  382. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  383. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
  384. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  385. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
  386. package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -933
  387. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
  388. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
  389. package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
  390. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
  391. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
  392. package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
  393. package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
  394. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
  395. package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
  396. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
  397. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  398. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
  399. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
  400. package/dist/esm/tests/cache-variables.test.d.ts +0 -1
  401. package/dist/esm/tests/cache-variables.test.js +0 -219
  402. package/dist/esm/tests/cache-variables.test.js.map +0 -1
  403. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  404. package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
  405. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
  406. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  407. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
  408. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  409. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
  410. package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
  411. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
  412. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  413. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
  414. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  415. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  416. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
  417. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  418. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  419. package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
  420. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
  421. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
  422. package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
  423. package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
  424. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  425. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
  426. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  427. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  428. package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
  429. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
  430. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  431. package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
  432. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
  433. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  434. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
  435. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  436. package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
  437. package/dist/esm/tests/integration/click-count.spec.js +0 -161
  438. package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
  439. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  440. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
  441. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  442. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
  443. package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
  444. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
  445. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  446. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
  447. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  448. package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
  449. package/dist/esm/tests/integration/cookies.spec.js +0 -185
  450. package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
  451. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
  452. package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
  453. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
  454. package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
  455. package/dist/esm/tests/integration/downloads.spec.js +0 -47
  456. package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
  457. package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
  458. package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
  459. package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
  460. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  461. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
  462. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  463. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  464. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
  465. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  466. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  467. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
  468. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  469. package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
  470. package/dist/esm/tests/integration/keep-alive.child.js +0 -83
  471. package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
  472. package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
  473. package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
  474. package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
  475. package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
  476. package/dist/esm/tests/integration/keyboard.spec.js +0 -257
  477. package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
  478. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  479. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
  480. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  481. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
  482. package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
  483. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
  484. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  485. package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
  486. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
  487. package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
  488. package/dist/esm/tests/integration/locator-count.spec.js +0 -66
  489. package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
  490. package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
  491. package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
  492. package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
  493. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
  494. package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
  495. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
  496. package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
  497. package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
  498. package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
  499. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
  500. package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
  501. package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
  502. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
  503. package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
  504. package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
  505. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  506. package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
  507. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
  508. package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
  509. package/dist/esm/tests/integration/nested-div.spec.js +0 -20
  510. package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
  511. package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  512. package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
  513. package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
  514. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
  515. package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
  516. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
  517. package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
  518. package/dist/esm/tests/integration/page-console.spec.js +0 -45
  519. package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
  520. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  521. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
  522. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  523. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  524. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
  525. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  526. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
  527. package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
  528. package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
  529. package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
  530. package/dist/esm/tests/integration/page-hover.spec.js +0 -163
  531. package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
  532. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
  533. package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
  534. package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
  535. package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
  536. package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
  537. package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
  538. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
  539. package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
  540. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
  541. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  542. package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
  543. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
  544. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
  545. package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
  546. package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
  547. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  548. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
  549. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  550. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  551. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
  552. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  553. package/dist/esm/tests/integration/testUtils.d.ts +0 -40
  554. package/dist/esm/tests/integration/testUtils.js +0 -178
  555. package/dist/esm/tests/integration/testUtils.js.map +0 -1
  556. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  557. package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
  558. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
  559. package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
  560. package/dist/esm/tests/integration/timeouts.spec.js +0 -307
  561. package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
  562. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
  563. package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
  564. package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
  565. package/dist/esm/tests/integration/v3.config.d.ts +0 -4
  566. package/dist/esm/tests/integration/v3.config.js +0 -7
  567. package/dist/esm/tests/integration/v3.config.js.map +0 -1
  568. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
  569. package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
  570. package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
  571. package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
  572. package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
  573. package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
  574. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
  575. package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
  576. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
  577. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  578. package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
  579. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
  580. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  581. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
  582. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  583. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  584. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
  585. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  586. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
  587. package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
  588. package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
  589. package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
  590. package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
  591. package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
  592. package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
  593. package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
  594. package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
  595. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  596. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
  597. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  598. package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
  599. package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
  600. package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
  601. package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
  602. package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
  603. package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
  604. package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
  605. package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
  606. package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
  607. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  608. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
  609. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  610. package/dist/esm/tests/unit/anthropic-cua-triple-click.test.d.ts +0 -1
  611. package/dist/esm/tests/unit/anthropic-cua-triple-click.test.js +0 -82
  612. package/dist/esm/tests/unit/anthropic-cua-triple-click.test.js.map +0 -1
  613. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  614. package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -133
  615. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
  616. package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
  617. package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
  618. package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
  619. package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  620. package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
  621. package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  622. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
  623. package/dist/esm/tests/unit/api-variables-schema.test.js +0 -67
  624. package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
  625. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  626. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
  627. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  628. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  629. package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
  630. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
  631. package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
  632. package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
  633. package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
  634. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
  635. package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
  636. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
  637. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  638. package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
  639. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
  640. package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
  641. package/dist/esm/tests/unit/cookies.test.js +0 -909
  642. package/dist/esm/tests/unit/cookies.test.js.map +0 -1
  643. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  644. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
  645. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  646. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  647. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
  648. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  649. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  650. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
  651. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  652. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  653. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
  654. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  655. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  656. package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
  657. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
  658. package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
  659. package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
  660. package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
  661. package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
  662. package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
  663. package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
  664. package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
  665. package/dist/esm/tests/unit/llm-provider.test.js +0 -62
  666. package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
  667. package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  668. package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
  669. package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
  670. package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
  671. package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
  672. package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
  673. package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
  674. package/dist/esm/tests/unit/model-utils.test.js +0 -40
  675. package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
  676. package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  677. package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
  678. package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  679. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
  680. package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
  681. package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
  682. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  683. package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
  684. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
  685. package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
  686. package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
  687. package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
  688. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  689. package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
  690. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
  691. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
  692. package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
  693. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
  694. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  695. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
  696. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  697. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  698. package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
  699. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
  700. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
  701. package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
  702. package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
  703. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  704. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
  705. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  706. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  707. package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
  708. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
  709. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  710. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
  711. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  712. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  713. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
  714. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  715. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
  716. package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
  717. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
  718. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
  719. package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
  720. package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
  721. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  722. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
  723. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  724. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  725. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -337
  726. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  727. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  728. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
  729. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  730. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
  731. package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
  732. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
  733. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  734. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
  735. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  736. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  737. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
  738. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  739. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  740. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
  741. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  742. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  743. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
  744. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  745. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  746. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -125
  747. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  748. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  749. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
  750. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  751. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
  752. package/dist/esm/tests/unit/timeout-handlers.test.js +0 -898
  753. package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
  754. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
  755. package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
  756. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
  757. package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
  758. package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
  759. package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
  760. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
  761. package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
  762. package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
  763. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  764. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
  765. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"timeout-handlers.test.js","sourceRoot":"","sources":["../../../../tests/unit/timeout-handlers.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport { ActHandler } from \"../../lib/v3/handlers/actHandler.js\";\nimport { ExtractHandler } from \"../../lib/v3/handlers/extractHandler.js\";\nimport { ObserveHandler } from \"../../lib/v3/handlers/observeHandler.js\";\nimport type { Page } from \"../../lib/v3/understudy/page.js\";\nimport type { ClientOptions } from \"../../lib/v3/types/public/model.js\";\nimport type { LLMClient } from \"../../lib/v3/llm/LLMClient.js\";\nimport { createTimeoutGuard } from \"../../lib/v3/handlers/handlerUtils/timeoutGuard.js\";\nimport { waitForDomNetworkQuiet } from \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\";\nimport { captureHybridSnapshot } from \"../../lib/v3/understudy/a11y/snapshot/index.js\";\nimport {\n ActTimeoutError,\n ExtractTimeoutError,\n ObserveTimeoutError,\n} from \"../../lib/v3/types/public/sdkErrors.js\";\nimport {\n act as actInference,\n extract as extractInference,\n observe as observeInference,\n} from \"../../lib/inference.js\";\nimport { V3FunctionName } from \"../../lib/v3/types/public/methods.js\";\n\nvi.mock(\"../../lib/v3/handlers/handlerUtils/timeoutGuard\", () => ({\n createTimeoutGuard: vi.fn(),\n}));\n\nvi.mock(\"../../lib/v3/handlers/handlerUtils/actHandlerUtils\", () => ({\n waitForDomNetworkQuiet: vi.fn(),\n performUnderstudyMethod: vi.fn(),\n}));\n\nvi.mock(\"../../lib/v3/understudy/a11y/snapshot\", () => ({\n captureHybridSnapshot: vi.fn(),\n diffCombinedTrees: vi.fn(),\n}));\n\nvi.mock(\"../../lib/inference\", () => ({\n act: vi.fn(),\n extract: vi.fn(),\n observe: vi.fn(),\n}));\n\ndescribe(\"ActHandler timeout guard\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ActTimeoutError when timeout expires before snapshot\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n // Make createTimeoutGuard return a guard that throws on call #2\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"do something\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Verify pre-timeout helper ran\n expect(waitForDomNetworkQuietMock).toHaveBeenCalledTimes(1);\n // Verify snapshot was NOT called (timeout fired before it)\n expect(captureHybridSnapshotMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ActTimeoutError when timeout expires before LLM call\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const actInferenceMock = vi.mocked(actInference);\n\n // Throw on call #3 (after snapshot but before LLM)\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 3) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"do something\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Snapshot should have been called\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);\n // LLM inference should NOT have been called\n expect(actInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ActTimeoutError with correct message format\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const timeoutMs = 100;\n\n vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory ? errorFactory(ms!) : new ActTimeoutError(ms!);\n });\n });\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n try {\n await handler.act({\n instruction: \"do something\",\n page: fakePage,\n timeout: timeoutMs,\n });\n throw new Error(\"Expected ActTimeoutError to be thrown\");\n } catch (error) {\n expect(error).toBeInstanceOf(ActTimeoutError);\n expect((error as ActTimeoutError).message).toContain(\"act()\");\n expect((error as ActTimeoutError).message).toContain(`${timeoutMs}ms`);\n expect((error as ActTimeoutError).name).toBe(\"ActTimeoutError\");\n }\n });\n});\n\ndescribe(\"ActHandler two-step timeout\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ActTimeoutError during step 2; step 2 action does not run\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n // First call returns a two-step action\n actInferenceMock.mockResolvedValueOnce({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: true,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n const diffCombinedTreesMock = vi.mocked(\n (await import(\"../../lib/v3/understudy/a11y/snapshot/index.js\"))\n .diffCombinedTrees,\n );\n diffCombinedTreesMock.mockReturnValue(\"diff tree\");\n\n // Timeout fires after step 1 completes, during step 2 snapshot\n // ensureTimeRemaining calls: 1=before wait, 2=after wait/before snap1, 3=before LLM1,\n // 4=before action1, 5=inside takeDeterministicAction, 6=performUnderstudy,\n // 7=before snap2 (this one should throw)\n let callCount = 0;\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n callCount += 1;\n if (callCount >= 7) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"click then type\",\n page: fakePage,\n timeout: 50,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Step 1 action should have been executed\n expect(performUnderstudyMethodMock).toHaveBeenCalledTimes(1);\n // Step 2 LLM call should NOT have happened\n expect(actInferenceMock).toHaveBeenCalledTimes(1);\n });\n});\n\ndescribe(\"ActHandler self-heal timeout\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ActTimeoutError during self-heal snapshot; no retry action executes\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n // First call fails, triggering self-heal\n performUnderstudyMethodMock.mockRejectedValueOnce(\n new Error(\"Element not found\"),\n );\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // Timeout during self-heal snapshot (call 7 or later)\n let callCount = 0;\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n callCount += 1;\n // Timeout during self-heal snapshot call\n if (callCount >= 7) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler({ selfHeal: true });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: 50,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // First action attempt should have been tried\n expect(performUnderstudyMethodMock).toHaveBeenCalledTimes(1);\n // First LLM call should have happened\n expect(actInferenceMock).toHaveBeenCalledTimes(1);\n // Self-heal snapshot should have been started (call happened)\n expect(captureHybridSnapshotMock).toHaveBeenCalled();\n });\n\n it(\"throws ActTimeoutError during self-heal LLM inference; no retry action executes\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n // First call fails, triggering self-heal\n performUnderstudyMethodMock.mockRejectedValueOnce(\n new Error(\"Element not found\"),\n );\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValueOnce({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // Timeout during self-heal LLM inference (call 8)\n let callCount = 0;\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n callCount += 1;\n // Timeout during self-heal LLM call\n if (callCount >= 8) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler({ selfHeal: true });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: 50,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Self-heal snapshot was captured\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(2);\n // Only one LLM inference (the retry inference was aborted by timeout)\n expect(actInferenceMock).toHaveBeenCalledTimes(1);\n });\n});\n\ndescribe(\"ExtractHandler timeout guard\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ExtractTimeoutError when timeout expires before snapshot\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n\n // Throw immediately on first call\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ExtractTimeoutError(timeoutMs!);\n });\n },\n );\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ExtractTimeoutError);\n\n // Snapshot should NOT have been called\n expect(captureHybridSnapshotMock).not.toHaveBeenCalled();\n // LLM inference should NOT have been called\n expect(extractInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ExtractTimeoutError when timeout expires before LLM call\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n\n // Throw on call #2 (after snapshot but before LLM)\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ExtractTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ExtractTimeoutError);\n\n // Snapshot should have been called\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);\n // LLM inference should NOT have been called\n expect(extractInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ExtractTimeoutError with correct message format\", async () => {\n const timeoutMs = 200;\n\n vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory ? errorFactory(ms!) : new ExtractTimeoutError(ms!);\n });\n });\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n try {\n await handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n timeout: timeoutMs,\n });\n throw new Error(\"Expected ExtractTimeoutError to be thrown\");\n } catch (error) {\n expect(error).toBeInstanceOf(ExtractTimeoutError);\n expect((error as ExtractTimeoutError).message).toContain(\"extract()\");\n expect((error as ExtractTimeoutError).message).toContain(\n `${timeoutMs}ms`,\n );\n expect((error as ExtractTimeoutError).name).toBe(\"ExtractTimeoutError\");\n }\n });\n\n it(\"stops LLM and post-processing when timeout expires\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: { \"1-0\": \"https://example.com\" },\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n\n // Allow snapshot but timeout before LLM\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ExtractTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.extract({\n instruction: \"extract links\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ExtractTimeoutError);\n\n // Post-processing (URL injection) never runs because LLM was never called\n expect(extractInferenceMock).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"ObserveHandler timeout guard\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ObserveTimeoutError when timeout expires before snapshot\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n\n // Throw immediately on first call\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ObserveTimeoutError(timeoutMs!);\n });\n },\n );\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ObserveTimeoutError);\n\n // Snapshot should NOT have been called\n expect(captureHybridSnapshotMock).not.toHaveBeenCalled();\n // LLM inference should NOT have been called\n expect(observeInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ObserveTimeoutError when timeout expires before LLM call\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n\n // Throw on call #2 (after snapshot but before LLM)\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ObserveTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ObserveTimeoutError);\n\n // Snapshot should have been called\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);\n // LLM inference should NOT have been called\n expect(observeInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ObserveTimeoutError with correct message format\", async () => {\n const timeoutMs = 150;\n\n vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory ? errorFactory(ms!) : new ObserveTimeoutError(ms!);\n });\n });\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n try {\n await handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n timeout: timeoutMs,\n });\n throw new Error(\"Expected ObserveTimeoutError to be thrown\");\n } catch (error) {\n expect(error).toBeInstanceOf(ObserveTimeoutError);\n expect((error as ObserveTimeoutError).message).toContain(\"observe()\");\n expect((error as ObserveTimeoutError).message).toContain(\n `${timeoutMs}ms`,\n );\n expect((error as ObserveTimeoutError).name).toBe(\"ObserveTimeoutError\");\n }\n });\n\n it(\"aborts result processing when timeout expires\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n\n // Timeout before LLM call\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ObserveTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.observe({\n instruction: \"find all interactive elements\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ObserveTimeoutError);\n\n // Result mapping/processing never happens\n expect(observeInferenceMock).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"No-timeout success paths\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"act() completes successfully without timeout and records metrics\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n reasoning_tokens: 10,\n cached_input_tokens: 5,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // No timeout - guard never throws\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const metricsCallback = vi.fn();\n const handler = buildActHandler({ onMetrics: metricsCallback });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.act({\n instruction: \"click button\",\n page: fakePage,\n // No timeout specified\n });\n\n expect(result.success).toBe(true);\n expect(metricsCallback).toHaveBeenCalledWith(\n V3FunctionName.ACT,\n 100,\n 50,\n 10,\n 5,\n 500,\n );\n });\n\n it(\"extract() completes successfully without timeout and records metrics\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n extractInferenceMock.mockResolvedValue({\n title: \"Test Title\",\n metadata: { completed: true, progress: \"100%\" },\n prompt_tokens: 200,\n completion_tokens: 100,\n reasoning_tokens: 20,\n cached_input_tokens: 10,\n inference_time_ms: 800,\n } as ReturnType<typeof extractInference> extends Promise<infer T>\n ? T\n : never);\n\n // No timeout - guard never throws\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const metricsCallback = vi.fn();\n const handler = buildExtractHandler({ onMetrics: metricsCallback });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n // No timeout specified\n });\n\n expect(result).toHaveProperty(\"title\", \"Test Title\");\n expect(metricsCallback).toHaveBeenCalledWith(\n V3FunctionName.EXTRACT,\n 200,\n 100,\n 20,\n 10,\n 800,\n );\n });\n\n it(\"observe() completes successfully without timeout and records metrics\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n observeInferenceMock.mockResolvedValue({\n elements: [\n {\n elementId: \"1-0\",\n description: \"Submit button\",\n },\n ],\n prompt_tokens: 150,\n completion_tokens: 75,\n reasoning_tokens: 15,\n cached_input_tokens: 8,\n inference_time_ms: 600,\n } as ReturnType<typeof observeInference> extends Promise<infer T>\n ? T\n : never);\n\n // No timeout - guard never throws\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const metricsCallback = vi.fn();\n const handler = buildObserveHandler({ onMetrics: metricsCallback });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n // No timeout specified\n });\n\n expect(result).toHaveLength(1);\n expect(result[0]).toHaveProperty(\"description\", \"Submit button\");\n expect(metricsCallback).toHaveBeenCalledWith(\n V3FunctionName.OBSERVE,\n 150,\n 75,\n 15,\n 8,\n 600,\n );\n });\n\n it(\"observe() forwards variables to inference and preserves placeholders\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/input\" },\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n observeInferenceMock.mockResolvedValue({\n elements: [\n {\n elementId: \"1-0\",\n description: \"Email field\",\n method: \"fill\",\n arguments: [\"%username%\"],\n },\n ],\n prompt_tokens: 150,\n completion_tokens: 75,\n reasoning_tokens: 15,\n cached_input_tokens: 8,\n inference_time_ms: 600,\n } as ReturnType<typeof observeInference> extends Promise<infer T>\n ? T\n : never);\n\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n const variables = {\n username: {\n value: \"john@example.com\",\n description: \"The login email\",\n },\n };\n\n const result = await handler.observe({\n instruction: \"find the field where %username% should be entered\",\n variables,\n page: fakePage,\n });\n\n expect(observeInferenceMock).toHaveBeenCalledWith(\n expect.objectContaining({\n variables,\n }),\n );\n expect(result).toHaveLength(1);\n expect(result[0]).toHaveProperty(\"arguments\");\n expect(result[0]?.arguments).toEqual([\"%username%\"]);\n });\n\n it(\"observe() forwards ignoreSelectors to snapshot capture\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n observeInferenceMock.mockResolvedValue({\n elements: [\n {\n elementId: \"1-0\",\n description: \"Submit button\",\n },\n ],\n } as ReturnType<typeof observeInference> extends Promise<infer T>\n ? T\n : never);\n\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await handler.observe({\n instruction: \"find buttons\",\n ignoreSelectors: [\".cookie-banner\", \"#sidebar-ads\"],\n page: fakePage,\n });\n\n expect(captureHybridSnapshotMock).toHaveBeenCalledWith(fakePage, {\n experimental: false,\n focusSelector: undefined,\n ignoreSelectors: [\".cookie-banner\", \"#sidebar-ads\"],\n });\n });\n\n it(\"act() with zero timeout behaves as no timeout\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // When timeout is 0 or negative, createTimeoutGuard returns a no-op\n vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs) => {\n if (!timeoutMs || timeoutMs <= 0) {\n return vi.fn(() => {\n // No-op\n });\n }\n return vi.fn(() => {\n throw new ActTimeoutError(timeoutMs);\n });\n });\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: 0, // Zero timeout should be treated as \"no timeout\"\n });\n\n expect(result.success).toBe(true);\n });\n\n it(\"act() with negative timeout behaves as no timeout\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs) => {\n if (!timeoutMs || timeoutMs <= 0) {\n return vi.fn(() => {\n // No-op\n });\n }\n return vi.fn(() => {\n throw new ActTimeoutError(timeoutMs);\n });\n });\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: -100, // Negative timeout should be treated as \"no timeout\"\n });\n\n expect(result.success).toBe(true);\n });\n});\n\ninterface BuildActHandlerOptions {\n selfHeal?: boolean;\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n}\n\nfunction buildActHandler(options: BuildActHandlerOptions = {}): ActHandler {\n const defaultClientOptions = {} as ClientOptions;\n const fakeClient = {\n type: \"openai\",\n modelName: \"gpt-4o\",\n clientOptions: defaultClientOptions,\n } as LLMClient;\n const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);\n\n return new ActHandler(\n fakeClient,\n \"gpt-4o\",\n defaultClientOptions,\n resolveLlmClient,\n undefined,\n false,\n options.selfHeal ?? false,\n options.onMetrics,\n undefined,\n );\n}\n\ninterface BuildExtractHandlerOptions {\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n}\n\nfunction buildExtractHandler(\n options: BuildExtractHandlerOptions = {},\n): ExtractHandler {\n const defaultClientOptions = {} as ClientOptions;\n const fakeClient = {\n type: \"openai\",\n modelName: \"gpt-4o\",\n clientOptions: defaultClientOptions,\n } as LLMClient;\n const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);\n\n return new ExtractHandler(\n fakeClient,\n \"gpt-4o\",\n defaultClientOptions,\n resolveLlmClient,\n undefined,\n false,\n false,\n options.onMetrics,\n );\n}\n\ninterface BuildObserveHandlerOptions {\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n}\n\nfunction buildObserveHandler(\n options: BuildObserveHandlerOptions = {},\n): ObserveHandler {\n const defaultClientOptions = {} as ClientOptions;\n const fakeClient = {\n type: \"openai\",\n modelName: \"gpt-4o\",\n clientOptions: defaultClientOptions,\n } as LLMClient;\n const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);\n\n return new ObserveHandler(\n fakeClient,\n \"gpt-4o\",\n defaultClientOptions,\n resolveLlmClient,\n undefined,\n false,\n false,\n options.onMetrics,\n );\n}\n"]}
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const sdkErrors_js_1 = require("../../lib/v3/types/public/sdkErrors.js");
5
- (0, vitest_1.describe)("UnderstudyCommandException", () => {
6
- (0, vitest_1.it)("extends StagehandError", () => {
7
- const err = new sdkErrors_js_1.UnderstudyCommandException("test");
8
- (0, vitest_1.expect)(err).toBeInstanceOf(sdkErrors_js_1.StagehandError);
9
- (0, vitest_1.expect)(err).toBeInstanceOf(Error);
10
- });
11
- (0, vitest_1.it)("has the correct name", () => {
12
- const err = new sdkErrors_js_1.UnderstudyCommandException("test");
13
- (0, vitest_1.expect)(err.name).toBe("UnderstudyCommandException");
14
- });
15
- (0, vitest_1.it)("preserves the message", () => {
16
- const err = new sdkErrors_js_1.UnderstudyCommandException("something broke");
17
- (0, vitest_1.expect)(err.message).toBe("something broke");
18
- });
19
- (0, vitest_1.it)("stores the original error as cause when provided", () => {
20
- const original = new Error("root cause");
21
- const err = new sdkErrors_js_1.UnderstudyCommandException("wrapper message", original);
22
- (0, vitest_1.expect)(err.cause).toBe(original);
23
- (0, vitest_1.expect)(err.cause.message).toBe("root cause");
24
- (0, vitest_1.expect)(err.cause.stack).toBeDefined();
25
- });
26
- (0, vitest_1.it)("stores non-Error cause values", () => {
27
- const err = new sdkErrors_js_1.UnderstudyCommandException("failed", "string cause");
28
- (0, vitest_1.expect)(err.cause).toBe("string cause");
29
- });
30
- (0, vitest_1.it)("has undefined cause when none is provided", () => {
31
- const err = new sdkErrors_js_1.UnderstudyCommandException("no cause");
32
- (0, vitest_1.expect)(err.cause).toBeUndefined();
33
- });
34
- (0, vitest_1.it)("generates its own stack trace", () => {
35
- const err = new sdkErrors_js_1.UnderstudyCommandException("test");
36
- (0, vitest_1.expect)(err.stack).toBeDefined();
37
- (0, vitest_1.expect)(err.stack).toContain("UnderstudyCommandException");
38
- });
39
- (0, vitest_1.it)("preserves the original stack via cause for debugging", () => {
40
- function deepFunction() {
41
- throw new Error("deep error");
42
- }
43
- let original;
44
- try {
45
- deepFunction();
46
- }
47
- catch (e) {
48
- original = e;
49
- }
50
- const wrapped = new sdkErrors_js_1.UnderstudyCommandException(original.message, original);
51
- // The wrapper has its own stack
52
- (0, vitest_1.expect)(wrapped.stack).toBeDefined();
53
- // The original stack is accessible via cause
54
- (0, vitest_1.expect)(wrapped.cause.stack).toContain("deepFunction");
55
- });
56
- });
57
- //# sourceMappingURL=understudy-command-exception.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"understudy-command-exception.test.js","sourceRoot":"","sources":["../../../../tests/unit/understudy-command-exception.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport {\n UnderstudyCommandException,\n StagehandError,\n} from \"../../lib/v3/types/public/sdkErrors.js\";\n\ndescribe(\"UnderstudyCommandException\", () => {\n it(\"extends StagehandError\", () => {\n const err = new UnderstudyCommandException(\"test\");\n expect(err).toBeInstanceOf(StagehandError);\n expect(err).toBeInstanceOf(Error);\n });\n\n it(\"has the correct name\", () => {\n const err = new UnderstudyCommandException(\"test\");\n expect(err.name).toBe(\"UnderstudyCommandException\");\n });\n\n it(\"preserves the message\", () => {\n const err = new UnderstudyCommandException(\"something broke\");\n expect(err.message).toBe(\"something broke\");\n });\n\n it(\"stores the original error as cause when provided\", () => {\n const original = new Error(\"root cause\");\n const err = new UnderstudyCommandException(\"wrapper message\", original);\n\n expect(err.cause).toBe(original);\n expect((err.cause as Error).message).toBe(\"root cause\");\n expect((err.cause as Error).stack).toBeDefined();\n });\n\n it(\"stores non-Error cause values\", () => {\n const err = new UnderstudyCommandException(\"failed\", \"string cause\");\n expect(err.cause).toBe(\"string cause\");\n });\n\n it(\"has undefined cause when none is provided\", () => {\n const err = new UnderstudyCommandException(\"no cause\");\n expect(err.cause).toBeUndefined();\n });\n\n it(\"generates its own stack trace\", () => {\n const err = new UnderstudyCommandException(\"test\");\n expect(err.stack).toBeDefined();\n expect(err.stack).toContain(\"UnderstudyCommandException\");\n });\n\n it(\"preserves the original stack via cause for debugging\", () => {\n function deepFunction() {\n throw new Error(\"deep error\");\n }\n\n let original: Error;\n try {\n deepFunction();\n } catch (e) {\n original = e as Error;\n }\n\n const wrapped = new UnderstudyCommandException(original!.message, original);\n\n // The wrapper has its own stack\n expect(wrapped.stack).toBeDefined();\n // The original stack is accessible via cause\n expect((wrapped.cause as Error).stack).toContain(\"deepFunction\");\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,311 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const xpathParser_js_1 = require("../../lib/v3/dom/locatorScripts/xpathParser.js");
5
- (0, vitest_1.describe)("parseXPathSteps", () => {
6
- (0, vitest_1.describe)("basic tag parsing", () => {
7
- (0, vitest_1.it)("parses a simple absolute path", () => {
8
- (0, vitest_1.expect)((0, xpathParser_js_1.parseXPathSteps)("/html/body/div")).toEqual([
9
- { axis: "child", tag: "html", predicates: [] },
10
- { axis: "child", tag: "body", predicates: [] },
11
- { axis: "child", tag: "div", predicates: [] },
12
- ]);
13
- });
14
- (0, vitest_1.it)("lowercases tag names", () => {
15
- const steps = (0, xpathParser_js_1.parseXPathSteps)("/HTML/BODY");
16
- (0, vitest_1.expect)(steps[0].tag).toBe("html");
17
- (0, vitest_1.expect)(steps[1].tag).toBe("body");
18
- });
19
- (0, vitest_1.it)("treats wildcard correctly", () => {
20
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//*");
21
- (0, vitest_1.expect)(steps).toEqual([{ axis: "desc", tag: "*", predicates: [] }]);
22
- });
23
- });
24
- (0, vitest_1.describe)("axes", () => {
25
- (0, vitest_1.it)("distinguishes child (/) from descendant (//)", () => {
26
- const steps = (0, xpathParser_js_1.parseXPathSteps)("/html//div/span");
27
- (0, vitest_1.expect)(steps).toEqual([
28
- { axis: "child", tag: "html", predicates: [] },
29
- { axis: "desc", tag: "div", predicates: [] },
30
- { axis: "child", tag: "span", predicates: [] },
31
- ]);
32
- });
33
- (0, vitest_1.it)("handles leading //", () => {
34
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div");
35
- (0, vitest_1.expect)(steps[0].axis).toBe("desc");
36
- });
37
- });
38
- (0, vitest_1.describe)("positional indices", () => {
39
- (0, vitest_1.it)("parses positional index", () => {
40
- const steps = (0, xpathParser_js_1.parseXPathSteps)("/div[1]/span[3]");
41
- (0, vitest_1.expect)(steps[0]).toMatchObject({
42
- tag: "div",
43
- predicates: [{ type: "index", index: 1 }],
44
- });
45
- (0, vitest_1.expect)(steps[1]).toMatchObject({
46
- tag: "span",
47
- predicates: [{ type: "index", index: 3 }],
48
- });
49
- });
50
- (0, vitest_1.it)("clamps index to minimum 1", () => {
51
- const steps = (0, xpathParser_js_1.parseXPathSteps)("/div[0]");
52
- (0, vitest_1.expect)(steps[0].predicates[0]).toMatchObject({
53
- type: "index",
54
- index: 1,
55
- });
56
- });
57
- (0, vitest_1.it)("keeps multiple positional predicates in order", () => {
58
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[2][3]");
59
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
60
- { type: "index", index: 2 },
61
- { type: "index", index: 3 },
62
- ]);
63
- });
64
- });
65
- (0, vitest_1.describe)("attribute predicates", () => {
66
- (0, vitest_1.it)("parses single attribute predicate with single quotes", () => {
67
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//img[@alt='Stagehand']");
68
- (0, vitest_1.expect)(steps).toEqual([
69
- {
70
- axis: "desc",
71
- tag: "img",
72
- predicates: [{ type: "attrEquals", name: "alt", value: "Stagehand" }],
73
- },
74
- ]);
75
- });
76
- (0, vitest_1.it)("parses single attribute predicate with double quotes", () => {
77
- const steps = (0, xpathParser_js_1.parseXPathSteps)('//img[@alt="Stagehand"]');
78
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
79
- { type: "attrEquals", name: "alt", value: "Stagehand" },
80
- ]);
81
- });
82
- (0, vitest_1.it)("parses multiple attribute predicates", () => {
83
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@class='foo'][@id='bar']");
84
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
85
- { type: "attrEquals", name: "class", value: "foo" },
86
- { type: "attrEquals", name: "id", value: "bar" },
87
- ]);
88
- });
89
- (0, vitest_1.it)("parses attribute predicate combined with positional index", () => {
90
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@class='item'][2]");
91
- (0, vitest_1.expect)(steps[0]).toMatchObject({
92
- tag: "div",
93
- predicates: [
94
- { type: "attrEquals", name: "class", value: "item" },
95
- { type: "index", index: 2 },
96
- ],
97
- });
98
- });
99
- (0, vitest_1.it)("parses attribute with hyphenated name", () => {
100
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@data-testid='submit']");
101
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
102
- { type: "attrEquals", name: "data-testid", value: "submit" },
103
- ]);
104
- });
105
- (0, vitest_1.it)("parses attribute with empty value", () => {
106
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//input[@value='']");
107
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
108
- { type: "attrEquals", name: "value", value: "" },
109
- ]);
110
- });
111
- (0, vitest_1.it)("parses attribute value containing closing bracket", () => {
112
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@title='array[0]']");
113
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
114
- { type: "attrEquals", name: "title", value: "array[0]" },
115
- ]);
116
- });
117
- (0, vitest_1.it)("parses attribute value containing multiple brackets", () => {
118
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@data-json='[1,2,3]']");
119
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
120
- { type: "attrEquals", name: "data-json", value: "[1,2,3]" },
121
- ]);
122
- });
123
- (0, vitest_1.it)("parses attribute value containing a closing bracket", () => {
124
- // The step splitter should ignore ] characters inside quotes.
125
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@title='a]b']/span");
126
- (0, vitest_1.expect)(steps).toEqual([
127
- {
128
- axis: "desc",
129
- tag: "div",
130
- predicates: [{ type: "attrEquals", name: "title", value: "a]b" }],
131
- },
132
- { axis: "child", tag: "span", predicates: [] },
133
- ]);
134
- });
135
- (0, vitest_1.it)("parses attribute existence predicates", () => {
136
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//iframe[@data-test]");
137
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
138
- { type: "attrExists", name: "data-test" },
139
- ]);
140
- });
141
- (0, vitest_1.it)("parses attribute contains predicates", () => {
142
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//iframe[contains(@src,'checkout')]");
143
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
144
- { type: "attrContains", name: "src", value: "checkout" },
145
- ]);
146
- });
147
- (0, vitest_1.it)("parses attribute starts-with predicates", () => {
148
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//button[starts-with(@id,'save-')]");
149
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
150
- { type: "attrStartsWith", name: "id", value: "save-" },
151
- ]);
152
- });
153
- });
154
- (0, vitest_1.describe)("text predicates", () => {
155
- (0, vitest_1.it)("parses text equality", () => {
156
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//button[text()='Submit']");
157
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
158
- { type: "textEquals", value: "Submit" },
159
- ]);
160
- });
161
- (0, vitest_1.it)("parses text contains", () => {
162
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[contains(text(),'Welcome')]");
163
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
164
- { type: "textContains", value: "Welcome" },
165
- ]);
166
- });
167
- (0, vitest_1.it)("parses normalize-space on text", () => {
168
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[normalize-space(text())='Hello world']");
169
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
170
- { type: "textEquals", value: "Hello world", normalize: true },
171
- ]);
172
- });
173
- });
174
- (0, vitest_1.describe)("boolean predicates", () => {
175
- (0, vitest_1.it)("parses and predicates", () => {
176
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@a='x' and @b='y']");
177
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
178
- {
179
- type: "and",
180
- predicates: [
181
- { type: "attrEquals", name: "a", value: "x" },
182
- { type: "attrEquals", name: "b", value: "y" },
183
- ],
184
- },
185
- ]);
186
- });
187
- (0, vitest_1.it)("parses operators without surrounding whitespace", () => {
188
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[not(@x)and@y='z']");
189
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
190
- {
191
- type: "and",
192
- predicates: [
193
- { type: "not", predicate: { type: "attrExists", name: "x" } },
194
- { type: "attrEquals", name: "y", value: "z" },
195
- ],
196
- },
197
- ]);
198
- });
199
- (0, vitest_1.it)("parses or predicates", () => {
200
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@a='x' or @b='y']");
201
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
202
- {
203
- type: "or",
204
- predicates: [
205
- { type: "attrEquals", name: "a", value: "x" },
206
- { type: "attrEquals", name: "b", value: "y" },
207
- ],
208
- },
209
- ]);
210
- });
211
- (0, vitest_1.it)("parses not predicates", () => {
212
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//button[not(@disabled)]");
213
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
214
- { type: "not", predicate: { type: "attrExists", name: "disabled" } },
215
- ]);
216
- });
217
- (0, vitest_1.it)("does not treat @and as a boolean operator", () => {
218
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//div[@and='x' and @y='z']");
219
- (0, vitest_1.expect)(steps[0].predicates).toEqual([
220
- {
221
- type: "and",
222
- predicates: [
223
- { type: "attrEquals", name: "and", value: "x" },
224
- { type: "attrEquals", name: "y", value: "z" },
225
- ],
226
- },
227
- ]);
228
- });
229
- });
230
- (0, vitest_1.describe)("multi-step with predicates", () => {
231
- (0, vitest_1.it)("parses complex path with mixed predicates", () => {
232
- const steps = (0, xpathParser_js_1.parseXPathSteps)("/html/body//div[@class='container']/ul/li[3]");
233
- (0, vitest_1.expect)(steps).toEqual([
234
- { axis: "child", tag: "html", predicates: [] },
235
- { axis: "child", tag: "body", predicates: [] },
236
- {
237
- axis: "desc",
238
- tag: "div",
239
- predicates: [
240
- { type: "attrEquals", name: "class", value: "container" },
241
- ],
242
- },
243
- { axis: "child", tag: "ul", predicates: [] },
244
- { axis: "child", tag: "li", predicates: [{ type: "index", index: 3 }] },
245
- ]);
246
- });
247
- });
248
- (0, vitest_1.describe)("edge cases", () => {
249
- (0, vitest_1.it)("returns empty array for empty string", () => {
250
- (0, vitest_1.expect)((0, xpathParser_js_1.parseXPathSteps)("")).toEqual([]);
251
- });
252
- (0, vitest_1.it)("strips xpath= prefix", () => {
253
- const steps = (0, xpathParser_js_1.parseXPathSteps)("xpath=//div");
254
- (0, vitest_1.expect)(steps).toEqual([{ axis: "desc", tag: "div", predicates: [] }]);
255
- });
256
- (0, vitest_1.it)("strips XPATH= prefix (case-insensitive)", () => {
257
- const steps = (0, xpathParser_js_1.parseXPathSteps)("XPATH=//div");
258
- (0, vitest_1.expect)(steps).toEqual([{ axis: "desc", tag: "div", predicates: [] }]);
259
- });
260
- (0, vitest_1.it)("handles forward slashes inside attribute values", () => {
261
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//a[@href='/api/endpoint']");
262
- (0, vitest_1.expect)(steps).toEqual([
263
- {
264
- axis: "desc",
265
- tag: "a",
266
- predicates: [
267
- { type: "attrEquals", name: "href", value: "/api/endpoint" },
268
- ],
269
- },
270
- ]);
271
- });
272
- (0, vitest_1.it)("handles URL attribute values with multiple slashes", () => {
273
- const steps = (0, xpathParser_js_1.parseXPathSteps)("//a[@data-url='http://example.com/path/to/page']");
274
- (0, vitest_1.expect)(steps).toEqual([
275
- {
276
- axis: "desc",
277
- tag: "a",
278
- predicates: [
279
- {
280
- type: "attrEquals",
281
- name: "data-url",
282
- value: "http://example.com/path/to/page",
283
- },
284
- ],
285
- },
286
- ]);
287
- });
288
- (0, vitest_1.it)("handles whitespace", () => {
289
- const steps = (0, xpathParser_js_1.parseXPathSteps)(" //div ");
290
- (0, vitest_1.expect)(steps.length).toBe(1);
291
- (0, vitest_1.expect)(steps[0].tag).toBe("div");
292
- });
293
- });
294
- });
295
- (0, vitest_1.describe)("applyPredicates", () => {
296
- const makeElement = (id) => {
297
- return {
298
- localName: "div",
299
- getAttribute: (name) => (name === "id" ? id : null),
300
- };
301
- };
302
- (0, vitest_1.it)("applies positional predicates sequentially", () => {
303
- const elements = ["a", "b", "c", "d"].map(makeElement);
304
- const predicates = [
305
- { type: "index", index: 2 },
306
- { type: "index", index: 3 },
307
- ];
308
- (0, vitest_1.expect)((0, xpathParser_js_1.applyPredicates)(elements, predicates)).toEqual([]);
309
- });
310
- });
311
- //# sourceMappingURL=xpath-parser.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xpath-parser.test.js","sourceRoot":"","sources":["../../../../tests/unit/xpath-parser.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,mFAIwD;AAExD,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,IAAA,eAAM,EAAC,IAAA,gCAAe,EAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;gBAChD,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,YAAY,CAAC,CAAC;YAC5C,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,KAAK,CAAC,CAAC;YACrC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,MAAM,EAAE,GAAG,EAAE;QACpB,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,iBAAiB,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBACpB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC5C,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,OAAO,CAAC,CAAC;YACvC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,iBAAiB,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC7B,GAAG,EAAE,KAAK;gBACV,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAC1C,CAAC,CAAC;YACH,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC7B,GAAG,EAAE,MAAM;gBACX,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,SAAS,CAAC,CAAC;YACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC3C,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,aAAa,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC3B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,yBAAyB,CAAC,CAAC;YACzD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBACpB;oBACE,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,KAAK;oBACV,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;iBACtE;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,yBAAyB,CAAC,CAAC;YACzD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;aACxD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,gCAAgC,CAAC,CAAC;YAChE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gBACnD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;aACjD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,yBAAyB,CAAC,CAAC;YACzD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC7B,GAAG,EAAE,KAAK;gBACV,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;oBACpD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;iBAC5B;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,8BAA8B,CAAC,CAAC;YAC9D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE;aAC7D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,oBAAoB,CAAC,CAAC;YACpD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;aACjD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;aACzD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,6BAA6B,CAAC,CAAC;YAC7D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;aAC5D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,8DAA8D;YAC9D,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBACpB;oBACE,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,KAAK;oBACV,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;iBAClE;gBACD,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,sBAAsB,CAAC,CAAC;YACtD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,qCAAqC,CAAC,CAAC;YACrE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;aACzD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,oCAAoC,CAAC,CAAC;YACpE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;aACvD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,2BAA2B,CAAC,CAAC;YAC3D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE;aACxC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,mCAAmC,CAAC,CAAC;YACnE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;aAC3C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,KAAK,GAAG,IAAA,gCAAe,EAC3B,8CAA8C,CAC/C,CAAC;YACF,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC;oBACE,IAAI,EAAE,KAAK;oBACX,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;wBAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;qBAC9C;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,yBAAyB,CAAC,CAAC;YACzD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC;oBACE,IAAI,EAAE,KAAK;oBACX,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;wBAC7D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;qBAC9C;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,yBAAyB,CAAC,CAAC;YACzD,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC;oBACE,IAAI,EAAE,IAAI;oBACV,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;wBAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;qBAC9C;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;aACrE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,4BAA4B,CAAC,CAAC;YAC5D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAClC;oBACE,IAAI,EAAE,KAAK;oBACX,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;wBAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;qBAC9C;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAC3B,8CAA8C,CAC/C,CAAC;YACF,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBACpB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9C;oBACE,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,KAAK;oBACV,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;qBAC1D;iBACF;gBACD,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC5C,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,IAAA,eAAM,EAAC,IAAA,gCAAe,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,aAAa,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,aAAa,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,4BAA4B,CAAC,CAAC;YAC5D,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBACpB;oBACE,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,GAAG;oBACR,UAAU,EAAE;wBACV,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE;qBAC7D;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,KAAK,GAAG,IAAA,gCAAe,EAC3B,kDAAkD,CACnD,CAAC;YACF,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBACpB;oBACE,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,GAAG;oBACR,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,YAAY;4BAClB,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,iCAAiC;yBACzC;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAA,gCAAe,EAAC,WAAW,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,WAAW,GAAG,CAAC,EAAU,EAAW,EAAE;QAC1C,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACtC,CAAC;IAC1B,CAAC,CAAC;IAEF,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,UAAU,GAAqB;YACnC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;YAC3B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;SAC5B,CAAC;QACF,IAAA,eAAM,EAAC,IAAA,gCAAe,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport {\n applyPredicates,\n parseXPathSteps,\n type XPathPredicate,\n} from \"../../lib/v3/dom/locatorScripts/xpathParser.js\";\n\ndescribe(\"parseXPathSteps\", () => {\n describe(\"basic tag parsing\", () => {\n it(\"parses a simple absolute path\", () => {\n expect(parseXPathSteps(\"/html/body/div\")).toEqual([\n { axis: \"child\", tag: \"html\", predicates: [] },\n { axis: \"child\", tag: \"body\", predicates: [] },\n { axis: \"child\", tag: \"div\", predicates: [] },\n ]);\n });\n\n it(\"lowercases tag names\", () => {\n const steps = parseXPathSteps(\"/HTML/BODY\");\n expect(steps[0].tag).toBe(\"html\");\n expect(steps[1].tag).toBe(\"body\");\n });\n\n it(\"treats wildcard correctly\", () => {\n const steps = parseXPathSteps(\"//*\");\n expect(steps).toEqual([{ axis: \"desc\", tag: \"*\", predicates: [] }]);\n });\n });\n\n describe(\"axes\", () => {\n it(\"distinguishes child (/) from descendant (//)\", () => {\n const steps = parseXPathSteps(\"/html//div/span\");\n expect(steps).toEqual([\n { axis: \"child\", tag: \"html\", predicates: [] },\n { axis: \"desc\", tag: \"div\", predicates: [] },\n { axis: \"child\", tag: \"span\", predicates: [] },\n ]);\n });\n\n it(\"handles leading //\", () => {\n const steps = parseXPathSteps(\"//div\");\n expect(steps[0].axis).toBe(\"desc\");\n });\n });\n\n describe(\"positional indices\", () => {\n it(\"parses positional index\", () => {\n const steps = parseXPathSteps(\"/div[1]/span[3]\");\n expect(steps[0]).toMatchObject({\n tag: \"div\",\n predicates: [{ type: \"index\", index: 1 }],\n });\n expect(steps[1]).toMatchObject({\n tag: \"span\",\n predicates: [{ type: \"index\", index: 3 }],\n });\n });\n\n it(\"clamps index to minimum 1\", () => {\n const steps = parseXPathSteps(\"/div[0]\");\n expect(steps[0].predicates[0]).toMatchObject({\n type: \"index\",\n index: 1,\n });\n });\n\n it(\"keeps multiple positional predicates in order\", () => {\n const steps = parseXPathSteps(\"//div[2][3]\");\n expect(steps[0].predicates).toEqual([\n { type: \"index\", index: 2 },\n { type: \"index\", index: 3 },\n ]);\n });\n });\n\n describe(\"attribute predicates\", () => {\n it(\"parses single attribute predicate with single quotes\", () => {\n const steps = parseXPathSteps(\"//img[@alt='Stagehand']\");\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"img\",\n predicates: [{ type: \"attrEquals\", name: \"alt\", value: \"Stagehand\" }],\n },\n ]);\n });\n\n it(\"parses single attribute predicate with double quotes\", () => {\n const steps = parseXPathSteps('//img[@alt=\"Stagehand\"]');\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"alt\", value: \"Stagehand\" },\n ]);\n });\n\n it(\"parses multiple attribute predicates\", () => {\n const steps = parseXPathSteps(\"//div[@class='foo'][@id='bar']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"class\", value: \"foo\" },\n { type: \"attrEquals\", name: \"id\", value: \"bar\" },\n ]);\n });\n\n it(\"parses attribute predicate combined with positional index\", () => {\n const steps = parseXPathSteps(\"//div[@class='item'][2]\");\n expect(steps[0]).toMatchObject({\n tag: \"div\",\n predicates: [\n { type: \"attrEquals\", name: \"class\", value: \"item\" },\n { type: \"index\", index: 2 },\n ],\n });\n });\n\n it(\"parses attribute with hyphenated name\", () => {\n const steps = parseXPathSteps(\"//div[@data-testid='submit']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"data-testid\", value: \"submit\" },\n ]);\n });\n\n it(\"parses attribute with empty value\", () => {\n const steps = parseXPathSteps(\"//input[@value='']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"value\", value: \"\" },\n ]);\n });\n\n it(\"parses attribute value containing closing bracket\", () => {\n const steps = parseXPathSteps(\"//div[@title='array[0]']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"title\", value: \"array[0]\" },\n ]);\n });\n\n it(\"parses attribute value containing multiple brackets\", () => {\n const steps = parseXPathSteps(\"//div[@data-json='[1,2,3]']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"data-json\", value: \"[1,2,3]\" },\n ]);\n });\n\n it(\"parses attribute value containing a closing bracket\", () => {\n // The step splitter should ignore ] characters inside quotes.\n const steps = parseXPathSteps(\"//div[@title='a]b']/span\");\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"div\",\n predicates: [{ type: \"attrEquals\", name: \"title\", value: \"a]b\" }],\n },\n { axis: \"child\", tag: \"span\", predicates: [] },\n ]);\n });\n\n it(\"parses attribute existence predicates\", () => {\n const steps = parseXPathSteps(\"//iframe[@data-test]\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrExists\", name: \"data-test\" },\n ]);\n });\n\n it(\"parses attribute contains predicates\", () => {\n const steps = parseXPathSteps(\"//iframe[contains(@src,'checkout')]\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrContains\", name: \"src\", value: \"checkout\" },\n ]);\n });\n\n it(\"parses attribute starts-with predicates\", () => {\n const steps = parseXPathSteps(\"//button[starts-with(@id,'save-')]\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrStartsWith\", name: \"id\", value: \"save-\" },\n ]);\n });\n });\n\n describe(\"text predicates\", () => {\n it(\"parses text equality\", () => {\n const steps = parseXPathSteps(\"//button[text()='Submit']\");\n expect(steps[0].predicates).toEqual([\n { type: \"textEquals\", value: \"Submit\" },\n ]);\n });\n\n it(\"parses text contains\", () => {\n const steps = parseXPathSteps(\"//div[contains(text(),'Welcome')]\");\n expect(steps[0].predicates).toEqual([\n { type: \"textContains\", value: \"Welcome\" },\n ]);\n });\n\n it(\"parses normalize-space on text\", () => {\n const steps = parseXPathSteps(\n \"//div[normalize-space(text())='Hello world']\",\n );\n expect(steps[0].predicates).toEqual([\n { type: \"textEquals\", value: \"Hello world\", normalize: true },\n ]);\n });\n });\n\n describe(\"boolean predicates\", () => {\n it(\"parses and predicates\", () => {\n const steps = parseXPathSteps(\"//div[@a='x' and @b='y']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"and\",\n predicates: [\n { type: \"attrEquals\", name: \"a\", value: \"x\" },\n { type: \"attrEquals\", name: \"b\", value: \"y\" },\n ],\n },\n ]);\n });\n\n it(\"parses operators without surrounding whitespace\", () => {\n const steps = parseXPathSteps(\"//div[not(@x)and@y='z']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"and\",\n predicates: [\n { type: \"not\", predicate: { type: \"attrExists\", name: \"x\" } },\n { type: \"attrEquals\", name: \"y\", value: \"z\" },\n ],\n },\n ]);\n });\n\n it(\"parses or predicates\", () => {\n const steps = parseXPathSteps(\"//div[@a='x' or @b='y']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"or\",\n predicates: [\n { type: \"attrEquals\", name: \"a\", value: \"x\" },\n { type: \"attrEquals\", name: \"b\", value: \"y\" },\n ],\n },\n ]);\n });\n\n it(\"parses not predicates\", () => {\n const steps = parseXPathSteps(\"//button[not(@disabled)]\");\n expect(steps[0].predicates).toEqual([\n { type: \"not\", predicate: { type: \"attrExists\", name: \"disabled\" } },\n ]);\n });\n\n it(\"does not treat @and as a boolean operator\", () => {\n const steps = parseXPathSteps(\"//div[@and='x' and @y='z']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"and\",\n predicates: [\n { type: \"attrEquals\", name: \"and\", value: \"x\" },\n { type: \"attrEquals\", name: \"y\", value: \"z\" },\n ],\n },\n ]);\n });\n });\n\n describe(\"multi-step with predicates\", () => {\n it(\"parses complex path with mixed predicates\", () => {\n const steps = parseXPathSteps(\n \"/html/body//div[@class='container']/ul/li[3]\",\n );\n expect(steps).toEqual([\n { axis: \"child\", tag: \"html\", predicates: [] },\n { axis: \"child\", tag: \"body\", predicates: [] },\n {\n axis: \"desc\",\n tag: \"div\",\n predicates: [\n { type: \"attrEquals\", name: \"class\", value: \"container\" },\n ],\n },\n { axis: \"child\", tag: \"ul\", predicates: [] },\n { axis: \"child\", tag: \"li\", predicates: [{ type: \"index\", index: 3 }] },\n ]);\n });\n });\n\n describe(\"edge cases\", () => {\n it(\"returns empty array for empty string\", () => {\n expect(parseXPathSteps(\"\")).toEqual([]);\n });\n\n it(\"strips xpath= prefix\", () => {\n const steps = parseXPathSteps(\"xpath=//div\");\n expect(steps).toEqual([{ axis: \"desc\", tag: \"div\", predicates: [] }]);\n });\n\n it(\"strips XPATH= prefix (case-insensitive)\", () => {\n const steps = parseXPathSteps(\"XPATH=//div\");\n expect(steps).toEqual([{ axis: \"desc\", tag: \"div\", predicates: [] }]);\n });\n\n it(\"handles forward slashes inside attribute values\", () => {\n const steps = parseXPathSteps(\"//a[@href='/api/endpoint']\");\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"a\",\n predicates: [\n { type: \"attrEquals\", name: \"href\", value: \"/api/endpoint\" },\n ],\n },\n ]);\n });\n\n it(\"handles URL attribute values with multiple slashes\", () => {\n const steps = parseXPathSteps(\n \"//a[@data-url='http://example.com/path/to/page']\",\n );\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"a\",\n predicates: [\n {\n type: \"attrEquals\",\n name: \"data-url\",\n value: \"http://example.com/path/to/page\",\n },\n ],\n },\n ]);\n });\n\n it(\"handles whitespace\", () => {\n const steps = parseXPathSteps(\" //div \");\n expect(steps.length).toBe(1);\n expect(steps[0].tag).toBe(\"div\");\n });\n });\n});\n\ndescribe(\"applyPredicates\", () => {\n const makeElement = (id: string): Element => {\n return {\n localName: \"div\",\n getAttribute: (name: string) => (name === \"id\" ? id : null),\n } as unknown as Element;\n };\n\n it(\"applies positional predicates sequentially\", () => {\n const elements = [\"a\", \"b\", \"c\", \"d\"].map(makeElement);\n const predicates: XPathPredicate[] = [\n { type: \"index\", index: 2 },\n { type: \"index\", index: 3 },\n ];\n expect(applyPredicates(elements, predicates)).toEqual([]);\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};