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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (765) hide show
  1. package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +1 -1
  2. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  3. package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
  4. package/dist/cjs/lib/v3/launch/local.js +47 -7
  5. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  6. package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
  7. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  8. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  9. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  10. package/dist/cjs/lib/v3/types/public/api.d.ts +283 -0
  11. package/dist/cjs/lib/v3/types/public/api.js +50 -3
  12. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  13. package/dist/cjs/lib/v3/types/public/model.d.ts +11 -7
  14. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  15. package/dist/cjs/lib/v3/v3.js +2 -47
  16. package/dist/cjs/lib/v3/v3.js.map +1 -1
  17. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
  18. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  19. package/dist/esm/lib/v3/launch/local.d.ts +2 -7
  20. package/dist/esm/lib/v3/launch/local.js +48 -8
  21. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  22. package/dist/esm/lib/v3/llm/aisdk.js +5 -0
  23. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  24. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  25. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  26. package/dist/esm/lib/v3/types/public/api.d.ts +283 -0
  27. package/dist/esm/lib/v3/types/public/api.js +48 -1
  28. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  29. package/dist/esm/lib/v3/types/public/model.d.ts +11 -7
  30. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  31. package/dist/esm/lib/v3/v3.js +2 -47
  32. package/dist/esm/lib/v3/v3.js.map +1 -1
  33. package/package.json +4 -5
  34. package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
  35. package/dist/cjs/tests/cache-variables.test.js +0 -221
  36. package/dist/cjs/tests/cache-variables.test.js.map +0 -1
  37. package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  38. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
  39. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
  40. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  41. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
  42. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  43. package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
  44. package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
  45. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
  46. package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  47. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
  48. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  49. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  50. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
  51. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  52. package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  53. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
  54. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
  55. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
  56. package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
  57. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
  58. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  59. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
  60. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  61. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  62. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
  63. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
  64. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  65. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
  66. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
  67. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  68. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
  69. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  70. package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
  71. package/dist/cjs/tests/integration/click-count.spec.js +0 -163
  72. package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
  73. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  74. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
  75. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  76. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
  77. package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
  78. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
  79. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  80. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
  81. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  82. package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
  83. package/dist/cjs/tests/integration/cookies.spec.js +0 -187
  84. package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
  85. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
  86. package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
  87. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
  88. package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
  89. package/dist/cjs/tests/integration/downloads.spec.js +0 -52
  90. package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
  91. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
  92. package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
  93. package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
  94. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  95. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
  96. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  97. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  98. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
  99. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  100. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  101. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
  102. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  103. package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
  104. package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
  105. package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
  106. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
  107. package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
  108. package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
  109. package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
  110. package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
  111. package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
  112. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  113. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
  114. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  115. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
  116. package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
  117. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
  118. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  119. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
  120. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
  121. package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
  122. package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
  123. package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
  124. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
  125. package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
  126. package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
  127. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
  128. package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
  129. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
  130. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
  131. package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
  132. package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
  133. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
  134. package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
  135. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
  136. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
  137. package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
  138. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
  139. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  140. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
  141. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
  142. package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
  143. package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
  144. package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
  145. package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  146. package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
  147. package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
  148. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
  149. package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
  150. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
  151. package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
  152. package/dist/cjs/tests/integration/page-console.spec.js +0 -47
  153. package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
  154. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  155. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
  156. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  157. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  158. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
  159. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  160. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
  161. package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
  162. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
  163. package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
  164. package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
  165. package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
  166. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
  167. package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
  168. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
  169. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
  170. package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
  171. package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
  172. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
  173. package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
  174. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
  175. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  176. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
  177. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
  178. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
  179. package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
  180. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
  181. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  182. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
  183. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  184. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  185. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
  186. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  187. package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
  188. package/dist/cjs/tests/integration/testUtils.js +0 -188
  189. package/dist/cjs/tests/integration/testUtils.js.map +0 -1
  190. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  191. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
  192. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
  193. package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
  194. package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
  195. package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
  196. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
  197. package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
  198. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
  199. package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
  200. package/dist/cjs/tests/integration/v3.config.js +0 -11
  201. package/dist/cjs/tests/integration/v3.config.js.map +0 -1
  202. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
  203. package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
  204. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
  205. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
  206. package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
  207. package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
  208. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
  209. package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
  210. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
  211. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  212. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
  213. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
  214. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  215. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
  216. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  217. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  218. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
  219. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  220. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
  221. package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
  222. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
  223. package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
  224. package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
  225. package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
  226. package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
  227. package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
  228. package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
  229. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  230. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
  231. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  232. package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
  233. package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
  234. package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
  235. package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
  236. package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
  237. package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
  238. package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
  239. package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
  240. package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
  241. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  242. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
  243. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  244. package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.d.ts +0 -1
  245. package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.js +0 -87
  246. package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.js.map +0 -1
  247. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  248. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -135
  249. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
  250. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
  251. package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
  252. package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
  253. package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  254. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
  255. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  256. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
  257. package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -69
  258. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
  259. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  260. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
  261. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  262. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  263. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
  264. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
  265. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
  266. package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
  267. package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
  268. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
  269. package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
  270. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
  271. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  272. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
  273. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
  274. package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
  275. package/dist/cjs/tests/unit/cookies.test.js +0 -944
  276. package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
  277. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  278. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
  279. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  280. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  281. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
  282. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  283. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  284. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
  285. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  286. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  287. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
  288. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  289. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  290. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
  291. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
  292. package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
  293. package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
  294. package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
  295. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
  296. package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
  297. package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
  298. package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
  299. package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
  300. package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
  301. package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  302. package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
  303. package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
  304. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
  305. package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
  306. package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
  307. package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
  308. package/dist/cjs/tests/unit/model-utils.test.js +0 -42
  309. package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
  310. package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  311. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
  312. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  313. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
  314. package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
  315. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
  316. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  317. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
  318. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
  319. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
  320. package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
  321. package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
  322. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  323. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
  324. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
  325. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
  326. package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
  327. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
  328. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  329. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
  330. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  331. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  332. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
  333. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
  334. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
  335. package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
  336. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
  337. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  338. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
  339. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  340. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  341. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
  342. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
  343. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  344. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
  345. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  346. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  347. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
  348. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  349. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
  350. package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
  351. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
  352. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
  353. package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
  354. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
  355. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  356. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
  357. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  358. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  359. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -339
  360. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  361. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  362. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
  363. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  364. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
  365. package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
  366. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
  367. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  368. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
  369. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  370. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  371. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
  372. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  373. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  374. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
  375. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  376. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  377. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
  378. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  379. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  380. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -127
  381. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  382. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  383. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
  384. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  385. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
  386. package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -933
  387. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
  388. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
  389. package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
  390. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
  391. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
  392. package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
  393. package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
  394. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
  395. package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
  396. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
  397. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  398. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
  399. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
  400. package/dist/esm/tests/cache-variables.test.d.ts +0 -1
  401. package/dist/esm/tests/cache-variables.test.js +0 -219
  402. package/dist/esm/tests/cache-variables.test.js.map +0 -1
  403. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  404. package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
  405. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
  406. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  407. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
  408. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  409. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
  410. package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
  411. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
  412. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  413. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
  414. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  415. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  416. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
  417. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  418. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  419. package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
  420. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
  421. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
  422. package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
  423. package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
  424. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  425. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
  426. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  427. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  428. package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
  429. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
  430. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  431. package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
  432. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
  433. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  434. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
  435. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  436. package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
  437. package/dist/esm/tests/integration/click-count.spec.js +0 -161
  438. package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
  439. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  440. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
  441. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  442. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
  443. package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
  444. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
  445. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  446. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
  447. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  448. package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
  449. package/dist/esm/tests/integration/cookies.spec.js +0 -185
  450. package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
  451. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
  452. package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
  453. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
  454. package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
  455. package/dist/esm/tests/integration/downloads.spec.js +0 -47
  456. package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
  457. package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
  458. package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
  459. package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
  460. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  461. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
  462. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  463. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  464. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
  465. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  466. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  467. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
  468. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  469. package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
  470. package/dist/esm/tests/integration/keep-alive.child.js +0 -83
  471. package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
  472. package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
  473. package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
  474. package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
  475. package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
  476. package/dist/esm/tests/integration/keyboard.spec.js +0 -257
  477. package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
  478. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  479. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
  480. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  481. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
  482. package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
  483. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
  484. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  485. package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
  486. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
  487. package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
  488. package/dist/esm/tests/integration/locator-count.spec.js +0 -66
  489. package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
  490. package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
  491. package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
  492. package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
  493. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
  494. package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
  495. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
  496. package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
  497. package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
  498. package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
  499. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
  500. package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
  501. package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
  502. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
  503. package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
  504. package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
  505. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  506. package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
  507. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
  508. package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
  509. package/dist/esm/tests/integration/nested-div.spec.js +0 -20
  510. package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
  511. package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  512. package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
  513. package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
  514. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
  515. package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
  516. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
  517. package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
  518. package/dist/esm/tests/integration/page-console.spec.js +0 -45
  519. package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
  520. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  521. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
  522. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  523. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  524. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
  525. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  526. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
  527. package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
  528. package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
  529. package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
  530. package/dist/esm/tests/integration/page-hover.spec.js +0 -163
  531. package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
  532. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
  533. package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
  534. package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
  535. package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
  536. package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
  537. package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
  538. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
  539. package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
  540. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
  541. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  542. package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
  543. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
  544. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
  545. package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
  546. package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
  547. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  548. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
  549. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  550. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  551. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
  552. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  553. package/dist/esm/tests/integration/testUtils.d.ts +0 -40
  554. package/dist/esm/tests/integration/testUtils.js +0 -178
  555. package/dist/esm/tests/integration/testUtils.js.map +0 -1
  556. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  557. package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
  558. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
  559. package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
  560. package/dist/esm/tests/integration/timeouts.spec.js +0 -307
  561. package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
  562. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
  563. package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
  564. package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
  565. package/dist/esm/tests/integration/v3.config.d.ts +0 -4
  566. package/dist/esm/tests/integration/v3.config.js +0 -7
  567. package/dist/esm/tests/integration/v3.config.js.map +0 -1
  568. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
  569. package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
  570. package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
  571. package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
  572. package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
  573. package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
  574. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
  575. package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
  576. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
  577. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  578. package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
  579. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
  580. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  581. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
  582. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  583. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  584. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
  585. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  586. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
  587. package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
  588. package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
  589. package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
  590. package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
  591. package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
  592. package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
  593. package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
  594. package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
  595. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  596. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
  597. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  598. package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
  599. package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
  600. package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
  601. package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
  602. package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
  603. package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
  604. package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
  605. package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
  606. package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
  607. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  608. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
  609. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  610. package/dist/esm/tests/unit/anthropic-cua-triple-click.test.d.ts +0 -1
  611. package/dist/esm/tests/unit/anthropic-cua-triple-click.test.js +0 -82
  612. package/dist/esm/tests/unit/anthropic-cua-triple-click.test.js.map +0 -1
  613. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  614. package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -133
  615. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
  616. package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
  617. package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
  618. package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
  619. package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  620. package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
  621. package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  622. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
  623. package/dist/esm/tests/unit/api-variables-schema.test.js +0 -67
  624. package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
  625. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  626. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
  627. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  628. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  629. package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
  630. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
  631. package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
  632. package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
  633. package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
  634. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
  635. package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
  636. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
  637. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  638. package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
  639. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
  640. package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
  641. package/dist/esm/tests/unit/cookies.test.js +0 -909
  642. package/dist/esm/tests/unit/cookies.test.js.map +0 -1
  643. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  644. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
  645. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  646. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  647. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
  648. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  649. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  650. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
  651. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  652. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  653. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
  654. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  655. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  656. package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
  657. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
  658. package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
  659. package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
  660. package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
  661. package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
  662. package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
  663. package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
  664. package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
  665. package/dist/esm/tests/unit/llm-provider.test.js +0 -62
  666. package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
  667. package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  668. package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
  669. package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
  670. package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
  671. package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
  672. package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
  673. package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
  674. package/dist/esm/tests/unit/model-utils.test.js +0 -40
  675. package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
  676. package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  677. package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
  678. package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  679. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
  680. package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
  681. package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
  682. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  683. package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
  684. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
  685. package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
  686. package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
  687. package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
  688. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  689. package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
  690. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
  691. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
  692. package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
  693. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
  694. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  695. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
  696. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  697. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  698. package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
  699. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
  700. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
  701. package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
  702. package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
  703. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  704. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
  705. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  706. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  707. package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
  708. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
  709. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  710. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
  711. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  712. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  713. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
  714. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  715. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
  716. package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
  717. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
  718. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
  719. package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
  720. package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
  721. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  722. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
  723. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  724. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  725. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -337
  726. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  727. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  728. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
  729. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  730. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
  731. package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
  732. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
  733. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  734. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
  735. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  736. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  737. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
  738. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  739. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  740. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
  741. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  742. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  743. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
  744. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  745. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  746. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -125
  747. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  748. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  749. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
  750. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  751. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
  752. package/dist/esm/tests/unit/timeout-handlers.test.js +0 -898
  753. package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
  754. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
  755. package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
  756. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
  757. package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
  758. package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
  759. package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
  760. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
  761. package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
  762. package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
  763. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  764. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
  765. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
@@ -1,285 +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_config_js_1 = require("./v3.config.js");
6
- const POPUP_TIMEOUT_MS = 20_000;
7
- const toDataUrl = (html) => `data:text/html,${encodeURIComponent(html)}`;
8
- const waitForPopupPage = async (ctx, knownTargetIds, timeoutMs = POPUP_TIMEOUT_MS) => {
9
- const deadline = Date.now() + timeoutMs;
10
- while (Date.now() < deadline) {
11
- const popup = ctx
12
- .pages()
13
- .find((page) => !knownTargetIds.has(page.targetId()));
14
- if (popup)
15
- return popup;
16
- try {
17
- const active = await ctx.awaitActivePage(500);
18
- if (!knownTargetIds.has(active.targetId()))
19
- return active;
20
- }
21
- catch {
22
- // keep polling
23
- }
24
- await new Promise((resolve) => setTimeout(resolve, 50));
25
- }
26
- throw new Error("Popup page was not created");
27
- };
28
- test_1.test.describe("context.addInitScript", () => {
29
- let v3;
30
- let ctx;
31
- test_1.test.beforeEach(async () => {
32
- v3 = new v3_js_1.V3(v3_config_js_1.v3TestConfig);
33
- await v3.init();
34
- ctx = v3.context;
35
- });
36
- test_1.test.afterEach(async () => {
37
- await v3?.close?.().catch(() => { });
38
- });
39
- (0, test_1.test)("runs before inline document scripts on navigation", async () => {
40
- const page = await ctx.awaitActivePage();
41
- await ctx.addInitScript(() => {
42
- window.__fromContextInit =
43
- "injected-value";
44
- });
45
- const html = `<!DOCTYPE html>
46
- <html>
47
- <body>
48
- <script>
49
- var value = (window && window.__fromContextInit) || 'missing';
50
- document.body.dataset.initWitness = value;
51
- </script>
52
- </body>
53
- </html>`;
54
- await page.goto(toDataUrl(html), { waitUntil: "load" });
55
- const observed = await page.evaluate(() => {
56
- return document.body.dataset.initWitness;
57
- });
58
- (0, test_1.expect)(observed).toBe("injected-value");
59
- });
60
- (0, test_1.test)("re-applies the script on every navigation for the same page", async () => {
61
- const page = await ctx.awaitActivePage();
62
- await ctx.addInitScript(`
63
- (function () {
64
- function markVisit() {
65
- var root = document.documentElement;
66
- if (!root) return;
67
- var current = Number(window.name || "0");
68
- var next = current + 1;
69
- window.name = String(next);
70
- root.dataset.visitCount = String(next);
71
- }
72
- if (document.readyState === "loading") {
73
- document.addEventListener("DOMContentLoaded", markVisit, {
74
- once: true,
75
- });
76
- } else {
77
- markVisit();
78
- }
79
- })();
80
- `);
81
- await page.goto(toDataUrl("<html><body>first</body></html>"), {
82
- waitUntil: "load",
83
- });
84
- const first = await page.evaluate(() => {
85
- return Number(document.documentElement.dataset.visitCount ?? "0");
86
- });
87
- (0, test_1.expect)(first).toBe(1);
88
- await page.goto(toDataUrl("<html><body>second</body></html>"), {
89
- waitUntil: "load",
90
- });
91
- const second = await page.evaluate(() => {
92
- return Number(document.documentElement.dataset.visitCount ?? "0");
93
- });
94
- (0, test_1.expect)(second).toBe(2);
95
- });
96
- (0, test_1.test)("applies script (with args) to newly created pages", async () => {
97
- const payload = { greeting: "hi", nested: { count: 2 } };
98
- const initPayload = ((arg) => {
99
- function setPayload() {
100
- const root = document.documentElement;
101
- if (!root)
102
- return;
103
- root.dataset.initPayload = JSON.stringify(arg);
104
- }
105
- if (document.readyState === "loading") {
106
- document.addEventListener("DOMContentLoaded", setPayload, {
107
- once: true,
108
- });
109
- }
110
- else {
111
- setPayload();
112
- }
113
- });
114
- await ctx.addInitScript(initPayload, payload);
115
- const newPage = await ctx.newPage();
116
- await newPage.goto(toDataUrl("<html><body>child</body></html>"), {
117
- waitUntil: "load",
118
- });
119
- const observed = await newPage.evaluate(() => {
120
- const raw = document.documentElement.dataset.initPayload;
121
- return raw ? JSON.parse(raw) : undefined;
122
- });
123
- (0, test_1.expect)(observed).toEqual(payload);
124
- });
125
- (0, test_1.test)("applies script to newPage(url) on initial document", async () => {
126
- const payload = { marker: "newPageUrl" };
127
- await ctx.addInitScript((arg) => {
128
- function setPayload() {
129
- const root = document.documentElement;
130
- if (!root)
131
- return;
132
- root.dataset.initPayload = JSON.stringify(arg);
133
- }
134
- if (document.readyState === "loading") {
135
- document.addEventListener("DOMContentLoaded", setPayload, {
136
- once: true,
137
- });
138
- }
139
- else {
140
- setPayload();
141
- }
142
- }, payload);
143
- const newPage = await ctx.newPage(toDataUrl("<html><body>new page</body></html>"));
144
- await newPage.waitForLoadState("load");
145
- const observed = await newPage.evaluate(() => {
146
- const raw = document.documentElement.dataset.initPayload;
147
- return raw ? JSON.parse(raw) : undefined;
148
- });
149
- (0, test_1.expect)(observed).toEqual(payload);
150
- });
151
- (0, test_1.test)("applies script to pages opened via link clicks", async () => {
152
- const payload = { marker: "linkClick" };
153
- await ctx.addInitScript((arg) => {
154
- function setPayload() {
155
- const root = document.documentElement;
156
- if (!root)
157
- return;
158
- root.dataset.initPayload = JSON.stringify(arg);
159
- }
160
- if (document.readyState === "loading") {
161
- document.addEventListener("DOMContentLoaded", setPayload, {
162
- once: true,
163
- });
164
- }
165
- else {
166
- setPayload();
167
- }
168
- }, payload);
169
- const popupUrl = "https://example.com/";
170
- const openerHtml = "<!DOCTYPE html>" +
171
- "<html><body>" +
172
- '<a id="open" target="_blank" href="' +
173
- popupUrl +
174
- '">open</a>' +
175
- "</body></html>";
176
- const opener = await ctx.awaitActivePage();
177
- await opener.goto(toDataUrl(openerHtml), { waitUntil: "load" });
178
- const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));
179
- await opener.locator("#open").click();
180
- const popup = await waitForPopupPage(ctx, knownTargetIds);
181
- await popup.waitForLoadState("load");
182
- const observed = await popup.evaluate(() => {
183
- const raw = document.documentElement.dataset.initPayload;
184
- return raw ? JSON.parse(raw) : undefined;
185
- });
186
- (0, test_1.expect)(observed).toEqual(payload);
187
- await popup.reload({ waitUntil: "load" });
188
- const observedAfterReload = await popup.evaluate(() => {
189
- const raw = document.documentElement.dataset.initPayload;
190
- return raw ? JSON.parse(raw) : undefined;
191
- });
192
- (0, test_1.expect)(observedAfterReload).toEqual(payload);
193
- });
194
- (0, test_1.test)("applies script to in-process popup", async () => {
195
- await ctx.addInitScript(() => {
196
- window.__injected = 123;
197
- });
198
- const opener = await ctx.awaitActivePage();
199
- const openerHtml = "<!DOCTYPE html>" +
200
- "<html><body>" +
201
- '<a id="open" target="_blank" href="about:blank">open</a>' +
202
- "</body></html>";
203
- await opener.goto(toDataUrl(openerHtml), { waitUntil: "load" });
204
- const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));
205
- await opener.locator("#open").click();
206
- const popup = await waitForPopupPage(ctx, knownTargetIds);
207
- await popup.waitForLoadState("load");
208
- const injected = await popup.evaluate(() => {
209
- return window.__injected;
210
- });
211
- (0, test_1.expect)(injected).toBe(123);
212
- });
213
- (0, test_1.test)("applies script to cross-process popup and survives reload", async () => {
214
- await ctx.addInitScript(() => {
215
- window.__injected = 123;
216
- });
217
- const opener = await ctx.awaitActivePage();
218
- const openerHtml = "<!DOCTYPE html>" +
219
- "<html><body>" +
220
- '<a id="open" target="_blank" href="https://example.com/">open</a>' +
221
- "</body></html>";
222
- await opener.goto(toDataUrl(openerHtml), {
223
- waitUntil: "load",
224
- });
225
- const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));
226
- await opener.locator("#open").click();
227
- const popup = await waitForPopupPage(ctx, knownTargetIds);
228
- await popup.waitForLoadState("load");
229
- const injected = await popup.evaluate(() => {
230
- return window.__injected;
231
- });
232
- (0, test_1.expect)(injected).toBe(123);
233
- await popup.reload({ waitUntil: "load" });
234
- const injectedAfterReload = await popup.evaluate(() => {
235
- return window.__injected;
236
- });
237
- (0, test_1.expect)(injectedAfterReload).toBe(123);
238
- });
239
- (0, test_1.test)("applies script to cross-process popup opened via window.open and survives reload", async () => {
240
- await ctx.addInitScript(() => {
241
- window.__injected = 789;
242
- });
243
- const opener = await ctx.awaitActivePage();
244
- await opener.goto("about:blank", { waitUntil: "load" });
245
- await opener.mainFrame().evaluate(() => {
246
- const button = document.createElement("button");
247
- button.id = "open-via-window-open";
248
- button.textContent = "open popup";
249
- button.addEventListener("click", () => {
250
- window.open("https://example.com/", "_blank");
251
- });
252
- document.body.appendChild(button);
253
- });
254
- const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));
255
- await opener.locator("#open-via-window-open").click();
256
- const popup = await waitForPopupPage(ctx, knownTargetIds);
257
- await popup.waitForLoadState("load");
258
- const injected = await popup.evaluate(() => {
259
- return window.__injected;
260
- });
261
- (0, test_1.expect)(injected).toBe(789);
262
- await popup.reload({ waitUntil: "load" });
263
- const injectedAfterReload = await popup.evaluate(() => {
264
- return window.__injected;
265
- });
266
- (0, test_1.expect)(injectedAfterReload).toBe(789);
267
- });
268
- (0, test_1.test)("context.addInitScript installs a function callable from page.evaluate", async () => {
269
- const page = await ctx.awaitActivePage();
270
- await ctx.addInitScript(() => {
271
- // installed before any navigation
272
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
273
- // @ts-expect-error
274
- window.sayHelloFromStagehand = () => "hello from stagehand";
275
- });
276
- await page.goto("https://example.com", { waitUntil: "domcontentloaded" });
277
- const result = await page.evaluate(() => {
278
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
279
- // @ts-expect-error
280
- return window.sayHelloFromStagehand();
281
- });
282
- (0, test_1.expect)(result).toBe("hello from stagehand");
283
- });
284
- });
285
- //# sourceMappingURL=context-addInitScript.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-addInitScript.spec.js","sourceRoot":"","sources":["../../../../tests/integration/context-addInitScript.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport { V3Context } from \"../../lib/v3/understudy/context.js\";\nimport type { Page as V3Page } from \"../../lib/v3/understudy/page.js\";\n\nconst POPUP_TIMEOUT_MS = 20_000;\n\nconst toDataUrl = (html: string): string =>\n `data:text/html,${encodeURIComponent(html)}`;\n\nconst waitForPopupPage = async (\n ctx: V3Context,\n knownTargetIds: Set<string>,\n timeoutMs = POPUP_TIMEOUT_MS,\n): Promise<V3Page> => {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const popup = ctx\n .pages()\n .find((page) => !knownTargetIds.has(page.targetId()));\n if (popup) return popup;\n try {\n const active = await ctx.awaitActivePage(500);\n if (!knownTargetIds.has(active.targetId())) return active;\n } catch {\n // keep polling\n }\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n throw new Error(\"Popup page was not created\");\n};\n\ntest.describe(\"context.addInitScript\", () => {\n let v3: V3;\n let ctx: V3Context;\n\n test.beforeEach(async () => {\n v3 = new V3(v3TestConfig);\n await v3.init();\n ctx = v3.context;\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"runs before inline document scripts on navigation\", async () => {\n const page = await ctx.awaitActivePage();\n\n await ctx.addInitScript(() => {\n (window as unknown as { __fromContextInit?: string }).__fromContextInit =\n \"injected-value\";\n });\n\n const html = `<!DOCTYPE html>\n <html>\n <body>\n <script>\n var value = (window && window.__fromContextInit) || 'missing';\n document.body.dataset.initWitness = value;\n </script>\n </body>\n </html>`;\n\n await page.goto(toDataUrl(html), { waitUntil: \"load\" });\n\n const observed = await page.evaluate(() => {\n return document.body.dataset.initWitness;\n });\n expect(observed).toBe(\"injected-value\");\n });\n\n test(\"re-applies the script on every navigation for the same page\", async () => {\n const page = await ctx.awaitActivePage();\n\n await ctx.addInitScript(`\n (function () {\n function markVisit() {\n var root = document.documentElement;\n if (!root) return;\n var current = Number(window.name || \"0\");\n var next = current + 1;\n window.name = String(next);\n root.dataset.visitCount = String(next);\n }\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", markVisit, {\n once: true,\n });\n } else {\n markVisit();\n }\n })();\n `);\n\n await page.goto(toDataUrl(\"<html><body>first</body></html>\"), {\n waitUntil: \"load\",\n });\n const first = await page.evaluate(() => {\n return Number(document.documentElement.dataset.visitCount ?? \"0\");\n });\n expect(first).toBe(1);\n\n await page.goto(toDataUrl(\"<html><body>second</body></html>\"), {\n waitUntil: \"load\",\n });\n const second = await page.evaluate(() => {\n return Number(document.documentElement.dataset.visitCount ?? \"0\");\n });\n expect(second).toBe(2);\n });\n\n test(\"applies script (with args) to newly created pages\", async () => {\n const payload = { greeting: \"hi\", nested: { count: 2 } };\n\n const initPayload = ((arg) => {\n function setPayload() {\n const root = document.documentElement;\n if (!root) return;\n root.dataset.initPayload = JSON.stringify(arg);\n }\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", setPayload, {\n once: true,\n });\n } else {\n setPayload();\n }\n }) as (arg: typeof payload) => void;\n await ctx.addInitScript(initPayload, payload);\n\n const newPage = await ctx.newPage();\n await newPage.goto(toDataUrl(\"<html><body>child</body></html>\"), {\n waitUntil: \"load\",\n });\n\n const observed = await newPage.evaluate(() => {\n const raw = document.documentElement.dataset.initPayload;\n return raw ? JSON.parse(raw) : undefined;\n });\n expect(observed).toEqual(payload);\n });\n\n test(\"applies script to newPage(url) on initial document\", async () => {\n const payload = { marker: \"newPageUrl\" };\n\n await ctx.addInitScript((arg) => {\n function setPayload(): void {\n const root = document.documentElement;\n if (!root) return;\n root.dataset.initPayload = JSON.stringify(arg);\n }\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", setPayload, {\n once: true,\n });\n } else {\n setPayload();\n }\n }, payload);\n\n const newPage = await ctx.newPage(\n toDataUrl(\"<html><body>new page</body></html>\"),\n );\n await newPage.waitForLoadState(\"load\");\n\n const observed = await newPage.evaluate(() => {\n const raw = document.documentElement.dataset.initPayload;\n return raw ? JSON.parse(raw) : undefined;\n });\n expect(observed).toEqual(payload);\n });\n\n test(\"applies script to pages opened via link clicks\", async () => {\n const payload = { marker: \"linkClick\" };\n\n await ctx.addInitScript((arg) => {\n function setPayload(): void {\n const root = document.documentElement;\n if (!root) return;\n root.dataset.initPayload = JSON.stringify(arg);\n }\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", setPayload, {\n once: true,\n });\n } else {\n setPayload();\n }\n }, payload);\n\n const popupUrl = \"https://example.com/\";\n const openerHtml =\n \"<!DOCTYPE html>\" +\n \"<html><body>\" +\n '<a id=\"open\" target=\"_blank\" href=\"' +\n popupUrl +\n '\">open</a>' +\n \"</body></html>\";\n\n const opener = await ctx.awaitActivePage();\n await opener.goto(toDataUrl(openerHtml), { waitUntil: \"load\" });\n const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));\n await opener.locator(\"#open\").click();\n\n const popup = await waitForPopupPage(ctx, knownTargetIds);\n\n await popup.waitForLoadState(\"load\");\n\n const observed = await popup.evaluate(() => {\n const raw = document.documentElement.dataset.initPayload;\n return raw ? JSON.parse(raw) : undefined;\n });\n expect(observed).toEqual(payload);\n\n await popup.reload({ waitUntil: \"load\" });\n const observedAfterReload = await popup.evaluate(() => {\n const raw = document.documentElement.dataset.initPayload;\n return raw ? JSON.parse(raw) : undefined;\n });\n expect(observedAfterReload).toEqual(payload);\n });\n\n test(\"applies script to in-process popup\", async () => {\n await ctx.addInitScript(() => {\n (window as unknown as { __injected?: number }).__injected = 123;\n });\n\n const opener = await ctx.awaitActivePage();\n const openerHtml =\n \"<!DOCTYPE html>\" +\n \"<html><body>\" +\n '<a id=\"open\" target=\"_blank\" href=\"about:blank\">open</a>' +\n \"</body></html>\";\n await opener.goto(toDataUrl(openerHtml), { waitUntil: \"load\" });\n const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));\n await opener.locator(\"#open\").click();\n\n const popup = await waitForPopupPage(ctx, knownTargetIds);\n await popup.waitForLoadState(\"load\");\n const injected = await popup.evaluate(() => {\n return (window as unknown as { __injected?: number }).__injected;\n });\n expect(injected).toBe(123);\n });\n\n test(\"applies script to cross-process popup and survives reload\", async () => {\n await ctx.addInitScript(() => {\n (window as unknown as { __injected?: number }).__injected = 123;\n });\n\n const opener = await ctx.awaitActivePage();\n const openerHtml =\n \"<!DOCTYPE html>\" +\n \"<html><body>\" +\n '<a id=\"open\" target=\"_blank\" href=\"https://example.com/\">open</a>' +\n \"</body></html>\";\n await opener.goto(toDataUrl(openerHtml), {\n waitUntil: \"load\",\n });\n const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));\n await opener.locator(\"#open\").click();\n\n const popup = await waitForPopupPage(ctx, knownTargetIds);\n await popup.waitForLoadState(\"load\");\n\n const injected = await popup.evaluate(() => {\n return (window as unknown as { __injected?: number }).__injected;\n });\n expect(injected).toBe(123);\n\n await popup.reload({ waitUntil: \"load\" });\n const injectedAfterReload = await popup.evaluate(() => {\n return (window as unknown as { __injected?: number }).__injected;\n });\n expect(injectedAfterReload).toBe(123);\n });\n\n test(\"applies script to cross-process popup opened via window.open and survives reload\", async () => {\n await ctx.addInitScript(() => {\n (window as unknown as { __injected?: number }).__injected = 789;\n });\n\n const opener = await ctx.awaitActivePage();\n await opener.goto(\"about:blank\", { waitUntil: \"load\" });\n await opener.mainFrame().evaluate(() => {\n const button = document.createElement(\"button\");\n button.id = \"open-via-window-open\";\n button.textContent = \"open popup\";\n button.addEventListener(\"click\", () => {\n window.open(\"https://example.com/\", \"_blank\");\n });\n document.body.appendChild(button);\n });\n\n const knownTargetIds = new Set(ctx.pages().map((p) => p.targetId()));\n await opener.locator(\"#open-via-window-open\").click();\n\n const popup = await waitForPopupPage(ctx, knownTargetIds);\n await popup.waitForLoadState(\"load\");\n\n const injected = await popup.evaluate(() => {\n return (window as unknown as { __injected?: number }).__injected;\n });\n expect(injected).toBe(789);\n\n await popup.reload({ waitUntil: \"load\" });\n const injectedAfterReload = await popup.evaluate(() => {\n return (window as unknown as { __injected?: number }).__injected;\n });\n expect(injectedAfterReload).toBe(789);\n });\n\n test(\"context.addInitScript installs a function callable from page.evaluate\", async () => {\n const page = await ctx.awaitActivePage();\n\n await ctx.addInitScript(() => {\n // installed before any navigation\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n window.sayHelloFromStagehand = () => \"hello from stagehand\";\n });\n\n await page.goto(\"https://example.com\", { waitUntil: \"domcontentloaded\" });\n\n const result = await page.evaluate(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return window.sayHelloFromStagehand();\n });\n\n expect(result).toBe(\"hello from stagehand\");\n });\n});\n"]}
@@ -1,49 +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_config_js_1 = require("./v3.config.js");
6
- const testUtils_js_1 = require("./testUtils.js");
7
- const TEST_URL = "https://browserbase.github.io/stagehand-eval-sites/sites/example/";
8
- test_1.test.describe("context.setExtraHTTPHeaders", () => {
9
- let v3;
10
- test_1.test.beforeEach(async () => {
11
- v3 = new v3_js_1.V3(v3_config_js_1.v3TestConfig);
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)("applies headers to navigation requests", async () => {
18
- const ctx = v3.context;
19
- const page = await ctx.awaitActivePage();
20
- await ctx.setExtraHTTPHeaders({ "x-stagehand-test": "yes" });
21
- const internal = page;
22
- await internal.mainSession.send("Network.enable");
23
- const requestPromise = new Promise((resolve, reject) => {
24
- const timeout = setTimeout(() => {
25
- internal.mainSession.off("Network.requestWillBeSent", handler);
26
- reject(new Error("Timed out waiting for request"));
27
- }, 5000);
28
- const handler = (evt) => {
29
- if (evt.type !== "Document")
30
- return;
31
- const url = String(evt.request?.url ?? "");
32
- if (!url.startsWith(TEST_URL))
33
- return;
34
- clearTimeout(timeout);
35
- internal.mainSession.off("Network.requestWillBeSent", handler);
36
- resolve(evt);
37
- };
38
- internal.mainSession.on("Network.requestWillBeSent", handler);
39
- });
40
- await page.goto(TEST_URL, { waitUntil: "domcontentloaded" });
41
- const request = await requestPromise;
42
- const headers = Object.fromEntries(Object.entries(request.request.headers ?? {}).map(([key, value]) => [
43
- key.toLowerCase(),
44
- String(value),
45
- ]));
46
- (0, test_1.expect)(headers["x-stagehand-test"]).toBe("yes");
47
- });
48
- });
49
- //# sourceMappingURL=context-extra-http-headers.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-extra-http-headers.spec.js","sourceRoot":"","sources":["../../../../tests/integration/context-extra-http-headers.spec.ts"],"names":[],"mappings":";;AAAA,2CAAgD;AAEhD,8CAAwC;AACxC,iDAA8C;AAC9C,iDAAyC;AAEzC,MAAM,QAAQ,GACZ,mEAAmE,CAAC;AAEtE,WAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAChD,IAAI,EAAM,CAAC;IAEX,WAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QACzB,EAAE,GAAG,IAAI,UAAE,CAAC,2BAAY,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,WAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAA,sBAAO,EAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;QAEzC,MAAM,GAAG,CAAC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,IAMhB,CAAC;QAEF,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,IAAI,OAAO,CAChC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;gBAC/D,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACrD,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,MAAM,OAAO,GAAG,CAAC,GAA4C,EAAE,EAAE;gBAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;oBAAE,OAAO;gBACpC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,OAAO;gBACtC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC,CAAC;YAEF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC,CACF,CAAC;QAEF,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAClE,GAAG,CAAC,WAAW,EAAE;YACjB,MAAM,CAAC,KAAK,CAAC;SACd,CAAC,CACH,CAAC;QAEF,IAAA,aAAM,EAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport type { Protocol } from \"devtools-protocol\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport { closeV3 } from \"./testUtils.js\";\n\nconst TEST_URL =\n \"https://browserbase.github.io/stagehand-eval-sites/sites/example/\";\n\ntest.describe(\"context.setExtraHTTPHeaders\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3(v3TestConfig);\n await v3.init();\n });\n\n test.afterEach(async () => {\n await closeV3(v3);\n });\n\n test(\"applies headers to navigation requests\", async () => {\n const ctx = v3.context;\n const page = await ctx.awaitActivePage();\n\n await ctx.setExtraHTTPHeaders({ \"x-stagehand-test\": \"yes\" });\n\n const internal = page as unknown as {\n mainSession: {\n send: (method: string, params?: unknown) => Promise<unknown>;\n on: (event: string, handler: (params: unknown) => void) => void;\n off: (event: string, handler: (params: unknown) => void) => void;\n };\n };\n\n await internal.mainSession.send(\"Network.enable\");\n\n const requestPromise = new Promise<Protocol.Network.RequestWillBeSentEvent>(\n (resolve, reject) => {\n const timeout = setTimeout(() => {\n internal.mainSession.off(\"Network.requestWillBeSent\", handler);\n reject(new Error(\"Timed out waiting for request\"));\n }, 5000);\n\n const handler = (evt: Protocol.Network.RequestWillBeSentEvent) => {\n if (evt.type !== \"Document\") return;\n const url = String(evt.request?.url ?? \"\");\n if (!url.startsWith(TEST_URL)) return;\n clearTimeout(timeout);\n internal.mainSession.off(\"Network.requestWillBeSent\", handler);\n resolve(evt);\n };\n\n internal.mainSession.on(\"Network.requestWillBeSent\", handler);\n },\n );\n\n await page.goto(TEST_URL, { waitUntil: \"domcontentloaded\" });\n\n const request = await requestPromise;\n const headers = Object.fromEntries(\n Object.entries(request.request.headers ?? {}).map(([key, value]) => [\n key.toLowerCase(),\n String(value),\n ]),\n );\n\n expect(headers[\"x-stagehand-test\"]).toBe(\"yes\");\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,187 +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 testUtils_js_1 = require("./testUtils.js");
7
- const BASE_URL = "https://browserbase.github.io/stagehand-eval-sites/sites/example/";
8
- test_1.test.describe("cookies", () => {
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)("addCookies sets a cookie visible to the page", async () => {
18
- const ctx = v3.context;
19
- const page = ctx.pages()[0];
20
- (0, test_1.expect)(page).toBeDefined();
21
- await page.goto(BASE_URL);
22
- const name = `stagehand_cookie_${Date.now()}`;
23
- await ctx.addCookies([
24
- {
25
- name,
26
- value: "1",
27
- url: BASE_URL,
28
- httpOnly: false,
29
- },
30
- ]);
31
- await page.reload();
32
- const cookieString = await page.evaluate(() => document.cookie);
33
- (0, test_1.expect)(cookieString).toContain(`${name}=1`);
34
- const cookies = await ctx.cookies(BASE_URL);
35
- (0, test_1.expect)(cookies.some((c) => c.name === name && c.value === "1")).toBe(true);
36
- });
37
- (0, test_1.test)("cookies() with no URL returns all cookies", async () => {
38
- const ctx = v3.context;
39
- const page = ctx.pages()[0];
40
- await page.goto(BASE_URL);
41
- const name = `stagehand_all_${Date.now()}`;
42
- await ctx.addCookies([
43
- { name, value: "all", url: BASE_URL, httpOnly: false },
44
- ]);
45
- const all = await ctx.cookies();
46
- (0, test_1.expect)(all.some((c) => c.name === name)).toBe(true);
47
- });
48
- (0, test_1.test)("clearCookies() removes all cookies", async () => {
49
- const ctx = v3.context;
50
- const page = ctx.pages()[0];
51
- await page.goto(BASE_URL);
52
- await ctx.addCookies([
53
- { name: "to_clear_a", value: "1", url: BASE_URL, httpOnly: false },
54
- { name: "to_clear_b", value: "2", url: BASE_URL, httpOnly: false },
55
- ]);
56
- // Verify cookies were set
57
- let cookies = await ctx.cookies(BASE_URL);
58
- (0, test_1.expect)(cookies.some((c) => c.name === "to_clear_a")).toBe(true);
59
- (0, test_1.expect)(cookies.some((c) => c.name === "to_clear_b")).toBe(true);
60
- await ctx.clearCookies();
61
- cookies = await ctx.cookies(BASE_URL);
62
- (0, test_1.expect)(cookies.some((c) => c.name === "to_clear_a")).toBe(false);
63
- (0, test_1.expect)(cookies.some((c) => c.name === "to_clear_b")).toBe(false);
64
- });
65
- (0, test_1.test)("clearCookies() with name filter removes only matching cookies", async () => {
66
- const ctx = v3.context;
67
- const page = ctx.pages()[0];
68
- await page.goto(BASE_URL);
69
- await ctx.addCookies([
70
- { name: "keep_me", value: "1", url: BASE_URL, httpOnly: false },
71
- { name: "remove_me", value: "2", url: BASE_URL, httpOnly: false },
72
- ]);
73
- await ctx.clearCookies({ name: "remove_me" });
74
- const cookies = await ctx.cookies(BASE_URL);
75
- (0, test_1.expect)(cookies.some((c) => c.name === "keep_me")).toBe(true);
76
- (0, test_1.expect)(cookies.some((c) => c.name === "remove_me")).toBe(false);
77
- });
78
- (0, test_1.test)("clearCookies() with regex filter removes matching cookies", async () => {
79
- const ctx = v3.context;
80
- const page = ctx.pages()[0];
81
- await page.goto(BASE_URL);
82
- await ctx.addCookies([
83
- { name: "_ga_ABC", value: "1", url: BASE_URL, httpOnly: false },
84
- { name: "_ga_DEF", value: "2", url: BASE_URL, httpOnly: false },
85
- { name: "session", value: "3", url: BASE_URL, httpOnly: false },
86
- ]);
87
- await ctx.clearCookies({ name: /^_ga/ });
88
- const cookies = await ctx.cookies(BASE_URL);
89
- (0, test_1.expect)(cookies.some((c) => c.name === "session")).toBe(true);
90
- (0, test_1.expect)(cookies.some((c) => c.name === "_ga_ABC")).toBe(false);
91
- (0, test_1.expect)(cookies.some((c) => c.name === "_ga_DEF")).toBe(false);
92
- });
93
- (0, test_1.test)("cookies are visible from a second page on the same domain", async () => {
94
- const ctx = v3.context;
95
- const page1 = ctx.pages()[0];
96
- await page1.goto(BASE_URL);
97
- const name = `stagehand_multi_${Date.now()}`;
98
- await ctx.addCookies([
99
- { name, value: "shared", url: BASE_URL, httpOnly: false },
100
- ]);
101
- const page2 = await ctx.newPage();
102
- await page2.goto(BASE_URL);
103
- const cookieString = await page2.evaluate(() => document.cookie);
104
- (0, test_1.expect)(cookieString).toContain(`${name}=shared`);
105
- });
106
- (0, test_1.test)("cookies persist across navigation to a different path", async () => {
107
- const ctx = v3.context;
108
- const page = ctx.pages()[0];
109
- await page.goto(BASE_URL);
110
- const name = `stagehand_nav_${Date.now()}`;
111
- await ctx.addCookies([
112
- {
113
- name,
114
- value: "persisted",
115
- domain: "browserbase.github.io",
116
- path: "/",
117
- httpOnly: false,
118
- },
119
- ]);
120
- // Navigate to a different path on the same domain
121
- await page.goto("https://browserbase.github.io/stagehand-eval-sites/");
122
- const cookieString = await page.evaluate(() => document.cookie);
123
- (0, test_1.expect)(cookieString).toContain(`${name}=persisted`);
124
- });
125
- (0, test_1.test)("httpOnly cookie is hidden from document.cookie but returned by cookies()", async () => {
126
- const ctx = v3.context;
127
- const page = ctx.pages()[0];
128
- await page.goto(BASE_URL);
129
- const name = `stagehand_http_${Date.now()}`;
130
- await ctx.addCookies([
131
- { name, value: "secret", url: BASE_URL, httpOnly: true },
132
- ]);
133
- await page.reload();
134
- // document.cookie must NOT include httpOnly cookies
135
- const cookieString = await page.evaluate(() => document.cookie);
136
- (0, test_1.expect)(cookieString).not.toContain(name);
137
- // But the context API should still return it
138
- const cookies = await ctx.cookies(BASE_URL);
139
- const match = cookies.find((c) => c.name === name);
140
- (0, test_1.expect)(match).toBeDefined();
141
- (0, test_1.expect)(match.value).toBe("secret");
142
- (0, test_1.expect)(match.httpOnly).toBe(true);
143
- });
144
- (0, test_1.test)("cookies() returns correct shape for a fully-specified cookie", async () => {
145
- const ctx = v3.context;
146
- const page = ctx.pages()[0];
147
- await page.goto(BASE_URL);
148
- const name = `stagehand_shape_${Date.now()}`;
149
- const expires = Math.floor(Date.now() / 1000) + 3600; // 1 hour from now
150
- await ctx.addCookies([
151
- {
152
- name,
153
- value: "full",
154
- domain: "browserbase.github.io",
155
- path: "/",
156
- expires,
157
- httpOnly: true,
158
- secure: true,
159
- sameSite: "Lax",
160
- },
161
- ]);
162
- const cookies = await ctx.cookies(BASE_URL);
163
- const match = cookies.find((c) => c.name === name);
164
- (0, test_1.expect)(match).toBeDefined();
165
- // Validate every field on the returned Cookie object
166
- (0, test_1.expect)(match.value).toBe("full");
167
- (0, test_1.expect)(match.domain).toMatch(/browserbase\.github\.io/);
168
- (0, test_1.expect)(match.path).toBe("/");
169
- (0, test_1.expect)(match.expires).toBeGreaterThan(0);
170
- (0, test_1.expect)(match.httpOnly).toBe(true);
171
- (0, test_1.expect)(match.secure).toBe(true);
172
- (0, test_1.expect)(match.sameSite).toBe("Lax");
173
- // Ensure no extra fields leak through from CDP
174
- const keys = Object.keys(match);
175
- (0, test_1.expect)(keys.sort()).toEqual([
176
- "name",
177
- "value",
178
- "domain",
179
- "path",
180
- "expires",
181
- "httpOnly",
182
- "secure",
183
- "sameSite",
184
- ].sort());
185
- });
186
- });
187
- //# sourceMappingURL=cookies.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookies.spec.js","sourceRoot":"","sources":["../../../../tests/integration/cookies.spec.ts"],"names":[],"mappings":";;AAAA,2CAAgD;AAChD,8CAAwC;AACxC,iEAA6D;AAC7D,iDAAyC;AAEzC,MAAM,QAAQ,GACZ,mEAAmE,CAAC;AAEtE,WAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IAC5B,IAAI,EAAM,CAAC;IAEX,WAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QACzB,EAAE,GAAG,IAAI,UAAE,CAAC,0CAAmB,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,WAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAA,sBAAO,EAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAE3B,MAAM,IAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC9C,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB;gBACE,IAAI;gBACJ,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,IAAK,CAAC,MAAM,EAAE,CAAC;QAErB,MAAM,YAAY,GAAG,MAAM,IAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjE,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;SACvD,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YAClE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;SACnE,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhE,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;QAEzB,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;SAClE,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;SAChE,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAA,aAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC9B,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,mBAAmB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC1D,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3B,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjE,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB;gBACE,IAAI;gBACJ,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,uBAAuB;gBAC/B,IAAI,EAAE,GAAG;gBACT,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC,CAAC;QAEH,kDAAkD;QAClD,MAAM,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAEvE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChE,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,kBAAkB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5C,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;SACzD,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,oDAAoD;QACpD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChE,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzC,6CAA6C;QAC7C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAA,aAAM,EAAC,KAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAA,aAAM,EAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,mBAAmB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,kBAAkB;QACxE,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB;gBACE,IAAI;gBACJ,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,uBAAuB;gBAC/B,IAAI,EAAE,GAAG;gBACT,OAAO;gBACP,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACnD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5B,qDAAqD;QACrD,IAAA,aAAM,EAAC,KAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAA,aAAM,EAAC,KAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACzD,IAAA,aAAM,EAAC,KAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAA,aAAM,EAAC,KAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAA,aAAM,EAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAA,aAAM,EAAC,KAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,+CAA+C;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CACzB;YACE,MAAM;YACN,OAAO;YACP,QAAQ;YACR,MAAM;YACN,SAAS;YACT,UAAU;YACV,QAAQ;YACR,UAAU;SACX,CAAC,IAAI,EAAE,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3DynamicTestConfig } from \"./v3.dynamic.config.js\";\nimport { closeV3 } from \"./testUtils.js\";\n\nconst BASE_URL =\n \"https://browserbase.github.io/stagehand-eval-sites/sites/example/\";\n\ntest.describe(\"cookies\", () => {\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(\"addCookies sets a cookie visible to the page\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0];\n expect(page).toBeDefined();\n\n await page!.goto(BASE_URL);\n\n const name = `stagehand_cookie_${Date.now()}`;\n await ctx.addCookies([\n {\n name,\n value: \"1\",\n url: BASE_URL,\n httpOnly: false,\n },\n ]);\n\n await page!.reload();\n\n const cookieString = await page!.evaluate(() => document.cookie);\n expect(cookieString).toContain(`${name}=1`);\n\n const cookies = await ctx.cookies(BASE_URL);\n expect(cookies.some((c) => c.name === name && c.value === \"1\")).toBe(true);\n });\n\n test(\"cookies() with no URL returns all cookies\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0]!;\n await page.goto(BASE_URL);\n\n const name = `stagehand_all_${Date.now()}`;\n await ctx.addCookies([\n { name, value: \"all\", url: BASE_URL, httpOnly: false },\n ]);\n\n const all = await ctx.cookies();\n expect(all.some((c) => c.name === name)).toBe(true);\n });\n\n test(\"clearCookies() removes all cookies\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0]!;\n await page.goto(BASE_URL);\n\n await ctx.addCookies([\n { name: \"to_clear_a\", value: \"1\", url: BASE_URL, httpOnly: false },\n { name: \"to_clear_b\", value: \"2\", url: BASE_URL, httpOnly: false },\n ]);\n\n // Verify cookies were set\n let cookies = await ctx.cookies(BASE_URL);\n expect(cookies.some((c) => c.name === \"to_clear_a\")).toBe(true);\n expect(cookies.some((c) => c.name === \"to_clear_b\")).toBe(true);\n\n await ctx.clearCookies();\n\n cookies = await ctx.cookies(BASE_URL);\n expect(cookies.some((c) => c.name === \"to_clear_a\")).toBe(false);\n expect(cookies.some((c) => c.name === \"to_clear_b\")).toBe(false);\n });\n\n test(\"clearCookies() with name filter removes only matching cookies\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0]!;\n await page.goto(BASE_URL);\n\n await ctx.addCookies([\n { name: \"keep_me\", value: \"1\", url: BASE_URL, httpOnly: false },\n { name: \"remove_me\", value: \"2\", url: BASE_URL, httpOnly: false },\n ]);\n\n await ctx.clearCookies({ name: \"remove_me\" });\n\n const cookies = await ctx.cookies(BASE_URL);\n expect(cookies.some((c) => c.name === \"keep_me\")).toBe(true);\n expect(cookies.some((c) => c.name === \"remove_me\")).toBe(false);\n });\n\n test(\"clearCookies() with regex filter removes matching cookies\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0]!;\n await page.goto(BASE_URL);\n\n await ctx.addCookies([\n { name: \"_ga_ABC\", value: \"1\", url: BASE_URL, httpOnly: false },\n { name: \"_ga_DEF\", value: \"2\", url: BASE_URL, httpOnly: false },\n { name: \"session\", value: \"3\", url: BASE_URL, httpOnly: false },\n ]);\n\n await ctx.clearCookies({ name: /^_ga/ });\n\n const cookies = await ctx.cookies(BASE_URL);\n expect(cookies.some((c) => c.name === \"session\")).toBe(true);\n expect(cookies.some((c) => c.name === \"_ga_ABC\")).toBe(false);\n expect(cookies.some((c) => c.name === \"_ga_DEF\")).toBe(false);\n });\n\n test(\"cookies are visible from a second page on the same domain\", async () => {\n const ctx = v3.context;\n const page1 = ctx.pages()[0]!;\n await page1.goto(BASE_URL);\n\n const name = `stagehand_multi_${Date.now()}`;\n await ctx.addCookies([\n { name, value: \"shared\", url: BASE_URL, httpOnly: false },\n ]);\n\n const page2 = await ctx.newPage();\n await page2.goto(BASE_URL);\n\n const cookieString = await page2.evaluate(() => document.cookie);\n expect(cookieString).toContain(`${name}=shared`);\n });\n\n test(\"cookies persist across navigation to a different path\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0]!;\n await page.goto(BASE_URL);\n\n const name = `stagehand_nav_${Date.now()}`;\n await ctx.addCookies([\n {\n name,\n value: \"persisted\",\n domain: \"browserbase.github.io\",\n path: \"/\",\n httpOnly: false,\n },\n ]);\n\n // Navigate to a different path on the same domain\n await page.goto(\"https://browserbase.github.io/stagehand-eval-sites/\");\n\n const cookieString = await page.evaluate(() => document.cookie);\n expect(cookieString).toContain(`${name}=persisted`);\n });\n\n test(\"httpOnly cookie is hidden from document.cookie but returned by cookies()\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0]!;\n await page.goto(BASE_URL);\n\n const name = `stagehand_http_${Date.now()}`;\n await ctx.addCookies([\n { name, value: \"secret\", url: BASE_URL, httpOnly: true },\n ]);\n\n await page.reload();\n\n // document.cookie must NOT include httpOnly cookies\n const cookieString = await page.evaluate(() => document.cookie);\n expect(cookieString).not.toContain(name);\n\n // But the context API should still return it\n const cookies = await ctx.cookies(BASE_URL);\n const match = cookies.find((c) => c.name === name);\n expect(match).toBeDefined();\n expect(match!.value).toBe(\"secret\");\n expect(match!.httpOnly).toBe(true);\n });\n\n test(\"cookies() returns correct shape for a fully-specified cookie\", async () => {\n const ctx = v3.context;\n const page = ctx.pages()[0]!;\n await page.goto(BASE_URL);\n\n const name = `stagehand_shape_${Date.now()}`;\n const expires = Math.floor(Date.now() / 1000) + 3600; // 1 hour from now\n await ctx.addCookies([\n {\n name,\n value: \"full\",\n domain: \"browserbase.github.io\",\n path: \"/\",\n expires,\n httpOnly: true,\n secure: true,\n sameSite: \"Lax\",\n },\n ]);\n\n const cookies = await ctx.cookies(BASE_URL);\n const match = cookies.find((c) => c.name === name);\n expect(match).toBeDefined();\n\n // Validate every field on the returned Cookie object\n expect(match!.value).toBe(\"full\");\n expect(match!.domain).toMatch(/browserbase\\.github\\.io/);\n expect(match!.path).toBe(\"/\");\n expect(match!.expires).toBeGreaterThan(0);\n expect(match!.httpOnly).toBe(true);\n expect(match!.secure).toBe(true);\n expect(match!.sameSite).toBe(\"Lax\");\n\n // Ensure no extra fields leak through from CDP\n const keys = Object.keys(match!);\n expect(keys.sort()).toEqual(\n [\n \"name\",\n \"value\",\n \"domain\",\n \"path\",\n \"expires\",\n \"httpOnly\",\n \"secure\",\n \"sameSite\",\n ].sort(),\n );\n });\n});\n"]}