@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,898 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from "vitest";
2
- import { ActHandler } from "../../lib/v3/handlers/actHandler.js";
3
- import { ExtractHandler } from "../../lib/v3/handlers/extractHandler.js";
4
- import { ObserveHandler } from "../../lib/v3/handlers/observeHandler.js";
5
- import { createTimeoutGuard } from "../../lib/v3/handlers/handlerUtils/timeoutGuard.js";
6
- import { waitForDomNetworkQuiet } from "../../lib/v3/handlers/handlerUtils/actHandlerUtils.js";
7
- import { captureHybridSnapshot } from "../../lib/v3/understudy/a11y/snapshot/index.js";
8
- import { ActTimeoutError, ExtractTimeoutError, ObserveTimeoutError, } from "../../lib/v3/types/public/sdkErrors.js";
9
- import { act as actInference, extract as extractInference, observe as observeInference, } from "../../lib/inference.js";
10
- import { V3FunctionName } from "../../lib/v3/types/public/methods.js";
11
- vi.mock("../../lib/v3/handlers/handlerUtils/timeoutGuard", () => ({
12
- createTimeoutGuard: vi.fn(),
13
- }));
14
- vi.mock("../../lib/v3/handlers/handlerUtils/actHandlerUtils", () => ({
15
- waitForDomNetworkQuiet: vi.fn(),
16
- performUnderstudyMethod: vi.fn(),
17
- }));
18
- vi.mock("../../lib/v3/understudy/a11y/snapshot", () => ({
19
- captureHybridSnapshot: vi.fn(),
20
- diffCombinedTrees: vi.fn(),
21
- }));
22
- vi.mock("../../lib/inference", () => ({
23
- act: vi.fn(),
24
- extract: vi.fn(),
25
- observe: vi.fn(),
26
- }));
27
- describe("ActHandler timeout guard", () => {
28
- beforeEach(() => {
29
- vi.clearAllMocks();
30
- });
31
- it("throws ActTimeoutError when timeout expires before snapshot", async () => {
32
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
33
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
34
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
35
- captureHybridSnapshotMock.mockResolvedValue({
36
- combinedTree: "",
37
- combinedXpathMap: {},
38
- combinedUrlMap: {},
39
- });
40
- // Make createTimeoutGuard return a guard that throws on call #2
41
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
42
- let calls = 0;
43
- return vi.fn(() => {
44
- calls += 1;
45
- if (calls >= 2) {
46
- throw errorFactory
47
- ? errorFactory(timeoutMs)
48
- : new ActTimeoutError(timeoutMs);
49
- }
50
- });
51
- });
52
- const handler = buildActHandler();
53
- const fakePage = {
54
- mainFrame: vi.fn().mockReturnValue({}),
55
- };
56
- await expect(handler.act({
57
- instruction: "do something",
58
- page: fakePage,
59
- timeout: 5,
60
- })).rejects.toThrow(ActTimeoutError);
61
- // Verify pre-timeout helper ran
62
- expect(waitForDomNetworkQuietMock).toHaveBeenCalledTimes(1);
63
- // Verify snapshot was NOT called (timeout fired before it)
64
- expect(captureHybridSnapshotMock).not.toHaveBeenCalled();
65
- });
66
- it("throws ActTimeoutError when timeout expires before LLM call", async () => {
67
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
68
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
69
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
70
- captureHybridSnapshotMock.mockResolvedValue({
71
- combinedTree: "tree content",
72
- combinedXpathMap: {},
73
- combinedUrlMap: {},
74
- });
75
- const actInferenceMock = vi.mocked(actInference);
76
- // Throw on call #3 (after snapshot but before LLM)
77
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
78
- let calls = 0;
79
- return vi.fn(() => {
80
- calls += 1;
81
- if (calls >= 3) {
82
- throw errorFactory
83
- ? errorFactory(timeoutMs)
84
- : new ActTimeoutError(timeoutMs);
85
- }
86
- });
87
- });
88
- const handler = buildActHandler();
89
- const fakePage = {
90
- mainFrame: vi.fn().mockReturnValue({}),
91
- };
92
- await expect(handler.act({
93
- instruction: "do something",
94
- page: fakePage,
95
- timeout: 5,
96
- })).rejects.toThrow(ActTimeoutError);
97
- // Snapshot should have been called
98
- expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);
99
- // LLM inference should NOT have been called
100
- expect(actInferenceMock).not.toHaveBeenCalled();
101
- });
102
- it("throws ActTimeoutError with correct message format", async () => {
103
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
104
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
105
- const timeoutMs = 100;
106
- vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {
107
- return vi.fn(() => {
108
- throw errorFactory ? errorFactory(ms) : new ActTimeoutError(ms);
109
- });
110
- });
111
- const handler = buildActHandler();
112
- const fakePage = {
113
- mainFrame: vi.fn().mockReturnValue({}),
114
- };
115
- try {
116
- await handler.act({
117
- instruction: "do something",
118
- page: fakePage,
119
- timeout: timeoutMs,
120
- });
121
- throw new Error("Expected ActTimeoutError to be thrown");
122
- }
123
- catch (error) {
124
- expect(error).toBeInstanceOf(ActTimeoutError);
125
- expect(error.message).toContain("act()");
126
- expect(error.message).toContain(`${timeoutMs}ms`);
127
- expect(error.name).toBe("ActTimeoutError");
128
- }
129
- });
130
- });
131
- describe("ActHandler two-step timeout", () => {
132
- beforeEach(() => {
133
- vi.clearAllMocks();
134
- });
135
- it("throws ActTimeoutError during step 2; step 2 action does not run", async () => {
136
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
137
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
138
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
139
- captureHybridSnapshotMock.mockResolvedValue({
140
- combinedTree: "tree content",
141
- combinedXpathMap: { "1-0": "/html/body/button" },
142
- combinedUrlMap: {},
143
- });
144
- const { performUnderstudyMethod } = await import("../../lib/v3/handlers/handlerUtils/actHandlerUtils.js");
145
- const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);
146
- performUnderstudyMethodMock.mockResolvedValue(undefined);
147
- const actInferenceMock = vi.mocked(actInference);
148
- // First call returns a two-step action
149
- actInferenceMock.mockResolvedValueOnce({
150
- element: {
151
- elementId: "1-0",
152
- description: "click button",
153
- method: "click",
154
- arguments: [],
155
- },
156
- twoStep: true,
157
- prompt_tokens: 100,
158
- completion_tokens: 50,
159
- inference_time_ms: 500,
160
- });
161
- const diffCombinedTreesMock = vi.mocked((await import("../../lib/v3/understudy/a11y/snapshot/index.js"))
162
- .diffCombinedTrees);
163
- diffCombinedTreesMock.mockReturnValue("diff tree");
164
- // Timeout fires after step 1 completes, during step 2 snapshot
165
- // ensureTimeRemaining calls: 1=before wait, 2=after wait/before snap1, 3=before LLM1,
166
- // 4=before action1, 5=inside takeDeterministicAction, 6=performUnderstudy,
167
- // 7=before snap2 (this one should throw)
168
- let callCount = 0;
169
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
170
- return vi.fn(() => {
171
- callCount += 1;
172
- if (callCount >= 7) {
173
- throw errorFactory
174
- ? errorFactory(timeoutMs)
175
- : new ActTimeoutError(timeoutMs);
176
- }
177
- });
178
- });
179
- const handler = buildActHandler();
180
- const fakePage = {
181
- mainFrame: vi.fn().mockReturnValue({}),
182
- };
183
- await expect(handler.act({
184
- instruction: "click then type",
185
- page: fakePage,
186
- timeout: 50,
187
- })).rejects.toThrow(ActTimeoutError);
188
- // Step 1 action should have been executed
189
- expect(performUnderstudyMethodMock).toHaveBeenCalledTimes(1);
190
- // Step 2 LLM call should NOT have happened
191
- expect(actInferenceMock).toHaveBeenCalledTimes(1);
192
- });
193
- });
194
- describe("ActHandler self-heal timeout", () => {
195
- beforeEach(() => {
196
- vi.clearAllMocks();
197
- });
198
- it("throws ActTimeoutError during self-heal snapshot; no retry action executes", async () => {
199
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
200
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
201
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
202
- captureHybridSnapshotMock.mockResolvedValue({
203
- combinedTree: "tree content",
204
- combinedXpathMap: { "1-0": "/html/body/button" },
205
- combinedUrlMap: {},
206
- });
207
- const { performUnderstudyMethod } = await import("../../lib/v3/handlers/handlerUtils/actHandlerUtils.js");
208
- const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);
209
- // First call fails, triggering self-heal
210
- performUnderstudyMethodMock.mockRejectedValueOnce(new Error("Element not found"));
211
- const actInferenceMock = vi.mocked(actInference);
212
- actInferenceMock.mockResolvedValue({
213
- element: {
214
- elementId: "1-0",
215
- description: "click button",
216
- method: "click",
217
- arguments: [],
218
- },
219
- twoStep: false,
220
- prompt_tokens: 100,
221
- completion_tokens: 50,
222
- inference_time_ms: 500,
223
- });
224
- // Timeout during self-heal snapshot (call 7 or later)
225
- let callCount = 0;
226
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
227
- return vi.fn(() => {
228
- callCount += 1;
229
- // Timeout during self-heal snapshot call
230
- if (callCount >= 7) {
231
- throw errorFactory
232
- ? errorFactory(timeoutMs)
233
- : new ActTimeoutError(timeoutMs);
234
- }
235
- });
236
- });
237
- const handler = buildActHandler({ selfHeal: true });
238
- const fakePage = {
239
- mainFrame: vi.fn().mockReturnValue({}),
240
- };
241
- await expect(handler.act({
242
- instruction: "click button",
243
- page: fakePage,
244
- timeout: 50,
245
- })).rejects.toThrow(ActTimeoutError);
246
- // First action attempt should have been tried
247
- expect(performUnderstudyMethodMock).toHaveBeenCalledTimes(1);
248
- // First LLM call should have happened
249
- expect(actInferenceMock).toHaveBeenCalledTimes(1);
250
- // Self-heal snapshot should have been started (call happened)
251
- expect(captureHybridSnapshotMock).toHaveBeenCalled();
252
- });
253
- it("throws ActTimeoutError during self-heal LLM inference; no retry action executes", async () => {
254
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
255
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
256
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
257
- captureHybridSnapshotMock.mockResolvedValue({
258
- combinedTree: "tree content",
259
- combinedXpathMap: { "1-0": "/html/body/button" },
260
- combinedUrlMap: {},
261
- });
262
- const { performUnderstudyMethod } = await import("../../lib/v3/handlers/handlerUtils/actHandlerUtils.js");
263
- const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);
264
- // First call fails, triggering self-heal
265
- performUnderstudyMethodMock.mockRejectedValueOnce(new Error("Element not found"));
266
- const actInferenceMock = vi.mocked(actInference);
267
- actInferenceMock.mockResolvedValueOnce({
268
- element: {
269
- elementId: "1-0",
270
- description: "click button",
271
- method: "click",
272
- arguments: [],
273
- },
274
- twoStep: false,
275
- prompt_tokens: 100,
276
- completion_tokens: 50,
277
- inference_time_ms: 500,
278
- });
279
- // Timeout during self-heal LLM inference (call 8)
280
- let callCount = 0;
281
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
282
- return vi.fn(() => {
283
- callCount += 1;
284
- // Timeout during self-heal LLM call
285
- if (callCount >= 8) {
286
- throw errorFactory
287
- ? errorFactory(timeoutMs)
288
- : new ActTimeoutError(timeoutMs);
289
- }
290
- });
291
- });
292
- const handler = buildActHandler({ selfHeal: true });
293
- const fakePage = {
294
- mainFrame: vi.fn().mockReturnValue({}),
295
- };
296
- await expect(handler.act({
297
- instruction: "click button",
298
- page: fakePage,
299
- timeout: 50,
300
- })).rejects.toThrow(ActTimeoutError);
301
- // Self-heal snapshot was captured
302
- expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(2);
303
- // Only one LLM inference (the retry inference was aborted by timeout)
304
- expect(actInferenceMock).toHaveBeenCalledTimes(1);
305
- });
306
- });
307
- describe("ExtractHandler timeout guard", () => {
308
- beforeEach(() => {
309
- vi.clearAllMocks();
310
- });
311
- it("throws ExtractTimeoutError when timeout expires before snapshot", async () => {
312
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
313
- captureHybridSnapshotMock.mockResolvedValue({
314
- combinedTree: "tree content",
315
- combinedXpathMap: {},
316
- combinedUrlMap: {},
317
- });
318
- const extractInferenceMock = vi.mocked(extractInference);
319
- // Throw immediately on first call
320
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
321
- return vi.fn(() => {
322
- throw errorFactory
323
- ? errorFactory(timeoutMs)
324
- : new ExtractTimeoutError(timeoutMs);
325
- });
326
- });
327
- const handler = buildExtractHandler();
328
- const fakePage = {
329
- mainFrame: vi.fn().mockReturnValue({}),
330
- };
331
- await expect(handler.extract({
332
- instruction: "extract title",
333
- page: fakePage,
334
- timeout: 5,
335
- })).rejects.toThrow(ExtractTimeoutError);
336
- // Snapshot should NOT have been called
337
- expect(captureHybridSnapshotMock).not.toHaveBeenCalled();
338
- // LLM inference should NOT have been called
339
- expect(extractInferenceMock).not.toHaveBeenCalled();
340
- });
341
- it("throws ExtractTimeoutError when timeout expires before LLM call", async () => {
342
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
343
- captureHybridSnapshotMock.mockResolvedValue({
344
- combinedTree: "tree content",
345
- combinedXpathMap: {},
346
- combinedUrlMap: {},
347
- });
348
- const extractInferenceMock = vi.mocked(extractInference);
349
- // Throw on call #2 (after snapshot but before LLM)
350
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
351
- let calls = 0;
352
- return vi.fn(() => {
353
- calls += 1;
354
- if (calls >= 2) {
355
- throw errorFactory
356
- ? errorFactory(timeoutMs)
357
- : new ExtractTimeoutError(timeoutMs);
358
- }
359
- });
360
- });
361
- const handler = buildExtractHandler();
362
- const fakePage = {
363
- mainFrame: vi.fn().mockReturnValue({}),
364
- };
365
- await expect(handler.extract({
366
- instruction: "extract title",
367
- page: fakePage,
368
- timeout: 5,
369
- })).rejects.toThrow(ExtractTimeoutError);
370
- // Snapshot should have been called
371
- expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);
372
- // LLM inference should NOT have been called
373
- expect(extractInferenceMock).not.toHaveBeenCalled();
374
- });
375
- it("throws ExtractTimeoutError with correct message format", async () => {
376
- const timeoutMs = 200;
377
- vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {
378
- return vi.fn(() => {
379
- throw errorFactory ? errorFactory(ms) : new ExtractTimeoutError(ms);
380
- });
381
- });
382
- const handler = buildExtractHandler();
383
- const fakePage = {
384
- mainFrame: vi.fn().mockReturnValue({}),
385
- };
386
- try {
387
- await handler.extract({
388
- instruction: "extract title",
389
- page: fakePage,
390
- timeout: timeoutMs,
391
- });
392
- throw new Error("Expected ExtractTimeoutError to be thrown");
393
- }
394
- catch (error) {
395
- expect(error).toBeInstanceOf(ExtractTimeoutError);
396
- expect(error.message).toContain("extract()");
397
- expect(error.message).toContain(`${timeoutMs}ms`);
398
- expect(error.name).toBe("ExtractTimeoutError");
399
- }
400
- });
401
- it("stops LLM and post-processing when timeout expires", async () => {
402
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
403
- captureHybridSnapshotMock.mockResolvedValue({
404
- combinedTree: "tree content",
405
- combinedXpathMap: {},
406
- combinedUrlMap: { "1-0": "https://example.com" },
407
- });
408
- const extractInferenceMock = vi.mocked(extractInference);
409
- // Allow snapshot but timeout before LLM
410
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
411
- let calls = 0;
412
- return vi.fn(() => {
413
- calls += 1;
414
- if (calls >= 2) {
415
- throw errorFactory
416
- ? errorFactory(timeoutMs)
417
- : new ExtractTimeoutError(timeoutMs);
418
- }
419
- });
420
- });
421
- const handler = buildExtractHandler();
422
- const fakePage = {
423
- mainFrame: vi.fn().mockReturnValue({}),
424
- };
425
- await expect(handler.extract({
426
- instruction: "extract links",
427
- page: fakePage,
428
- timeout: 5,
429
- })).rejects.toThrow(ExtractTimeoutError);
430
- // Post-processing (URL injection) never runs because LLM was never called
431
- expect(extractInferenceMock).not.toHaveBeenCalled();
432
- });
433
- });
434
- describe("ObserveHandler timeout guard", () => {
435
- beforeEach(() => {
436
- vi.clearAllMocks();
437
- });
438
- it("throws ObserveTimeoutError when timeout expires before snapshot", async () => {
439
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
440
- captureHybridSnapshotMock.mockResolvedValue({
441
- combinedTree: "tree content",
442
- combinedXpathMap: {},
443
- combinedUrlMap: {},
444
- });
445
- const observeInferenceMock = vi.mocked(observeInference);
446
- // Throw immediately on first call
447
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
448
- return vi.fn(() => {
449
- throw errorFactory
450
- ? errorFactory(timeoutMs)
451
- : new ObserveTimeoutError(timeoutMs);
452
- });
453
- });
454
- const handler = buildObserveHandler();
455
- const fakePage = {
456
- mainFrame: vi.fn().mockReturnValue({}),
457
- };
458
- await expect(handler.observe({
459
- instruction: "find buttons",
460
- page: fakePage,
461
- timeout: 5,
462
- })).rejects.toThrow(ObserveTimeoutError);
463
- // Snapshot should NOT have been called
464
- expect(captureHybridSnapshotMock).not.toHaveBeenCalled();
465
- // LLM inference should NOT have been called
466
- expect(observeInferenceMock).not.toHaveBeenCalled();
467
- });
468
- it("throws ObserveTimeoutError when timeout expires before LLM call", async () => {
469
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
470
- captureHybridSnapshotMock.mockResolvedValue({
471
- combinedTree: "tree content",
472
- combinedXpathMap: {},
473
- combinedUrlMap: {},
474
- });
475
- const observeInferenceMock = vi.mocked(observeInference);
476
- // Throw on call #2 (after snapshot but before LLM)
477
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
478
- let calls = 0;
479
- return vi.fn(() => {
480
- calls += 1;
481
- if (calls >= 2) {
482
- throw errorFactory
483
- ? errorFactory(timeoutMs)
484
- : new ObserveTimeoutError(timeoutMs);
485
- }
486
- });
487
- });
488
- const handler = buildObserveHandler();
489
- const fakePage = {
490
- mainFrame: vi.fn().mockReturnValue({}),
491
- };
492
- await expect(handler.observe({
493
- instruction: "find buttons",
494
- page: fakePage,
495
- timeout: 5,
496
- })).rejects.toThrow(ObserveTimeoutError);
497
- // Snapshot should have been called
498
- expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);
499
- // LLM inference should NOT have been called
500
- expect(observeInferenceMock).not.toHaveBeenCalled();
501
- });
502
- it("throws ObserveTimeoutError with correct message format", async () => {
503
- const timeoutMs = 150;
504
- vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {
505
- return vi.fn(() => {
506
- throw errorFactory ? errorFactory(ms) : new ObserveTimeoutError(ms);
507
- });
508
- });
509
- const handler = buildObserveHandler();
510
- const fakePage = {
511
- mainFrame: vi.fn().mockReturnValue({}),
512
- };
513
- try {
514
- await handler.observe({
515
- instruction: "find buttons",
516
- page: fakePage,
517
- timeout: timeoutMs,
518
- });
519
- throw new Error("Expected ObserveTimeoutError to be thrown");
520
- }
521
- catch (error) {
522
- expect(error).toBeInstanceOf(ObserveTimeoutError);
523
- expect(error.message).toContain("observe()");
524
- expect(error.message).toContain(`${timeoutMs}ms`);
525
- expect(error.name).toBe("ObserveTimeoutError");
526
- }
527
- });
528
- it("aborts result processing when timeout expires", async () => {
529
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
530
- captureHybridSnapshotMock.mockResolvedValue({
531
- combinedTree: "tree content",
532
- combinedXpathMap: { "1-0": "/html/body/button" },
533
- combinedUrlMap: {},
534
- });
535
- const observeInferenceMock = vi.mocked(observeInference);
536
- // Timeout before LLM call
537
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs, errorFactory) => {
538
- let calls = 0;
539
- return vi.fn(() => {
540
- calls += 1;
541
- if (calls >= 2) {
542
- throw errorFactory
543
- ? errorFactory(timeoutMs)
544
- : new ObserveTimeoutError(timeoutMs);
545
- }
546
- });
547
- });
548
- const handler = buildObserveHandler();
549
- const fakePage = {
550
- mainFrame: vi.fn().mockReturnValue({}),
551
- };
552
- await expect(handler.observe({
553
- instruction: "find all interactive elements",
554
- page: fakePage,
555
- timeout: 5,
556
- })).rejects.toThrow(ObserveTimeoutError);
557
- // Result mapping/processing never happens
558
- expect(observeInferenceMock).not.toHaveBeenCalled();
559
- });
560
- });
561
- describe("No-timeout success paths", () => {
562
- beforeEach(() => {
563
- vi.clearAllMocks();
564
- });
565
- it("act() completes successfully without timeout and records metrics", async () => {
566
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
567
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
568
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
569
- captureHybridSnapshotMock.mockResolvedValue({
570
- combinedTree: "tree content",
571
- combinedXpathMap: { "1-0": "/html/body/button" },
572
- combinedUrlMap: {},
573
- });
574
- const { performUnderstudyMethod } = await import("../../lib/v3/handlers/handlerUtils/actHandlerUtils.js");
575
- const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);
576
- performUnderstudyMethodMock.mockResolvedValue(undefined);
577
- const actInferenceMock = vi.mocked(actInference);
578
- actInferenceMock.mockResolvedValue({
579
- element: {
580
- elementId: "1-0",
581
- description: "click button",
582
- method: "click",
583
- arguments: [],
584
- },
585
- twoStep: false,
586
- prompt_tokens: 100,
587
- completion_tokens: 50,
588
- reasoning_tokens: 10,
589
- cached_input_tokens: 5,
590
- inference_time_ms: 500,
591
- });
592
- // No timeout - guard never throws
593
- vi.mocked(createTimeoutGuard).mockImplementation(() => {
594
- return vi.fn(() => {
595
- // No-op - never throws
596
- });
597
- });
598
- const metricsCallback = vi.fn();
599
- const handler = buildActHandler({ onMetrics: metricsCallback });
600
- const fakePage = {
601
- mainFrame: vi.fn().mockReturnValue({}),
602
- };
603
- const result = await handler.act({
604
- instruction: "click button",
605
- page: fakePage,
606
- // No timeout specified
607
- });
608
- expect(result.success).toBe(true);
609
- expect(metricsCallback).toHaveBeenCalledWith(V3FunctionName.ACT, 100, 50, 10, 5, 500);
610
- });
611
- it("extract() completes successfully without timeout and records metrics", async () => {
612
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
613
- captureHybridSnapshotMock.mockResolvedValue({
614
- combinedTree: "tree content",
615
- combinedXpathMap: {},
616
- combinedUrlMap: {},
617
- });
618
- const extractInferenceMock = vi.mocked(extractInference);
619
- extractInferenceMock.mockResolvedValue({
620
- title: "Test Title",
621
- metadata: { completed: true, progress: "100%" },
622
- prompt_tokens: 200,
623
- completion_tokens: 100,
624
- reasoning_tokens: 20,
625
- cached_input_tokens: 10,
626
- inference_time_ms: 800,
627
- });
628
- // No timeout - guard never throws
629
- vi.mocked(createTimeoutGuard).mockImplementation(() => {
630
- return vi.fn(() => {
631
- // No-op - never throws
632
- });
633
- });
634
- const metricsCallback = vi.fn();
635
- const handler = buildExtractHandler({ onMetrics: metricsCallback });
636
- const fakePage = {
637
- mainFrame: vi.fn().mockReturnValue({}),
638
- };
639
- const result = await handler.extract({
640
- instruction: "extract title",
641
- page: fakePage,
642
- // No timeout specified
643
- });
644
- expect(result).toHaveProperty("title", "Test Title");
645
- expect(metricsCallback).toHaveBeenCalledWith(V3FunctionName.EXTRACT, 200, 100, 20, 10, 800);
646
- });
647
- it("observe() completes successfully without timeout and records metrics", async () => {
648
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
649
- captureHybridSnapshotMock.mockResolvedValue({
650
- combinedTree: "tree content",
651
- combinedXpathMap: { "1-0": "/html/body/button" },
652
- combinedUrlMap: {},
653
- });
654
- const observeInferenceMock = vi.mocked(observeInference);
655
- observeInferenceMock.mockResolvedValue({
656
- elements: [
657
- {
658
- elementId: "1-0",
659
- description: "Submit button",
660
- },
661
- ],
662
- prompt_tokens: 150,
663
- completion_tokens: 75,
664
- reasoning_tokens: 15,
665
- cached_input_tokens: 8,
666
- inference_time_ms: 600,
667
- });
668
- // No timeout - guard never throws
669
- vi.mocked(createTimeoutGuard).mockImplementation(() => {
670
- return vi.fn(() => {
671
- // No-op - never throws
672
- });
673
- });
674
- const metricsCallback = vi.fn();
675
- const handler = buildObserveHandler({ onMetrics: metricsCallback });
676
- const fakePage = {
677
- mainFrame: vi.fn().mockReturnValue({}),
678
- };
679
- const result = await handler.observe({
680
- instruction: "find buttons",
681
- page: fakePage,
682
- // No timeout specified
683
- });
684
- expect(result).toHaveLength(1);
685
- expect(result[0]).toHaveProperty("description", "Submit button");
686
- expect(metricsCallback).toHaveBeenCalledWith(V3FunctionName.OBSERVE, 150, 75, 15, 8, 600);
687
- });
688
- it("observe() forwards variables to inference and preserves placeholders", async () => {
689
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
690
- captureHybridSnapshotMock.mockResolvedValue({
691
- combinedTree: "tree content",
692
- combinedXpathMap: { "1-0": "/html/body/input" },
693
- combinedUrlMap: {},
694
- });
695
- const observeInferenceMock = vi.mocked(observeInference);
696
- observeInferenceMock.mockResolvedValue({
697
- elements: [
698
- {
699
- elementId: "1-0",
700
- description: "Email field",
701
- method: "fill",
702
- arguments: ["%username%"],
703
- },
704
- ],
705
- prompt_tokens: 150,
706
- completion_tokens: 75,
707
- reasoning_tokens: 15,
708
- cached_input_tokens: 8,
709
- inference_time_ms: 600,
710
- });
711
- vi.mocked(createTimeoutGuard).mockImplementation(() => {
712
- return vi.fn(() => {
713
- // No-op - never throws
714
- });
715
- });
716
- const handler = buildObserveHandler();
717
- const fakePage = {
718
- mainFrame: vi.fn().mockReturnValue({}),
719
- };
720
- const variables = {
721
- username: {
722
- value: "john@example.com",
723
- description: "The login email",
724
- },
725
- };
726
- const result = await handler.observe({
727
- instruction: "find the field where %username% should be entered",
728
- variables,
729
- page: fakePage,
730
- });
731
- expect(observeInferenceMock).toHaveBeenCalledWith(expect.objectContaining({
732
- variables,
733
- }));
734
- expect(result).toHaveLength(1);
735
- expect(result[0]).toHaveProperty("arguments");
736
- expect(result[0]?.arguments).toEqual(["%username%"]);
737
- });
738
- it("observe() forwards ignoreSelectors to snapshot capture", async () => {
739
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
740
- captureHybridSnapshotMock.mockResolvedValue({
741
- combinedTree: "tree content",
742
- combinedXpathMap: { "1-0": "/html/body/button" },
743
- combinedUrlMap: {},
744
- });
745
- const observeInferenceMock = vi.mocked(observeInference);
746
- observeInferenceMock.mockResolvedValue({
747
- elements: [
748
- {
749
- elementId: "1-0",
750
- description: "Submit button",
751
- },
752
- ],
753
- });
754
- vi.mocked(createTimeoutGuard).mockImplementation(() => {
755
- return vi.fn(() => {
756
- // No-op - never throws
757
- });
758
- });
759
- const handler = buildObserveHandler();
760
- const fakePage = {
761
- mainFrame: vi.fn().mockReturnValue({}),
762
- };
763
- await handler.observe({
764
- instruction: "find buttons",
765
- ignoreSelectors: [".cookie-banner", "#sidebar-ads"],
766
- page: fakePage,
767
- });
768
- expect(captureHybridSnapshotMock).toHaveBeenCalledWith(fakePage, {
769
- experimental: false,
770
- focusSelector: undefined,
771
- ignoreSelectors: [".cookie-banner", "#sidebar-ads"],
772
- });
773
- });
774
- it("act() with zero timeout behaves as no timeout", async () => {
775
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
776
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
777
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
778
- captureHybridSnapshotMock.mockResolvedValue({
779
- combinedTree: "tree content",
780
- combinedXpathMap: { "1-0": "/html/body/button" },
781
- combinedUrlMap: {},
782
- });
783
- const { performUnderstudyMethod } = await import("../../lib/v3/handlers/handlerUtils/actHandlerUtils.js");
784
- const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);
785
- performUnderstudyMethodMock.mockResolvedValue(undefined);
786
- const actInferenceMock = vi.mocked(actInference);
787
- actInferenceMock.mockResolvedValue({
788
- element: {
789
- elementId: "1-0",
790
- description: "click button",
791
- method: "click",
792
- arguments: [],
793
- },
794
- twoStep: false,
795
- prompt_tokens: 100,
796
- completion_tokens: 50,
797
- inference_time_ms: 500,
798
- });
799
- // When timeout is 0 or negative, createTimeoutGuard returns a no-op
800
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs) => {
801
- if (!timeoutMs || timeoutMs <= 0) {
802
- return vi.fn(() => {
803
- // No-op
804
- });
805
- }
806
- return vi.fn(() => {
807
- throw new ActTimeoutError(timeoutMs);
808
- });
809
- });
810
- const handler = buildActHandler();
811
- const fakePage = {
812
- mainFrame: vi.fn().mockReturnValue({}),
813
- };
814
- const result = await handler.act({
815
- instruction: "click button",
816
- page: fakePage,
817
- timeout: 0, // Zero timeout should be treated as "no timeout"
818
- });
819
- expect(result.success).toBe(true);
820
- });
821
- it("act() with negative timeout behaves as no timeout", async () => {
822
- const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);
823
- waitForDomNetworkQuietMock.mockResolvedValue(undefined);
824
- const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);
825
- captureHybridSnapshotMock.mockResolvedValue({
826
- combinedTree: "tree content",
827
- combinedXpathMap: { "1-0": "/html/body/button" },
828
- combinedUrlMap: {},
829
- });
830
- const { performUnderstudyMethod } = await import("../../lib/v3/handlers/handlerUtils/actHandlerUtils.js");
831
- const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);
832
- performUnderstudyMethodMock.mockResolvedValue(undefined);
833
- const actInferenceMock = vi.mocked(actInference);
834
- actInferenceMock.mockResolvedValue({
835
- element: {
836
- elementId: "1-0",
837
- description: "click button",
838
- method: "click",
839
- arguments: [],
840
- },
841
- twoStep: false,
842
- prompt_tokens: 100,
843
- completion_tokens: 50,
844
- inference_time_ms: 500,
845
- });
846
- vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs) => {
847
- if (!timeoutMs || timeoutMs <= 0) {
848
- return vi.fn(() => {
849
- // No-op
850
- });
851
- }
852
- return vi.fn(() => {
853
- throw new ActTimeoutError(timeoutMs);
854
- });
855
- });
856
- const handler = buildActHandler();
857
- const fakePage = {
858
- mainFrame: vi.fn().mockReturnValue({}),
859
- };
860
- const result = await handler.act({
861
- instruction: "click button",
862
- page: fakePage,
863
- timeout: -100, // Negative timeout should be treated as "no timeout"
864
- });
865
- expect(result.success).toBe(true);
866
- });
867
- });
868
- function buildActHandler(options = {}) {
869
- const defaultClientOptions = {};
870
- const fakeClient = {
871
- type: "openai",
872
- modelName: "gpt-4o",
873
- clientOptions: defaultClientOptions,
874
- };
875
- const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);
876
- return new ActHandler(fakeClient, "gpt-4o", defaultClientOptions, resolveLlmClient, undefined, false, options.selfHeal ?? false, options.onMetrics, undefined);
877
- }
878
- function buildExtractHandler(options = {}) {
879
- const defaultClientOptions = {};
880
- const fakeClient = {
881
- type: "openai",
882
- modelName: "gpt-4o",
883
- clientOptions: defaultClientOptions,
884
- };
885
- const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);
886
- return new ExtractHandler(fakeClient, "gpt-4o", defaultClientOptions, resolveLlmClient, undefined, false, false, options.onMetrics);
887
- }
888
- function buildObserveHandler(options = {}) {
889
- const defaultClientOptions = {};
890
- const fakeClient = {
891
- type: "openai",
892
- modelName: "gpt-4o",
893
- clientOptions: defaultClientOptions,
894
- };
895
- const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);
896
- return new ObserveHandler(fakeClient, "gpt-4o", defaultClientOptions, resolveLlmClient, undefined, false, false, options.onMetrics);
897
- }
898
- //# sourceMappingURL=timeout-handlers.test.js.map