@browserbasehq/orca 3.4.0-preview-3 → 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 (785) 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/agent/AnthropicCUAClient.js +10 -0
  4. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  5. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  6. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  7. package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
  8. package/dist/cjs/lib/v3/launch/local.js +47 -7
  9. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  10. package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
  11. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  12. package/dist/cjs/lib/v3/types/private/snapshot.d.ts +2 -0
  13. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -1
  14. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  15. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  16. package/dist/cjs/lib/v3/types/public/api.d.ts +283 -0
  17. package/dist/cjs/lib/v3/types/public/api.js +50 -3
  18. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  19. package/dist/cjs/lib/v3/types/public/model.d.ts +11 -7
  20. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  21. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  22. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  23. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  24. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  25. package/dist/cjs/lib/v3/v3.js +2 -47
  26. package/dist/cjs/lib/v3/v3.js.map +1 -1
  27. package/dist/cjs/lib/version.d.ts +1 -1
  28. package/dist/cjs/lib/version.js +1 -1
  29. package/dist/cjs/lib/version.js.map +1 -1
  30. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
  31. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  32. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -0
  33. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  34. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  35. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  36. package/dist/esm/lib/v3/launch/local.d.ts +2 -7
  37. package/dist/esm/lib/v3/launch/local.js +48 -8
  38. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  39. package/dist/esm/lib/v3/llm/aisdk.js +5 -0
  40. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  41. package/dist/esm/lib/v3/types/private/snapshot.d.ts +2 -0
  42. package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -1
  43. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  44. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  45. package/dist/esm/lib/v3/types/public/api.d.ts +283 -0
  46. package/dist/esm/lib/v3/types/public/api.js +48 -1
  47. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  48. package/dist/esm/lib/v3/types/public/model.d.ts +11 -7
  49. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  50. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  51. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  52. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  53. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  54. package/dist/esm/lib/v3/v3.js +2 -47
  55. package/dist/esm/lib/v3/v3.js.map +1 -1
  56. package/dist/esm/lib/version.d.ts +1 -1
  57. package/dist/esm/lib/version.js +1 -1
  58. package/dist/esm/lib/version.js.map +1 -1
  59. package/package.json +8 -8
  60. package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
  61. package/dist/cjs/tests/cache-variables.test.js +0 -221
  62. package/dist/cjs/tests/cache-variables.test.js.map +0 -1
  63. package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  64. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
  65. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
  66. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  67. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
  68. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  69. package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
  70. package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
  71. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
  72. package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  73. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
  74. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  75. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  76. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
  77. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  78. package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  79. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
  80. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
  81. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
  82. package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
  83. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
  84. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  85. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
  86. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  87. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  88. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
  89. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
  90. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  91. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
  92. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
  93. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  94. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
  95. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  96. package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
  97. package/dist/cjs/tests/integration/click-count.spec.js +0 -163
  98. package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
  99. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  100. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
  101. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  102. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
  103. package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
  104. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
  105. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  106. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
  107. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  108. package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
  109. package/dist/cjs/tests/integration/cookies.spec.js +0 -187
  110. package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
  111. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
  112. package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
  113. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
  114. package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
  115. package/dist/cjs/tests/integration/downloads.spec.js +0 -52
  116. package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
  117. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
  118. package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
  119. package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
  120. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  121. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
  122. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  123. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  124. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
  125. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  126. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  127. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
  128. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  129. package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
  130. package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
  131. package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
  132. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
  133. package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
  134. package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
  135. package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
  136. package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
  137. package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
  138. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  139. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
  140. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  141. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
  142. package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
  143. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
  144. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  145. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
  146. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
  147. package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
  148. package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
  149. package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
  150. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
  151. package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
  152. package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
  153. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
  154. package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
  155. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
  156. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
  157. package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
  158. package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
  159. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
  160. package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
  161. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
  162. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
  163. package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
  164. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
  165. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  166. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
  167. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
  168. package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
  169. package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
  170. package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
  171. package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  172. package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
  173. package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
  174. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
  175. package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
  176. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
  177. package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
  178. package/dist/cjs/tests/integration/page-console.spec.js +0 -47
  179. package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
  180. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  181. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
  182. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  183. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  184. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
  185. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  186. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
  187. package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
  188. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
  189. package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
  190. package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
  191. package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
  192. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
  193. package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
  194. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
  195. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
  196. package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
  197. package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
  198. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
  199. package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
  200. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
  201. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  202. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
  203. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
  204. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
  205. package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
  206. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
  207. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  208. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
  209. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  210. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  211. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
  212. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  213. package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
  214. package/dist/cjs/tests/integration/testUtils.js +0 -188
  215. package/dist/cjs/tests/integration/testUtils.js.map +0 -1
  216. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  217. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
  218. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
  219. package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
  220. package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
  221. package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
  222. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
  223. package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
  224. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
  225. package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
  226. package/dist/cjs/tests/integration/v3.config.js +0 -11
  227. package/dist/cjs/tests/integration/v3.config.js.map +0 -1
  228. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
  229. package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
  230. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
  231. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
  232. package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
  233. package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
  234. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
  235. package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
  236. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
  237. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  238. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
  239. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
  240. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  241. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
  242. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  243. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  244. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
  245. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  246. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
  247. package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
  248. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
  249. package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
  250. package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
  251. package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
  252. package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
  253. package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
  254. package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
  255. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  256. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
  257. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  258. package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
  259. package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
  260. package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
  261. package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
  262. package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
  263. package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
  264. package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
  265. package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
  266. package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
  267. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  268. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
  269. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  270. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  271. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -135
  272. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
  273. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
  274. package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
  275. package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
  276. package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  277. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
  278. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  279. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
  280. package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -69
  281. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
  282. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  283. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
  284. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  285. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  286. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
  287. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
  288. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
  289. package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
  290. package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
  291. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
  292. package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
  293. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
  294. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  295. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
  296. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
  297. package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
  298. package/dist/cjs/tests/unit/cookies.test.js +0 -944
  299. package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
  300. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  301. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
  302. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  303. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  304. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
  305. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  306. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  307. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
  308. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  309. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  310. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
  311. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  312. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  313. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
  314. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
  315. package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
  316. package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
  317. package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
  318. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
  319. package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
  320. package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
  321. package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
  322. package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
  323. package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
  324. package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  325. package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
  326. package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
  327. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
  328. package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
  329. package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
  330. package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
  331. package/dist/cjs/tests/unit/model-utils.test.js +0 -42
  332. package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
  333. package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  334. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
  335. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  336. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
  337. package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
  338. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
  339. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  340. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
  341. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
  342. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
  343. package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
  344. package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
  345. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  346. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
  347. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
  348. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
  349. package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
  350. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
  351. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  352. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
  353. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  354. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  355. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
  356. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
  357. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
  358. package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
  359. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
  360. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  361. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
  362. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  363. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  364. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
  365. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
  366. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  367. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
  368. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  369. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  370. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
  371. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  372. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
  373. package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
  374. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
  375. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
  376. package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
  377. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
  378. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  379. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
  380. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  381. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  382. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -306
  383. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  384. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  385. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
  386. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  387. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
  388. package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
  389. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
  390. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  391. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
  392. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  393. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  394. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
  395. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  396. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  397. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
  398. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  399. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  400. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
  401. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  402. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  403. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -84
  404. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  405. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  406. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
  407. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  408. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
  409. package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -933
  410. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
  411. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
  412. package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
  413. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
  414. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
  415. package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
  416. package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
  417. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
  418. package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
  419. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
  420. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  421. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
  422. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
  423. package/dist/esm/tests/cache-variables.test.d.ts +0 -1
  424. package/dist/esm/tests/cache-variables.test.js +0 -219
  425. package/dist/esm/tests/cache-variables.test.js.map +0 -1
  426. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  427. package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
  428. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
  429. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  430. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
  431. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  432. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
  433. package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
  434. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
  435. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  436. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
  437. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  438. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  439. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
  440. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  441. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  442. package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
  443. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
  444. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
  445. package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
  446. package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
  447. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  448. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
  449. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  450. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  451. package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
  452. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
  453. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  454. package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
  455. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
  456. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  457. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
  458. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  459. package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
  460. package/dist/esm/tests/integration/click-count.spec.js +0 -161
  461. package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
  462. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  463. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
  464. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  465. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
  466. package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
  467. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
  468. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  469. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
  470. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  471. package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
  472. package/dist/esm/tests/integration/cookies.spec.js +0 -185
  473. package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
  474. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
  475. package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
  476. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
  477. package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
  478. package/dist/esm/tests/integration/downloads.spec.js +0 -47
  479. package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
  480. package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
  481. package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
  482. package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
  483. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  484. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
  485. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  486. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  487. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
  488. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  489. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  490. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
  491. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  492. package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
  493. package/dist/esm/tests/integration/keep-alive.child.js +0 -83
  494. package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
  495. package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
  496. package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
  497. package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
  498. package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
  499. package/dist/esm/tests/integration/keyboard.spec.js +0 -257
  500. package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
  501. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  502. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
  503. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  504. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
  505. package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
  506. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
  507. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  508. package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
  509. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
  510. package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
  511. package/dist/esm/tests/integration/locator-count.spec.js +0 -66
  512. package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
  513. package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
  514. package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
  515. package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
  516. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
  517. package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
  518. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
  519. package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
  520. package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
  521. package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
  522. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
  523. package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
  524. package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
  525. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
  526. package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
  527. package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
  528. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  529. package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
  530. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
  531. package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
  532. package/dist/esm/tests/integration/nested-div.spec.js +0 -20
  533. package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
  534. package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  535. package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
  536. package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
  537. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
  538. package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
  539. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
  540. package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
  541. package/dist/esm/tests/integration/page-console.spec.js +0 -45
  542. package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
  543. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  544. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
  545. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  546. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  547. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
  548. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  549. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
  550. package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
  551. package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
  552. package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
  553. package/dist/esm/tests/integration/page-hover.spec.js +0 -163
  554. package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
  555. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
  556. package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
  557. package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
  558. package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
  559. package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
  560. package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
  561. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
  562. package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
  563. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
  564. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  565. package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
  566. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
  567. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
  568. package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
  569. package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
  570. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  571. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
  572. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  573. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  574. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
  575. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  576. package/dist/esm/tests/integration/testUtils.d.ts +0 -40
  577. package/dist/esm/tests/integration/testUtils.js +0 -178
  578. package/dist/esm/tests/integration/testUtils.js.map +0 -1
  579. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  580. package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
  581. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
  582. package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
  583. package/dist/esm/tests/integration/timeouts.spec.js +0 -307
  584. package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
  585. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
  586. package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
  587. package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
  588. package/dist/esm/tests/integration/v3.config.d.ts +0 -4
  589. package/dist/esm/tests/integration/v3.config.js +0 -7
  590. package/dist/esm/tests/integration/v3.config.js.map +0 -1
  591. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
  592. package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
  593. package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
  594. package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
  595. package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
  596. package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
  597. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
  598. package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
  599. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
  600. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  601. package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
  602. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
  603. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  604. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
  605. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  606. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  607. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
  608. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  609. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
  610. package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
  611. package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
  612. package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
  613. package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
  614. package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
  615. package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
  616. package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
  617. package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
  618. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  619. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
  620. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  621. package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
  622. package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
  623. package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
  624. package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
  625. package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
  626. package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
  627. package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
  628. package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
  629. package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
  630. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  631. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
  632. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  633. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  634. package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -133
  635. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
  636. package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
  637. package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
  638. package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
  639. package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  640. package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
  641. package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  642. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
  643. package/dist/esm/tests/unit/api-variables-schema.test.js +0 -67
  644. package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
  645. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  646. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
  647. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  648. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  649. package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
  650. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
  651. package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
  652. package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
  653. package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
  654. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
  655. package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
  656. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
  657. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  658. package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
  659. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
  660. package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
  661. package/dist/esm/tests/unit/cookies.test.js +0 -909
  662. package/dist/esm/tests/unit/cookies.test.js.map +0 -1
  663. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  664. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
  665. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  666. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  667. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
  668. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  669. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  670. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
  671. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  672. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  673. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
  674. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  675. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  676. package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
  677. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
  678. package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
  679. package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
  680. package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
  681. package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
  682. package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
  683. package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
  684. package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
  685. package/dist/esm/tests/unit/llm-provider.test.js +0 -62
  686. package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
  687. package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  688. package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
  689. package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
  690. package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
  691. package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
  692. package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
  693. package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
  694. package/dist/esm/tests/unit/model-utils.test.js +0 -40
  695. package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
  696. package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  697. package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
  698. package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  699. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
  700. package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
  701. package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
  702. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  703. package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
  704. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
  705. package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
  706. package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
  707. package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
  708. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  709. package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
  710. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
  711. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
  712. package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
  713. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
  714. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  715. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
  716. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  717. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  718. package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
  719. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
  720. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
  721. package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
  722. package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
  723. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  724. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
  725. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  726. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  727. package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
  728. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
  729. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  730. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
  731. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  732. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  733. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
  734. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  735. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
  736. package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
  737. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
  738. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
  739. package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
  740. package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
  741. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  742. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
  743. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  744. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  745. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -304
  746. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  747. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  748. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
  749. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  750. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
  751. package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
  752. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
  753. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  754. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
  755. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  756. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  757. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
  758. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  759. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  760. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
  761. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  762. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  763. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
  764. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  765. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  766. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -82
  767. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  768. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  769. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
  770. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  771. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
  772. package/dist/esm/tests/unit/timeout-handlers.test.js +0 -898
  773. package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
  774. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
  775. package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
  776. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
  777. package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
  778. package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
  779. package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
  780. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
  781. package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
  782. package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
  783. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  784. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
  785. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger-initialization.spec.js","sourceRoot":"","sources":["../../../../tests/integration/logger-initialization.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport {\n bindInstanceLogger,\n unbindInstanceLogger,\n withInstanceLogContext,\n v3Logger,\n} from \"../../lib/v3/logger.js\";\nimport type { LogLine } from \"../../lib/v3/types/public/logs.js\";\n\ntest.describe(\"V3 Logger Instance Routing\", () => {\n test.afterEach(() => {\n // Clean up is handled by unbindInstanceLogger calls in tests\n });\n\n test(\"bindInstanceLogger routes logs to correct instance\", () => {\n const instanceId = \"test-instance-001\";\n const capturedLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => {\n capturedLogs.push(line);\n });\n\n try {\n // Log within context\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Test message for instance\",\n level: 1,\n });\n });\n\n // Should have captured the log\n expect(capturedLogs.length).toBe(1);\n expect(capturedLogs[0].message).toBe(\"Test message for instance\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"unbindInstanceLogger stops routing\", () => {\n const instanceId = \"test-instance-002\";\n const capturedLogs: LogLine[] = [];\n const consoleOutput: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n consoleOutput.push(msg);\n };\n\n bindInstanceLogger(instanceId, (line) => {\n capturedLogs.push(line);\n });\n\n // Unbind immediately\n unbindInstanceLogger(instanceId);\n\n // Log - should fall back to console\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"After unbind\",\n level: 1,\n });\n });\n\n // Should not have captured via instance logger\n expect(capturedLogs.length).toBe(0);\n // But should have logged to console\n expect(consoleOutput.length).toBeGreaterThan(0);\n } finally {\n console.log = originalConsoleLog;\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"multiple instances have isolated log routing\", () => {\n const instance1Id = \"test-instance-1\";\n const instance2Id = \"test-instance-2\";\n const instance1Logs: LogLine[] = [];\n const instance2Logs: LogLine[] = [];\n\n bindInstanceLogger(instance1Id, (line) => instance1Logs.push(line));\n bindInstanceLogger(instance2Id, (line) => instance2Logs.push(line));\n\n try {\n // Log from instance 1\n withInstanceLogContext(instance1Id, () => {\n v3Logger({\n category: \"test\",\n message: \"From instance 1\",\n level: 1,\n });\n });\n\n // Log from instance 2\n withInstanceLogContext(instance2Id, () => {\n v3Logger({\n category: \"test\",\n message: \"From instance 2\",\n level: 1,\n });\n });\n\n // Each instance should have only its own log\n expect(instance1Logs.length).toBe(1);\n expect(instance2Logs.length).toBe(1);\n expect(instance1Logs[0].message).toBe(\"From instance 1\");\n expect(instance2Logs[0].message).toBe(\"From instance 2\");\n } finally {\n unbindInstanceLogger(instance1Id);\n unbindInstanceLogger(instance2Id);\n }\n });\n\n test(\"v3Logger falls back to console when no instance context\", () => {\n const capturedLogs: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n capturedLogs.push(msg);\n };\n\n // Log without any instance context\n v3Logger({\n category: \"test\",\n message: \"Console fallback log\",\n level: 1,\n });\n\n // Should have used console logger\n expect(capturedLogs.length).toBeGreaterThan(0);\n const logOutput = capturedLogs.join(\"\\n\");\n expect(logOutput).toContain(\"Console fallback log\");\n } finally {\n console.log = originalConsoleLog;\n }\n });\n\n test(\"v3Logger falls back to console when instance logger throws\", () => {\n const instanceId = \"failing-instance\";\n const capturedConsoleLogs: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n capturedConsoleLogs.push(msg);\n };\n\n // Bind a logger that throws\n bindInstanceLogger(instanceId, () => {\n throw new Error(\"Instance logger failed\");\n });\n\n // Should fall back to console without throwing\n withInstanceLogContext(instanceId, () => {\n expect(() => {\n v3Logger({\n category: \"test\",\n message: \"Test with failing instance logger\",\n level: 1,\n });\n }).not.toThrow();\n });\n\n // Console should have received the log as fallback\n expect(capturedConsoleLogs.length).toBeGreaterThan(0);\n const logOutput = capturedConsoleLogs.join(\"\\n\");\n expect(logOutput).toContain(\"Test with failing instance logger\");\n } finally {\n console.log = originalConsoleLog;\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"withInstanceLogContext nests properly\", () => {\n const outerInstanceId = \"outer-instance\";\n const innerInstanceId = \"inner-instance\";\n const outerLogs: LogLine[] = [];\n const innerLogs: LogLine[] = [];\n\n bindInstanceLogger(outerInstanceId, (line) => outerLogs.push(line));\n bindInstanceLogger(innerInstanceId, (line) => innerLogs.push(line));\n\n try {\n withInstanceLogContext(outerInstanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Outer context\",\n level: 1,\n });\n\n withInstanceLogContext(innerInstanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Inner context\",\n level: 1,\n });\n });\n\n v3Logger({\n category: \"test\",\n message: \"Back to outer context\",\n level: 1,\n });\n });\n\n // Outer instance should have 2 logs\n expect(outerLogs.length).toBe(2);\n expect(outerLogs[0].message).toBe(\"Outer context\");\n expect(outerLogs[1].message).toBe(\"Back to outer context\");\n\n // Inner instance should have 1 log\n expect(innerLogs.length).toBe(1);\n expect(innerLogs[0].message).toBe(\"Inner context\");\n } finally {\n unbindInstanceLogger(outerInstanceId);\n unbindInstanceLogger(innerInstanceId);\n }\n });\n\n test(\"withInstanceLogContext returns function result\", () => {\n const instanceId = \"return-test-instance\";\n bindInstanceLogger(instanceId, () => {});\n\n try {\n const result = withInstanceLogContext(instanceId, () => {\n return { success: true, value: 42 };\n });\n\n expect(result).toEqual({ success: true, value: 42 });\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"withInstanceLogContext works with async functions\", async () => {\n const instanceId = \"async-test-instance\";\n const capturedLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => capturedLogs.push(line));\n\n try {\n const asyncResult = await withInstanceLogContext(instanceId, async () => {\n v3Logger({\n category: \"test\",\n message: \"Log from async context\",\n level: 1,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 10));\n\n v3Logger({\n category: \"test\",\n message: \"Log after await\",\n level: 1,\n });\n\n return \"async result\";\n });\n\n expect(asyncResult).toBe(\"async result\");\n expect(capturedLogs.length).toBe(2);\n expect(capturedLogs[0].message).toBe(\"Log from async context\");\n expect(capturedLogs[1].message).toBe(\"Log after await\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"console fallback formats different log levels correctly\", () => {\n const consoleOutput: { level: string; msg: string }[] = [];\n const originalConsoleLog = console.log;\n const originalConsoleError = console.error;\n const originalConsoleDebug = console.debug;\n\n try {\n console.log = (msg: string) => {\n consoleOutput.push({ level: \"log\", msg });\n };\n console.error = (msg: string) => {\n consoleOutput.push({ level: \"error\", msg });\n };\n console.debug = (msg: string) => {\n consoleOutput.push({ level: \"debug\", msg });\n };\n\n // Test error level (0)\n v3Logger({\n category: \"test\",\n message: \"Error message\",\n level: 0,\n });\n\n // Test info level (1)\n v3Logger({\n category: \"test\",\n message: \"Info message\",\n level: 1,\n });\n\n // Test debug level (2)\n v3Logger({\n category: \"test\",\n message: \"Debug message\",\n level: 2,\n });\n\n expect(consoleOutput.length).toBe(3);\n expect(consoleOutput[0].level).toBe(\"error\");\n expect(consoleOutput[0].msg).toContain(\"ERROR\");\n expect(consoleOutput[0].msg).toContain(\"Error message\");\n\n expect(consoleOutput[1].level).toBe(\"log\");\n expect(consoleOutput[1].msg).toContain(\"INFO\");\n expect(consoleOutput[1].msg).toContain(\"Info message\");\n\n expect(consoleOutput[2].level).toBe(\"debug\");\n expect(consoleOutput[2].msg).toContain(\"DEBUG\");\n expect(consoleOutput[2].msg).toContain(\"Debug message\");\n } finally {\n console.log = originalConsoleLog;\n console.error = originalConsoleError;\n console.debug = originalConsoleDebug;\n }\n });\n\n test(\"console fallback formats auxiliary data\", () => {\n const consoleOutput: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n consoleOutput.push(msg);\n };\n\n v3Logger({\n category: \"test\",\n message: \"Message with auxiliary\",\n level: 1,\n auxiliary: {\n stringValue: { value: \"test\", type: \"string\" },\n integerValue: { value: \"42\", type: \"integer\" },\n objectValue: {\n value: JSON.stringify({ nested: \"data\" }),\n type: \"object\",\n },\n },\n });\n\n expect(consoleOutput.length).toBe(1);\n const output = consoleOutput[0];\n expect(output).toContain(\"Message with auxiliary\");\n expect(output).toContain(\"stringValue\");\n expect(output).toContain(\"integerValue\");\n expect(output).toContain(\"objectValue\");\n } finally {\n console.log = originalConsoleLog;\n }\n });\n\n test(\"concurrent instances don't interfere\", () => {\n const instances = Array.from({ length: 10 }, (_, i) => `instance-${i}`);\n const logsByInstance = new Map<string, LogLine[]>();\n\n // Bind all instances\n instances.forEach((id) => {\n const logs: LogLine[] = [];\n logsByInstance.set(id, logs);\n bindInstanceLogger(id, (line) => logs.push(line));\n });\n\n try {\n // Log from each instance\n instances.forEach((id, index) => {\n withInstanceLogContext(id, () => {\n v3Logger({\n category: \"test\",\n message: `Message from ${id}`,\n level: 1,\n auxiliary: {\n index: { value: String(index), type: \"integer\" },\n },\n });\n });\n });\n\n // Verify each instance received only its own log\n instances.forEach((id) => {\n const logs = logsByInstance.get(id)!;\n expect(logs.length).toBe(1);\n expect(logs[0].message).toBe(`Message from ${id}`);\n });\n } finally {\n instances.forEach((id) => unbindInstanceLogger(id));\n }\n });\n});\n\ntest.describe(\"V3 Logger with External Logger (Production Pattern)\", () => {\n test.afterEach(() => {\n // Clean up instance loggers\n });\n\n test(\"external logger receives all logs from v3Logger\", () => {\n const instanceId = \"v3-instance-with-external\";\n const externalLogs: LogLine[] = [];\n\n // Simulate V3 constructor behavior with external logger\n const externalLogger = (line: LogLine) => {\n externalLogs.push(line);\n };\n\n bindInstanceLogger(instanceId, externalLogger);\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"a11y/snapshot\",\n message: \"Capturing hybrid snapshot\",\n level: 0,\n });\n\n v3Logger({\n category: \"handlers/act\",\n message: \"Executing action\",\n level: 1,\n auxiliary: {\n action: { value: \"click\", type: \"string\" },\n },\n });\n\n v3Logger({\n category: \"debug\",\n message: \"Debug details\",\n level: 2,\n });\n });\n\n // All logs should be captured by external logger\n expect(externalLogs.length).toBe(3);\n expect(externalLogs[0].message).toBe(\"Capturing hybrid snapshot\");\n expect(externalLogs[1].message).toBe(\"Executing action\");\n expect(externalLogs[2].message).toBe(\"Debug details\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"StagehandLogger wrapper forwards to external logger\", () => {\n const instanceId = \"v3-with-stagehand-wrapper\";\n const externalLogs: LogLine[] = [];\n\n // Simulate V3's stagehandLogger.log() wrapping pattern\n const mockStagehandLogger = {\n log: (line: LogLine) => {\n // This simulates StagehandLogger.log() which internally calls externalLogger\n externalLogs.push(line);\n },\n };\n\n bindInstanceLogger(instanceId, (line) => mockStagehandLogger.log(line));\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Log through StagehandLogger wrapper\",\n level: 1,\n });\n });\n\n expect(externalLogs.length).toBe(1);\n expect(externalLogs[0].message).toBe(\n \"Log through StagehandLogger wrapper\",\n );\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"multiple V3 instances with different external loggers\", () => {\n const instance1Id = \"v3-instance-1\";\n const instance2Id = \"v3-instance-2\";\n const external1Logs: LogLine[] = [];\n const external2Logs: LogLine[] = [];\n\n // Simulate two V3 instances with different external loggers\n bindInstanceLogger(instance1Id, (line) => external1Logs.push(line));\n bindInstanceLogger(instance2Id, (line) => external2Logs.push(line));\n\n try {\n // Instance 1 logs\n withInstanceLogContext(instance1Id, () => {\n v3Logger({\n category: \"instance1\",\n message: \"Instance 1 activity\",\n level: 1,\n });\n });\n\n // Instance 2 logs\n withInstanceLogContext(instance2Id, () => {\n v3Logger({\n category: \"instance2\",\n message: \"Instance 2 activity\",\n level: 1,\n });\n });\n\n // Each external logger should only have its instance's logs\n expect(external1Logs.length).toBe(1);\n expect(external2Logs.length).toBe(1);\n expect(external1Logs[0].message).toBe(\"Instance 1 activity\");\n expect(external2Logs[0].message).toBe(\"Instance 2 activity\");\n } finally {\n unbindInstanceLogger(instance1Id);\n unbindInstanceLogger(instance2Id);\n }\n });\n\n test(\"external logger receives logs with auxiliary data preserved\", () => {\n const instanceId = \"v3-with-auxiliary\";\n const externalLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => externalLogs.push(line));\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"extract\",\n message: \"Extracting data\",\n level: 1,\n auxiliary: {\n selector: { value: \"xpath=/html/body\", type: \"string\" },\n timeout: { value: \"5000\", type: \"integer\" },\n retries: { value: \"3\", type: \"integer\" },\n metadata: {\n value: JSON.stringify({ key: \"value\" }),\n type: \"object\",\n },\n },\n });\n });\n\n expect(externalLogs.length).toBe(1);\n const log = externalLogs[0];\n expect(log.auxiliary).toBeDefined();\n expect(log.auxiliary?.selector?.value).toBe(\"xpath=/html/body\");\n expect(log.auxiliary?.timeout?.value).toBe(\"5000\");\n expect(log.auxiliary?.retries?.value).toBe(\"3\");\n expect(log.auxiliary?.metadata?.type).toBe(\"object\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"external logger handles rapid concurrent logs\", () => {\n const instanceId = \"v3-rapid-logs\";\n const externalLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => externalLogs.push(line));\n\n try {\n withInstanceLogContext(instanceId, () => {\n // Simulate rapid logging like during snapshot capture\n for (let i = 0; i < 50; i++) {\n v3Logger({\n category: \"perf\",\n message: `Operation ${i}`,\n level: 2,\n auxiliary: {\n iteration: { value: String(i), type: \"integer\" },\n },\n });\n }\n });\n\n // All logs should be captured\n expect(externalLogs.length).toBe(50);\n expect(externalLogs[0].message).toBe(\"Operation 0\");\n expect(externalLogs[49].message).toBe(\"Operation 49\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"external logger can filter by log level\", () => {\n const instanceId = \"v3-with-filtering\";\n const errorLogs: LogLine[] = [];\n\n // External logger that only captures errors\n const filteringLogger = (line: LogLine) => {\n if (line.level === 0) {\n errorLogs.push(line);\n }\n };\n\n bindInstanceLogger(instanceId, filteringLogger);\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Info message\",\n level: 1,\n });\n\n v3Logger({\n category: \"test\",\n message: \"Error message\",\n level: 0,\n });\n\n v3Logger({\n category: \"test\",\n message: \"Debug message\",\n level: 2,\n });\n\n v3Logger({\n category: \"test\",\n message: \"Another error\",\n level: 0,\n });\n });\n\n // Only error logs should be captured\n expect(errorLogs.length).toBe(2);\n expect(errorLogs[0].message).toBe(\"Error message\");\n expect(errorLogs[1].message).toBe(\"Another error\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"external logger persists across async operations\", async () => {\n const instanceId = \"v3-async-ops\";\n const externalLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => externalLogs.push(line));\n\n try {\n await withInstanceLogContext(instanceId, async () => {\n v3Logger({\n category: \"async\",\n message: \"Before async operation\",\n level: 1,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 50));\n\n v3Logger({\n category: \"async\",\n message: \"After async operation\",\n level: 1,\n });\n\n await Promise.all([\n Promise.resolve().then(() =>\n v3Logger({\n category: \"async\",\n message: \"Parallel operation 1\",\n level: 1,\n }),\n ),\n Promise.resolve().then(() =>\n v3Logger({\n category: \"async\",\n message: \"Parallel operation 2\",\n level: 1,\n }),\n ),\n ]);\n });\n\n // All logs should be captured despite async boundaries\n expect(externalLogs.length).toBe(4);\n expect(externalLogs[0].message).toBe(\"Before async operation\");\n expect(externalLogs[1].message).toBe(\"After async operation\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n});\n"]}
@@ -1,291 +0,0 @@
1
- import { test, expect } from "@playwright/test";
2
- import { V3 } from "../../lib/v3/v3.js";
3
- import { getV3DynamicTestConfig } from "./v3.dynamic.config.js";
4
- import { closeV3 } from "./testUtils.js";
5
- test.describe("V3 Multi-Instance Logger Isolation", () => {
6
- // Run tests serially to avoid resource exhaustion from creating many Chrome instances
7
- test.describe.configure({ mode: "serial" });
8
- // Increase timeout for stress tests that create/destroy multiple instances
9
- test.setTimeout(120_000);
10
- test("multiple V3 instances can be created concurrently without logger conflicts", async () => {
11
- const instanceCount = 5;
12
- const instances = [];
13
- const instanceLogs = new Map();
14
- try {
15
- // Create multiple instances with individual loggers
16
- const creationPromises = Array.from({ length: instanceCount }, (_, i) => {
17
- const logs = [];
18
- instanceLogs.set(i, logs);
19
- const config = getV3DynamicTestConfig({
20
- verbose: 2,
21
- disablePino: true,
22
- logger: (line) => {
23
- logs.push({
24
- ...line,
25
- auxiliary: {
26
- ...line.auxiliary,
27
- index: { value: String(i), type: "integer" },
28
- },
29
- });
30
- },
31
- });
32
- const v3 = new V3(config);
33
- instances.push(v3);
34
- return v3.init();
35
- });
36
- // All instances should initialize successfully
37
- await Promise.all(creationPromises);
38
- // Each instance should be initialized
39
- expect(instances.length).toBe(instanceCount);
40
- for (const instance of instances) {
41
- expect(instance.context).toBeDefined();
42
- }
43
- // Perform operations that generate logs
44
- await Promise.all(instances.map(async (instance) => {
45
- const page = await instance.context.awaitActivePage();
46
- await page.goto("about:blank");
47
- }));
48
- // Each instance should have logged to its own logger
49
- for (let i = 0; i < instanceCount; i++) {
50
- const logs = instanceLogs.get(i);
51
- // Each instance should have some logs
52
- expect(logs.length).toBeGreaterThan(0);
53
- // Logs should not contain data from other instances
54
- // (though this is harder to verify without more specific markers)
55
- const hasOwnLogs = logs.some((log) => log.auxiliary?.index?.value === String(i) ||
56
- log.category === "init");
57
- expect(hasOwnLogs).toBe(true);
58
- }
59
- }
60
- finally {
61
- // Clean up all instances
62
- await Promise.all(instances.map((instance) => closeV3(instance)));
63
- }
64
- });
65
- test("V3 instances with external loggers don't leak logs to each other", async () => {
66
- const instance1Logs = [];
67
- const instance2Logs = [];
68
- const v3Instance1 = new V3(getV3DynamicTestConfig({
69
- verbose: 2,
70
- disablePino: true,
71
- logger: (line) => instance1Logs.push(line),
72
- }));
73
- const v3Instance2 = new V3(getV3DynamicTestConfig({
74
- verbose: 2,
75
- disablePino: true,
76
- logger: (line) => instance2Logs.push(line),
77
- }));
78
- try {
79
- // Initialize both instances
80
- await Promise.all([v3Instance1.init(), v3Instance2.init()]);
81
- // Perform operations on each instance
82
- const page1 = await v3Instance1.context.awaitActivePage();
83
- await page1.goto("about:blank");
84
- const page2 = await v3Instance2.context.awaitActivePage();
85
- await page2.goto("data:text/html,<h1>Instance 2</h1>");
86
- // Both instances should have logs
87
- expect(instance1Logs.length).toBeGreaterThan(0);
88
- expect(instance2Logs.length).toBeGreaterThan(0);
89
- // Logs should be distinct (no exact duplicates)
90
- // This is a weak check, but verifies basic isolation
91
- const instance1Messages = new Set(instance1Logs.map((l) => l.message));
92
- const instance2Messages = new Set(instance2Logs.map((l) => l.message));
93
- // At least some messages should be unique to each instance
94
- // (This might not always be true for very generic messages like "init",
95
- // but serves as a smoke test)
96
- const allMessages = new Set([...instance1Messages, ...instance2Messages]);
97
- expect(allMessages.size).toBeGreaterThanOrEqual(Math.max(instance1Messages.size, instance2Messages.size));
98
- }
99
- finally {
100
- await Promise.all([closeV3(v3Instance1), closeV3(v3Instance2)]);
101
- }
102
- });
103
- test("V3 instances without external loggers use shared global logger", async () => {
104
- // Create instances without external loggers
105
- const v3Instance1 = new V3(getV3DynamicTestConfig({
106
- verbose: 1,
107
- disablePino: true,
108
- }));
109
- const v3Instance2 = new V3(getV3DynamicTestConfig({
110
- verbose: 1,
111
- disablePino: true,
112
- }));
113
- try {
114
- // Initialize both instances concurrently
115
- await Promise.all([v3Instance1.init(), v3Instance2.init()]);
116
- // Both should work fine
117
- expect(v3Instance1.context).toBeDefined();
118
- expect(v3Instance2.context).toBeDefined();
119
- // Perform basic operations to ensure logging doesn't cause issues
120
- const page1 = await v3Instance1.context.awaitActivePage();
121
- const page2 = await v3Instance2.context.awaitActivePage();
122
- await Promise.all([page1.goto("about:blank"), page2.goto("about:blank")]);
123
- // Both should still be operational
124
- expect(page1.url()).toContain("about:blank");
125
- expect(page2.url()).toContain("about:blank");
126
- }
127
- finally {
128
- await Promise.all([closeV3(v3Instance1), closeV3(v3Instance2)]);
129
- }
130
- });
131
- test("rapidly creating and destroying instances doesn't cause logger issues", async () => {
132
- const iterations = 5;
133
- const results = [];
134
- for (let i = 0; i < iterations; i++) {
135
- const logs = [];
136
- const v3 = new V3(getV3DynamicTestConfig({
137
- verbose: 1, // Capture INFO logs for verification
138
- disablePino: true,
139
- logger: (line) => logs.push(line),
140
- }));
141
- try {
142
- await v3.init();
143
- const page = await v3.context.awaitActivePage();
144
- await page.goto("about:blank");
145
- results.push(true);
146
- // Verify some logs were captured
147
- expect(logs.length).toBeGreaterThan(0);
148
- }
149
- finally {
150
- await closeV3(v3);
151
- }
152
- }
153
- // All iterations should succeed
154
- expect(results.length).toBe(iterations);
155
- expect(results.every((r) => r === true)).toBe(true);
156
- });
157
- test("concurrent instance creation with mixed logger configurations", async () => {
158
- const instances = [];
159
- const configs = [
160
- // With Pino disabled
161
- getV3DynamicTestConfig({ verbose: 1, disablePino: true }),
162
- // With external logger
163
- getV3DynamicTestConfig({
164
- verbose: 2,
165
- disablePino: true,
166
- //eslint-disable-next-line @typescript-eslint/no-unused-vars
167
- logger: (_line) => {
168
- // External logger
169
- },
170
- }),
171
- // Without external logger
172
- getV3DynamicTestConfig({ verbose: 0, disablePino: true }),
173
- // High verbosity
174
- getV3DynamicTestConfig({ verbose: 2, disablePino: true }),
175
- ];
176
- try {
177
- // Create all instances concurrently
178
- const creationPromises = configs.map((config) => {
179
- const v3 = new V3(config);
180
- instances.push(v3);
181
- return v3.init();
182
- });
183
- await Promise.all(creationPromises);
184
- // All should be initialized successfully
185
- expect(instances.length).toBe(configs.length);
186
- for (const instance of instances) {
187
- expect(instance.context).toBeDefined();
188
- }
189
- // All should be able to perform operations
190
- await Promise.all(instances.map(async (instance) => {
191
- const page = await instance.context.awaitActivePage();
192
- await page.goto("about:blank");
193
- expect(page.url()).toContain("about:blank");
194
- }));
195
- }
196
- finally {
197
- await Promise.all(instances.map((instance) => closeV3(instance)));
198
- }
199
- });
200
- test("V3 instance logger is properly cleaned up on close", async () => {
201
- const logs = [];
202
- const v3 = new V3(getV3DynamicTestConfig({
203
- verbose: 2,
204
- disablePino: true,
205
- logger: (line) => logs.push(line),
206
- }));
207
- await v3.init();
208
- const initialLogCount = logs.length;
209
- expect(initialLogCount).toBeGreaterThan(0);
210
- await closeV3(v3);
211
- // After close, the instance should not generate new logs
212
- // (This is hard to test directly, but we can verify the instance is closed)
213
- expect(v3["state"].kind).toBe("UNINITIALIZED");
214
- });
215
- test("logger works correctly across instance lifecycle", async () => {
216
- const logs = [];
217
- const v3 = new V3(getV3DynamicTestConfig({
218
- verbose: 2,
219
- disablePino: true,
220
- logger: (line) => logs.push(line),
221
- }));
222
- try {
223
- // Before init
224
- expect(logs.length).toBe(0);
225
- // After init
226
- await v3.init();
227
- const afterInitCount = logs.length;
228
- expect(afterInitCount).toBeGreaterThan(0);
229
- // During operation
230
- const page = await v3.context.awaitActivePage();
231
- await page.goto("data:text/html,<h1>Test</h1>");
232
- const afterOperationCount = logs.length;
233
- expect(afterOperationCount).toBeGreaterThanOrEqual(afterInitCount);
234
- // Verify log structure
235
- const initLogs = logs.filter((log) => log.category === "init");
236
- expect(initLogs.length).toBeGreaterThan(0);
237
- // All logs should have required fields
238
- for (const log of logs) {
239
- expect(log.category).toBeDefined();
240
- expect(log.message).toBeDefined();
241
- expect(typeof log.level).toBe("number");
242
- }
243
- }
244
- finally {
245
- await closeV3(v3);
246
- }
247
- });
248
- test("multiple instances can navigate concurrently without logger interference", async () => {
249
- const instanceCount = 3;
250
- const instances = [];
251
- const instanceLogs = new Map();
252
- try {
253
- // Create instances
254
- for (let i = 0; i < instanceCount; i++) {
255
- const logs = [];
256
- instanceLogs.set(i, logs);
257
- const v3 = new V3(getV3DynamicTestConfig({
258
- verbose: 1,
259
- disablePino: true,
260
- logger: (line) => logs.push(line),
261
- }));
262
- instances.push(v3);
263
- await v3.init();
264
- }
265
- // Navigate all instances concurrently to different URLs
266
- const urls = [
267
- "data:text/html,<h1>Page 1</h1>",
268
- "data:text/html,<h1>Page 2</h1>",
269
- "data:text/html,<h1>Page 3</h1>",
270
- ];
271
- await Promise.all(instances.map(async (instance, i) => {
272
- const page = await instance.context.awaitActivePage();
273
- await page.goto(urls[i]);
274
- }));
275
- // Verify each instance navigated to the correct URL
276
- for (let i = 0; i < instanceCount; i++) {
277
- const page = await instances[i].context.awaitActivePage();
278
- expect(page.url()).toContain(`Page ${i + 1}`);
279
- }
280
- // Each instance should have its own logs
281
- for (let i = 0; i < instanceCount; i++) {
282
- const logs = instanceLogs.get(i);
283
- expect(logs.length).toBeGreaterThan(0);
284
- }
285
- }
286
- finally {
287
- await Promise.all(instances.map((instance) => closeV3(instance)));
288
- }
289
- });
290
- });
291
- //# sourceMappingURL=multi-instance-logger.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-instance-logger.spec.js","sourceRoot":"","sources":["../../../../tests/integration/multi-instance-logger.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { getV3DynamicTestConfig } from \"./v3.dynamic.config.js\";\nimport type { LogLine } from \"../../lib/v3/types/public/logs.js\";\nimport { closeV3 } from \"./testUtils.js\";\n\ntest.describe(\"V3 Multi-Instance Logger Isolation\", () => {\n // Run tests serially to avoid resource exhaustion from creating many Chrome instances\n test.describe.configure({ mode: \"serial\" });\n // Increase timeout for stress tests that create/destroy multiple instances\n test.setTimeout(120_000);\n\n test(\"multiple V3 instances can be created concurrently without logger conflicts\", async () => {\n const instanceCount = 5;\n const instances: V3[] = [];\n const instanceLogs: Map<number, LogLine[]> = new Map();\n\n try {\n // Create multiple instances with individual loggers\n const creationPromises = Array.from({ length: instanceCount }, (_, i) => {\n const logs: LogLine[] = [];\n instanceLogs.set(i, logs);\n\n const config = getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => {\n logs.push({\n ...line,\n auxiliary: {\n ...line.auxiliary,\n index: { value: String(i), type: \"integer\" },\n },\n });\n },\n });\n\n const v3 = new V3(config);\n instances.push(v3);\n return v3.init();\n });\n\n // All instances should initialize successfully\n await Promise.all(creationPromises);\n\n // Each instance should be initialized\n expect(instances.length).toBe(instanceCount);\n for (const instance of instances) {\n expect(instance.context).toBeDefined();\n }\n\n // Perform operations that generate logs\n await Promise.all(\n instances.map(async (instance) => {\n const page = await instance.context.awaitActivePage();\n await page.goto(\"about:blank\");\n }),\n );\n\n // Each instance should have logged to its own logger\n for (let i = 0; i < instanceCount; i++) {\n const logs = instanceLogs.get(i)!;\n // Each instance should have some logs\n expect(logs.length).toBeGreaterThan(0);\n\n // Logs should not contain data from other instances\n // (though this is harder to verify without more specific markers)\n const hasOwnLogs = logs.some(\n (log) =>\n log.auxiliary?.index?.value === String(i) ||\n log.category === \"init\",\n );\n expect(hasOwnLogs).toBe(true);\n }\n } finally {\n // Clean up all instances\n await Promise.all(instances.map((instance) => closeV3(instance)));\n }\n });\n\n test(\"V3 instances with external loggers don't leak logs to each other\", async () => {\n const instance1Logs: LogLine[] = [];\n const instance2Logs: LogLine[] = [];\n\n const v3Instance1 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => instance1Logs.push(line),\n }),\n );\n\n const v3Instance2 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => instance2Logs.push(line),\n }),\n );\n\n try {\n // Initialize both instances\n await Promise.all([v3Instance1.init(), v3Instance2.init()]);\n\n // Perform operations on each instance\n const page1 = await v3Instance1.context.awaitActivePage();\n await page1.goto(\"about:blank\");\n\n const page2 = await v3Instance2.context.awaitActivePage();\n await page2.goto(\"data:text/html,<h1>Instance 2</h1>\");\n\n // Both instances should have logs\n expect(instance1Logs.length).toBeGreaterThan(0);\n expect(instance2Logs.length).toBeGreaterThan(0);\n\n // Logs should be distinct (no exact duplicates)\n // This is a weak check, but verifies basic isolation\n const instance1Messages = new Set(instance1Logs.map((l) => l.message));\n const instance2Messages = new Set(instance2Logs.map((l) => l.message));\n\n // At least some messages should be unique to each instance\n // (This might not always be true for very generic messages like \"init\",\n // but serves as a smoke test)\n const allMessages = new Set([...instance1Messages, ...instance2Messages]);\n expect(allMessages.size).toBeGreaterThanOrEqual(\n Math.max(instance1Messages.size, instance2Messages.size),\n );\n } finally {\n await Promise.all([closeV3(v3Instance1), closeV3(v3Instance2)]);\n }\n });\n\n test(\"V3 instances without external loggers use shared global logger\", async () => {\n // Create instances without external loggers\n const v3Instance1 = new V3(\n getV3DynamicTestConfig({\n verbose: 1,\n disablePino: true,\n }),\n );\n\n const v3Instance2 = new V3(\n getV3DynamicTestConfig({\n verbose: 1,\n disablePino: true,\n }),\n );\n\n try {\n // Initialize both instances concurrently\n await Promise.all([v3Instance1.init(), v3Instance2.init()]);\n\n // Both should work fine\n expect(v3Instance1.context).toBeDefined();\n expect(v3Instance2.context).toBeDefined();\n\n // Perform basic operations to ensure logging doesn't cause issues\n const page1 = await v3Instance1.context.awaitActivePage();\n const page2 = await v3Instance2.context.awaitActivePage();\n\n await Promise.all([page1.goto(\"about:blank\"), page2.goto(\"about:blank\")]);\n\n // Both should still be operational\n expect(page1.url()).toContain(\"about:blank\");\n expect(page2.url()).toContain(\"about:blank\");\n } finally {\n await Promise.all([closeV3(v3Instance1), closeV3(v3Instance2)]);\n }\n });\n\n test(\"rapidly creating and destroying instances doesn't cause logger issues\", async () => {\n const iterations = 5;\n const results: boolean[] = [];\n\n for (let i = 0; i < iterations; i++) {\n const logs: LogLine[] = [];\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 1, // Capture INFO logs for verification\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n try {\n await v3.init();\n const page = await v3.context.awaitActivePage();\n await page.goto(\"about:blank\");\n results.push(true);\n\n // Verify some logs were captured\n expect(logs.length).toBeGreaterThan(0);\n } finally {\n await closeV3(v3);\n }\n }\n\n // All iterations should succeed\n expect(results.length).toBe(iterations);\n expect(results.every((r) => r === true)).toBe(true);\n });\n\n test(\"concurrent instance creation with mixed logger configurations\", async () => {\n const instances: V3[] = [];\n const configs = [\n // With Pino disabled\n getV3DynamicTestConfig({ verbose: 1, disablePino: true }),\n // With external logger\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n //eslint-disable-next-line @typescript-eslint/no-unused-vars\n logger: (_line: LogLine) => {\n // External logger\n },\n }),\n // Without external logger\n getV3DynamicTestConfig({ verbose: 0, disablePino: true }),\n // High verbosity\n getV3DynamicTestConfig({ verbose: 2, disablePino: true }),\n ];\n\n try {\n // Create all instances concurrently\n const creationPromises = configs.map((config) => {\n const v3 = new V3(config);\n instances.push(v3);\n return v3.init();\n });\n\n await Promise.all(creationPromises);\n\n // All should be initialized successfully\n expect(instances.length).toBe(configs.length);\n for (const instance of instances) {\n expect(instance.context).toBeDefined();\n }\n\n // All should be able to perform operations\n await Promise.all(\n instances.map(async (instance) => {\n const page = await instance.context.awaitActivePage();\n await page.goto(\"about:blank\");\n expect(page.url()).toContain(\"about:blank\");\n }),\n );\n } finally {\n await Promise.all(instances.map((instance) => closeV3(instance)));\n }\n });\n\n test(\"V3 instance logger is properly cleaned up on close\", async () => {\n const logs: LogLine[] = [];\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n await v3.init();\n const initialLogCount = logs.length;\n expect(initialLogCount).toBeGreaterThan(0);\n\n await closeV3(v3);\n\n // After close, the instance should not generate new logs\n // (This is hard to test directly, but we can verify the instance is closed)\n expect(v3[\"state\"].kind).toBe(\"UNINITIALIZED\");\n });\n\n test(\"logger works correctly across instance lifecycle\", async () => {\n const logs: LogLine[] = [];\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n try {\n // Before init\n expect(logs.length).toBe(0);\n\n // After init\n await v3.init();\n const afterInitCount = logs.length;\n expect(afterInitCount).toBeGreaterThan(0);\n\n // During operation\n const page = await v3.context.awaitActivePage();\n await page.goto(\"data:text/html,<h1>Test</h1>\");\n const afterOperationCount = logs.length;\n expect(afterOperationCount).toBeGreaterThanOrEqual(afterInitCount);\n\n // Verify log structure\n const initLogs = logs.filter((log) => log.category === \"init\");\n expect(initLogs.length).toBeGreaterThan(0);\n\n // All logs should have required fields\n for (const log of logs) {\n expect(log.category).toBeDefined();\n expect(log.message).toBeDefined();\n expect(typeof log.level).toBe(\"number\");\n }\n } finally {\n await closeV3(v3);\n }\n });\n\n test(\"multiple instances can navigate concurrently without logger interference\", async () => {\n const instanceCount = 3;\n const instances: V3[] = [];\n const instanceLogs: Map<number, LogLine[]> = new Map();\n\n try {\n // Create instances\n for (let i = 0; i < instanceCount; i++) {\n const logs: LogLine[] = [];\n instanceLogs.set(i, logs);\n\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 1,\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n instances.push(v3);\n await v3.init();\n }\n\n // Navigate all instances concurrently to different URLs\n const urls = [\n \"data:text/html,<h1>Page 1</h1>\",\n \"data:text/html,<h1>Page 2</h1>\",\n \"data:text/html,<h1>Page 3</h1>\",\n ];\n\n await Promise.all(\n instances.map(async (instance, i) => {\n const page = await instance.context.awaitActivePage();\n await page.goto(urls[i]);\n }),\n );\n\n // Verify each instance navigated to the correct URL\n for (let i = 0; i < instanceCount; i++) {\n const page = await instances[i].context.awaitActivePage();\n expect(page.url()).toContain(`Page ${i + 1}`);\n }\n\n // Each instance should have its own logs\n for (let i = 0; i < instanceCount; i++) {\n const logs = instanceLogs.get(i)!;\n expect(logs.length).toBeGreaterThan(0);\n }\n } finally {\n await Promise.all(instances.map((instance) => closeV3(instance)));\n }\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,20 +0,0 @@
1
- import { test, expect } from "@playwright/test";
2
- import { V3 } from "../../lib/v3/v3.js";
3
- import { captureHybridSnapshot } from "../../lib/v3/understudy/a11y/snapshot/index.js";
4
- import { v3TestConfig } from "./v3.config.js";
5
- test.describe("tests captureHybridSnapshot() does not break due to -32000 Failed to convert response to JSON: CBOR: stack limit exceeded", () => {
6
- let v3;
7
- test.beforeEach(async () => {
8
- v3 = new V3(v3TestConfig);
9
- await v3.init();
10
- });
11
- test.afterEach(async () => {
12
- await v3?.close?.().catch(() => { });
13
- });
14
- test("captureHybridSnapshot does not throw", async () => {
15
- const page = v3.context.pages()[0];
16
- await page.goto("https://browserbase.github.io/stagehand-eval-sites/sites/nested-div/");
17
- await expect(captureHybridSnapshot(page)).resolves.toBeDefined();
18
- });
19
- });
20
- //# sourceMappingURL=nested-div.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nested-div.spec.js","sourceRoot":"","sources":["../../../../tests/integration/nested-div.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,IAAI,CAAC,QAAQ,CAAC,2HAA2H,EAAE,GAAG,EAAE;IAC9I,IAAI,EAAM,CAAC;IAEX,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QACzB,EAAE,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,IAAI,CAAC,IAAI,CACb,sEAAsE,CACvE,CAAC;QAEF,MAAM,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { captureHybridSnapshot } from \"../../lib/v3/understudy/a11y/snapshot/index.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\n\ntest.describe(\"tests captureHybridSnapshot() does not break due to -32000 Failed to convert response to JSON: CBOR: stack limit exceeded\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3(v3TestConfig);\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"captureHybridSnapshot does not throw\", async () => {\n const page = v3.context.pages()[0];\n\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/nested-div/\",\n );\n\n await expect(captureHybridSnapshot(page)).resolves.toBeDefined();\n });\n});\n"]}
@@ -1,128 +0,0 @@
1
- import { expect, test } from "@playwright/test";
2
- import { V3 } from "../../lib/v3/v3.js";
3
- import { getV3TestConfig } from "./v3.config.js";
4
- import { closeV3, createScriptedAisdkTestLlmClient, findLastEncodedId, promptToText, } from "./testUtils.js";
5
- const encodedIdPattern = /^\d+-\d+$/;
6
- const mainFrameEncodedIdPattern = /^0-\d+$/;
7
- function encodeHtml(html) {
8
- return `data:text/html,${encodeURIComponent(html)}`;
9
- }
10
- const filler = Array.from({ length: 80 }, (_, index) => `<span hidden data-filler="${index}">filler ${index}</span>`).join("");
11
- const cases = [
12
- {
13
- name: "button after hidden filler nodes",
14
- instruction: "Find the Target Checkout button",
15
- targetText: "Target Checkout",
16
- marker: "checkout",
17
- html: `
18
- <!doctype html>
19
- <html>
20
- <body>
21
- ${filler}
22
- <main>
23
- <button onclick="document.body.dataset.clicked = 'checkout'">
24
- Target Checkout
25
- </button>
26
- </main>
27
- </body>
28
- </html>
29
- `,
30
- },
31
- {
32
- name: "navigation link",
33
- instruction: "Find the Pricing Plans link",
34
- targetText: "Pricing Plans",
35
- marker: "pricing",
36
- html: `
37
- <!doctype html>
38
- <html>
39
- <body>
40
- <nav>
41
- <a href="#pricing" onclick="document.body.dataset.clicked = 'pricing'">
42
- Pricing Plans
43
- </a>
44
- </nav>
45
- </body>
46
- </html>
47
- `,
48
- },
49
- {
50
- name: "form input",
51
- instruction: "Find the Company Email input",
52
- targetText: "Company Email",
53
- marker: "email",
54
- html: `
55
- <!doctype html>
56
- <html>
57
- <body>
58
- <form>
59
- <label>
60
- Company Email
61
- <input
62
- type="email"
63
- onclick="document.body.dataset.clicked = 'email'"
64
- />
65
- </label>
66
- </form>
67
- </body>
68
- </html>
69
- `,
70
- },
71
- ];
72
- function observeResponseForTarget(testCase, onElementId) {
73
- return (options) => {
74
- const promptText = promptToText(options.prompt);
75
- expect(promptText).toContain("Always copy the complete ID exactly as shown inside the brackets into elementId");
76
- expect(promptText).toContain('return elementId "0-18372"');
77
- expect(promptText).toContain(testCase.targetText);
78
- const elementId = findLastEncodedId(options);
79
- expect(elementId).toMatch(encodedIdPattern);
80
- expect(elementId).toMatch(mainFrameEncodedIdPattern);
81
- onElementId(elementId, options);
82
- return {
83
- elements: [
84
- {
85
- elementId,
86
- description: testCase.targetText,
87
- method: "click",
88
- arguments: [],
89
- },
90
- ],
91
- };
92
- };
93
- }
94
- test.describe("observe main frame element IDs", () => {
95
- for (const testCase of cases) {
96
- test(`keeps complete 0-ordinal element IDs for ${testCase.name}`, async () => {
97
- let observedElementId;
98
- const llmClient = createScriptedAisdkTestLlmClient({
99
- modelId: "mock/observe-main-frame-element-id-format",
100
- jsonResponses: {
101
- Observation: observeResponseForTarget(testCase, (elementId) => {
102
- observedElementId = elementId;
103
- }),
104
- },
105
- });
106
- const v3 = new V3(getV3TestConfig({
107
- llmClient,
108
- }));
109
- await v3.init();
110
- try {
111
- const page = v3.context.pages()[0];
112
- await page.goto(encodeHtml(testCase.html));
113
- const observed = await v3.observe(testCase.instruction);
114
- expect(observedElementId).toMatch(mainFrameEncodedIdPattern);
115
- expect(observed).toHaveLength(1);
116
- expect(observed[0].selector).toMatch(/^xpath=/);
117
- const actResult = await v3.act(observed[0]);
118
- expect(actResult.success).toBe(true);
119
- const clicked = await page.evaluate(() => document.body.dataset.clicked);
120
- expect(clicked).toBe(testCase.marker);
121
- }
122
- finally {
123
- await closeV3(v3);
124
- }
125
- });
126
- }
127
- });
128
- //# sourceMappingURL=observe-element-id-format.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observe-element-id-format.spec.js","sourceRoot":"","sources":["../../../../tests/integration/observe-element-id-format.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, test } from \"@playwright/test\";\nimport type { LanguageModelV2CallOptions } from \"@ai-sdk/provider\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { getV3TestConfig } from \"./v3.config.js\";\nimport {\n closeV3,\n createScriptedAisdkTestLlmClient,\n findLastEncodedId,\n promptToText,\n} from \"./testUtils.js\";\n\nconst encodedIdPattern = /^\\d+-\\d+$/;\nconst mainFrameEncodedIdPattern = /^0-\\d+$/;\n\nfunction encodeHtml(html: string): string {\n return `data:text/html,${encodeURIComponent(html)}`;\n}\n\ntype MainFrameCase = {\n name: string;\n instruction: string;\n targetText: string;\n marker: string;\n html: string;\n};\n\nconst filler = Array.from(\n { length: 80 },\n (_, index) => `<span hidden data-filler=\"${index}\">filler ${index}</span>`,\n).join(\"\");\n\nconst cases: MainFrameCase[] = [\n {\n name: \"button after hidden filler nodes\",\n instruction: \"Find the Target Checkout button\",\n targetText: \"Target Checkout\",\n marker: \"checkout\",\n html: `\n <!doctype html>\n <html>\n <body>\n ${filler}\n <main>\n <button onclick=\"document.body.dataset.clicked = 'checkout'\">\n Target Checkout\n </button>\n </main>\n </body>\n </html>\n `,\n },\n {\n name: \"navigation link\",\n instruction: \"Find the Pricing Plans link\",\n targetText: \"Pricing Plans\",\n marker: \"pricing\",\n html: `\n <!doctype html>\n <html>\n <body>\n <nav>\n <a href=\"#pricing\" onclick=\"document.body.dataset.clicked = 'pricing'\">\n Pricing Plans\n </a>\n </nav>\n </body>\n </html>\n `,\n },\n {\n name: \"form input\",\n instruction: \"Find the Company Email input\",\n targetText: \"Company Email\",\n marker: \"email\",\n html: `\n <!doctype html>\n <html>\n <body>\n <form>\n <label>\n Company Email\n <input\n type=\"email\"\n onclick=\"document.body.dataset.clicked = 'email'\"\n />\n </label>\n </form>\n </body>\n </html>\n `,\n },\n];\n\nfunction observeResponseForTarget(\n testCase: MainFrameCase,\n onElementId: (elementId: string, options: LanguageModelV2CallOptions) => void,\n) {\n return (options: LanguageModelV2CallOptions) => {\n const promptText = promptToText(options.prompt);\n expect(promptText).toContain(\n \"Always copy the complete ID exactly as shown inside the brackets into elementId\",\n );\n expect(promptText).toContain('return elementId \"0-18372\"');\n\n expect(promptText).toContain(testCase.targetText);\n\n const elementId = findLastEncodedId(options);\n expect(elementId).toMatch(encodedIdPattern);\n expect(elementId).toMatch(mainFrameEncodedIdPattern);\n onElementId(elementId, options);\n\n return {\n elements: [\n {\n elementId,\n description: testCase.targetText,\n method: \"click\",\n arguments: [] as string[],\n },\n ],\n };\n };\n}\n\ntest.describe(\"observe main frame element IDs\", () => {\n for (const testCase of cases) {\n test(`keeps complete 0-ordinal element IDs for ${testCase.name}`, async () => {\n let observedElementId: string | undefined;\n const llmClient = createScriptedAisdkTestLlmClient({\n modelId: \"mock/observe-main-frame-element-id-format\",\n jsonResponses: {\n Observation: observeResponseForTarget(testCase, (elementId) => {\n observedElementId = elementId;\n }),\n },\n });\n\n const v3 = new V3(\n getV3TestConfig({\n llmClient,\n }),\n );\n await v3.init();\n\n try {\n const page = v3.context.pages()[0];\n await page.goto(encodeHtml(testCase.html));\n\n const observed = await v3.observe(testCase.instruction);\n\n expect(observedElementId).toMatch(mainFrameEncodedIdPattern);\n expect(observed).toHaveLength(1);\n expect(observed[0].selector).toMatch(/^xpath=/);\n\n const actResult = await v3.act(observed[0]);\n expect(actResult.success).toBe(true);\n\n const clicked = await page.evaluate(\n () => document.body.dataset.clicked,\n );\n expect(clicked).toBe(testCase.marker);\n } finally {\n await closeV3(v3);\n }\n });\n }\n});\n"]}