@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.
- package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +1 -1
- package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
- package/dist/cjs/lib/v3/launch/local.js +47 -7
- package/dist/cjs/lib/v3/launch/local.js.map +1 -1
- package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
- package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
- package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/api.d.ts +283 -0
- package/dist/cjs/lib/v3/types/public/api.js +50 -3
- package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/model.d.ts +11 -7
- package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
- package/dist/cjs/lib/v3/v3.js +2 -47
- package/dist/cjs/lib/v3/v3.js.map +1 -1
- package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/esm/lib/v3/launch/local.d.ts +2 -7
- package/dist/esm/lib/v3/launch/local.js +48 -8
- package/dist/esm/lib/v3/launch/local.js.map +1 -1
- package/dist/esm/lib/v3/llm/aisdk.js +5 -0
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
- package/dist/esm/lib/v3/types/public/api.d.ts +283 -0
- package/dist/esm/lib/v3/types/public/api.js +48 -1
- package/dist/esm/lib/v3/types/public/api.js.map +1 -1
- package/dist/esm/lib/v3/types/public/model.d.ts +11 -7
- package/dist/esm/lib/v3/types/public/model.js.map +1 -1
- package/dist/esm/lib/v3/v3.js +2 -47
- package/dist/esm/lib/v3/v3.js.map +1 -1
- package/package.json +4 -5
- package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
- package/dist/cjs/tests/cache-variables.test.js +0 -221
- package/dist/cjs/tests/cache-variables.test.js.map +0 -1
- package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
- package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
- package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
- package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
- package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
- package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
- package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
- package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
- package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
- package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
- package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
- package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
- package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
- package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
- package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
- package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
- package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
- package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
- package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
- package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
- package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/click-count.spec.js +0 -163
- package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
- package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
- package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
- package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
- package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
- package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
- package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
- package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/cookies.spec.js +0 -187
- package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
- package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
- package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
- package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/downloads.spec.js +0 -52
- package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
- package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
- package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
- package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
- package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
- package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
- package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
- package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
- package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
- package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
- package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
- package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
- package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
- package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
- package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
- package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
- package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
- package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
- package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
- package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
- package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
- package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
- package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
- package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
- package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
- package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
- package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
- package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
- package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
- package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
- package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-console.spec.js +0 -47
- package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
- package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
- package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
- package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
- package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
- package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
- package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
- package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
- package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
- package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
- package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
- package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
- package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
- package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
- package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
- package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
- package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
- package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
- package/dist/cjs/tests/integration/testUtils.js +0 -188
- package/dist/cjs/tests/integration/testUtils.js.map +0 -1
- package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
- package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
- package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
- package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
- package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
- package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
- package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
- package/dist/cjs/tests/integration/v3.config.js +0 -11
- package/dist/cjs/tests/integration/v3.config.js.map +0 -1
- package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
- package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
- package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
- package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
- package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
- package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
- package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
- package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
- package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
- package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
- package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
- package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
- package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
- package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
- package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
- package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
- package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
- package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
- package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
- package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
- package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
- package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
- package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
- package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
- package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
- package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
- package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
- package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
- package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
- package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
- package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
- package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
- package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
- package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
- package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.d.ts +0 -1
- package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.js +0 -87
- package/dist/cjs/tests/unit/anthropic-cua-triple-click.test.js.map +0 -1
- package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
- package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -135
- package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
- package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
- package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
- package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
- package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
- package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -69
- package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
- package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
- package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
- package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
- package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
- package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
- package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
- package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
- package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
- package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
- package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
- package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
- package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
- package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
- package/dist/cjs/tests/unit/cookies.test.js +0 -944
- package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
- package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
- package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
- package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
- package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
- package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
- package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
- package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
- package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
- package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
- package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
- package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
- package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
- package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
- package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
- package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
- package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
- package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
- package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
- package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
- package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
- package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
- package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
- package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
- package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
- package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
- package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
- package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
- package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
- package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
- package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
- package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/model-utils.test.js +0 -42
- package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
- package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
- package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
- package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
- package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
- package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
- package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
- package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
- package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
- package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
- package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
- package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
- package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
- package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
- package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
- package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
- package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
- package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
- package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
- package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
- package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
- package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
- package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
- package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
- package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
- package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
- package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
- package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
- package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
- package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -339
- package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
- package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
- package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
- package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
- package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
- package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
- package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -127
- package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
- package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
- package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
- package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
- package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -933
- package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
- package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
- package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
- package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
- package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
- package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
- package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
- package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
- package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
- package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
- package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
- package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
- package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
- package/dist/esm/tests/cache-variables.test.d.ts +0 -1
- package/dist/esm/tests/cache-variables.test.js +0 -219
- package/dist/esm/tests/cache-variables.test.js.map +0 -1
- package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
- package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
- package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
- package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
- package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
- package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
- package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
- package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
- package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
- package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
- package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
- package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
- package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
- package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
- package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
- package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
- package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
- package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
- package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
- package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
- package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
- package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
- package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
- package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
- package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
- package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
- package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
- package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
- package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
- package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
- package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
- package/dist/esm/tests/integration/click-count.spec.js +0 -161
- package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
- package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
- package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
- package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
- package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
- package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
- package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
- package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
- package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
- package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
- package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
- package/dist/esm/tests/integration/cookies.spec.js +0 -185
- package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
- package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
- package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
- package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
- package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
- package/dist/esm/tests/integration/downloads.spec.js +0 -47
- package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
- package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
- package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
- package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
- package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
- package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
- package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
- package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
- package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
- package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
- package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
- package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
- package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
- package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
- package/dist/esm/tests/integration/keep-alive.child.js +0 -83
- package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
- package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
- package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
- package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
- package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
- package/dist/esm/tests/integration/keyboard.spec.js +0 -257
- package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
- package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
- package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
- package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-count.spec.js +0 -66
- package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
- package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
- package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
- package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
- package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
- package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
- package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
- package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
- package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
- package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
- package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
- package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
- package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
- package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
- package/dist/esm/tests/integration/nested-div.spec.js +0 -20
- package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
- package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
- package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
- package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
- package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-console.spec.js +0 -45
- package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
- package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
- package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
- package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-hover.spec.js +0 -163
- package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
- package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
- package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
- package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
- package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
- package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
- package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
- package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
- package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
- package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
- package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
- package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
- package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
- package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
- package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
- package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
- package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
- package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
- package/dist/esm/tests/integration/testUtils.d.ts +0 -40
- package/dist/esm/tests/integration/testUtils.js +0 -178
- package/dist/esm/tests/integration/testUtils.js.map +0 -1
- package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
- package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
- package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
- package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
- package/dist/esm/tests/integration/timeouts.spec.js +0 -307
- package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
- package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
- package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
- package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
- package/dist/esm/tests/integration/v3.config.d.ts +0 -4
- package/dist/esm/tests/integration/v3.config.js +0 -7
- package/dist/esm/tests/integration/v3.config.js.map +0 -1
- package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
- package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
- package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
- package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
- package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
- package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
- package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
- package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
- package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
- package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
- package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
- package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
- package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
- package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
- package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
- package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
- package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
- package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
- package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
- package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
- package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
- package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
- package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
- package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
- package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
- package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
- package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
- package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
- package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
- package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
- package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
- package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
- package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
- package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
- package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
- package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
- package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
- package/dist/esm/tests/unit/anthropic-cua-triple-click.test.d.ts +0 -1
- package/dist/esm/tests/unit/anthropic-cua-triple-click.test.js +0 -82
- package/dist/esm/tests/unit/anthropic-cua-triple-click.test.js.map +0 -1
- package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
- package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -133
- package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
- package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
- package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
- package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
- package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
- package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
- package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
- package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
- package/dist/esm/tests/unit/api-variables-schema.test.js +0 -67
- package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
- package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
- package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
- package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
- package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
- package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
- package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
- package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
- package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
- package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
- package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
- package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
- package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
- package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
- package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
- package/dist/esm/tests/unit/cookies.test.js +0 -909
- package/dist/esm/tests/unit/cookies.test.js.map +0 -1
- package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
- package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
- package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
- package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
- package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
- package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
- package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
- package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
- package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
- package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
- package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
- package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
- package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
- package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
- package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
- package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
- package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
- package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
- package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
- package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
- package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
- package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
- package/dist/esm/tests/unit/llm-provider.test.js +0 -62
- package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
- package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
- package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
- package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
- package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
- package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
- package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
- package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/model-utils.test.js +0 -40
- package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
- package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
- package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
- package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
- package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
- package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
- package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
- package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
- package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
- package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
- package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
- package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
- package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
- package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
- package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
- package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
- package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
- package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
- package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
- package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
- package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
- package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
- package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
- package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
- package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
- package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
- package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
- package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
- package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
- package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -337
- package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
- package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
- package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
- package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
- package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
- package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
- package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -125
- package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
- package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
- package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
- package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
- package/dist/esm/tests/unit/timeout-handlers.test.js +0 -898
- package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
- package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
- package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
- package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
- package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
- package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
- package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
- package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
- package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
- package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
- package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
- package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
- package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { StagehandAPIClient } from "../../lib/v3/api";
|
|
3
|
-
/**
|
|
4
|
-
* Tests that modelApiKey is optional when calling StagehandAPIClient.init().
|
|
5
|
-
*
|
|
6
|
-
* Previously, init() would throw "modelApiKey is required" if the key was not
|
|
7
|
-
* provided. After the fix, sessions can be started without a model API key
|
|
8
|
-
* (the server may provide its own key or the user may not need one).
|
|
9
|
-
* When provided, the key should still be sent via the x-model-api-key header.
|
|
10
|
-
*/
|
|
11
|
-
describe("StagehandAPIClient - optional modelApiKey", () => {
|
|
12
|
-
const logger = vi.fn();
|
|
13
|
-
// We mock fetch to avoid real network calls; we just need to verify
|
|
14
|
-
// that init() doesn't throw when modelApiKey is omitted and that
|
|
15
|
-
// the header is conditionally included.
|
|
16
|
-
let originalFetch;
|
|
17
|
-
function createSessionStartResponse(sessionId) {
|
|
18
|
-
return new Response(JSON.stringify({
|
|
19
|
-
success: true,
|
|
20
|
-
data: { sessionId, available: true },
|
|
21
|
-
}), {
|
|
22
|
-
status: 200,
|
|
23
|
-
headers: { "Content-Type": "application/json" },
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
beforeEach(() => {
|
|
27
|
-
originalFetch = globalThis.fetch;
|
|
28
|
-
logger.mockClear();
|
|
29
|
-
});
|
|
30
|
-
afterEach(() => {
|
|
31
|
-
globalThis.fetch = originalFetch;
|
|
32
|
-
delete process.env.STAGEHAND_BASE_URL;
|
|
33
|
-
delete process.env.STAGEHAND_API_URL;
|
|
34
|
-
vi.restoreAllMocks();
|
|
35
|
-
});
|
|
36
|
-
it("should NOT throw when modelApiKey is omitted", async () => {
|
|
37
|
-
globalThis.fetch = vi
|
|
38
|
-
.fn()
|
|
39
|
-
.mockResolvedValue(createSessionStartResponse("sess-123"));
|
|
40
|
-
const client = new StagehandAPIClient({
|
|
41
|
-
apiKey: "test-api-key",
|
|
42
|
-
logger,
|
|
43
|
-
});
|
|
44
|
-
// Should not throw "modelApiKey is required"
|
|
45
|
-
await expect(client.init({
|
|
46
|
-
modelName: "openai/gpt-4.1-mini",
|
|
47
|
-
})).resolves.toBeDefined();
|
|
48
|
-
});
|
|
49
|
-
it("should NOT throw when modelApiKey is undefined", async () => {
|
|
50
|
-
globalThis.fetch = vi
|
|
51
|
-
.fn()
|
|
52
|
-
.mockResolvedValue(createSessionStartResponse("sess-456"));
|
|
53
|
-
const client = new StagehandAPIClient({
|
|
54
|
-
apiKey: "test-api-key",
|
|
55
|
-
logger,
|
|
56
|
-
});
|
|
57
|
-
await expect(client.init({
|
|
58
|
-
modelName: "openai/gpt-4.1-mini",
|
|
59
|
-
modelApiKey: undefined,
|
|
60
|
-
})).resolves.toBeDefined();
|
|
61
|
-
});
|
|
62
|
-
it("should send x-model-api-key header when modelApiKey IS provided", async () => {
|
|
63
|
-
const fetchSpy = vi
|
|
64
|
-
.fn()
|
|
65
|
-
.mockResolvedValue(createSessionStartResponse("sess-789"));
|
|
66
|
-
globalThis.fetch = fetchSpy;
|
|
67
|
-
const client = new StagehandAPIClient({
|
|
68
|
-
apiKey: "test-api-key",
|
|
69
|
-
logger,
|
|
70
|
-
});
|
|
71
|
-
await client.init({
|
|
72
|
-
modelName: "openai/gpt-4.1-mini",
|
|
73
|
-
modelApiKey: "my-model-key",
|
|
74
|
-
});
|
|
75
|
-
// Verify the fetch was called with x-model-api-key header
|
|
76
|
-
const [, requestInit] = fetchSpy.mock.calls[0];
|
|
77
|
-
expect(requestInit.headers["x-model-api-key"]).toBe("my-model-key");
|
|
78
|
-
});
|
|
79
|
-
it("should NOT send x-model-api-key header when modelApiKey is omitted", async () => {
|
|
80
|
-
const fetchSpy = vi
|
|
81
|
-
.fn()
|
|
82
|
-
.mockResolvedValue(createSessionStartResponse("sess-012"));
|
|
83
|
-
globalThis.fetch = fetchSpy;
|
|
84
|
-
const client = new StagehandAPIClient({
|
|
85
|
-
apiKey: "test-api-key",
|
|
86
|
-
logger,
|
|
87
|
-
});
|
|
88
|
-
await client.init({
|
|
89
|
-
modelName: "openai/gpt-4.1-mini",
|
|
90
|
-
});
|
|
91
|
-
// Verify x-model-api-key header is NOT present
|
|
92
|
-
const [, requestInit] = fetchSpy.mock.calls[0];
|
|
93
|
-
expect(requestInit.headers["x-model-api-key"]).toBeUndefined();
|
|
94
|
-
});
|
|
95
|
-
it("should use STAGEHAND_API_URL for the API base URL", async () => {
|
|
96
|
-
process.env.STAGEHAND_API_URL = "http://localhost:5000";
|
|
97
|
-
const fetchSpy = vi
|
|
98
|
-
.fn()
|
|
99
|
-
.mockResolvedValue(createSessionStartResponse("sess-api-url"));
|
|
100
|
-
globalThis.fetch = fetchSpy;
|
|
101
|
-
const client = new StagehandAPIClient({
|
|
102
|
-
apiKey: "test-api-key",
|
|
103
|
-
logger,
|
|
104
|
-
});
|
|
105
|
-
await client.init({
|
|
106
|
-
modelName: "openai/gpt-4.1-mini",
|
|
107
|
-
});
|
|
108
|
-
const [url] = fetchSpy.mock.calls[0];
|
|
109
|
-
expect(url.toString()).toBe("http://localhost:5000/v1/sessions/start");
|
|
110
|
-
});
|
|
111
|
-
it("should use STAGEHAND_BASE_URL as a legacy fallback", async () => {
|
|
112
|
-
process.env.STAGEHAND_BASE_URL = "http://localhost:5001";
|
|
113
|
-
const fetchSpy = vi
|
|
114
|
-
.fn()
|
|
115
|
-
.mockResolvedValue(createSessionStartResponse("sess-base-url"));
|
|
116
|
-
globalThis.fetch = fetchSpy;
|
|
117
|
-
const client = new StagehandAPIClient({
|
|
118
|
-
apiKey: "test-api-key",
|
|
119
|
-
logger,
|
|
120
|
-
});
|
|
121
|
-
await client.init({
|
|
122
|
-
modelName: "openai/gpt-4.1-mini",
|
|
123
|
-
});
|
|
124
|
-
const [url] = fetchSpy.mock.calls[0];
|
|
125
|
-
expect(url.toString()).toBe("http://localhost:5001/v1/sessions/start");
|
|
126
|
-
expect(logger).toHaveBeenCalledWith(expect.objectContaining({
|
|
127
|
-
category: "config",
|
|
128
|
-
message: "STAGEHAND_BASE_URL is deprecated. Use STAGEHAND_API_URL instead.",
|
|
129
|
-
level: 0,
|
|
130
|
-
}));
|
|
131
|
-
});
|
|
132
|
-
it("should prefer STAGEHAND_API_URL over STAGEHAND_BASE_URL", async () => {
|
|
133
|
-
process.env.STAGEHAND_BASE_URL = "http://localhost:5002";
|
|
134
|
-
process.env.STAGEHAND_API_URL = "http://localhost:5003";
|
|
135
|
-
const fetchSpy = vi
|
|
136
|
-
.fn()
|
|
137
|
-
.mockResolvedValue(createSessionStartResponse("sess-base-precedence"));
|
|
138
|
-
globalThis.fetch = fetchSpy;
|
|
139
|
-
const client = new StagehandAPIClient({
|
|
140
|
-
apiKey: "test-api-key",
|
|
141
|
-
logger,
|
|
142
|
-
});
|
|
143
|
-
await client.init({
|
|
144
|
-
modelName: "openai/gpt-4.1-mini",
|
|
145
|
-
});
|
|
146
|
-
const [url] = fetchSpy.mock.calls[0];
|
|
147
|
-
expect(url.toString()).toBe("http://localhost:5003/v1/sessions/start");
|
|
148
|
-
expect(logger).not.toHaveBeenCalledWith(expect.objectContaining({
|
|
149
|
-
message: "STAGEHAND_BASE_URL is deprecated. Use STAGEHAND_API_URL instead.",
|
|
150
|
-
}));
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
//# sourceMappingURL=api-optional-model-api-key.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-optional-model-api-key.test.js","sourceRoot":"","sources":["../../../../tests/unit/api-optional-model-api-key.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it, vi, beforeEach, afterEach } from \"vitest\";\nimport { StagehandAPIClient } from \"../../lib/v3/api\";\n\n/**\n * Tests that modelApiKey is optional when calling StagehandAPIClient.init().\n *\n * Previously, init() would throw \"modelApiKey is required\" if the key was not\n * provided. After the fix, sessions can be started without a model API key\n * (the server may provide its own key or the user may not need one).\n * When provided, the key should still be sent via the x-model-api-key header.\n */\ndescribe(\"StagehandAPIClient - optional modelApiKey\", () => {\n const logger = vi.fn();\n\n // We mock fetch to avoid real network calls; we just need to verify\n // that init() doesn't throw when modelApiKey is omitted and that\n // the header is conditionally included.\n let originalFetch: typeof globalThis.fetch;\n\n function createSessionStartResponse(sessionId: string) {\n return new Response(\n JSON.stringify({\n success: true,\n data: { sessionId, available: true },\n }),\n {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n },\n );\n }\n\n beforeEach(() => {\n originalFetch = globalThis.fetch;\n logger.mockClear();\n });\n\n afterEach(() => {\n globalThis.fetch = originalFetch;\n delete process.env.STAGEHAND_BASE_URL;\n delete process.env.STAGEHAND_API_URL;\n vi.restoreAllMocks();\n });\n\n it(\"should NOT throw when modelApiKey is omitted\", async () => {\n globalThis.fetch = vi\n .fn()\n .mockResolvedValue(createSessionStartResponse(\"sess-123\"));\n\n const client = new StagehandAPIClient({\n apiKey: \"test-api-key\",\n logger,\n });\n\n // Should not throw \"modelApiKey is required\"\n await expect(\n client.init({\n modelName: \"openai/gpt-4.1-mini\",\n }),\n ).resolves.toBeDefined();\n });\n\n it(\"should NOT throw when modelApiKey is undefined\", async () => {\n globalThis.fetch = vi\n .fn()\n .mockResolvedValue(createSessionStartResponse(\"sess-456\"));\n\n const client = new StagehandAPIClient({\n apiKey: \"test-api-key\",\n logger,\n });\n\n await expect(\n client.init({\n modelName: \"openai/gpt-4.1-mini\",\n modelApiKey: undefined,\n }),\n ).resolves.toBeDefined();\n });\n\n it(\"should send x-model-api-key header when modelApiKey IS provided\", async () => {\n const fetchSpy = vi\n .fn()\n .mockResolvedValue(createSessionStartResponse(\"sess-789\"));\n globalThis.fetch = fetchSpy;\n\n const client = new StagehandAPIClient({\n apiKey: \"test-api-key\",\n logger,\n });\n\n await client.init({\n modelName: \"openai/gpt-4.1-mini\",\n modelApiKey: \"my-model-key\",\n });\n\n // Verify the fetch was called with x-model-api-key header\n const [, requestInit] = fetchSpy.mock.calls[0];\n expect(requestInit.headers[\"x-model-api-key\"]).toBe(\"my-model-key\");\n });\n\n it(\"should NOT send x-model-api-key header when modelApiKey is omitted\", async () => {\n const fetchSpy = vi\n .fn()\n .mockResolvedValue(createSessionStartResponse(\"sess-012\"));\n globalThis.fetch = fetchSpy;\n\n const client = new StagehandAPIClient({\n apiKey: \"test-api-key\",\n logger,\n });\n\n await client.init({\n modelName: \"openai/gpt-4.1-mini\",\n });\n\n // Verify x-model-api-key header is NOT present\n const [, requestInit] = fetchSpy.mock.calls[0];\n expect(requestInit.headers[\"x-model-api-key\"]).toBeUndefined();\n });\n\n it(\"should use STAGEHAND_API_URL for the API base URL\", async () => {\n process.env.STAGEHAND_API_URL = \"http://localhost:5000\";\n const fetchSpy = vi\n .fn()\n .mockResolvedValue(createSessionStartResponse(\"sess-api-url\"));\n globalThis.fetch = fetchSpy;\n\n const client = new StagehandAPIClient({\n apiKey: \"test-api-key\",\n logger,\n });\n\n await client.init({\n modelName: \"openai/gpt-4.1-mini\",\n });\n\n const [url] = fetchSpy.mock.calls[0];\n expect(url.toString()).toBe(\"http://localhost:5000/v1/sessions/start\");\n });\n\n it(\"should use STAGEHAND_BASE_URL as a legacy fallback\", async () => {\n process.env.STAGEHAND_BASE_URL = \"http://localhost:5001\";\n const fetchSpy = vi\n .fn()\n .mockResolvedValue(createSessionStartResponse(\"sess-base-url\"));\n globalThis.fetch = fetchSpy;\n\n const client = new StagehandAPIClient({\n apiKey: \"test-api-key\",\n logger,\n });\n\n await client.init({\n modelName: \"openai/gpt-4.1-mini\",\n });\n\n const [url] = fetchSpy.mock.calls[0];\n expect(url.toString()).toBe(\"http://localhost:5001/v1/sessions/start\");\n expect(logger).toHaveBeenCalledWith(\n expect.objectContaining({\n category: \"config\",\n message:\n \"STAGEHAND_BASE_URL is deprecated. Use STAGEHAND_API_URL instead.\",\n level: 0,\n }),\n );\n });\n\n it(\"should prefer STAGEHAND_API_URL over STAGEHAND_BASE_URL\", async () => {\n process.env.STAGEHAND_BASE_URL = \"http://localhost:5002\";\n process.env.STAGEHAND_API_URL = \"http://localhost:5003\";\n const fetchSpy = vi\n .fn()\n .mockResolvedValue(createSessionStartResponse(\"sess-base-precedence\"));\n globalThis.fetch = fetchSpy;\n\n const client = new StagehandAPIClient({\n apiKey: \"test-api-key\",\n logger,\n });\n\n await client.init({\n modelName: \"openai/gpt-4.1-mini\",\n });\n\n const [url] = fetchSpy.mock.calls[0];\n expect(url.toString()).toBe(\"http://localhost:5003/v1/sessions/start\");\n expect(logger).not.toHaveBeenCalledWith(\n expect.objectContaining({\n message:\n \"STAGEHAND_BASE_URL is deprecated. Use STAGEHAND_API_URL instead.\",\n }),\n );\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { Api } from "../../lib/v3/types/public/index.js";
|
|
3
|
-
describe("API variable schemas", () => {
|
|
4
|
-
it("accepts rich variables for act requests", () => {
|
|
5
|
-
const result = Api.ActRequestSchema.safeParse({
|
|
6
|
-
input: "type %username% into the email field",
|
|
7
|
-
options: {
|
|
8
|
-
variables: {
|
|
9
|
-
username: {
|
|
10
|
-
value: "john@example.com",
|
|
11
|
-
description: "The login email",
|
|
12
|
-
},
|
|
13
|
-
rememberMe: true,
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
expect(result.success).toBe(true);
|
|
18
|
-
});
|
|
19
|
-
it("accepts rich variables for observe requests", () => {
|
|
20
|
-
const result = Api.ObserveRequestSchema.safeParse({
|
|
21
|
-
instruction: "find the field where %username% should be entered",
|
|
22
|
-
options: {
|
|
23
|
-
variables: {
|
|
24
|
-
username: {
|
|
25
|
-
value: "john@example.com",
|
|
26
|
-
description: "The login email",
|
|
27
|
-
},
|
|
28
|
-
rememberMe: true,
|
|
29
|
-
},
|
|
30
|
-
ignoreSelectors: [".cookie-banner", "#sidebar-ads"],
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
expect(result.success).toBe(true);
|
|
34
|
-
if (!result.success)
|
|
35
|
-
throw result.error;
|
|
36
|
-
expect(result.data.options?.ignoreSelectors).toEqual([
|
|
37
|
-
".cookie-banner",
|
|
38
|
-
"#sidebar-ads",
|
|
39
|
-
]);
|
|
40
|
-
});
|
|
41
|
-
it("preserves variables for agent execute requests", () => {
|
|
42
|
-
const result = Api.AgentExecuteRequestSchema.safeParse({
|
|
43
|
-
agentConfig: { mode: "dom" },
|
|
44
|
-
executeOptions: {
|
|
45
|
-
instruction: "fill the form with %username% and %password%",
|
|
46
|
-
variables: {
|
|
47
|
-
username: "john@example.com",
|
|
48
|
-
password: {
|
|
49
|
-
value: "secret-password",
|
|
50
|
-
description: "The login password",
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
expect(result.success).toBe(true);
|
|
56
|
-
if (!result.success)
|
|
57
|
-
throw result.error;
|
|
58
|
-
expect(result.data.executeOptions.variables).toEqual({
|
|
59
|
-
username: "john@example.com",
|
|
60
|
-
password: {
|
|
61
|
-
value: "secret-password",
|
|
62
|
-
description: "The login password",
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
//# sourceMappingURL=api-variables-schema.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-variables-schema.test.js","sourceRoot":"","sources":["../../../../tests/unit/api-variables-schema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,oCAAoC,CAAC;AAEzD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC5C,KAAK,EAAE,sCAAsC;YAC7C,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,QAAQ,EAAE;wBACR,KAAK,EAAE,kBAAkB;wBACzB,WAAW,EAAE,iBAAiB;qBAC/B;oBACD,UAAU,EAAE,IAAI;iBACjB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,SAAS,CAAC;YAChD,WAAW,EAAE,mDAAmD;YAChE,OAAO,EAAE;gBACP,SAAS,EAAE;oBACT,QAAQ,EAAE;wBACR,KAAK,EAAE,kBAAkB;wBACzB,WAAW,EAAE,iBAAiB;qBAC/B;oBACD,UAAU,EAAE,IAAI;iBACjB;gBACD,eAAe,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC;aACpD;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC;YACnD,gBAAgB;YAChB,cAAc;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACrD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YAC5B,cAAc,EAAE;gBACd,WAAW,EAAE,8CAA8C;gBAC3D,SAAS,EAAE;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE;wBACR,KAAK,EAAE,iBAAiB;wBACxB,WAAW,EAAE,oBAAoB;qBAClC;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACnD,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE;gBACR,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EAAE,oBAAoB;aAClC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { Api } from \"../../lib/v3/types/public/index.js\";\n\ndescribe(\"API variable schemas\", () => {\n it(\"accepts rich variables for act requests\", () => {\n const result = Api.ActRequestSchema.safeParse({\n input: \"type %username% into the email field\",\n options: {\n variables: {\n username: {\n value: \"john@example.com\",\n description: \"The login email\",\n },\n rememberMe: true,\n },\n },\n });\n\n expect(result.success).toBe(true);\n });\n\n it(\"accepts rich variables for observe requests\", () => {\n const result = Api.ObserveRequestSchema.safeParse({\n instruction: \"find the field where %username% should be entered\",\n options: {\n variables: {\n username: {\n value: \"john@example.com\",\n description: \"The login email\",\n },\n rememberMe: true,\n },\n ignoreSelectors: [\".cookie-banner\", \"#sidebar-ads\"],\n },\n });\n\n expect(result.success).toBe(true);\n if (!result.success) throw result.error;\n expect(result.data.options?.ignoreSelectors).toEqual([\n \".cookie-banner\",\n \"#sidebar-ads\",\n ]);\n });\n\n it(\"preserves variables for agent execute requests\", () => {\n const result = Api.AgentExecuteRequestSchema.safeParse({\n agentConfig: { mode: \"dom\" },\n executeOptions: {\n instruction: \"fill the form with %username% and %password%\",\n variables: {\n username: \"john@example.com\",\n password: {\n value: \"secret-password\",\n description: \"The login password\",\n },\n },\n },\n });\n\n expect(result.success).toBe(true);\n if (!result.success) throw result.error;\n expect(result.data.executeOptions.variables).toEqual({\n username: \"john@example.com\",\n password: {\n value: \"secret-password\",\n description: \"The login password\",\n },\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { V3 } from "../../lib/v3/v3.js";
|
|
3
|
-
const MOCK_SESSION_ID = "session-123";
|
|
4
|
-
const MOCK_SESSION_URL = `https://www.browserbase.com/sessions/${MOCK_SESSION_ID}`;
|
|
5
|
-
const MOCK_DEBUG_URL = `https://debug.browserbase.com/${MOCK_SESSION_ID}`;
|
|
6
|
-
vi.mock("../../lib/v3/understudy/context", () => {
|
|
7
|
-
class MockConnection {
|
|
8
|
-
onTransportClosed = vi.fn();
|
|
9
|
-
offTransportClosed = vi.fn();
|
|
10
|
-
send = vi.fn(async () => { });
|
|
11
|
-
}
|
|
12
|
-
class MockV3Context {
|
|
13
|
-
static async create() {
|
|
14
|
-
return new MockV3Context();
|
|
15
|
-
}
|
|
16
|
-
conn = new MockConnection();
|
|
17
|
-
pages() {
|
|
18
|
-
return [];
|
|
19
|
-
}
|
|
20
|
-
async close() {
|
|
21
|
-
// noop
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return { V3Context: MockV3Context };
|
|
25
|
-
});
|
|
26
|
-
vi.mock("../../lib/v3/launch/browserbase", () => ({
|
|
27
|
-
createBrowserbaseSession: vi.fn(async () => ({
|
|
28
|
-
ws: "wss://mock-browserbase",
|
|
29
|
-
sessionId: MOCK_SESSION_ID,
|
|
30
|
-
bb: {
|
|
31
|
-
sessions: {
|
|
32
|
-
debug: vi.fn(async () => ({ debuggerUrl: MOCK_DEBUG_URL })),
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
})),
|
|
36
|
-
}));
|
|
37
|
-
vi.mock("../../lib/v3/launch/local", () => ({
|
|
38
|
-
launchLocalChrome: vi.fn(async () => ({
|
|
39
|
-
ws: "ws://local-cdp",
|
|
40
|
-
chrome: { kill: vi.fn(async () => { }) },
|
|
41
|
-
})),
|
|
42
|
-
}));
|
|
43
|
-
describe("browserbase accessors", () => {
|
|
44
|
-
beforeEach(() => {
|
|
45
|
-
process.env.BROWSERBASE_API_KEY = "fake-key";
|
|
46
|
-
process.env.BROWSERBASE_PROJECT_ID = "fake-project";
|
|
47
|
-
});
|
|
48
|
-
afterEach(() => {
|
|
49
|
-
delete process.env.BROWSERBASE_API_KEY;
|
|
50
|
-
delete process.env.BROWSERBASE_PROJECT_ID;
|
|
51
|
-
vi.clearAllMocks();
|
|
52
|
-
});
|
|
53
|
-
it("exposes Browserbase session and debug URLs after init", async () => {
|
|
54
|
-
const v3 = new V3({
|
|
55
|
-
env: "BROWSERBASE",
|
|
56
|
-
disableAPI: true,
|
|
57
|
-
verbose: 0,
|
|
58
|
-
});
|
|
59
|
-
try {
|
|
60
|
-
await v3.init();
|
|
61
|
-
expect(v3.browserbaseSessionURL).toBe(MOCK_SESSION_URL);
|
|
62
|
-
expect(v3.browserbaseDebugURL).toBe(MOCK_DEBUG_URL);
|
|
63
|
-
expect(v3.isCaptchaAutoSolveEnabled).toBe(true);
|
|
64
|
-
}
|
|
65
|
-
finally {
|
|
66
|
-
await v3.close().catch(() => { });
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
it("clears stored URLs after close", async () => {
|
|
70
|
-
const v3 = new V3({
|
|
71
|
-
env: "BROWSERBASE",
|
|
72
|
-
disableAPI: true,
|
|
73
|
-
verbose: 0,
|
|
74
|
-
});
|
|
75
|
-
await v3.init();
|
|
76
|
-
await v3.close();
|
|
77
|
-
expect(v3.browserbaseSessionURL).toBeUndefined();
|
|
78
|
-
expect(v3.browserbaseDebugURL).toBeUndefined();
|
|
79
|
-
});
|
|
80
|
-
it("disables captcha solving when solveCaptchas is explicitly false", async () => {
|
|
81
|
-
const v3 = new V3({
|
|
82
|
-
env: "BROWSERBASE",
|
|
83
|
-
disableAPI: true,
|
|
84
|
-
verbose: 0,
|
|
85
|
-
browserbaseSessionCreateParams: {
|
|
86
|
-
browserSettings: {
|
|
87
|
-
solveCaptchas: false,
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
try {
|
|
92
|
-
await v3.init();
|
|
93
|
-
expect(v3.isCaptchaAutoSolveEnabled).toBe(false);
|
|
94
|
-
}
|
|
95
|
-
finally {
|
|
96
|
-
await v3.close().catch(() => { });
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
it("treats verified Browserbase sessions as managed fingerprinting mode", async () => {
|
|
100
|
-
const v3 = new V3({
|
|
101
|
-
env: "BROWSERBASE",
|
|
102
|
-
disableAPI: true,
|
|
103
|
-
verbose: 0,
|
|
104
|
-
browserbaseSessionCreateParams: {
|
|
105
|
-
browserSettings: {
|
|
106
|
-
verified: true,
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
try {
|
|
111
|
-
await v3.init();
|
|
112
|
-
expect(v3.isVerified).toBe(true);
|
|
113
|
-
expect(v3.isAdvancedStealth).toBe(true);
|
|
114
|
-
}
|
|
115
|
-
finally {
|
|
116
|
-
await v3.close().catch(() => { });
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
describe("local accessors", () => {
|
|
121
|
-
it("stay empty for LOCAL environments", async () => {
|
|
122
|
-
const v3 = new V3({
|
|
123
|
-
env: "LOCAL",
|
|
124
|
-
disableAPI: true,
|
|
125
|
-
verbose: 0,
|
|
126
|
-
localBrowserLaunchOptions: {
|
|
127
|
-
cdpUrl: "ws://local-existing-session",
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
try {
|
|
131
|
-
await v3.init();
|
|
132
|
-
expect(v3.browserbaseSessionURL).toBeUndefined();
|
|
133
|
-
expect(v3.browserbaseDebugURL).toBeUndefined();
|
|
134
|
-
}
|
|
135
|
-
finally {
|
|
136
|
-
await v3.close().catch(() => { });
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
//# sourceMappingURL=browserbase-session-accessors.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browserbase-session-accessors.test.js","sourceRoot":"","sources":["../../../../tests/unit/browserbase-session-accessors.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it, vi, beforeEach, afterEach } from \"vitest\";\nimport { V3 } from \"../../lib/v3/v3.js\";\n\nconst MOCK_SESSION_ID = \"session-123\";\nconst MOCK_SESSION_URL = `https://www.browserbase.com/sessions/${MOCK_SESSION_ID}`;\nconst MOCK_DEBUG_URL = `https://debug.browserbase.com/${MOCK_SESSION_ID}`;\n\nvi.mock(\"../../lib/v3/understudy/context\", () => {\n class MockConnection {\n onTransportClosed = vi.fn();\n offTransportClosed = vi.fn();\n send = vi.fn(async () => {});\n }\n\n class MockV3Context {\n static async create(): Promise<MockV3Context> {\n return new MockV3Context();\n }\n\n conn = new MockConnection();\n\n pages(): never[] {\n return [];\n }\n\n async close(): Promise<void> {\n // noop\n }\n }\n\n return { V3Context: MockV3Context };\n});\n\nvi.mock(\"../../lib/v3/launch/browserbase\", () => ({\n createBrowserbaseSession: vi.fn(async () => ({\n ws: \"wss://mock-browserbase\",\n sessionId: MOCK_SESSION_ID,\n bb: {\n sessions: {\n debug: vi.fn(async () => ({ debuggerUrl: MOCK_DEBUG_URL })),\n },\n },\n })),\n}));\n\nvi.mock(\"../../lib/v3/launch/local\", () => ({\n launchLocalChrome: vi.fn(async () => ({\n ws: \"ws://local-cdp\",\n chrome: { kill: vi.fn(async () => {}) },\n })),\n}));\n\ndescribe(\"browserbase accessors\", () => {\n beforeEach(() => {\n process.env.BROWSERBASE_API_KEY = \"fake-key\";\n process.env.BROWSERBASE_PROJECT_ID = \"fake-project\";\n });\n\n afterEach(() => {\n delete process.env.BROWSERBASE_API_KEY;\n delete process.env.BROWSERBASE_PROJECT_ID;\n vi.clearAllMocks();\n });\n\n it(\"exposes Browserbase session and debug URLs after init\", async () => {\n const v3 = new V3({\n env: \"BROWSERBASE\",\n disableAPI: true,\n verbose: 0,\n });\n\n try {\n await v3.init();\n\n expect(v3.browserbaseSessionURL).toBe(MOCK_SESSION_URL);\n expect(v3.browserbaseDebugURL).toBe(MOCK_DEBUG_URL);\n expect(v3.isCaptchaAutoSolveEnabled).toBe(true);\n } finally {\n await v3.close().catch(() => {});\n }\n });\n\n it(\"clears stored URLs after close\", async () => {\n const v3 = new V3({\n env: \"BROWSERBASE\",\n disableAPI: true,\n verbose: 0,\n });\n\n await v3.init();\n await v3.close();\n\n expect(v3.browserbaseSessionURL).toBeUndefined();\n expect(v3.browserbaseDebugURL).toBeUndefined();\n });\n\n it(\"disables captcha solving when solveCaptchas is explicitly false\", async () => {\n const v3 = new V3({\n env: \"BROWSERBASE\",\n disableAPI: true,\n verbose: 0,\n browserbaseSessionCreateParams: {\n browserSettings: {\n solveCaptchas: false,\n },\n },\n });\n\n try {\n await v3.init();\n expect(v3.isCaptchaAutoSolveEnabled).toBe(false);\n } finally {\n await v3.close().catch(() => {});\n }\n });\n\n it(\"treats verified Browserbase sessions as managed fingerprinting mode\", async () => {\n const v3 = new V3({\n env: \"BROWSERBASE\",\n disableAPI: true,\n verbose: 0,\n browserbaseSessionCreateParams: {\n browserSettings: {\n verified: true,\n },\n },\n });\n\n try {\n await v3.init();\n expect(v3.isVerified).toBe(true);\n expect(v3.isAdvancedStealth).toBe(true);\n } finally {\n await v3.close().catch(() => {});\n }\n });\n});\n\ndescribe(\"local accessors\", () => {\n it(\"stay empty for LOCAL environments\", async () => {\n const v3 = new V3({\n env: \"LOCAL\",\n disableAPI: true,\n verbose: 0,\n localBrowserLaunchOptions: {\n cdpUrl: \"ws://local-existing-session\",\n },\n });\n\n try {\n await v3.init();\n expect(v3.browserbaseSessionURL).toBeUndefined();\n expect(v3.browserbaseDebugURL).toBeUndefined();\n } finally {\n await v3.close().catch(() => {});\n }\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { ActCache } from "../../lib/v3/cache/ActCache.js";
|
|
3
|
-
import { AgentCache } from "../../lib/v3/cache/AgentCache.js";
|
|
4
|
-
function createFakeStorage(entry) {
|
|
5
|
-
return {
|
|
6
|
-
enabled: true,
|
|
7
|
-
readJson: vi.fn().mockResolvedValue({ value: entry }),
|
|
8
|
-
writeJson: vi.fn().mockResolvedValue({}),
|
|
9
|
-
directory: "/tmp/cache",
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
describe("Cache LLM client selection", () => {
|
|
13
|
-
it("ActCache uses provided override client during replay", async () => {
|
|
14
|
-
const action = {
|
|
15
|
-
selector: "xpath=/html/body/button",
|
|
16
|
-
description: "click button",
|
|
17
|
-
method: "click",
|
|
18
|
-
arguments: [],
|
|
19
|
-
};
|
|
20
|
-
const entry = {
|
|
21
|
-
version: 1,
|
|
22
|
-
instruction: "click button",
|
|
23
|
-
url: "https://example.com",
|
|
24
|
-
variableKeys: [],
|
|
25
|
-
actions: [action],
|
|
26
|
-
actionDescription: "click button",
|
|
27
|
-
message: "done",
|
|
28
|
-
};
|
|
29
|
-
const storage = createFakeStorage(entry);
|
|
30
|
-
const handler = {
|
|
31
|
-
takeDeterministicAction: vi.fn().mockResolvedValue({
|
|
32
|
-
success: true,
|
|
33
|
-
message: "ok",
|
|
34
|
-
actionDescription: "click button",
|
|
35
|
-
actions: [action],
|
|
36
|
-
}),
|
|
37
|
-
};
|
|
38
|
-
const defaultClient = { id: "default" };
|
|
39
|
-
const overrideClient = { id: "override" };
|
|
40
|
-
const cache = new ActCache({
|
|
41
|
-
storage,
|
|
42
|
-
logger: vi.fn(),
|
|
43
|
-
getActHandler: () => handler,
|
|
44
|
-
getDefaultLlmClient: () => defaultClient,
|
|
45
|
-
domSettleTimeoutMs: undefined,
|
|
46
|
-
});
|
|
47
|
-
const context = {
|
|
48
|
-
instruction: "click button",
|
|
49
|
-
cacheKey: "abc",
|
|
50
|
-
pageUrl: "https://example.com",
|
|
51
|
-
variableKeys: [],
|
|
52
|
-
variables: undefined,
|
|
53
|
-
};
|
|
54
|
-
const result = await cache.tryReplay(context, {}, undefined, overrideClient);
|
|
55
|
-
expect(result?.success).toBe(true);
|
|
56
|
-
expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);
|
|
57
|
-
const call = vi.mocked(handler.takeDeterministicAction).mock.calls[0];
|
|
58
|
-
expect(call?.[3]).toBe(overrideClient);
|
|
59
|
-
});
|
|
60
|
-
it("AgentCache uses provided override client during replay", async () => {
|
|
61
|
-
const action = {
|
|
62
|
-
selector: "xpath=/html/body/input",
|
|
63
|
-
description: "type email",
|
|
64
|
-
method: "type",
|
|
65
|
-
arguments: ["test@example.com"],
|
|
66
|
-
};
|
|
67
|
-
const agentStep = {
|
|
68
|
-
type: "act",
|
|
69
|
-
instruction: "type email",
|
|
70
|
-
actions: [action],
|
|
71
|
-
};
|
|
72
|
-
const entry = {
|
|
73
|
-
version: 1,
|
|
74
|
-
instruction: "fill form",
|
|
75
|
-
startUrl: "https://example.com",
|
|
76
|
-
options: {},
|
|
77
|
-
configSignature: "sig",
|
|
78
|
-
steps: [agentStep],
|
|
79
|
-
result: { success: true, actions: [] },
|
|
80
|
-
timestamp: new Date().toISOString(),
|
|
81
|
-
};
|
|
82
|
-
const storage = {
|
|
83
|
-
enabled: true,
|
|
84
|
-
readJson: vi.fn().mockImplementation(async () => ({ value: entry })),
|
|
85
|
-
writeJson: vi.fn().mockResolvedValue({}),
|
|
86
|
-
directory: "/tmp/cache",
|
|
87
|
-
};
|
|
88
|
-
const handler = {
|
|
89
|
-
takeDeterministicAction: vi.fn().mockResolvedValue({
|
|
90
|
-
success: true,
|
|
91
|
-
message: "ok",
|
|
92
|
-
actionDescription: "type email",
|
|
93
|
-
actions: [action],
|
|
94
|
-
}),
|
|
95
|
-
};
|
|
96
|
-
const fakePage = {};
|
|
97
|
-
const ctx = {
|
|
98
|
-
awaitActivePage: vi.fn().mockResolvedValue(fakePage),
|
|
99
|
-
};
|
|
100
|
-
const defaultClient = { id: "default-agent" };
|
|
101
|
-
const overrideClient = { id: "override-agent" };
|
|
102
|
-
const cache = new AgentCache({
|
|
103
|
-
storage,
|
|
104
|
-
logger: vi.fn(),
|
|
105
|
-
getActHandler: () => handler,
|
|
106
|
-
getContext: () => ctx,
|
|
107
|
-
getDefaultLlmClient: () => defaultClient,
|
|
108
|
-
getBaseModelName: () => "openai/gpt-4.1-mini",
|
|
109
|
-
getSystemPrompt: () => undefined,
|
|
110
|
-
domSettleTimeoutMs: undefined,
|
|
111
|
-
act: vi.fn(),
|
|
112
|
-
});
|
|
113
|
-
const context = {
|
|
114
|
-
instruction: "fill form",
|
|
115
|
-
startUrl: "https://example.com",
|
|
116
|
-
options: {},
|
|
117
|
-
configSignature: "sig",
|
|
118
|
-
cacheKey: "agent-key",
|
|
119
|
-
variableKeys: [],
|
|
120
|
-
};
|
|
121
|
-
const result = await cache.tryReplay(context, overrideClient);
|
|
122
|
-
expect(result?.success).toBe(true);
|
|
123
|
-
expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);
|
|
124
|
-
const call = vi.mocked(handler.takeDeterministicAction).mock.calls[0];
|
|
125
|
-
expect(call?.[3]).toBe(overrideClient);
|
|
126
|
-
});
|
|
127
|
-
it("AgentCache replays non-act steps without requiring an override client", async () => {
|
|
128
|
-
const gotoEntry = {
|
|
129
|
-
version: 1,
|
|
130
|
-
instruction: "navigate home",
|
|
131
|
-
startUrl: "https://example.com/source",
|
|
132
|
-
options: {},
|
|
133
|
-
configSignature: "sig",
|
|
134
|
-
steps: [
|
|
135
|
-
{
|
|
136
|
-
type: "goto",
|
|
137
|
-
url: "https://example.com/target",
|
|
138
|
-
waitUntil: "load",
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
result: { success: true, actions: [] },
|
|
142
|
-
timestamp: new Date().toISOString(),
|
|
143
|
-
};
|
|
144
|
-
const storage = {
|
|
145
|
-
enabled: true,
|
|
146
|
-
readJson: vi.fn().mockResolvedValue({ value: gotoEntry }),
|
|
147
|
-
writeJson: vi.fn().mockResolvedValue({}),
|
|
148
|
-
directory: "/tmp/cache",
|
|
149
|
-
};
|
|
150
|
-
const handler = {
|
|
151
|
-
takeDeterministicAction: vi.fn(),
|
|
152
|
-
};
|
|
153
|
-
const fakePage = { goto: vi.fn() };
|
|
154
|
-
const ctx = {
|
|
155
|
-
awaitActivePage: vi.fn().mockResolvedValue(fakePage),
|
|
156
|
-
};
|
|
157
|
-
const cache = new AgentCache({
|
|
158
|
-
storage,
|
|
159
|
-
logger: vi.fn(),
|
|
160
|
-
getActHandler: () => handler,
|
|
161
|
-
getContext: () => ctx,
|
|
162
|
-
getDefaultLlmClient: () => ({ id: "default" }),
|
|
163
|
-
getBaseModelName: () => "openai/gpt-4.1-mini",
|
|
164
|
-
getSystemPrompt: () => undefined,
|
|
165
|
-
domSettleTimeoutMs: undefined,
|
|
166
|
-
act: vi.fn(),
|
|
167
|
-
});
|
|
168
|
-
const context = {
|
|
169
|
-
instruction: "navigate home",
|
|
170
|
-
startUrl: "https://example.com/source",
|
|
171
|
-
options: {},
|
|
172
|
-
configSignature: "sig",
|
|
173
|
-
cacheKey: "agent-goto",
|
|
174
|
-
variableKeys: [],
|
|
175
|
-
};
|
|
176
|
-
const result = await cache.tryReplay(context);
|
|
177
|
-
expect(result?.success).toBe(true);
|
|
178
|
-
expect(handler.takeDeterministicAction).not.toHaveBeenCalled();
|
|
179
|
-
expect(fakePage.goto).toHaveBeenCalledWith("https://example.com/target", {
|
|
180
|
-
waitUntil: "load",
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
//# sourceMappingURL=cache-llm-resolution.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache-llm-resolution.test.js","sourceRoot":"","sources":["../../../../tests/unit/cache-llm-resolution.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it, vi } from \"vitest\";\nimport { ActCache } from \"../../lib/v3/cache/ActCache.js\";\nimport { AgentCache } from \"../../lib/v3/cache/AgentCache.js\";\nimport type { CacheStorage } from \"../../lib/v3/cache/CacheStorage.js\";\nimport type { ActHandler } from \"../../lib/v3/handlers/actHandler.js\";\nimport type { LLMClient } from \"../../lib/v3/llm/LLMClient.js\";\nimport type { Page } from \"../../lib/v3/understudy/page.js\";\nimport type { V3Context } from \"../../lib/v3/understudy/context.js\";\nimport type {\n ActCacheContext,\n CachedActEntry,\n CachedAgentEntry,\n AgentCacheContext,\n AgentReplayActStep,\n} from \"../../lib/v3/types/private/index.js\";\nimport type {\n Action,\n AgentResult,\n AvailableModel,\n} from \"../../lib/v3/types/public/index.js\";\n\nfunction createFakeStorage<T>(entry: T): CacheStorage {\n return {\n enabled: true,\n readJson: vi.fn().mockResolvedValue({ value: entry }),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n}\n\ndescribe(\"Cache LLM client selection\", () => {\n it(\"ActCache uses provided override client during replay\", async () => {\n const action: Action = {\n selector: \"xpath=/html/body/button\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n };\n\n const entry: CachedActEntry = {\n version: 1,\n instruction: \"click button\",\n url: \"https://example.com\",\n variableKeys: [],\n actions: [action],\n actionDescription: \"click button\",\n message: \"done\",\n };\n\n const storage = createFakeStorage(entry);\n const handler = {\n takeDeterministicAction: vi.fn().mockResolvedValue({\n success: true,\n message: \"ok\",\n actionDescription: \"click button\",\n actions: [action],\n }),\n } as unknown as ActHandler;\n const defaultClient = { id: \"default\" } as unknown as LLMClient;\n const overrideClient = { id: \"override\" } as unknown as LLMClient;\n\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => handler,\n getDefaultLlmClient: () => defaultClient,\n domSettleTimeoutMs: undefined,\n });\n\n const context: ActCacheContext = {\n instruction: \"click button\",\n cacheKey: \"abc\",\n pageUrl: \"https://example.com\",\n variableKeys: [],\n variables: undefined,\n };\n\n const result = await cache.tryReplay(\n context,\n {} as Page,\n undefined,\n overrideClient,\n );\n\n expect(result?.success).toBe(true);\n expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);\n const call = vi.mocked(handler.takeDeterministicAction).mock.calls[0];\n expect(call?.[3]).toBe(overrideClient);\n });\n\n it(\"AgentCache uses provided override client during replay\", async () => {\n const action: Action = {\n selector: \"xpath=/html/body/input\",\n description: \"type email\",\n method: \"type\",\n arguments: [\"test@example.com\"],\n };\n\n const agentStep: AgentReplayActStep = {\n type: \"act\",\n instruction: \"type email\",\n actions: [action],\n };\n\n const entry: CachedAgentEntry = {\n version: 1,\n instruction: \"fill form\",\n startUrl: \"https://example.com\",\n options: {},\n configSignature: \"sig\",\n steps: [agentStep],\n result: { success: true, actions: [] } as AgentResult,\n timestamp: new Date().toISOString(),\n };\n\n const storage = {\n enabled: true,\n readJson: vi.fn().mockImplementation(async () => ({ value: entry })),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n\n const handler = {\n takeDeterministicAction: vi.fn().mockResolvedValue({\n success: true,\n message: \"ok\",\n actionDescription: \"type email\",\n actions: [action],\n }),\n } as unknown as ActHandler;\n\n const fakePage = {} as Page;\n const ctx = {\n awaitActivePage: vi.fn().mockResolvedValue(fakePage),\n } as unknown as V3Context;\n\n const defaultClient = { id: \"default-agent\" } as unknown as LLMClient;\n const overrideClient = { id: \"override-agent\" } as unknown as LLMClient;\n\n const cache = new AgentCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => handler,\n getContext: () => ctx,\n getDefaultLlmClient: () => defaultClient,\n getBaseModelName: () => \"openai/gpt-4.1-mini\" as AvailableModel,\n getSystemPrompt: () => undefined,\n domSettleTimeoutMs: undefined,\n act: vi.fn(),\n });\n\n const context: AgentCacheContext = {\n instruction: \"fill form\",\n startUrl: \"https://example.com\",\n options: {},\n configSignature: \"sig\",\n cacheKey: \"agent-key\",\n variableKeys: [],\n };\n\n const result = await cache.tryReplay(context, overrideClient);\n\n expect(result?.success).toBe(true);\n expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);\n const call = vi.mocked(handler.takeDeterministicAction).mock.calls[0];\n expect(call?.[3]).toBe(overrideClient);\n });\n\n it(\"AgentCache replays non-act steps without requiring an override client\", async () => {\n const gotoEntry: CachedAgentEntry = {\n version: 1,\n instruction: \"navigate home\",\n startUrl: \"https://example.com/source\",\n options: {},\n configSignature: \"sig\",\n steps: [\n {\n type: \"goto\",\n url: \"https://example.com/target\",\n waitUntil: \"load\",\n },\n ],\n result: { success: true, actions: [] } as AgentResult,\n timestamp: new Date().toISOString(),\n };\n\n const storage = {\n enabled: true,\n readJson: vi.fn().mockResolvedValue({ value: gotoEntry }),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n\n const handler = {\n takeDeterministicAction: vi.fn(),\n } as unknown as ActHandler;\n\n const fakePage = { goto: vi.fn() } as unknown as Page;\n const ctx = {\n awaitActivePage: vi.fn().mockResolvedValue(fakePage),\n } as unknown as V3Context;\n\n const cache = new AgentCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => handler,\n getContext: () => ctx,\n getDefaultLlmClient: () => ({ id: \"default\" }) as unknown as LLMClient,\n getBaseModelName: () => \"openai/gpt-4.1-mini\" as AvailableModel,\n getSystemPrompt: () => undefined,\n domSettleTimeoutMs: undefined,\n act: vi.fn(),\n });\n\n const context: AgentCacheContext = {\n instruction: \"navigate home\",\n startUrl: \"https://example.com/source\",\n options: {},\n configSignature: \"sig\",\n cacheKey: \"agent-goto\",\n variableKeys: [],\n };\n\n const result = await cache.tryReplay(context);\n\n expect(result?.success).toBe(true);\n expect(handler.takeDeterministicAction).not.toHaveBeenCalled();\n expect(fakePage.goto).toHaveBeenCalledWith(\"https://example.com/target\", {\n waitUntil: \"load\",\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|