@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,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const test_1 = require("@playwright/test");
4
- const v3_js_1 = require("../../lib/v3/v3.js");
5
- const v3_dynamic_config_js_1 = require("./v3.dynamic.config.js");
6
- const actHandlerUtils_js_1 = require("../../lib/v3/handlers/handlerUtils/actHandlerUtils.js");
7
- const testUtils_js_1 = require("./testUtils.js");
8
- test_1.test.describe("tests performUnderstudyMethod", () => {
9
- let v3;
10
- test_1.test.beforeEach(async () => {
11
- v3 = new v3_js_1.V3(v3_dynamic_config_js_1.v3DynamicTestConfig);
12
- await v3.init();
13
- });
14
- test_1.test.afterEach(async () => {
15
- await (0, testUtils_js_1.closeV3)(v3);
16
- });
17
- (0, test_1.test)("tests that clicking works", async () => {
18
- const page = v3.context.pages()[0];
19
- await page.goto("https://browserbase.github.io/stagehand-eval-sites/sites/no-js-click/");
20
- await (0, actHandlerUtils_js_1.performUnderstudyMethod)(page, page.mainFrame(), "click", "/html/body/button", [], 30000);
21
- const isVisible = await page.locator("#success-msg").isVisible();
22
- (0, test_1.expect)(isVisible).toBe(true);
23
- });
24
- (0, test_1.test)("fill sets input value", async () => {
25
- const page = v3.context.pages()[0];
26
- await page.goto("https://browserbase.github.io/stagehand-eval-sites/sites/login/");
27
- await (0, actHandlerUtils_js_1.performUnderstudyMethod)(page, page.mainFrame(), "fill", "/html/body/main/form/div[1]/input", ["Alice"], 30000);
28
- const textContent = await page
29
- .locator("/html/body/main/form/div[1]/input")
30
- .inputValue();
31
- (0, test_1.expect)(textContent).toBe("Alice");
32
- });
33
- (0, test_1.test)("tests that key presses work", async () => {
34
- const page = v3.context.pages()[0];
35
- await page.goto("https://browserbase.github.io/stagehand-eval-sites/sites/key-press/");
36
- await (0, actHandlerUtils_js_1.performUnderstudyMethod)(page, page.mainFrame(), "press", "xpath=/html", ["Enter"], 30000);
37
- const textContent = await page
38
- .locator("/html/body/div/div/h1")
39
- .textContent();
40
- (0, test_1.expect)(textContent).toContain("Enter");
41
- });
42
- (0, test_1.test)("tests select option from a dropdown", async () => {
43
- const page = v3.context.pages()[0];
44
- await page.goto("https://browserbase.github.io/stagehand-eval-sites/sites/nested-dropdown/");
45
- await (0, actHandlerUtils_js_1.performUnderstudyMethod)(page, page.mainFrame(), "selectOptionFromDropdown", "xpath=//*[@id='licenseType']", ["Smog Check Technician"], 30000);
46
- const inputValue = await page
47
- .locator("#licenseType >> option:checked")
48
- .textContent();
49
- (0, test_1.expect)(inputValue).toBe("Smog Check Technician");
50
- });
51
- (0, test_1.test)("tests drag & drop works (start xpath & end xpath)", async () => {
52
- const page = v3.context.pages()[0];
53
- await page.goto("https://browserbase.github.io/stagehand-eval-sites/sites/drag-drop/");
54
- await (0, actHandlerUtils_js_1.performUnderstudyMethod)(page, page.mainFrame(), "dragAndDrop", "xpath=/html/body/div/section[1]/div[1]/div[1]", // start xpath
55
- ["/html/body/div/section[2]/div/div[1]"], // end xpath
56
- 30000);
57
- const droppedContent = await page
58
- .locator("/html/body/div/section[2]/div/div[1]/div")
59
- .textContent();
60
- (0, test_1.expect)(droppedContent).toBe("TEXT: Hello from text");
61
- });
62
- });
63
- //# sourceMappingURL=perform-understudy-method.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"perform-understudy-method.spec.js","sourceRoot":"","sources":["../../../../tests/integration/perform-understudy-method.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, test } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3DynamicTestConfig } from \"./v3.dynamic.config.js\";\nimport { performUnderstudyMethod } from \"../../lib/v3/handlers/handlerUtils/actHandlerUtils.js\";\nimport { closeV3 } from \"./testUtils.js\";\n\ntest.describe(\"tests performUnderstudyMethod\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3(v3DynamicTestConfig);\n await v3.init();\n });\n\n test.afterEach(async () => {\n await closeV3(v3);\n });\n\n test(\"tests that clicking works\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/no-js-click/\",\n );\n\n await performUnderstudyMethod(\n page,\n page.mainFrame(),\n \"click\",\n \"/html/body/button\",\n [],\n 30000,\n );\n\n const isVisible = await page.locator(\"#success-msg\").isVisible();\n expect(isVisible).toBe(true);\n });\n\n test(\"fill sets input value\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/login/\",\n );\n\n await performUnderstudyMethod(\n page,\n page.mainFrame(),\n \"fill\",\n \"/html/body/main/form/div[1]/input\",\n [\"Alice\"],\n 30000,\n );\n\n const textContent = await page\n .locator(\"/html/body/main/form/div[1]/input\")\n .inputValue();\n expect(textContent).toBe(\"Alice\");\n });\n\n test(\"tests that key presses work\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/key-press/\",\n );\n\n await performUnderstudyMethod(\n page,\n page.mainFrame(),\n \"press\",\n \"xpath=/html\",\n [\"Enter\"],\n 30000,\n );\n\n const textContent = await page\n .locator(\"/html/body/div/div/h1\")\n .textContent();\n expect(textContent).toContain(\"Enter\");\n });\n\n test(\"tests select option from a dropdown\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/nested-dropdown/\",\n );\n\n await performUnderstudyMethod(\n page,\n page.mainFrame(),\n \"selectOptionFromDropdown\",\n \"xpath=//*[@id='licenseType']\",\n [\"Smog Check Technician\"],\n 30000,\n );\n\n const inputValue = await page\n .locator(\"#licenseType >> option:checked\")\n .textContent();\n expect(inputValue).toBe(\"Smog Check Technician\");\n });\n\n test(\"tests drag & drop works (start xpath & end xpath)\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/drag-drop/\",\n );\n\n await performUnderstudyMethod(\n page,\n page.mainFrame(),\n \"dragAndDrop\",\n \"xpath=/html/body/div/section[1]/div[1]/div[1]\", // start xpath\n [\"/html/body/div/section[2]/div/div[1]\"], // end xpath\n 30000,\n );\n\n const droppedContent = await page\n .locator(\"/html/body/div/section[2]/div/div[1]/div\")\n .textContent();\n expect(droppedContent).toBe(\"TEXT: Hello from text\");\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,133 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const test_1 = require("@playwright/test");
7
- const buffer_1 = require("buffer");
8
- const fs_1 = require("fs");
9
- const path_1 = __importDefault(require("path"));
10
- const crypto_1 = __importDefault(require("crypto"));
11
- const v3_js_1 = require("../../lib/v3/v3.js");
12
- const v3_config_js_1 = require("./v3.config.js");
13
- const FILE_UPLOAD_IFRAME_URL = "https://browserbase.github.io/stagehand-eval-sites/sites/file-uploads-iframe/";
14
- const FILE_UPLOAD_V2_URL = "https://browserbase.github.io/stagehand-eval-sites/sites/file-uploads-2/";
15
- const RESUME_INPUT = "#resumeUpload";
16
- const RESUME_SUCCESS = "#resumeSuccess";
17
- const IMAGES_INPUT = "#imagesUpload";
18
- const IMAGES_SUCCESS = "#imagesSuccess";
19
- const AUDIO_INPUT = "#audioUpload";
20
- const AUDIO_SUCCESS = "#audioSuccess";
21
- const IFRAME_UPLOAD_INPUT = "/html/body/div/iframe/html/body/div/div[1]/input";
22
- const IFRAME_SUCCESS = "body > div > iframe >> html > body > div > div:nth-of-type(2)";
23
- test_1.test.describe("tests setInputFiles()", () => {
24
- let v3;
25
- const fixtures = [];
26
- test_1.test.beforeEach(async () => {
27
- v3 = new v3_js_1.V3(v3_config_js_1.v3TestConfig);
28
- await v3.init();
29
- });
30
- test_1.test.afterEach(async () => {
31
- await v3?.close?.().catch(() => { });
32
- await Promise.all(fixtures.splice(0).map((file) => fs_1.promises.unlink(file).catch(() => { })));
33
- });
34
- const createFixture = async (namePrefix, contents, ext = ".txt") => {
35
- const normalizedExt = ext.startsWith(".") ? ext : `.${ext}`;
36
- const filename = `${namePrefix}-${crypto_1.default.randomBytes(4).toString("hex")}${normalizedExt}`;
37
- const filePath = path_1.default.resolve(process.cwd(), filename);
38
- await fs_1.promises.writeFile(filePath, contents, "utf-8");
39
- fixtures.push(filePath);
40
- return filePath;
41
- };
42
- const expectUploadSuccess = async (page, successSelector, expectedText) => {
43
- await test_1.expect
44
- .poll(() => page.evaluate((selector) => {
45
- const el = document.querySelector(selector);
46
- if (!el)
47
- return "";
48
- const display = window.getComputedStyle(el).display;
49
- if (display === "none")
50
- return "";
51
- return el.textContent ?? "";
52
- }, successSelector), { message: `wait for success message at ${successSelector}` })
53
- .toContain(expectedText);
54
- };
55
- const getInputFileCount = async (page, inputSelector) => {
56
- return await page.evaluate((selector) => {
57
- const el = document.querySelector(selector);
58
- if (!(el instanceof HTMLInputElement))
59
- return 0;
60
- return el.files?.length ?? 0;
61
- }, inputSelector);
62
- };
63
- const expectFileCount = async (page, inputSelector, expected) => {
64
- await test_1.expect
65
- .poll(() => getInputFileCount(page, inputSelector), {
66
- message: `wait for file count on ${inputSelector}`,
67
- })
68
- .toBe(expected);
69
- };
70
- (0, test_1.test)("deepLocator uploads and validates within iframe", async () => {
71
- const page = v3.context.pages()[0];
72
- await page.goto(FILE_UPLOAD_IFRAME_URL);
73
- const fixture = await createFixture("iframe-upload", "<p>iframe upload</p>", ".txt");
74
- await page
75
- .deepLocator(IFRAME_UPLOAD_INPUT)
76
- .setInputFiles(path_1.default.relative(process.cwd(), fixture));
77
- const successLocator = page.deepLocator(IFRAME_SUCCESS);
78
- await test_1.expect
79
- .poll(async () => (await successLocator.textContent()) ?? "", {
80
- message: "wait for iframe upload success",
81
- })
82
- .toContain("file uploaded successfully");
83
- });
84
- (0, test_1.test)("locator uploads resume via relative path string", async () => {
85
- const page = v3.context.pages()[0];
86
- await page.goto(FILE_UPLOAD_V2_URL);
87
- const fixture = await createFixture("resume", "<p>resume</p>", ".pdf");
88
- await page
89
- .locator(RESUME_INPUT)
90
- .setInputFiles(path_1.default.relative(process.cwd(), fixture));
91
- await expectUploadSuccess(page, RESUME_SUCCESS, "Resume uploaded!");
92
- await expectFileCount(page, RESUME_INPUT, 1);
93
- });
94
- (0, test_1.test)("locator uploads multiple images via absolute paths", async () => {
95
- const page = v3.context.pages()[0];
96
- await page.goto(FILE_UPLOAD_V2_URL);
97
- const first = await createFixture("image-a", "<p>A</p>", ".png");
98
- const second = await createFixture("image-b", "<p>B</p>", ".jpeg");
99
- await page.locator(IMAGES_INPUT).setInputFiles([first, second]);
100
- await expectUploadSuccess(page, IMAGES_SUCCESS, "Images uploaded!");
101
- await expectFileCount(page, IMAGES_INPUT, 2);
102
- });
103
- (0, test_1.test)("locator uploads audio via payload object", async () => {
104
- const page = v3.context.pages()[0];
105
- await page.goto(FILE_UPLOAD_V2_URL);
106
- await page.locator(AUDIO_INPUT).setInputFiles({
107
- name: "voice-sample.mp3",
108
- mimeType: "audio/mpeg",
109
- buffer: buffer_1.Buffer.from("fake audio bytes", "utf-8"),
110
- });
111
- await expectUploadSuccess(page, AUDIO_SUCCESS, "Audio file uploaded!");
112
- await expectFileCount(page, AUDIO_INPUT, 1);
113
- });
114
- (0, test_1.test)("locator uploads multiple payload objects to images input", async () => {
115
- const page = v3.context.pages()[0];
116
- await page.goto(FILE_UPLOAD_V2_URL);
117
- await page.locator(IMAGES_INPUT).setInputFiles([
118
- {
119
- name: "payload-a.png",
120
- mimeType: "image/png",
121
- buffer: buffer_1.Buffer.from("payload-a", "utf-8"),
122
- },
123
- {
124
- name: "payload-b.png",
125
- mimeType: "image/png",
126
- buffer: buffer_1.Buffer.from("payload-b", "utf-8"),
127
- },
128
- ]);
129
- await expectUploadSuccess(page, IMAGES_SUCCESS, "Images uploaded!");
130
- await expectFileCount(page, IMAGES_INPUT, 2);
131
- });
132
- });
133
- //# sourceMappingURL=setinputfiles.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setinputfiles.spec.js","sourceRoot":"","sources":["../../../../tests/integration/setinputfiles.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, test } from \"@playwright/test\";\nimport { Buffer } from \"buffer\";\nimport { promises as fs } from \"fs\";\nimport path from \"path\";\nimport crypto from \"crypto\";\nimport type { Page as V3Page } from \"../../lib/v3/understudy/page.js\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\n\nconst FILE_UPLOAD_IFRAME_URL =\n \"https://browserbase.github.io/stagehand-eval-sites/sites/file-uploads-iframe/\";\nconst FILE_UPLOAD_V2_URL =\n \"https://browserbase.github.io/stagehand-eval-sites/sites/file-uploads-2/\";\n\nconst RESUME_INPUT = \"#resumeUpload\";\nconst RESUME_SUCCESS = \"#resumeSuccess\";\nconst IMAGES_INPUT = \"#imagesUpload\";\nconst IMAGES_SUCCESS = \"#imagesSuccess\";\nconst AUDIO_INPUT = \"#audioUpload\";\nconst AUDIO_SUCCESS = \"#audioSuccess\";\nconst IFRAME_UPLOAD_INPUT = \"/html/body/div/iframe/html/body/div/div[1]/input\";\nconst IFRAME_SUCCESS =\n \"body > div > iframe >> html > body > div > div:nth-of-type(2)\";\n\ntest.describe(\"tests setInputFiles()\", () => {\n let v3: V3;\n const fixtures: string[] = [];\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 await Promise.all(\n fixtures.splice(0).map((file) => fs.unlink(file).catch(() => {})),\n );\n });\n\n const createFixture = async (\n namePrefix: string,\n contents: string,\n ext = \".txt\",\n ): Promise<string> => {\n const normalizedExt = ext.startsWith(\".\") ? ext : `.${ext}`;\n const filename = `${namePrefix}-${crypto.randomBytes(4).toString(\"hex\")}${normalizedExt}`;\n const filePath = path.resolve(process.cwd(), filename);\n await fs.writeFile(filePath, contents, \"utf-8\");\n fixtures.push(filePath);\n return filePath;\n };\n\n const expectUploadSuccess = async (\n page: V3Page,\n successSelector: string,\n expectedText: string,\n ) => {\n await expect\n .poll(\n () =>\n page.evaluate((selector) => {\n const el = document.querySelector(selector);\n if (!el) return \"\";\n const display = window.getComputedStyle(el).display;\n if (display === \"none\") return \"\";\n return el.textContent ?? \"\";\n }, successSelector),\n { message: `wait for success message at ${successSelector}` },\n )\n .toContain(expectedText);\n };\n\n const getInputFileCount = async (page: V3Page, inputSelector: string) => {\n return await page.evaluate((selector) => {\n const el = document.querySelector(selector);\n if (!(el instanceof HTMLInputElement)) return 0;\n return el.files?.length ?? 0;\n }, inputSelector);\n };\n\n const expectFileCount = async (\n page: V3Page,\n inputSelector: string,\n expected: number,\n ) => {\n await expect\n .poll(() => getInputFileCount(page, inputSelector), {\n message: `wait for file count on ${inputSelector}`,\n })\n .toBe(expected);\n };\n\n test(\"deepLocator uploads and validates within iframe\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(FILE_UPLOAD_IFRAME_URL);\n const fixture = await createFixture(\n \"iframe-upload\",\n \"<p>iframe upload</p>\",\n \".txt\",\n );\n await page\n .deepLocator(IFRAME_UPLOAD_INPUT)\n .setInputFiles(path.relative(process.cwd(), fixture));\n\n const successLocator = page.deepLocator(IFRAME_SUCCESS);\n await expect\n .poll(async () => (await successLocator.textContent()) ?? \"\", {\n message: \"wait for iframe upload success\",\n })\n .toContain(\"file uploaded successfully\");\n });\n\n test(\"locator uploads resume via relative path string\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(FILE_UPLOAD_V2_URL);\n const fixture = await createFixture(\"resume\", \"<p>resume</p>\", \".pdf\");\n await page\n .locator(RESUME_INPUT)\n .setInputFiles(path.relative(process.cwd(), fixture));\n await expectUploadSuccess(page, RESUME_SUCCESS, \"Resume uploaded!\");\n await expectFileCount(page, RESUME_INPUT, 1);\n });\n\n test(\"locator uploads multiple images via absolute paths\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(FILE_UPLOAD_V2_URL);\n const first = await createFixture(\"image-a\", \"<p>A</p>\", \".png\");\n const second = await createFixture(\"image-b\", \"<p>B</p>\", \".jpeg\");\n await page.locator(IMAGES_INPUT).setInputFiles([first, second]);\n await expectUploadSuccess(page, IMAGES_SUCCESS, \"Images uploaded!\");\n await expectFileCount(page, IMAGES_INPUT, 2);\n });\n\n test(\"locator uploads audio via payload object\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(FILE_UPLOAD_V2_URL);\n await page.locator(AUDIO_INPUT).setInputFiles({\n name: \"voice-sample.mp3\",\n mimeType: \"audio/mpeg\",\n buffer: Buffer.from(\"fake audio bytes\", \"utf-8\"),\n });\n await expectUploadSuccess(page, AUDIO_SUCCESS, \"Audio file uploaded!\");\n await expectFileCount(page, AUDIO_INPUT, 1);\n });\n\n test(\"locator uploads multiple payload objects to images input\", async () => {\n const page = v3.context.pages()[0];\n await page.goto(FILE_UPLOAD_V2_URL);\n await page.locator(IMAGES_INPUT).setInputFiles([\n {\n name: \"payload-a.png\",\n mimeType: \"image/png\",\n buffer: Buffer.from(\"payload-a\", \"utf-8\"),\n },\n {\n name: \"payload-b.png\",\n mimeType: \"image/png\",\n buffer: Buffer.from(\"payload-b\", \"utf-8\"),\n },\n ]);\n await expectUploadSuccess(page, IMAGES_SUCCESS, \"Images uploaded!\");\n await expectFileCount(page, IMAGES_INPUT, 2);\n });\n});\n"]}
@@ -1,161 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const test_1 = require("@playwright/test");
7
- const v3_js_1 = require("../../lib/v3/v3.js");
8
- const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
9
- const playwright_core_1 = require("playwright-core");
10
- const patchright_core_1 = require("patchright-core");
11
- const v3_dynamic_config_js_1 = require("./v3.dynamic.config.js");
12
- const testUtils_js_1 = require("./testUtils.js");
13
- async function runCase(v3, c, framework) {
14
- let cleanup = null;
15
- // Acquire the correct page for the requested framework
16
- let page;
17
- switch (framework) {
18
- case "v3": {
19
- const v3Page = v3.context.pages()[0];
20
- await v3Page.goto(c.url, { waitUntil: "networkidle" });
21
- page = v3Page;
22
- break;
23
- }
24
- case "puppeteer": {
25
- const browser = await puppeteer_core_1.default.connect({
26
- browserWSEndpoint: v3.connectURL(),
27
- defaultViewport: null,
28
- });
29
- const pages = await browser.pages();
30
- const puppeteerPage = pages[0];
31
- await puppeteerPage.goto(c.url, { waitUntil: "networkidle0" });
32
- page = puppeteerPage;
33
- cleanup = async () => {
34
- try {
35
- await browser.close();
36
- }
37
- catch {
38
- //
39
- }
40
- };
41
- break;
42
- }
43
- case "playwright": {
44
- const pwBrowser = await playwright_core_1.chromium.connectOverCDP(v3.connectURL());
45
- const pwContext = pwBrowser.contexts()[0];
46
- const pwPage = pwContext.pages()[0];
47
- await pwPage.goto(c.url, { waitUntil: "networkidle" });
48
- page = pwPage;
49
- cleanup = async () => {
50
- try {
51
- await pwBrowser.close();
52
- }
53
- catch {
54
- // ignore
55
- }
56
- };
57
- break;
58
- }
59
- case "patchright": {
60
- const prBrowser = await patchright_core_1.chromium.connectOverCDP(v3.connectURL());
61
- const prContext = prBrowser.contexts()[0];
62
- const prPage = prContext.pages()[0];
63
- await prPage.goto(c.url, { waitUntil: "networkidle" });
64
- page = prPage;
65
- cleanup = async () => {
66
- try {
67
- await prBrowser.close();
68
- }
69
- catch {
70
- // ignore
71
- }
72
- };
73
- break;
74
- }
75
- }
76
- try {
77
- if (!page)
78
- throw new Error("Missing page for selected framework");
79
- await v3.act(c.action, { page });
80
- // Post-action extraction; verify expected text appears
81
- const extraction = await v3.extract({ page });
82
- const text = extraction.pageText ?? "";
83
- for (const s of c.expectedSubstrings) {
84
- (0, test_1.expect)(text.includes(s), `expected pageText to include substring: ${s}`).toBeTruthy();
85
- }
86
- }
87
- finally {
88
- await cleanup?.();
89
- }
90
- }
91
- const cases = [
92
- {
93
- title: "Closed shadow root inside OOPIF",
94
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/closed-shadow-root-in-oopif/",
95
- action: {
96
- selector: "xpath=/html/body/main/section/iframe/html/body/shadow-demo//div/button",
97
- method: "click",
98
- arguments: [""],
99
- description: "click button inside closed shadow root in OOPIF",
100
- },
101
- expectedSubstrings: ["button successfully clicked"],
102
- },
103
- {
104
- title: "Open shadow root inside OOPIF",
105
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/open-shadow-root-in-oopif/",
106
- action: {
107
- selector: "xpath=/html/body/main/section/iframe/html/body/shadow-demo//div/button",
108
- method: "click",
109
- arguments: [""],
110
- description: "",
111
- },
112
- expectedSubstrings: ["button successfully clicked"],
113
- },
114
- {
115
- title: "OOPIF inside open shadow root",
116
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/oopif-in-open-shadow-dom/",
117
- action: {
118
- selector: "xpath=/html/body/shadow-host//section/iframe/html/body/main/section[1]/form/div/div[1]/input",
119
- method: "fill",
120
- arguments: ["nunya"],
121
- description: "",
122
- },
123
- expectedSubstrings: ["nunya"],
124
- },
125
- {
126
- title: "OOPIF inside closed shadow root",
127
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/oopif-in-closed-shadow-dom/",
128
- action: {
129
- selector: "xpath=/html/body/shadow-host//section/iframe/html/body/main/section[1]/form/div/div[1]/input",
130
- method: "fill",
131
- arguments: ["nunya"],
132
- description: "fill input inside OOPIF",
133
- },
134
- expectedSubstrings: ["nunya"],
135
- },
136
- ];
137
- test_1.test.describe
138
- .parallel("Stagehand v3: shadow <-> iframe OOPIF scenarios", () => {
139
- let v3;
140
- test_1.test.beforeEach(async () => {
141
- v3 = new v3_js_1.V3(v3_dynamic_config_js_1.v3DynamicTestConfig);
142
- await v3.init();
143
- });
144
- test_1.test.afterEach(async () => {
145
- await (0, testUtils_js_1.closeV3)(v3);
146
- });
147
- const frameworks = [
148
- "v3",
149
- "playwright",
150
- "puppeteer",
151
- "patchright",
152
- ];
153
- for (const fw of frameworks) {
154
- for (const c of cases) {
155
- (0, test_1.test)(`[${fw}] ${c.title}`, async () => {
156
- await runCase(v3, c, fw);
157
- });
158
- }
159
- }
160
- });
161
- //# sourceMappingURL=shadow-iframe-oopif.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shadow-iframe-oopif.spec.js","sourceRoot":"","sources":["../../../../tests/integration/shadow-iframe-oopif.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport puppeteer from \"puppeteer-core\";\nimport { chromium as playwrightChromium } from \"playwright-core\";\nimport { chromium as patchrightChromium } from \"patchright-core\";\nimport { Action } from \"../../lib/v3/types/public/methods.js\";\nimport { AnyPage } from \"../../lib/v3/types/public/page.js\";\nimport { v3DynamicTestConfig } from \"./v3.dynamic.config.js\";\nimport { closeV3 } from \"./testUtils.js\";\n\n/**\n * IMPORTANT:\n * - We create a single V3 instance/test to avoid cross-test state. Increase parallelism later if needed.\n * - We assert an *effect* when feasible (e.g. input value). For pure clicks we assert no thrown error.\n */\n\ntype Case = {\n title: string;\n url: string;\n action: Action;\n expectedSubstrings: string[]; // check v3.extract().pageText contains these\n};\n\ntype Framework = \"v3\" | \"puppeteer\" | \"playwright\" | \"patchright\";\n\nasync function runCase(v3: V3, c: Case, framework: Framework): Promise<void> {\n let cleanup: (() => Promise<void> | void) | null = null;\n\n // Acquire the correct page for the requested framework\n let page: AnyPage | undefined;\n switch (framework) {\n case \"v3\": {\n const v3Page = v3.context.pages()[0];\n await v3Page.goto(c.url, { waitUntil: \"networkidle\" });\n page = v3Page;\n break;\n }\n case \"puppeteer\": {\n const browser = await puppeteer.connect({\n browserWSEndpoint: v3.connectURL(),\n defaultViewport: null,\n });\n const pages = await browser.pages();\n const puppeteerPage = pages[0];\n await puppeteerPage.goto(c.url, { waitUntil: \"networkidle0\" });\n page = puppeteerPage;\n cleanup = async () => {\n try {\n await browser.close();\n } catch {\n //\n }\n };\n break;\n }\n case \"playwright\": {\n const pwBrowser = await playwrightChromium.connectOverCDP(\n v3.connectURL(),\n );\n const pwContext = pwBrowser.contexts()[0];\n const pwPage = pwContext.pages()[0];\n await pwPage.goto(c.url, { waitUntil: \"networkidle\" as never });\n page = pwPage as unknown as AnyPage;\n cleanup = async () => {\n try {\n await pwBrowser.close();\n } catch {\n // ignore\n }\n };\n break;\n }\n case \"patchright\": {\n const prBrowser = await patchrightChromium.connectOverCDP(\n v3.connectURL(),\n );\n const prContext = prBrowser.contexts()[0];\n const prPage = prContext.pages()[0];\n await prPage.goto(c.url, { waitUntil: \"networkidle\" as never });\n page = prPage as unknown as AnyPage;\n cleanup = async () => {\n try {\n await prBrowser.close();\n } catch {\n // ignore\n }\n };\n break;\n }\n }\n\n try {\n if (!page) throw new Error(\"Missing page for selected framework\");\n await v3.act(c.action, { page });\n // Post-action extraction; verify expected text appears\n const extraction = await v3.extract({ page });\n const text = extraction.pageText ?? \"\";\n for (const s of c.expectedSubstrings) {\n expect(\n text.includes(s),\n `expected pageText to include substring: ${s}`,\n ).toBeTruthy();\n }\n } finally {\n await cleanup?.();\n }\n}\n\nconst cases: Case[] = [\n {\n title: \"Closed shadow root inside OOPIF\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/closed-shadow-root-in-oopif/\",\n action: {\n selector:\n \"xpath=/html/body/main/section/iframe/html/body/shadow-demo//div/button\",\n method: \"click\",\n arguments: [\"\"],\n description: \"click button inside closed shadow root in OOPIF\",\n },\n expectedSubstrings: [\"button successfully clicked\"],\n },\n {\n title: \"Open shadow root inside OOPIF\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/open-shadow-root-in-oopif/\",\n action: {\n selector:\n \"xpath=/html/body/main/section/iframe/html/body/shadow-demo//div/button\",\n method: \"click\",\n arguments: [\"\"],\n description: \"\",\n },\n expectedSubstrings: [\"button successfully clicked\"],\n },\n {\n title: \"OOPIF inside open shadow root\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/oopif-in-open-shadow-dom/\",\n action: {\n selector:\n \"xpath=/html/body/shadow-host//section/iframe/html/body/main/section[1]/form/div/div[1]/input\",\n method: \"fill\",\n arguments: [\"nunya\"],\n description: \"\",\n },\n expectedSubstrings: [\"nunya\"],\n },\n {\n title: \"OOPIF inside closed shadow root\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/oopif-in-closed-shadow-dom/\",\n action: {\n selector:\n \"xpath=/html/body/shadow-host//section/iframe/html/body/main/section[1]/form/div/div[1]/input\",\n method: \"fill\",\n arguments: [\"nunya\"],\n description: \"fill input inside OOPIF\",\n },\n expectedSubstrings: [\"nunya\"],\n },\n];\n\ntest.describe\n .parallel(\"Stagehand v3: shadow <-> iframe OOPIF scenarios\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3(v3DynamicTestConfig);\n await v3.init();\n });\n\n test.afterEach(async () => {\n await closeV3(v3);\n });\n\n const frameworks: Framework[] = [\n \"v3\",\n \"playwright\",\n \"puppeteer\",\n \"patchright\",\n ];\n for (const fw of frameworks) {\n for (const c of cases) {\n test(`[${fw}] ${c.title}`, async () => {\n await runCase(v3, c, fw);\n });\n }\n }\n});\n"]}
@@ -1,160 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const test_1 = require("@playwright/test");
7
- const v3_js_1 = require("../../lib/v3/v3.js");
8
- const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
9
- const playwright_core_1 = require("playwright-core");
10
- const patchright_core_1 = require("patchright-core");
11
- const v3_dynamic_config_js_1 = require("./v3.dynamic.config.js");
12
- const testUtils_js_1 = require("./testUtils.js");
13
- async function runCase(v3, c, framework) {
14
- let cleanup = null;
15
- // Acquire the correct page for the requested framework
16
- let page;
17
- switch (framework) {
18
- case "v3": {
19
- const v3Page = v3.context.pages()[0];
20
- await v3Page.goto(c.url, { waitUntil: "networkidle" });
21
- page = v3Page;
22
- break;
23
- }
24
- case "puppeteer": {
25
- const browser = await puppeteer_core_1.default.connect({
26
- browserWSEndpoint: v3.connectURL(),
27
- defaultViewport: null,
28
- });
29
- const pages = await browser.pages();
30
- const puppeteerPage = pages[0];
31
- await puppeteerPage.goto(c.url, { waitUntil: "networkidle0" });
32
- page = puppeteerPage;
33
- cleanup = async () => {
34
- try {
35
- await browser.close();
36
- }
37
- catch {
38
- //
39
- }
40
- };
41
- break;
42
- }
43
- case "playwright": {
44
- const pwBrowser = await playwright_core_1.chromium.connectOverCDP(v3.connectURL());
45
- const pwContext = pwBrowser.contexts()[0];
46
- const pwPage = pwContext.pages()[0];
47
- await pwPage.goto(c.url, { waitUntil: "networkidle" });
48
- page = pwPage;
49
- cleanup = async () => {
50
- try {
51
- await pwBrowser.close();
52
- }
53
- catch {
54
- // ignore
55
- }
56
- };
57
- break;
58
- }
59
- case "patchright": {
60
- const prBrowser = await patchright_core_1.chromium.connectOverCDP(v3.connectURL());
61
- const prContext = prBrowser.contexts()[0];
62
- const prPage = prContext.pages()[0];
63
- await prPage.goto(c.url, { waitUntil: "networkidle" });
64
- page = prPage;
65
- cleanup = async () => {
66
- try {
67
- await prBrowser.close();
68
- }
69
- catch {
70
- // ignore
71
- }
72
- };
73
- break;
74
- }
75
- }
76
- try {
77
- if (!page)
78
- throw new Error("Missing page for selected framework");
79
- await v3.act(c.action, { page });
80
- // Post-action extraction; verify expected text appears
81
- const extraction = await v3.extract({ page });
82
- const text = extraction.pageText ?? "";
83
- for (const s of c.expectedSubstrings) {
84
- (0, test_1.expect)(text.includes(s), `expected pageText to include substring: ${s}`).toBeTruthy();
85
- }
86
- }
87
- finally {
88
- await cleanup?.();
89
- }
90
- }
91
- const cases = [
92
- {
93
- title: "Open shadow root inside SPIF",
94
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/open-shadow-root-in-spif/",
95
- action: {
96
- selector: "xpath=/html/body/main/section/iframe/html/body/shadow-demo//div/button",
97
- method: "click",
98
- arguments: [""],
99
- description: "",
100
- },
101
- expectedSubstrings: ["button successfully clicked"],
102
- },
103
- {
104
- title: "Closed shadow root inside SPIF",
105
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/closed-shadow-dom-in-spif/",
106
- action: {
107
- selector: "xpath=/html/body/div/iframe/html/body/shadow-demo//div/button",
108
- method: "click",
109
- arguments: [""],
110
- description: "",
111
- },
112
- expectedSubstrings: ["button successfully clicked"],
113
- },
114
- {
115
- title: "SPIF inside closed shadow root",
116
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/spif-in-closed-shadow-dom/",
117
- action: {
118
- selector: "xpath=/html/body/shadow-host//div/iframe/html/body/button",
119
- method: "click",
120
- arguments: [""],
121
- description: "",
122
- },
123
- expectedSubstrings: ["button successfully clicked"],
124
- },
125
- {
126
- title: "SPIF inside open shadow root",
127
- url: "https://browserbase.github.io/stagehand-eval-sites/sites/spif-in-open-shadow-dom/",
128
- action: {
129
- selector: "xpath=/html/body/shadow-host//div/iframe/html/body/button",
130
- method: "click",
131
- arguments: [""],
132
- description: "click button inside SPIF under open shadow",
133
- },
134
- expectedSubstrings: ["button successfully clicked"],
135
- },
136
- ];
137
- test_1.test.describe.parallel("Stagehand v3: shadow <-> iframe SPIF scenarios", () => {
138
- let v3;
139
- test_1.test.beforeEach(async () => {
140
- v3 = new v3_js_1.V3(v3_dynamic_config_js_1.v3DynamicTestConfig);
141
- await v3.init();
142
- });
143
- test_1.test.afterEach(async () => {
144
- await (0, testUtils_js_1.closeV3)(v3);
145
- });
146
- const frameworks = [
147
- "v3",
148
- "playwright",
149
- "puppeteer",
150
- "patchright",
151
- ];
152
- for (const fw of frameworks) {
153
- for (const c of cases) {
154
- (0, test_1.test)(`[${fw}] ${c.title}`, async () => {
155
- await runCase(v3, c, fw);
156
- });
157
- }
158
- }
159
- });
160
- //# sourceMappingURL=shadow-iframe-spif.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shadow-iframe-spif.spec.js","sourceRoot":"","sources":["../../../../tests/integration/shadow-iframe-spif.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport puppeteer from \"puppeteer-core\";\nimport { chromium as playwrightChromium } from \"playwright-core\";\nimport { chromium as patchrightChromium } from \"patchright-core\";\nimport { Action } from \"../../lib/v3/types/public/methods.js\";\nimport { AnyPage } from \"../../lib/v3/types/public/page.js\";\nimport { v3DynamicTestConfig } from \"./v3.dynamic.config.js\";\nimport { closeV3 } from \"./testUtils.js\";\n\n/**\n * IMPORTANT:\n * - We create a single V3 instance/test to avoid cross-test state. Increase parallelism later if needed.\n * - We assert an *effect* when feasible (e.g. input value). For pure clicks we assert no thrown error.\n */\n\ntype Case = {\n title: string;\n url: string;\n action: Action;\n expectedSubstrings: string[]; // check v3.extract().pageText contains these\n};\n\ntype Framework = \"v3\" | \"puppeteer\" | \"playwright\" | \"patchright\";\n\nasync function runCase(v3: V3, c: Case, framework: Framework): Promise<void> {\n let cleanup: (() => Promise<void> | void) | null = null;\n\n // Acquire the correct page for the requested framework\n let page: AnyPage | undefined;\n switch (framework) {\n case \"v3\": {\n const v3Page = v3.context.pages()[0];\n await v3Page.goto(c.url, { waitUntil: \"networkidle\" });\n page = v3Page;\n break;\n }\n case \"puppeteer\": {\n const browser = await puppeteer.connect({\n browserWSEndpoint: v3.connectURL(),\n defaultViewport: null,\n });\n const pages = await browser.pages();\n const puppeteerPage = pages[0];\n await puppeteerPage.goto(c.url, { waitUntil: \"networkidle0\" });\n page = puppeteerPage;\n cleanup = async () => {\n try {\n await browser.close();\n } catch {\n //\n }\n };\n break;\n }\n case \"playwright\": {\n const pwBrowser = await playwrightChromium.connectOverCDP(\n v3.connectURL(),\n );\n const pwContext = pwBrowser.contexts()[0];\n const pwPage = pwContext.pages()[0];\n await pwPage.goto(c.url, { waitUntil: \"networkidle\" as never });\n page = pwPage as unknown as AnyPage;\n cleanup = async () => {\n try {\n await pwBrowser.close();\n } catch {\n // ignore\n }\n };\n break;\n }\n case \"patchright\": {\n const prBrowser = await patchrightChromium.connectOverCDP(\n v3.connectURL(),\n );\n const prContext = prBrowser.contexts()[0];\n const prPage = prContext.pages()[0];\n await prPage.goto(c.url, { waitUntil: \"networkidle\" as never });\n page = prPage as unknown as AnyPage;\n cleanup = async () => {\n try {\n await prBrowser.close();\n } catch {\n // ignore\n }\n };\n break;\n }\n }\n\n try {\n if (!page) throw new Error(\"Missing page for selected framework\");\n await v3.act(c.action, { page });\n // Post-action extraction; verify expected text appears\n const extraction = await v3.extract({ page });\n const text = extraction.pageText ?? \"\";\n for (const s of c.expectedSubstrings) {\n expect(\n text.includes(s),\n `expected pageText to include substring: ${s}`,\n ).toBeTruthy();\n }\n } finally {\n await cleanup?.();\n }\n}\n\nconst cases: Case[] = [\n {\n title: \"Open shadow root inside SPIF\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/open-shadow-root-in-spif/\",\n action: {\n selector:\n \"xpath=/html/body/main/section/iframe/html/body/shadow-demo//div/button\",\n method: \"click\",\n arguments: [\"\"],\n description: \"\",\n },\n expectedSubstrings: [\"button successfully clicked\"],\n },\n {\n title: \"Closed shadow root inside SPIF\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/closed-shadow-dom-in-spif/\",\n action: {\n selector: \"xpath=/html/body/div/iframe/html/body/shadow-demo//div/button\",\n method: \"click\",\n arguments: [\"\"],\n description: \"\",\n },\n expectedSubstrings: [\"button successfully clicked\"],\n },\n {\n title: \"SPIF inside closed shadow root\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/spif-in-closed-shadow-dom/\",\n action: {\n selector: \"xpath=/html/body/shadow-host//div/iframe/html/body/button\",\n method: \"click\",\n arguments: [\"\"],\n description: \"\",\n },\n expectedSubstrings: [\"button successfully clicked\"],\n },\n {\n title: \"SPIF inside open shadow root\",\n url: \"https://browserbase.github.io/stagehand-eval-sites/sites/spif-in-open-shadow-dom/\",\n action: {\n selector: \"xpath=/html/body/shadow-host//div/iframe/html/body/button\",\n method: \"click\",\n arguments: [\"\"],\n description: \"click button inside SPIF under open shadow\",\n },\n expectedSubstrings: [\"button successfully clicked\"],\n },\n];\n\ntest.describe.parallel(\"Stagehand v3: shadow <-> iframe SPIF scenarios\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3(v3DynamicTestConfig);\n await v3.init();\n });\n\n test.afterEach(async () => {\n await closeV3(v3);\n });\n\n const frameworks: Framework[] = [\n \"v3\",\n \"playwright\",\n \"puppeteer\",\n \"patchright\",\n ];\n for (const fw of frameworks) {\n for (const c of cases) {\n test(`[${fw}] ${c.title}`, async () => {\n await runCase(v3, c, fw);\n });\n }\n }\n});\n"]}