@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,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsdom_1 = require("jsdom");
4
- const vitest_1 = require("vitest");
5
- const xpathResolver_js_1 = require("../../lib/v3/dom/locatorScripts/xpathResolver.js");
6
- const globalRef = globalThis;
7
- const originalGlobals = {
8
- window: globalRef.window,
9
- document: globalRef.document,
10
- Node: globalRef.Node,
11
- NodeFilter: globalRef.NodeFilter,
12
- Element: globalRef.Element,
13
- HTMLElement: globalRef.HTMLElement,
14
- Document: globalRef.Document,
15
- DocumentFragment: globalRef.DocumentFragment,
16
- ShadowRoot: globalRef.ShadowRoot,
17
- XPathResult: globalRef.XPathResult,
18
- };
19
- let dom;
20
- const installDomGlobals = () => {
21
- const win = dom.window;
22
- globalRef.window = win;
23
- globalRef.document = win.document;
24
- globalRef.Node = win.Node;
25
- globalRef.NodeFilter = win.NodeFilter;
26
- globalRef.Element = win.Element;
27
- globalRef.HTMLElement = win.HTMLElement;
28
- globalRef.Document = win.Document;
29
- globalRef.DocumentFragment =
30
- win.DocumentFragment;
31
- globalRef.ShadowRoot = win.ShadowRoot;
32
- globalRef.XPathResult = win.XPathResult;
33
- };
34
- const restoreDomGlobals = () => {
35
- for (const [key, value] of Object.entries(originalGlobals)) {
36
- if (value === undefined) {
37
- delete globalRef[key];
38
- }
39
- else {
40
- globalRef[key] = value;
41
- }
42
- }
43
- };
44
- (0, vitest_1.describe)("xpathResolver composed traversal", () => {
45
- (0, vitest_1.beforeAll)(() => {
46
- dom = new jsdom_1.JSDOM("<!doctype html><html><body></body></html>");
47
- installDomGlobals();
48
- });
49
- (0, vitest_1.afterAll)(() => {
50
- dom.window.close();
51
- restoreDomGlobals();
52
- });
53
- (0, vitest_1.beforeEach)(() => {
54
- document.body.innerHTML = "";
55
- });
56
- (0, vitest_1.it)("counts matches across light + shadow DOM without double counting", () => {
57
- document.body.innerHTML =
58
- '<div id="light-1"></div>' +
59
- '<shadow-host id="host"></shadow-host>' +
60
- '<div id="light-2"></div>';
61
- const host = document.getElementById("host");
62
- const shadow = host.attachShadow({ mode: "open" });
63
- shadow.innerHTML = '<div id="shadow-1"></div><div id="shadow-2"></div>';
64
- (0, vitest_1.expect)((0, xpathResolver_js_1.countXPathMatches)("//div")).toBe(4);
65
- });
66
- (0, vitest_1.it)("resolves nth over composed tree in document-order DFS", () => {
67
- document.body.innerHTML =
68
- '<div id="light-1"></div>' +
69
- '<shadow-host id="host"></shadow-host>' +
70
- '<div id="light-2"></div>';
71
- const host = document.getElementById("host");
72
- const shadow = host.attachShadow({ mode: "open" });
73
- shadow.innerHTML = '<div id="shadow-1"></div><div id="shadow-2"></div>';
74
- (0, vitest_1.expect)((0, xpathResolver_js_1.resolveXPathAtIndex)("//div", 0)?.id).toBe("light-1");
75
- (0, vitest_1.expect)((0, xpathResolver_js_1.resolveXPathAtIndex)("//div", 1)?.id).toBe("shadow-1");
76
- (0, vitest_1.expect)((0, xpathResolver_js_1.resolveXPathAtIndex)("//div", 2)?.id).toBe("shadow-2");
77
- (0, vitest_1.expect)((0, xpathResolver_js_1.resolveXPathAtIndex)("//div", 3)?.id).toBe("light-2");
78
- });
79
- });
80
- //# sourceMappingURL=xpath-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xpath-resolver.test.js","sourceRoot":"","sources":["../../../../tests/unit/xpath-resolver.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { JSDOM } from \"jsdom\";\nimport { afterAll, beforeAll, beforeEach, describe, expect, it } from \"vitest\";\nimport {\n countXPathMatches,\n resolveXPathAtIndex,\n} from \"../../lib/v3/dom/locatorScripts/xpathResolver.js\";\n\ntype DomGlobals = {\n window: Window & typeof globalThis;\n document: Document;\n Node: typeof Node;\n NodeFilter: typeof NodeFilter;\n Element: typeof Element;\n HTMLElement: typeof HTMLElement;\n Document: typeof Document;\n DocumentFragment: typeof DocumentFragment;\n ShadowRoot: typeof ShadowRoot;\n XPathResult: typeof XPathResult;\n};\n\nconst globalRef = globalThis as typeof globalThis & Partial<DomGlobals>;\nconst originalGlobals: Partial<DomGlobals> = {\n window: globalRef.window,\n document: globalRef.document,\n Node: globalRef.Node,\n NodeFilter: globalRef.NodeFilter,\n Element: globalRef.Element,\n HTMLElement: globalRef.HTMLElement,\n Document: globalRef.Document,\n DocumentFragment: globalRef.DocumentFragment,\n ShadowRoot: globalRef.ShadowRoot,\n XPathResult: globalRef.XPathResult,\n};\n\nlet dom: JSDOM;\n\nconst installDomGlobals = () => {\n const win = dom.window;\n globalRef.window = win as unknown as Window & typeof globalThis;\n globalRef.document = win.document;\n globalRef.Node = win.Node as unknown as typeof Node;\n globalRef.NodeFilter = win.NodeFilter as unknown as typeof NodeFilter;\n globalRef.Element = win.Element as unknown as typeof Element;\n globalRef.HTMLElement = win.HTMLElement as unknown as typeof HTMLElement;\n globalRef.Document = win.Document as unknown as typeof Document;\n globalRef.DocumentFragment =\n win.DocumentFragment as unknown as typeof DocumentFragment;\n globalRef.ShadowRoot = win.ShadowRoot as unknown as typeof ShadowRoot;\n globalRef.XPathResult = win.XPathResult as unknown as typeof XPathResult;\n};\n\nconst restoreDomGlobals = () => {\n for (const [key, value] of Object.entries(originalGlobals)) {\n if (value === undefined) {\n delete (globalRef as Record<string, unknown>)[key];\n } else {\n (globalRef as Record<string, unknown>)[key] = value;\n }\n }\n};\n\ndescribe(\"xpathResolver composed traversal\", () => {\n beforeAll(() => {\n dom = new JSDOM(\"<!doctype html><html><body></body></html>\");\n installDomGlobals();\n });\n\n afterAll(() => {\n dom.window.close();\n restoreDomGlobals();\n });\n\n beforeEach(() => {\n document.body.innerHTML = \"\";\n });\n\n it(\"counts matches across light + shadow DOM without double counting\", () => {\n document.body.innerHTML =\n '<div id=\"light-1\"></div>' +\n '<shadow-host id=\"host\"></shadow-host>' +\n '<div id=\"light-2\"></div>';\n\n const host = document.getElementById(\"host\") as HTMLElement;\n const shadow = host.attachShadow({ mode: \"open\" });\n shadow.innerHTML = '<div id=\"shadow-1\"></div><div id=\"shadow-2\"></div>';\n\n expect(countXPathMatches(\"//div\")).toBe(4);\n });\n\n it(\"resolves nth over composed tree in document-order DFS\", () => {\n document.body.innerHTML =\n '<div id=\"light-1\"></div>' +\n '<shadow-host id=\"host\"></shadow-host>' +\n '<div id=\"light-2\"></div>';\n\n const host = document.getElementById(\"host\") as HTMLElement;\n const shadow = host.attachShadow({ mode: \"open\" });\n shadow.innerHTML = '<div id=\"shadow-1\"></div><div id=\"shadow-2\"></div>';\n\n expect(resolveXPathAtIndex(\"//div\", 0)?.id).toBe(\"light-1\");\n expect(resolveXPathAtIndex(\"//div\", 1)?.id).toBe(\"shadow-1\");\n expect(resolveXPathAtIndex(\"//div\", 2)?.id).toBe(\"shadow-2\");\n expect(resolveXPathAtIndex(\"//div\", 3)?.id).toBe(\"light-2\");\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,149 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const vitest_1 = require("vitest");
37
- const z3 = __importStar(require("zod/v3"));
38
- const zod_1 = require("zod");
39
- const handlers_js_1 = require("../../lib/v3/types/private/handlers.js");
40
- /**
41
- * Tests for Zod v3/v4 compatibility with the SupportedUnderstudyAction enum.
42
- *
43
- * This test ensures that z.enum() works correctly with both Zod v3 and v4.
44
- * The key issue is that z.enum() in Zod v3 does NOT accept TypeScript enums directly -
45
- * it only accepts string literal tuples. For TypeScript enums, you need to use
46
- * Object.values() to convert the enum to an array first.
47
- *
48
- * In Zod v4, z.enum() was updated to accept TypeScript enums directly, but for
49
- * backwards compatibility, we should use Object.values() which works with both.
50
- *
51
- * See PR #1613: https://github.com/browserbase/stagehand/pull/1613
52
- */
53
- (0, vitest_1.describe)("SupportedUnderstudyAction enum Zod compatibility", () => {
54
- const testInput = {
55
- elementId: "1-2",
56
- method: "click",
57
- arguments: [],
58
- };
59
- const invalidInput = {
60
- elementId: "1-2",
61
- method: "invalidMethod",
62
- arguments: [],
63
- };
64
- (0, vitest_1.it)("Object.values(SupportedUnderstudyAction) produces correct array for z.enum()", () => {
65
- const enumValues = Object.values(handlers_js_1.SupportedUnderstudyAction);
66
- (0, vitest_1.expect)(enumValues).toContain("click");
67
- (0, vitest_1.expect)(enumValues).toContain("fill");
68
- (0, vitest_1.expect)(enumValues).toContain("type");
69
- (0, vitest_1.expect)(enumValues).toContain("press");
70
- (0, vitest_1.expect)(enumValues).toContain("scrollTo");
71
- (0, vitest_1.expect)(enumValues).toContain("nextChunk");
72
- (0, vitest_1.expect)(enumValues).toContain("prevChunk");
73
- (0, vitest_1.expect)(enumValues).toContain("selectOptionFromDropdown");
74
- (0, vitest_1.expect)(enumValues).toContain("hover");
75
- (0, vitest_1.expect)(enumValues).toContain("doubleClick");
76
- (0, vitest_1.expect)(enumValues).toContain("dragAndDrop");
77
- (0, vitest_1.expect)(enumValues.length).toBe(11);
78
- });
79
- (0, vitest_1.it)("Zod v3 z.enum() with Object.values(SupportedUnderstudyAction) works correctly", () => {
80
- const enumValues = Object.values(handlers_js_1.SupportedUnderstudyAction);
81
- const schema = z3.z.object({
82
- elementId: z3.z.string(),
83
- method: z3.z.enum(enumValues),
84
- arguments: z3.z.array(z3.z.string()),
85
- });
86
- // Valid input should pass
87
- const validResult = schema.safeParse(testInput);
88
- (0, vitest_1.expect)(validResult.success).toBe(true);
89
- if (validResult.success) {
90
- (0, vitest_1.expect)(validResult.data.method).toBe("click");
91
- }
92
- // Invalid input should fail
93
- const invalidResult = schema.safeParse(invalidInput);
94
- (0, vitest_1.expect)(invalidResult.success).toBe(false);
95
- });
96
- (0, vitest_1.it)("Zod v4 z.enum() with Object.values(SupportedUnderstudyAction) works correctly", () => {
97
- const enumValues = Object.values(handlers_js_1.SupportedUnderstudyAction);
98
- const schema = zod_1.z.object({
99
- elementId: zod_1.z.string(),
100
- method: zod_1.z.enum(enumValues),
101
- arguments: zod_1.z.array(zod_1.z.string()),
102
- });
103
- // Valid input should pass
104
- const validResult = schema.safeParse(testInput);
105
- (0, vitest_1.expect)(validResult.success).toBe(true);
106
- if (validResult.success) {
107
- (0, vitest_1.expect)(validResult.data.method).toBe("click");
108
- }
109
- // Invalid input should fail
110
- const invalidResult = schema.safeParse(invalidInput);
111
- (0, vitest_1.expect)(invalidResult.success).toBe(false);
112
- });
113
- (0, vitest_1.it)("Zod v3 z.enum() with raw TypeScript enum throws error on parse", () => {
114
- // This demonstrates the bug that PR #1613 would introduce
115
- // In Zod v3, z.enum() does NOT accept TypeScript enums directly
116
- // The schema creation might succeed, but parsing will fail
117
- const schema = z3.z.object({
118
- elementId: z3.z.string(),
119
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
- method: z3.z.enum(handlers_js_1.SupportedUnderstudyAction),
121
- arguments: z3.z.array(z3.z.string()),
122
- });
123
- // This should throw an error because the enum is not iterable
124
- (0, vitest_1.expect)(() => schema.safeParse(testInput)).toThrow("object is not iterable");
125
- });
126
- (0, vitest_1.it)("Zod v4 z.enum() with raw TypeScript enum works (but not v3 compatible)", () => {
127
- // Zod v4 allows passing TypeScript enums directly to z.enum()
128
- // But this approach is NOT backwards compatible with v3
129
- const schema = zod_1.z.object({
130
- elementId: zod_1.z.string(),
131
- method: zod_1.z.enum(handlers_js_1.SupportedUnderstudyAction),
132
- arguments: zod_1.z.array(zod_1.z.string()),
133
- });
134
- // In v4, this works fine
135
- const validResult = schema.safeParse(testInput);
136
- (0, vitest_1.expect)(validResult.success).toBe(true);
137
- });
138
- (0, vitest_1.it)("All SupportedUnderstudyAction values are valid enum options", () => {
139
- const enumValues = Object.values(handlers_js_1.SupportedUnderstudyAction);
140
- // Test with both v3 and v4 schemas
141
- const v3Schema = z3.z.enum(enumValues);
142
- const v4Schema = zod_1.z.enum(enumValues);
143
- for (const action of enumValues) {
144
- (0, vitest_1.expect)(v3Schema.safeParse(action).success).toBe(true);
145
- (0, vitest_1.expect)(v4Schema.safeParse(action).success).toBe(true);
146
- }
147
- });
148
- });
149
- //# sourceMappingURL=zod-enum-compatibility.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zod-enum-compatibility.test.js","sourceRoot":"","sources":["../../../../tests/unit/zod-enum-compatibility.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport * as z3 from \"zod/v3\";\nimport { z as z4 } from \"zod\";\nimport { SupportedUnderstudyAction } from \"../../lib/v3/types/private/handlers.js\";\n\n/**\n * Tests for Zod v3/v4 compatibility with the SupportedUnderstudyAction enum.\n *\n * This test ensures that z.enum() works correctly with both Zod v3 and v4.\n * The key issue is that z.enum() in Zod v3 does NOT accept TypeScript enums directly -\n * it only accepts string literal tuples. For TypeScript enums, you need to use\n * Object.values() to convert the enum to an array first.\n *\n * In Zod v4, z.enum() was updated to accept TypeScript enums directly, but for\n * backwards compatibility, we should use Object.values() which works with both.\n *\n * See PR #1613: https://github.com/browserbase/stagehand/pull/1613\n */\ndescribe(\"SupportedUnderstudyAction enum Zod compatibility\", () => {\n const testInput = {\n elementId: \"1-2\",\n method: \"click\",\n arguments: [] as string[],\n };\n\n const invalidInput = {\n elementId: \"1-2\",\n method: \"invalidMethod\",\n arguments: [] as string[],\n };\n\n it(\"Object.values(SupportedUnderstudyAction) produces correct array for z.enum()\", () => {\n const enumValues = Object.values(\n SupportedUnderstudyAction,\n ) as unknown as readonly [string, ...string[]];\n\n expect(enumValues).toContain(\"click\");\n expect(enumValues).toContain(\"fill\");\n expect(enumValues).toContain(\"type\");\n expect(enumValues).toContain(\"press\");\n expect(enumValues).toContain(\"scrollTo\");\n expect(enumValues).toContain(\"nextChunk\");\n expect(enumValues).toContain(\"prevChunk\");\n expect(enumValues).toContain(\"selectOptionFromDropdown\");\n expect(enumValues).toContain(\"hover\");\n expect(enumValues).toContain(\"doubleClick\");\n expect(enumValues).toContain(\"dragAndDrop\");\n expect(enumValues.length).toBe(11);\n });\n\n it(\"Zod v3 z.enum() with Object.values(SupportedUnderstudyAction) works correctly\", () => {\n const enumValues = Object.values(\n SupportedUnderstudyAction,\n ) as unknown as readonly [string, ...string[]];\n\n const schema = z3.z.object({\n elementId: z3.z.string(),\n method: z3.z.enum(enumValues),\n arguments: z3.z.array(z3.z.string()),\n });\n\n // Valid input should pass\n const validResult = schema.safeParse(testInput);\n expect(validResult.success).toBe(true);\n if (validResult.success) {\n expect(validResult.data.method).toBe(\"click\");\n }\n\n // Invalid input should fail\n const invalidResult = schema.safeParse(invalidInput);\n expect(invalidResult.success).toBe(false);\n });\n\n it(\"Zod v4 z.enum() with Object.values(SupportedUnderstudyAction) works correctly\", () => {\n const enumValues = Object.values(\n SupportedUnderstudyAction,\n ) as unknown as readonly [string, ...string[]];\n\n const schema = z4.object({\n elementId: z4.string(),\n method: z4.enum(enumValues),\n arguments: z4.array(z4.string()),\n });\n\n // Valid input should pass\n const validResult = schema.safeParse(testInput);\n expect(validResult.success).toBe(true);\n if (validResult.success) {\n expect(validResult.data.method).toBe(\"click\");\n }\n\n // Invalid input should fail\n const invalidResult = schema.safeParse(invalidInput);\n expect(invalidResult.success).toBe(false);\n });\n\n it(\"Zod v3 z.enum() with raw TypeScript enum throws error on parse\", () => {\n // This demonstrates the bug that PR #1613 would introduce\n // In Zod v3, z.enum() does NOT accept TypeScript enums directly\n // The schema creation might succeed, but parsing will fail\n\n const schema = z3.z.object({\n elementId: z3.z.string(),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n method: z3.z.enum(SupportedUnderstudyAction as any),\n arguments: z3.z.array(z3.z.string()),\n });\n\n // This should throw an error because the enum is not iterable\n expect(() => schema.safeParse(testInput)).toThrow(\"object is not iterable\");\n });\n\n it(\"Zod v4 z.enum() with raw TypeScript enum works (but not v3 compatible)\", () => {\n // Zod v4 allows passing TypeScript enums directly to z.enum()\n // But this approach is NOT backwards compatible with v3\n\n const schema = z4.object({\n elementId: z4.string(),\n method: z4.enum(SupportedUnderstudyAction),\n arguments: z4.array(z4.string()),\n });\n\n // In v4, this works fine\n const validResult = schema.safeParse(testInput);\n expect(validResult.success).toBe(true);\n });\n\n it(\"All SupportedUnderstudyAction values are valid enum options\", () => {\n const enumValues = Object.values(\n SupportedUnderstudyAction,\n ) as unknown as readonly [string, ...string[]];\n\n // Test with both v3 and v4 schemas\n const v3Schema = z3.z.enum(enumValues);\n const v4Schema = z4.enum(enumValues);\n\n for (const action of enumValues) {\n expect(v3Schema.safeParse(action).success).toBe(true);\n expect(v4Schema.safeParse(action).success).toBe(true);\n }\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,219 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { ActCache } from "../lib/v3/cache/ActCache";
3
- function createFakeStorage(entry) {
4
- return {
5
- enabled: true,
6
- readJson: vi.fn().mockResolvedValue({ value: entry }),
7
- writeJson: vi.fn().mockResolvedValue({}),
8
- directory: "/tmp/cache",
9
- };
10
- }
11
- describe("ActCache variable handling", () => {
12
- it("cache key includes variable keys but not values", async () => {
13
- const storage = {
14
- enabled: true,
15
- readJson: vi.fn(),
16
- writeJson: vi.fn().mockResolvedValue({}),
17
- directory: "/tmp/cache",
18
- };
19
- const cache = new ActCache({
20
- storage,
21
- logger: vi.fn(),
22
- getActHandler: () => null,
23
- getDefaultLlmClient: () => ({}),
24
- domSettleTimeoutMs: undefined,
25
- });
26
- const fakePage = {
27
- url: vi.fn().mockResolvedValue("https://example.com"),
28
- };
29
- // First context with username="user1@example.com"
30
- const context1 = await cache.prepareContext("type %username% into the email field", fakePage, { username: "user1@example.com" });
31
- // Second context with username="user2@example.com"
32
- const context2 = await cache.prepareContext("type %username% into the email field", fakePage, { username: "user2@example.com" });
33
- // Third context with different variable key name
34
- const context3 = await cache.prepareContext("type %email% into the email field", fakePage, { email: "user3@example.com" });
35
- // Same instruction + same variable keys = same cache key
36
- expect(context1?.cacheKey).toBe(context2?.cacheKey);
37
- // Different variable keys = different cache key
38
- expect(context1?.cacheKey).not.toBe(context3?.cacheKey);
39
- // Verify variable keys are sorted and stored
40
- expect(context1?.variableKeys).toEqual(["username"]);
41
- expect(context2?.variableKeys).toEqual(["username"]);
42
- expect(context3?.variableKeys).toEqual(["email"]);
43
- // Verify variable values are preserved in context
44
- expect(context1?.variables).toEqual({ username: "user1@example.com" });
45
- expect(context2?.variables).toEqual({ username: "user2@example.com" });
46
- });
47
- it("replays cached actions with variable substitution", async () => {
48
- // Cached action contains variable placeholder %username%
49
- const action = {
50
- selector: "xpath=/html/body/input[@type='email']",
51
- description: "type username into email field",
52
- method: "type",
53
- arguments: ["%username%"], // Variable placeholder
54
- };
55
- const entry = {
56
- version: 1,
57
- instruction: "type %username% into the email field",
58
- url: "https://example.com",
59
- variableKeys: ["username"],
60
- actions: [action],
61
- actionDescription: "type username",
62
- message: "done",
63
- };
64
- const storage = createFakeStorage(entry);
65
- // Track what variables are passed to takeDeterministicAction
66
- const capturedVariables = [];
67
- const handler = {
68
- takeDeterministicAction: vi
69
- .fn()
70
- .mockImplementation(async (_action, _page, _timeout, _client, _ensure, variables) => {
71
- capturedVariables.push(variables || {});
72
- return {
73
- success: true,
74
- message: "ok",
75
- actionDescription: "type username",
76
- actions: [action],
77
- };
78
- }),
79
- };
80
- const defaultClient = {};
81
- const cache = new ActCache({
82
- storage,
83
- logger: vi.fn(),
84
- getActHandler: () => handler,
85
- getDefaultLlmClient: () => defaultClient,
86
- domSettleTimeoutMs: undefined,
87
- });
88
- // First replay with username="user1@example.com"
89
- const context1 = {
90
- instruction: "type %username% into the email field",
91
- cacheKey: "test-key",
92
- pageUrl: "https://example.com",
93
- variableKeys: ["username"],
94
- variables: { username: "user1@example.com" },
95
- };
96
- const result1 = await cache.tryReplay(context1, {});
97
- expect(result1?.success).toBe(true);
98
- expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);
99
- expect(capturedVariables[0]).toEqual({ username: "user1@example.com" });
100
- // Reset
101
- vi.clearAllMocks();
102
- capturedVariables.length = 0;
103
- // Second replay with username="user2@example.com"
104
- const context2 = {
105
- instruction: "type %username% into the email field",
106
- cacheKey: "test-key", // Same cache key!
107
- pageUrl: "https://example.com",
108
- variableKeys: ["username"],
109
- variables: { username: "user2@example.com" },
110
- };
111
- const result2 = await cache.tryReplay(context2, {});
112
- expect(result2?.success).toBe(true);
113
- expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);
114
- expect(capturedVariables[0]).toEqual({ username: "user2@example.com" });
115
- });
116
- it("cache miss when variable keys don't match", async () => {
117
- const action = {
118
- selector: "xpath=/html/body/input",
119
- description: "type username",
120
- method: "type",
121
- arguments: ["%username%"],
122
- };
123
- // Cached entry expects "username" variable
124
- const entry = {
125
- version: 1,
126
- instruction: "type %username% into the field",
127
- url: "https://example.com",
128
- variableKeys: ["username"],
129
- actions: [action],
130
- };
131
- const storage = createFakeStorage(entry);
132
- const cache = new ActCache({
133
- storage,
134
- logger: vi.fn(),
135
- getActHandler: () => null,
136
- getDefaultLlmClient: () => ({}),
137
- domSettleTimeoutMs: undefined,
138
- });
139
- // Context has different variable key "email"
140
- const context = {
141
- instruction: "type %email% into the field",
142
- cacheKey: "test-key",
143
- pageUrl: "https://example.com",
144
- variableKeys: ["email"],
145
- variables: { email: "test@example.com" },
146
- };
147
- const result = await cache.tryReplay(context, {});
148
- // Should return null (cache miss) due to variable key mismatch
149
- expect(result).toBeNull();
150
- });
151
- it("cache miss when required variables are missing", async () => {
152
- const action = {
153
- selector: "xpath=/html/body/input",
154
- description: "type username",
155
- method: "type",
156
- arguments: ["%username%"],
157
- };
158
- const entry = {
159
- version: 1,
160
- instruction: "type %username% into the field",
161
- url: "https://example.com",
162
- variableKeys: ["username"],
163
- actions: [action],
164
- };
165
- const storage = createFakeStorage(entry);
166
- const logger = vi.fn();
167
- const cache = new ActCache({
168
- storage,
169
- logger,
170
- getActHandler: () => null,
171
- getDefaultLlmClient: () => ({}),
172
- domSettleTimeoutMs: undefined,
173
- });
174
- // Context missing the username variable value
175
- const context = {
176
- instruction: "type %username% into the field",
177
- cacheKey: "test-key",
178
- pageUrl: "https://example.com",
179
- variableKeys: ["username"],
180
- variables: {}, // Missing username value!
181
- };
182
- const result = await cache.tryReplay(context, {});
183
- // Should return null (cache miss)
184
- expect(result).toBeNull();
185
- // Should log the miss reason
186
- expect(logger).toHaveBeenCalledWith(expect.objectContaining({
187
- category: "cache",
188
- message: "act cache miss: missing variables for replay",
189
- level: 2,
190
- }));
191
- });
192
- it("handles multiple variables correctly", async () => {
193
- const storage = {
194
- enabled: true,
195
- readJson: vi.fn(),
196
- writeJson: vi.fn().mockResolvedValue({}),
197
- directory: "/tmp/cache",
198
- };
199
- const cache = new ActCache({
200
- storage,
201
- logger: vi.fn(),
202
- getActHandler: () => null,
203
- getDefaultLlmClient: () => ({}),
204
- domSettleTimeoutMs: undefined,
205
- });
206
- const fakePage = {
207
- url: vi.fn().mockResolvedValue("https://example.com"),
208
- };
209
- // Context with multiple variables
210
- const context1 = await cache.prepareContext("fill %username% and %password%", fakePage, { username: "user1", password: "pass1" });
211
- const context2 = await cache.prepareContext("fill %username% and %password%", fakePage, { username: "user2", password: "pass2" });
212
- // Same cache key despite different values
213
- expect(context1?.cacheKey).toBe(context2?.cacheKey);
214
- // Variable keys should be sorted
215
- expect(context1?.variableKeys).toEqual(["password", "username"]);
216
- expect(context2?.variableKeys).toEqual(["password", "username"]);
217
- });
218
- });
219
- //# sourceMappingURL=cache-variables.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-variables.test.js","sourceRoot":"","sources":["../../../tests/cache-variables.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAQpD,SAAS,iBAAiB,CAAI,KAAQ;IACpC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACrD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxC,SAAS,EAAE,YAAY;KACG,CAAC;AAC/B,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxC,SAAS,EAAE,YAAY;SACG,CAAC;QAE7B,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;YACzB,OAAO;YACP,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;YACf,aAAa,EAAE,GAAG,EAAE,CAAC,IAA6B;YAClD,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAc;YAC5C,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG;YACf,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;SACnC,CAAC;QAErB,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CACzC,sCAAsC,EACtC,QAAQ,EACR,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAClC,CAAC;QAEF,mDAAmD;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CACzC,sCAAsC,EACtC,QAAQ,EACR,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAClC,CAAC;QAEF,iDAAiD;QACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CACzC,mCAAmC,EACnC,QAAQ,EACR,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAC/B,CAAC;QAEF,yDAAyD;QACzD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,gDAAgD;QAChD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAExD,6CAA6C;QAC7C,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAElD,kDAAkD;QAClD,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,yDAAyD;QACzD,MAAM,MAAM,GAAW;YACrB,QAAQ,EAAE,uCAAuC;YACjD,WAAW,EAAE,gCAAgC;YAC7C,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,uBAAuB;SACnD,CAAC;QAEF,MAAM,KAAK,GAAmB;YAC5B,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,sCAAsC;YACnD,GAAG,EAAE,qBAAqB;YAC1B,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,iBAAiB,EAAE,eAAe;YAClC,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEzC,6DAA6D;QAC7D,MAAM,iBAAiB,GAA6B,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG;YACd,uBAAuB,EAAE,EAAE;iBACxB,EAAE,EAAE;iBACJ,kBAAkB,CACjB,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;gBAC9D,iBAAiB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;oBACb,iBAAiB,EAAE,eAAe;oBAClC,OAAO,EAAE,CAAC,MAAM,CAAC;iBAClB,CAAC;YACJ,CAAC,CACF;SACqB,CAAC;QAE3B,MAAM,aAAa,GAAG,EAAe,CAAC;QAEtC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;YACzB,OAAO;YACP,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;YACf,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO;YAC5B,mBAAmB,EAAE,GAAG,EAAE,CAAC,aAAa;YACxC,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,iDAAiD;QACjD,MAAM,QAAQ,GAAoB;YAChC,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,qBAAqB;YAC9B,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,SAAS,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE;SAC7C,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAU,CAAC,CAAC;QAE5D,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAExE,QAAQ;QACR,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAE7B,kDAAkD;QAClD,MAAM,QAAQ,GAAoB;YAChC,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,UAAU,EAAE,kBAAkB;YACxC,OAAO,EAAE,qBAAqB;YAC9B,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,SAAS,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE;SAC7C,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAU,CAAC,CAAC;QAE5D,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,GAAW;YACrB,QAAQ,EAAE,wBAAwB;YAClC,WAAW,EAAE,eAAe;YAC5B,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;QAEF,2CAA2C;QAC3C,MAAM,KAAK,GAAmB;YAC5B,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,gCAAgC;YAC7C,GAAG,EAAE,qBAAqB;YAC1B,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC;QAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;YACzB,OAAO;YACP,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;YACf,aAAa,EAAE,GAAG,EAAE,CAAC,IAA6B;YAClD,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAc;YAC5C,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,6CAA6C;QAC7C,MAAM,OAAO,GAAoB;YAC/B,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,qBAAqB;YAC9B,YAAY,EAAE,CAAC,OAAO,CAAC;YACvB,SAAS,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;SACzC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,EAAU,CAAC,CAAC;QAE1D,+DAA+D;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,MAAM,GAAW;YACrB,QAAQ,EAAE,wBAAwB;YAClC,WAAW,EAAE,eAAe;YAC5B,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;QAEF,MAAM,KAAK,GAAmB;YAC5B,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,gCAAgC;YAC7C,GAAG,EAAE,qBAAqB;YAC1B,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC;QAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;YACzB,OAAO;YACP,MAAM;YACN,aAAa,EAAE,GAAG,EAAE,CAAC,IAA6B;YAClD,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAc;YAC5C,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,8CAA8C;QAC9C,MAAM,OAAO,GAAoB;YAC/B,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,qBAAqB;YAC9B,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,SAAS,EAAE,EAAE,EAAE,0BAA0B;SAC1C,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,EAAU,CAAC,CAAC;QAE1D,kCAAkC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE1B,6BAA6B;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,MAAM,CAAC,gBAAgB,CAAC;YACtB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,8CAA8C;YACvD,KAAK,EAAE,CAAC;SACT,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxC,SAAS,EAAE,YAAY;SACG,CAAC;QAE7B,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;YACzB,OAAO;YACP,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;YACf,aAAa,EAAE,GAAG,EAAE,CAAC,IAA6B;YAClD,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAc;YAC5C,kBAAkB,EAAE,SAAS;SAC9B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG;YACf,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;SACnC,CAAC;QAErB,kCAAkC;QAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CACzC,gCAAgC,EAChC,QAAQ,EACR,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CACzC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CACzC,gCAAgC,EAChC,QAAQ,EACR,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CACzC,CAAC;QAEF,0CAA0C;QAC1C,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,iCAAiC;QACjC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it, vi } from \"vitest\";\nimport { ActCache } from \"../lib/v3/cache/ActCache\";\nimport type { CacheStorage } from \"../lib/v3/cache/CacheStorage\";\nimport type { ActHandler } from \"../lib/v3/handlers/actHandler\";\nimport type { LLMClient } from \"../lib/v3/llm/LLMClient\";\nimport type { Page } from \"../lib/v3/understudy/page\";\nimport type { ActCacheContext, CachedActEntry } from \"../lib/v3/types/private\";\nimport type { Action } from \"../lib/v3/types/public\";\n\nfunction createFakeStorage<T>(entry: T): CacheStorage {\n return {\n enabled: true,\n readJson: vi.fn().mockResolvedValue({ value: entry }),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n}\n\ndescribe(\"ActCache variable handling\", () => {\n it(\"cache key includes variable keys but not values\", async () => {\n const storage = {\n enabled: true,\n readJson: vi.fn(),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n const fakePage = {\n url: vi.fn().mockResolvedValue(\"https://example.com\"),\n } as unknown as Page;\n\n // First context with username=\"user1@example.com\"\n const context1 = await cache.prepareContext(\n \"type %username% into the email field\",\n fakePage,\n { username: \"user1@example.com\" },\n );\n\n // Second context with username=\"user2@example.com\"\n const context2 = await cache.prepareContext(\n \"type %username% into the email field\",\n fakePage,\n { username: \"user2@example.com\" },\n );\n\n // Third context with different variable key name\n const context3 = await cache.prepareContext(\n \"type %email% into the email field\",\n fakePage,\n { email: \"user3@example.com\" },\n );\n\n // Same instruction + same variable keys = same cache key\n expect(context1?.cacheKey).toBe(context2?.cacheKey);\n\n // Different variable keys = different cache key\n expect(context1?.cacheKey).not.toBe(context3?.cacheKey);\n\n // Verify variable keys are sorted and stored\n expect(context1?.variableKeys).toEqual([\"username\"]);\n expect(context2?.variableKeys).toEqual([\"username\"]);\n expect(context3?.variableKeys).toEqual([\"email\"]);\n\n // Verify variable values are preserved in context\n expect(context1?.variables).toEqual({ username: \"user1@example.com\" });\n expect(context2?.variables).toEqual({ username: \"user2@example.com\" });\n });\n\n it(\"replays cached actions with variable substitution\", async () => {\n // Cached action contains variable placeholder %username%\n const action: Action = {\n selector: \"xpath=/html/body/input[@type='email']\",\n description: \"type username into email field\",\n method: \"type\",\n arguments: [\"%username%\"], // Variable placeholder\n };\n\n const entry: CachedActEntry = {\n version: 1,\n instruction: \"type %username% into the email field\",\n url: \"https://example.com\",\n variableKeys: [\"username\"],\n actions: [action],\n actionDescription: \"type username\",\n message: \"done\",\n };\n\n const storage = createFakeStorage(entry);\n\n // Track what variables are passed to takeDeterministicAction\n const capturedVariables: Record<string, string>[] = [];\n const handler = {\n takeDeterministicAction: vi\n .fn()\n .mockImplementation(\n async (_action, _page, _timeout, _client, _ensure, variables) => {\n capturedVariables.push(variables || {});\n return {\n success: true,\n message: \"ok\",\n actionDescription: \"type username\",\n actions: [action],\n };\n },\n ),\n } as unknown as ActHandler;\n\n const defaultClient = {} as LLMClient;\n\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => handler,\n getDefaultLlmClient: () => defaultClient,\n domSettleTimeoutMs: undefined,\n });\n\n // First replay with username=\"user1@example.com\"\n const context1: ActCacheContext = {\n instruction: \"type %username% into the email field\",\n cacheKey: \"test-key\",\n pageUrl: \"https://example.com\",\n variableKeys: [\"username\"],\n variables: { username: \"user1@example.com\" },\n };\n\n const result1 = await cache.tryReplay(context1, {} as Page);\n\n expect(result1?.success).toBe(true);\n expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);\n expect(capturedVariables[0]).toEqual({ username: \"user1@example.com\" });\n\n // Reset\n vi.clearAllMocks();\n capturedVariables.length = 0;\n\n // Second replay with username=\"user2@example.com\"\n const context2: ActCacheContext = {\n instruction: \"type %username% into the email field\",\n cacheKey: \"test-key\", // Same cache key!\n pageUrl: \"https://example.com\",\n variableKeys: [\"username\"],\n variables: { username: \"user2@example.com\" },\n };\n\n const result2 = await cache.tryReplay(context2, {} as Page);\n\n expect(result2?.success).toBe(true);\n expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);\n expect(capturedVariables[0]).toEqual({ username: \"user2@example.com\" });\n });\n\n it(\"cache miss when variable keys don't match\", async () => {\n const action: Action = {\n selector: \"xpath=/html/body/input\",\n description: \"type username\",\n method: \"type\",\n arguments: [\"%username%\"],\n };\n\n // Cached entry expects \"username\" variable\n const entry: CachedActEntry = {\n version: 1,\n instruction: \"type %username% into the field\",\n url: \"https://example.com\",\n variableKeys: [\"username\"],\n actions: [action],\n };\n\n const storage = createFakeStorage(entry);\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n // Context has different variable key \"email\"\n const context: ActCacheContext = {\n instruction: \"type %email% into the field\",\n cacheKey: \"test-key\",\n pageUrl: \"https://example.com\",\n variableKeys: [\"email\"],\n variables: { email: \"test@example.com\" },\n };\n\n const result = await cache.tryReplay(context, {} as Page);\n\n // Should return null (cache miss) due to variable key mismatch\n expect(result).toBeNull();\n });\n\n it(\"cache miss when required variables are missing\", async () => {\n const action: Action = {\n selector: \"xpath=/html/body/input\",\n description: \"type username\",\n method: \"type\",\n arguments: [\"%username%\"],\n };\n\n const entry: CachedActEntry = {\n version: 1,\n instruction: \"type %username% into the field\",\n url: \"https://example.com\",\n variableKeys: [\"username\"],\n actions: [action],\n };\n\n const storage = createFakeStorage(entry);\n const logger = vi.fn();\n const cache = new ActCache({\n storage,\n logger,\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n // Context missing the username variable value\n const context: ActCacheContext = {\n instruction: \"type %username% into the field\",\n cacheKey: \"test-key\",\n pageUrl: \"https://example.com\",\n variableKeys: [\"username\"],\n variables: {}, // Missing username value!\n };\n\n const result = await cache.tryReplay(context, {} as Page);\n\n // Should return null (cache miss)\n expect(result).toBeNull();\n\n // Should log the miss reason\n expect(logger).toHaveBeenCalledWith(\n expect.objectContaining({\n category: \"cache\",\n message: \"act cache miss: missing variables for replay\",\n level: 2,\n }),\n );\n });\n\n it(\"handles multiple variables correctly\", async () => {\n const storage = {\n enabled: true,\n readJson: vi.fn(),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n const fakePage = {\n url: vi.fn().mockResolvedValue(\"https://example.com\"),\n } as unknown as Page;\n\n // Context with multiple variables\n const context1 = await cache.prepareContext(\n \"fill %username% and %password%\",\n fakePage,\n { username: \"user1\", password: \"pass1\" },\n );\n\n const context2 = await cache.prepareContext(\n \"fill %username% and %password%\",\n fakePage,\n { username: \"user2\", password: \"pass2\" },\n );\n\n // Same cache key despite different values\n expect(context1?.cacheKey).toBe(context2?.cacheKey);\n\n // Variable keys should be sorted\n expect(context1?.variableKeys).toEqual([\"password\", \"username\"]);\n expect(context2?.variableKeys).toEqual([\"password\", \"username\"]);\n });\n});\n"]}