@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,260 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test";
|
|
2
|
-
import { V3 } from "../../lib/v3/v3.js";
|
|
3
|
-
import { v3TestConfig } from "./v3.config.js";
|
|
4
|
-
import { createAgentTools } from "../../lib/v3/agent/tools/index.js";
|
|
5
|
-
import { buildAgentSystemPrompt } from "../../lib/v3/agent/prompts/agentSystemPrompt.js";
|
|
6
|
-
test.describe("Stagehand agent hybrid mode", () => {
|
|
7
|
-
let v3;
|
|
8
|
-
test.beforeEach(async () => {
|
|
9
|
-
v3 = new V3({
|
|
10
|
-
...v3TestConfig,
|
|
11
|
-
experimental: true,
|
|
12
|
-
});
|
|
13
|
-
await v3.init();
|
|
14
|
-
});
|
|
15
|
-
test.afterEach(async () => {
|
|
16
|
-
await v3?.close?.().catch(() => { });
|
|
17
|
-
});
|
|
18
|
-
test.describe("Tool filtering by mode", () => {
|
|
19
|
-
test("DOM mode includes DOM-based tools and excludes coordinate-based tools", () => {
|
|
20
|
-
const tools = createAgentTools(v3, { mode: "dom" });
|
|
21
|
-
// DOM mode should have these tools
|
|
22
|
-
expect(tools).toHaveProperty("act");
|
|
23
|
-
expect(tools).toHaveProperty("fillForm");
|
|
24
|
-
expect(tools).toHaveProperty("ariaTree");
|
|
25
|
-
expect(tools).toHaveProperty("screenshot");
|
|
26
|
-
expect(tools).toHaveProperty("extract");
|
|
27
|
-
expect(tools).toHaveProperty("goto");
|
|
28
|
-
expect(tools).toHaveProperty("scroll");
|
|
29
|
-
expect(tools).toHaveProperty("wait");
|
|
30
|
-
expect(tools).toHaveProperty("navback");
|
|
31
|
-
expect(tools).toHaveProperty("keys");
|
|
32
|
-
expect(tools).toHaveProperty("think");
|
|
33
|
-
// DOM mode should NOT have coordinate-based tools
|
|
34
|
-
expect(tools).not.toHaveProperty("click");
|
|
35
|
-
expect(tools).not.toHaveProperty("type");
|
|
36
|
-
expect(tools).not.toHaveProperty("dragAndDrop");
|
|
37
|
-
expect(tools).not.toHaveProperty("clickAndHold");
|
|
38
|
-
expect(tools).not.toHaveProperty("fillFormVision");
|
|
39
|
-
});
|
|
40
|
-
test("Hybrid mode includes coordinate-based tools and excludes DOM fillForm", () => {
|
|
41
|
-
const tools = createAgentTools(v3, { mode: "hybrid" });
|
|
42
|
-
// Hybrid mode should have coordinate-based tools
|
|
43
|
-
expect(tools).toHaveProperty("click");
|
|
44
|
-
expect(tools).toHaveProperty("type");
|
|
45
|
-
expect(tools).toHaveProperty("dragAndDrop");
|
|
46
|
-
expect(tools).toHaveProperty("clickAndHold");
|
|
47
|
-
expect(tools).toHaveProperty("fillFormVision");
|
|
48
|
-
// Hybrid mode should also have common tools
|
|
49
|
-
expect(tools).toHaveProperty("act");
|
|
50
|
-
expect(tools).toHaveProperty("ariaTree");
|
|
51
|
-
expect(tools).toHaveProperty("screenshot");
|
|
52
|
-
expect(tools).toHaveProperty("extract");
|
|
53
|
-
expect(tools).toHaveProperty("goto");
|
|
54
|
-
expect(tools).toHaveProperty("scroll");
|
|
55
|
-
expect(tools).toHaveProperty("wait");
|
|
56
|
-
expect(tools).toHaveProperty("navback");
|
|
57
|
-
expect(tools).toHaveProperty("keys");
|
|
58
|
-
expect(tools).toHaveProperty("think");
|
|
59
|
-
// Hybrid mode should NOT have DOM-based fillForm
|
|
60
|
-
expect(tools).not.toHaveProperty("fillForm");
|
|
61
|
-
});
|
|
62
|
-
test("Default mode is DOM when not specified", () => {
|
|
63
|
-
const tools = createAgentTools(v3, {});
|
|
64
|
-
// Should behave like DOM mode
|
|
65
|
-
expect(tools).toHaveProperty("fillForm");
|
|
66
|
-
expect(tools).not.toHaveProperty("click");
|
|
67
|
-
expect(tools).not.toHaveProperty("type");
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
test.describe("System prompt generation", () => {
|
|
71
|
-
test("DOM mode system prompt emphasizes ariaTree and act tool", () => {
|
|
72
|
-
const prompt = buildAgentSystemPrompt({
|
|
73
|
-
url: "https://example.com",
|
|
74
|
-
executionInstruction: "Test instruction",
|
|
75
|
-
mode: "dom",
|
|
76
|
-
});
|
|
77
|
-
// DOM mode should prioritize ariaTree
|
|
78
|
-
expect(prompt).toContain("ariaTree");
|
|
79
|
-
expect(prompt).toContain("act");
|
|
80
|
-
expect(prompt).toContain("fillForm");
|
|
81
|
-
// Should have DOM-specific strategy
|
|
82
|
-
expect(prompt).toContain("Use act tool for all clicking and typing");
|
|
83
|
-
expect(prompt).toContain("Always check ariaTree first");
|
|
84
|
-
});
|
|
85
|
-
test("Hybrid mode system prompt emphasizes screenshot and coordinate tools", () => {
|
|
86
|
-
const prompt = buildAgentSystemPrompt({
|
|
87
|
-
url: "https://example.com",
|
|
88
|
-
executionInstruction: "Test instruction",
|
|
89
|
-
mode: "hybrid",
|
|
90
|
-
});
|
|
91
|
-
// Hybrid mode should have coordinate-based tools mentioned
|
|
92
|
-
expect(prompt).toContain("click");
|
|
93
|
-
expect(prompt).toContain("type");
|
|
94
|
-
expect(prompt).toContain("fillFormVision");
|
|
95
|
-
expect(prompt).toContain("dragAndDrop");
|
|
96
|
-
// Should have hybrid-specific strategy
|
|
97
|
-
expect(prompt).toContain("Use specific tools (click, type) when elements are visible");
|
|
98
|
-
expect(prompt).toContain("Always use screenshot");
|
|
99
|
-
});
|
|
100
|
-
test("System prompt includes custom instructions when provided", () => {
|
|
101
|
-
const customInstructions = "Always be polite and thorough";
|
|
102
|
-
const prompt = buildAgentSystemPrompt({
|
|
103
|
-
url: "https://example.com",
|
|
104
|
-
executionInstruction: "Test instruction",
|
|
105
|
-
mode: "dom",
|
|
106
|
-
systemInstructions: customInstructions,
|
|
107
|
-
});
|
|
108
|
-
expect(prompt).toContain("customInstructions");
|
|
109
|
-
expect(prompt).toContain(customInstructions);
|
|
110
|
-
});
|
|
111
|
-
test("System prompt includes captcha instructions when captchasAutoSolve is true", () => {
|
|
112
|
-
const prompt = buildAgentSystemPrompt({
|
|
113
|
-
url: "https://example.com",
|
|
114
|
-
executionInstruction: "Test instruction",
|
|
115
|
-
mode: "dom",
|
|
116
|
-
captchasAutoSolve: true,
|
|
117
|
-
});
|
|
118
|
-
expect(prompt).toContain("captcha");
|
|
119
|
-
expect(prompt).toContain("automatically detected and solved");
|
|
120
|
-
});
|
|
121
|
-
test("System prompt does not include captcha instructions when captchasAutoSolve is false", () => {
|
|
122
|
-
const prompt = buildAgentSystemPrompt({
|
|
123
|
-
url: "https://example.com",
|
|
124
|
-
executionInstruction: "Test instruction",
|
|
125
|
-
mode: "dom",
|
|
126
|
-
captchasAutoSolve: false,
|
|
127
|
-
});
|
|
128
|
-
expect(prompt).not.toContain("automatically detected and solved");
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
test.describe("Agent creation with mode", () => {
|
|
132
|
-
test("agent({ mode: 'dom' }) creates DOM-mode agent", () => {
|
|
133
|
-
const agent = v3.agent({
|
|
134
|
-
mode: "dom",
|
|
135
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
136
|
-
});
|
|
137
|
-
expect(agent).toHaveProperty("execute");
|
|
138
|
-
});
|
|
139
|
-
test("agent({ mode: 'hybrid' }) creates hybrid-mode agent", () => {
|
|
140
|
-
const agent = v3.agent({
|
|
141
|
-
mode: "hybrid",
|
|
142
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
143
|
-
});
|
|
144
|
-
expect(agent).toHaveProperty("execute");
|
|
145
|
-
});
|
|
146
|
-
test("agent without mode defaults to DOM mode", () => {
|
|
147
|
-
const agent = v3.agent({
|
|
148
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
149
|
-
});
|
|
150
|
-
expect(agent).toHaveProperty("execute");
|
|
151
|
-
});
|
|
152
|
-
test("hybrid mode can be combined with streaming", () => {
|
|
153
|
-
const agent = v3.agent({
|
|
154
|
-
mode: "hybrid",
|
|
155
|
-
stream: true,
|
|
156
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
157
|
-
});
|
|
158
|
-
expect(agent).toHaveProperty("execute");
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
test.describe("Hybrid mode execution", () => {
|
|
162
|
-
test("hybrid mode agent uses coordinate-based tools when available", async () => {
|
|
163
|
-
test.setTimeout(90000);
|
|
164
|
-
const toolCalls = [];
|
|
165
|
-
const agent = v3.agent({
|
|
166
|
-
mode: "hybrid",
|
|
167
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
168
|
-
});
|
|
169
|
-
const page = v3.context.pages()[0];
|
|
170
|
-
await page.goto("https://example.com");
|
|
171
|
-
await agent.execute({
|
|
172
|
-
instruction: "Take a screenshot to see the page, then describe what you see briefly and mark the task as complete.",
|
|
173
|
-
maxSteps: 5,
|
|
174
|
-
callbacks: {
|
|
175
|
-
onStepFinish: async (event) => {
|
|
176
|
-
if (event.toolCalls) {
|
|
177
|
-
for (const tc of event.toolCalls) {
|
|
178
|
-
toolCalls.push({
|
|
179
|
-
toolName: tc.toolName,
|
|
180
|
-
input: tc.input,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
});
|
|
187
|
-
// Should have captured tool calls
|
|
188
|
-
expect(toolCalls.length).toBeGreaterThan(0);
|
|
189
|
-
const toolNames = toolCalls.map((tc) => tc.toolName);
|
|
190
|
-
// Should include screenshot (hybrid mode emphasizes visual)
|
|
191
|
-
expect(toolNames).toContain("screenshot");
|
|
192
|
-
});
|
|
193
|
-
test("DOM mode agent uses DOM-based tools", async () => {
|
|
194
|
-
test.setTimeout(90000);
|
|
195
|
-
const toolCalls = [];
|
|
196
|
-
const agent = v3.agent({
|
|
197
|
-
mode: "dom",
|
|
198
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
199
|
-
});
|
|
200
|
-
const page = v3.context.pages()[0];
|
|
201
|
-
await page.goto("https://example.com");
|
|
202
|
-
await agent.execute({
|
|
203
|
-
instruction: "Use the ariaTree to understand the page, then provide the final requested output or a summary of the page.",
|
|
204
|
-
maxSteps: 5,
|
|
205
|
-
callbacks: {
|
|
206
|
-
onStepFinish: async (event) => {
|
|
207
|
-
if (event.toolCalls) {
|
|
208
|
-
for (const tc of event.toolCalls) {
|
|
209
|
-
toolCalls.push({
|
|
210
|
-
toolName: tc.toolName,
|
|
211
|
-
input: tc.input,
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
},
|
|
216
|
-
},
|
|
217
|
-
});
|
|
218
|
-
// Should have captured tool calls
|
|
219
|
-
expect(toolCalls.length).toBeGreaterThan(0);
|
|
220
|
-
// Should include ariaTree (DOM mode emphasizes aria-based interaction)
|
|
221
|
-
const toolNames = toolCalls.map((tc) => tc.toolName);
|
|
222
|
-
expect(toolNames).toContain("ariaTree");
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
test.describe("Scroll tool variants by mode", () => {
|
|
226
|
-
test("DOM mode uses simple scroll tool without coordinates", () => {
|
|
227
|
-
const tools = createAgentTools(v3, { mode: "dom" });
|
|
228
|
-
expect(tools).toHaveProperty("scroll");
|
|
229
|
-
// The DOM scroll tool should exist
|
|
230
|
-
expect(typeof tools.scroll).toBe("object");
|
|
231
|
-
});
|
|
232
|
-
test("Hybrid mode uses vision scroll tool with optional coordinates", () => {
|
|
233
|
-
const tools = createAgentTools(v3, { mode: "hybrid" });
|
|
234
|
-
expect(tools).toHaveProperty("scroll");
|
|
235
|
-
// The hybrid scroll tool should exist
|
|
236
|
-
expect(typeof tools.scroll).toBe("object");
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
test.describe("Keys tool availability in both modes", () => {
|
|
240
|
-
test("Keys tool is available in DOM mode", () => {
|
|
241
|
-
const tools = createAgentTools(v3, { mode: "dom" });
|
|
242
|
-
expect(tools).toHaveProperty("keys");
|
|
243
|
-
});
|
|
244
|
-
test("Keys tool is available in hybrid mode", () => {
|
|
245
|
-
const tools = createAgentTools(v3, { mode: "hybrid" });
|
|
246
|
-
expect(tools).toHaveProperty("keys");
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
test.describe("Think tool availability", () => {
|
|
250
|
-
test("Think tool is available in DOM mode", () => {
|
|
251
|
-
const tools = createAgentTools(v3, { mode: "dom" });
|
|
252
|
-
expect(tools).toHaveProperty("think");
|
|
253
|
-
});
|
|
254
|
-
test("Think tool is available in hybrid mode", () => {
|
|
255
|
-
const tools = createAgentTools(v3, { mode: "hybrid" });
|
|
256
|
-
expect(tools).toHaveProperty("think");
|
|
257
|
-
});
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
//# sourceMappingURL=agent-hybrid-mode.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-hybrid-mode.spec.js","sourceRoot":"","sources":["../../../../tests/integration/agent-hybrid-mode.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport { createAgentTools } from \"../../lib/v3/agent/tools/index.js\";\nimport { buildAgentSystemPrompt } from \"../../lib/v3/agent/prompts/agentSystemPrompt.js\";\nimport type { StepResult, ToolSet } from \"ai\";\n\ntest.describe(\"Stagehand agent hybrid mode\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3({\n ...v3TestConfig,\n experimental: true,\n });\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test.describe(\"Tool filtering by mode\", () => {\n test(\"DOM mode includes DOM-based tools and excludes coordinate-based tools\", () => {\n const tools = createAgentTools(v3, { mode: \"dom\" });\n\n // DOM mode should have these tools\n expect(tools).toHaveProperty(\"act\");\n expect(tools).toHaveProperty(\"fillForm\");\n expect(tools).toHaveProperty(\"ariaTree\");\n expect(tools).toHaveProperty(\"screenshot\");\n expect(tools).toHaveProperty(\"extract\");\n expect(tools).toHaveProperty(\"goto\");\n expect(tools).toHaveProperty(\"scroll\");\n expect(tools).toHaveProperty(\"wait\");\n expect(tools).toHaveProperty(\"navback\");\n expect(tools).toHaveProperty(\"keys\");\n expect(tools).toHaveProperty(\"think\");\n\n // DOM mode should NOT have coordinate-based tools\n expect(tools).not.toHaveProperty(\"click\");\n expect(tools).not.toHaveProperty(\"type\");\n expect(tools).not.toHaveProperty(\"dragAndDrop\");\n expect(tools).not.toHaveProperty(\"clickAndHold\");\n expect(tools).not.toHaveProperty(\"fillFormVision\");\n });\n\n test(\"Hybrid mode includes coordinate-based tools and excludes DOM fillForm\", () => {\n const tools = createAgentTools(v3, { mode: \"hybrid\" });\n\n // Hybrid mode should have coordinate-based tools\n expect(tools).toHaveProperty(\"click\");\n expect(tools).toHaveProperty(\"type\");\n expect(tools).toHaveProperty(\"dragAndDrop\");\n expect(tools).toHaveProperty(\"clickAndHold\");\n expect(tools).toHaveProperty(\"fillFormVision\");\n\n // Hybrid mode should also have common tools\n expect(tools).toHaveProperty(\"act\");\n expect(tools).toHaveProperty(\"ariaTree\");\n expect(tools).toHaveProperty(\"screenshot\");\n expect(tools).toHaveProperty(\"extract\");\n expect(tools).toHaveProperty(\"goto\");\n expect(tools).toHaveProperty(\"scroll\");\n expect(tools).toHaveProperty(\"wait\");\n expect(tools).toHaveProperty(\"navback\");\n expect(tools).toHaveProperty(\"keys\");\n expect(tools).toHaveProperty(\"think\");\n\n // Hybrid mode should NOT have DOM-based fillForm\n expect(tools).not.toHaveProperty(\"fillForm\");\n });\n\n test(\"Default mode is DOM when not specified\", () => {\n const tools = createAgentTools(v3, {});\n\n // Should behave like DOM mode\n expect(tools).toHaveProperty(\"fillForm\");\n expect(tools).not.toHaveProperty(\"click\");\n expect(tools).not.toHaveProperty(\"type\");\n });\n });\n\n test.describe(\"System prompt generation\", () => {\n test(\"DOM mode system prompt emphasizes ariaTree and act tool\", () => {\n const prompt = buildAgentSystemPrompt({\n url: \"https://example.com\",\n executionInstruction: \"Test instruction\",\n mode: \"dom\",\n });\n\n // DOM mode should prioritize ariaTree\n expect(prompt).toContain(\"ariaTree\");\n expect(prompt).toContain(\"act\");\n expect(prompt).toContain(\"fillForm\");\n\n // Should have DOM-specific strategy\n expect(prompt).toContain(\"Use act tool for all clicking and typing\");\n expect(prompt).toContain(\"Always check ariaTree first\");\n });\n\n test(\"Hybrid mode system prompt emphasizes screenshot and coordinate tools\", () => {\n const prompt = buildAgentSystemPrompt({\n url: \"https://example.com\",\n executionInstruction: \"Test instruction\",\n mode: \"hybrid\",\n });\n\n // Hybrid mode should have coordinate-based tools mentioned\n expect(prompt).toContain(\"click\");\n expect(prompt).toContain(\"type\");\n expect(prompt).toContain(\"fillFormVision\");\n expect(prompt).toContain(\"dragAndDrop\");\n\n // Should have hybrid-specific strategy\n expect(prompt).toContain(\n \"Use specific tools (click, type) when elements are visible\",\n );\n expect(prompt).toContain(\"Always use screenshot\");\n });\n\n test(\"System prompt includes custom instructions when provided\", () => {\n const customInstructions = \"Always be polite and thorough\";\n const prompt = buildAgentSystemPrompt({\n url: \"https://example.com\",\n executionInstruction: \"Test instruction\",\n mode: \"dom\",\n systemInstructions: customInstructions,\n });\n\n expect(prompt).toContain(\"customInstructions\");\n expect(prompt).toContain(customInstructions);\n });\n\n test(\"System prompt includes captcha instructions when captchasAutoSolve is true\", () => {\n const prompt = buildAgentSystemPrompt({\n url: \"https://example.com\",\n executionInstruction: \"Test instruction\",\n mode: \"dom\",\n captchasAutoSolve: true,\n });\n\n expect(prompt).toContain(\"captcha\");\n expect(prompt).toContain(\"automatically detected and solved\");\n });\n\n test(\"System prompt does not include captcha instructions when captchasAutoSolve is false\", () => {\n const prompt = buildAgentSystemPrompt({\n url: \"https://example.com\",\n executionInstruction: \"Test instruction\",\n mode: \"dom\",\n captchasAutoSolve: false,\n });\n\n expect(prompt).not.toContain(\"automatically detected and solved\");\n });\n });\n\n test.describe(\"Agent creation with mode\", () => {\n test(\"agent({ mode: 'dom' }) creates DOM-mode agent\", () => {\n const agent = v3.agent({\n mode: \"dom\",\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n expect(agent).toHaveProperty(\"execute\");\n });\n\n test(\"agent({ mode: 'hybrid' }) creates hybrid-mode agent\", () => {\n const agent = v3.agent({\n mode: \"hybrid\",\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n expect(agent).toHaveProperty(\"execute\");\n });\n\n test(\"agent without mode defaults to DOM mode\", () => {\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n expect(agent).toHaveProperty(\"execute\");\n });\n\n test(\"hybrid mode can be combined with streaming\", () => {\n const agent = v3.agent({\n mode: \"hybrid\",\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n expect(agent).toHaveProperty(\"execute\");\n });\n });\n\n test.describe(\"Hybrid mode execution\", () => {\n test(\"hybrid mode agent uses coordinate-based tools when available\", async () => {\n test.setTimeout(90000);\n\n const toolCalls: Array<{ toolName: string; input: unknown }> = [];\n\n const agent = v3.agent({\n mode: \"hybrid\",\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n await agent.execute({\n instruction:\n \"Take a screenshot to see the page, then describe what you see briefly and mark the task as complete.\",\n maxSteps: 5,\n callbacks: {\n onStepFinish: async (event: StepResult<ToolSet>) => {\n if (event.toolCalls) {\n for (const tc of event.toolCalls) {\n toolCalls.push({\n toolName: tc.toolName,\n input: tc.input,\n });\n }\n }\n },\n },\n });\n\n // Should have captured tool calls\n expect(toolCalls.length).toBeGreaterThan(0);\n\n const toolNames = toolCalls.map((tc) => tc.toolName);\n // Should include screenshot (hybrid mode emphasizes visual)\n expect(toolNames).toContain(\"screenshot\");\n });\n\n test(\"DOM mode agent uses DOM-based tools\", async () => {\n test.setTimeout(90000);\n\n const toolCalls: Array<{ toolName: string; input: unknown }> = [];\n\n const agent = v3.agent({\n mode: \"dom\",\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n await agent.execute({\n instruction:\n \"Use the ariaTree to understand the page, then provide the final requested output or a summary of the page.\",\n maxSteps: 5,\n callbacks: {\n onStepFinish: async (event: StepResult<ToolSet>) => {\n if (event.toolCalls) {\n for (const tc of event.toolCalls) {\n toolCalls.push({\n toolName: tc.toolName,\n input: tc.input,\n });\n }\n }\n },\n },\n });\n\n // Should have captured tool calls\n expect(toolCalls.length).toBeGreaterThan(0);\n\n // Should include ariaTree (DOM mode emphasizes aria-based interaction)\n const toolNames = toolCalls.map((tc) => tc.toolName);\n expect(toolNames).toContain(\"ariaTree\");\n });\n });\n\n test.describe(\"Scroll tool variants by mode\", () => {\n test(\"DOM mode uses simple scroll tool without coordinates\", () => {\n const tools = createAgentTools(v3, { mode: \"dom\" });\n\n expect(tools).toHaveProperty(\"scroll\");\n // The DOM scroll tool should exist\n expect(typeof tools.scroll).toBe(\"object\");\n });\n\n test(\"Hybrid mode uses vision scroll tool with optional coordinates\", () => {\n const tools = createAgentTools(v3, { mode: \"hybrid\" });\n\n expect(tools).toHaveProperty(\"scroll\");\n // The hybrid scroll tool should exist\n expect(typeof tools.scroll).toBe(\"object\");\n });\n });\n\n test.describe(\"Keys tool availability in both modes\", () => {\n test(\"Keys tool is available in DOM mode\", () => {\n const tools = createAgentTools(v3, { mode: \"dom\" });\n expect(tools).toHaveProperty(\"keys\");\n });\n\n test(\"Keys tool is available in hybrid mode\", () => {\n const tools = createAgentTools(v3, { mode: \"hybrid\" });\n expect(tools).toHaveProperty(\"keys\");\n });\n });\n\n test.describe(\"Think tool availability\", () => {\n test(\"Think tool is available in DOM mode\", () => {\n const tools = createAgentTools(v3, { mode: \"dom\" });\n expect(tools).toHaveProperty(\"think\");\n });\n\n test(\"Think tool is available in hybrid mode\", () => {\n const tools = createAgentTools(v3, { mode: \"hybrid\" });\n expect(tools).toHaveProperty(\"think\");\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test";
|
|
2
|
-
import { V3 } from "../../lib/v3/v3.js";
|
|
3
|
-
import { v3TestConfig } from "./v3.config.js";
|
|
4
|
-
test.describe("Stagehand agent message continuation", () => {
|
|
5
|
-
let v3;
|
|
6
|
-
test.beforeEach(async () => {
|
|
7
|
-
v3 = new V3({
|
|
8
|
-
...v3TestConfig,
|
|
9
|
-
experimental: true,
|
|
10
|
-
});
|
|
11
|
-
await v3.init();
|
|
12
|
-
});
|
|
13
|
-
test.afterEach(async () => {
|
|
14
|
-
await v3?.close?.().catch(() => { });
|
|
15
|
-
});
|
|
16
|
-
test("execute returns messages in the result", async () => {
|
|
17
|
-
test.setTimeout(60000);
|
|
18
|
-
const agent = v3.agent({
|
|
19
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
20
|
-
});
|
|
21
|
-
const page = v3.context.pages()[0];
|
|
22
|
-
await page.goto("https://example.com");
|
|
23
|
-
const result = await agent.execute({
|
|
24
|
-
instruction: "What is the title of this page? Describe it briefly.",
|
|
25
|
-
maxSteps: 5,
|
|
26
|
-
});
|
|
27
|
-
// Result should contain messages
|
|
28
|
-
expect(result.messages).toBeDefined();
|
|
29
|
-
expect(Array.isArray(result.messages)).toBe(true);
|
|
30
|
-
expect(result.messages.length).toBeGreaterThan(0);
|
|
31
|
-
// First message should be the user instruction
|
|
32
|
-
const firstMessage = result.messages[0];
|
|
33
|
-
expect(firstMessage.role).toBe("user");
|
|
34
|
-
});
|
|
35
|
-
test("can continue conversation with previous messages", async () => {
|
|
36
|
-
test.setTimeout(120000);
|
|
37
|
-
const agent = v3.agent({
|
|
38
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
39
|
-
});
|
|
40
|
-
const page = v3.context.pages()[0];
|
|
41
|
-
await page.goto("https://example.com");
|
|
42
|
-
// First execution
|
|
43
|
-
const result1 = await agent.execute({
|
|
44
|
-
instruction: "What is the title of this page? Describe it briefly.",
|
|
45
|
-
maxSteps: 5,
|
|
46
|
-
});
|
|
47
|
-
expect(result1.messages).toBeDefined();
|
|
48
|
-
expect(result1.messages.length).toBeGreaterThan(0);
|
|
49
|
-
// Second execution continuing from first
|
|
50
|
-
const result2 = await agent.execute({
|
|
51
|
-
instruction: "Based on what you just told me, is this a simple or complex website? Answer briefly.",
|
|
52
|
-
maxSteps: 5,
|
|
53
|
-
messages: result1.messages,
|
|
54
|
-
});
|
|
55
|
-
expect(result2.messages).toBeDefined();
|
|
56
|
-
// Second result should have more messages (includes first conversation)
|
|
57
|
-
expect(result2.messages.length).toBeGreaterThan(result1.messages.length);
|
|
58
|
-
});
|
|
59
|
-
test("messages include tool calls and results", async () => {
|
|
60
|
-
test.setTimeout(60000);
|
|
61
|
-
const agent = v3.agent({
|
|
62
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
63
|
-
});
|
|
64
|
-
const page = v3.context.pages()[0];
|
|
65
|
-
await page.goto("https://example.com");
|
|
66
|
-
const result = await agent.execute({
|
|
67
|
-
instruction: "Use the ariaTree tool to see the page, then describe what you found briefly.",
|
|
68
|
-
maxSteps: 5,
|
|
69
|
-
});
|
|
70
|
-
expect(result.messages).toBeDefined();
|
|
71
|
-
// Verify there are assistant messages
|
|
72
|
-
const assistantMessages = result.messages.filter((m) => m.role === "assistant");
|
|
73
|
-
expect(assistantMessages.length).toBeGreaterThan(0);
|
|
74
|
-
// Verify at least one assistant message contains tool calls
|
|
75
|
-
const hasToolCalls = assistantMessages.some((m) => {
|
|
76
|
-
if (Array.isArray(m.content)) {
|
|
77
|
-
return m.content.some((part) => typeof part === "object" && part.type === "tool-call");
|
|
78
|
-
}
|
|
79
|
-
return false;
|
|
80
|
-
});
|
|
81
|
-
expect(hasToolCalls).toBe(true);
|
|
82
|
-
// Verify there are tool result messages
|
|
83
|
-
const hasToolResults = result.messages.some((m) => m.role === "tool");
|
|
84
|
-
expect(hasToolResults).toBe(true);
|
|
85
|
-
});
|
|
86
|
-
test("streaming mode also returns messages", async () => {
|
|
87
|
-
test.setTimeout(60000);
|
|
88
|
-
const agent = v3.agent({
|
|
89
|
-
stream: true,
|
|
90
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
91
|
-
});
|
|
92
|
-
const page = v3.context.pages()[0];
|
|
93
|
-
await page.goto("https://example.com");
|
|
94
|
-
const streamResult = await agent.execute({
|
|
95
|
-
instruction: "What is this page? Describe it briefly.",
|
|
96
|
-
maxSteps: 5,
|
|
97
|
-
});
|
|
98
|
-
// Consume the stream
|
|
99
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
100
|
-
for await (const _ of streamResult.textStream) {
|
|
101
|
-
// Just consume
|
|
102
|
-
}
|
|
103
|
-
const result = await streamResult.result;
|
|
104
|
-
// Result should contain messages
|
|
105
|
-
expect(result.messages).toBeDefined();
|
|
106
|
-
expect(Array.isArray(result.messages)).toBe(true);
|
|
107
|
-
expect(result.messages.length).toBeGreaterThan(0);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
//# sourceMappingURL=agent-message-continuation.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-message-continuation.spec.js","sourceRoot":"","sources":["../../../../tests/integration/agent-message-continuation.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport type { ModelMessage } from \"ai\";\n\ntest.describe(\"Stagehand agent message continuation\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3({\n ...v3TestConfig,\n experimental: true,\n });\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"execute returns messages in the result\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const result = await agent.execute({\n instruction: \"What is the title of this page? Describe it briefly.\",\n maxSteps: 5,\n });\n\n // Result should contain messages\n expect(result.messages).toBeDefined();\n expect(Array.isArray(result.messages)).toBe(true);\n expect(result.messages!.length).toBeGreaterThan(0);\n\n // First message should be the user instruction\n const firstMessage = result.messages![0];\n expect(firstMessage.role).toBe(\"user\");\n });\n\n test(\"can continue conversation with previous messages\", async () => {\n test.setTimeout(120000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n // First execution\n const result1 = await agent.execute({\n instruction: \"What is the title of this page? Describe it briefly.\",\n maxSteps: 5,\n });\n\n expect(result1.messages).toBeDefined();\n expect(result1.messages!.length).toBeGreaterThan(0);\n\n // Second execution continuing from first\n const result2 = await agent.execute({\n instruction:\n \"Based on what you just told me, is this a simple or complex website? Answer briefly.\",\n maxSteps: 5,\n messages: result1.messages,\n });\n\n expect(result2.messages).toBeDefined();\n // Second result should have more messages (includes first conversation)\n expect(result2.messages!.length).toBeGreaterThan(result1.messages!.length);\n });\n\n test(\"messages include tool calls and results\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const result = await agent.execute({\n instruction:\n \"Use the ariaTree tool to see the page, then describe what you found briefly.\",\n maxSteps: 5,\n });\n\n expect(result.messages).toBeDefined();\n\n // Verify there are assistant messages\n const assistantMessages = result.messages!.filter(\n (m: ModelMessage) => m.role === \"assistant\",\n );\n expect(assistantMessages.length).toBeGreaterThan(0);\n\n // Verify at least one assistant message contains tool calls\n const hasToolCalls = assistantMessages.some((m: ModelMessage) => {\n if (Array.isArray(m.content)) {\n return m.content.some(\n (part) => typeof part === \"object\" && part.type === \"tool-call\",\n );\n }\n return false;\n });\n expect(hasToolCalls).toBe(true);\n\n // Verify there are tool result messages\n const hasToolResults = result.messages!.some(\n (m: ModelMessage) => m.role === \"tool\",\n );\n expect(hasToolResults).toBe(true);\n });\n\n test(\"streaming mode also returns messages\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const streamResult = await agent.execute({\n instruction: \"What is this page? Describe it briefly.\",\n maxSteps: 5,\n });\n\n // Consume the stream\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of streamResult.textStream) {\n // Just consume\n }\n\n const result = await streamResult.result;\n\n // Result should contain messages\n expect(result.messages).toBeDefined();\n expect(Array.isArray(result.messages)).toBe(true);\n expect(result.messages!.length).toBeGreaterThan(0);\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { test, expect } from "@playwright/test";
|
|
2
|
-
import { V3 } from "../../lib/v3/v3.js";
|
|
3
|
-
import { v3TestConfig } from "./v3.config.js";
|
|
4
|
-
test.describe("Stagehand agent streaming behavior", () => {
|
|
5
|
-
let v3;
|
|
6
|
-
test.beforeEach(async () => {
|
|
7
|
-
v3 = new V3({
|
|
8
|
-
...v3TestConfig,
|
|
9
|
-
experimental: true, // Required for streaming
|
|
10
|
-
});
|
|
11
|
-
await v3.init();
|
|
12
|
-
});
|
|
13
|
-
test.afterEach(async () => {
|
|
14
|
-
await v3?.close?.().catch(() => { });
|
|
15
|
-
});
|
|
16
|
-
test.describe("agent({ stream: true })", () => {
|
|
17
|
-
test("AgentStreamResult has textStream as async iterable", async () => {
|
|
18
|
-
test.setTimeout(60000);
|
|
19
|
-
const agent = v3.agent({
|
|
20
|
-
stream: true,
|
|
21
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
22
|
-
});
|
|
23
|
-
// Navigate to a simple page first
|
|
24
|
-
const page = v3.context.pages()[0];
|
|
25
|
-
await page.goto("https://example.com");
|
|
26
|
-
const streamResult = await agent.execute({
|
|
27
|
-
instruction: "What is the title of this page? Describe it briefly.",
|
|
28
|
-
maxSteps: 3,
|
|
29
|
-
});
|
|
30
|
-
// Verify it's an AgentStreamResult with streaming capabilities
|
|
31
|
-
expect(streamResult).toHaveProperty("textStream");
|
|
32
|
-
expect(streamResult).toHaveProperty("result");
|
|
33
|
-
// textStream should be async iterable
|
|
34
|
-
expect(typeof streamResult.textStream[Symbol.asyncIterator]).toBe("function");
|
|
35
|
-
// result should be a promise
|
|
36
|
-
expect(streamResult.result).toBeInstanceOf(Promise);
|
|
37
|
-
});
|
|
38
|
-
test("textStream yields chunks incrementally", async () => {
|
|
39
|
-
test.setTimeout(60000);
|
|
40
|
-
const agent = v3.agent({
|
|
41
|
-
stream: true,
|
|
42
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
43
|
-
});
|
|
44
|
-
const page = v3.context.pages()[0];
|
|
45
|
-
await page.goto("https://example.com");
|
|
46
|
-
const streamResult = await agent.execute({
|
|
47
|
-
instruction: "Say hello briefly.",
|
|
48
|
-
maxSteps: 3,
|
|
49
|
-
});
|
|
50
|
-
// Collect chunks from the stream
|
|
51
|
-
const chunks = [];
|
|
52
|
-
for await (const chunk of streamResult.textStream) {
|
|
53
|
-
chunks.push(chunk);
|
|
54
|
-
}
|
|
55
|
-
// Should have received at least some chunks (streaming behavior)
|
|
56
|
-
// The exact content depends on the LLM response
|
|
57
|
-
expect(Array.isArray(chunks)).toBe(true);
|
|
58
|
-
expect(chunks.length).toBeGreaterThan(0);
|
|
59
|
-
});
|
|
60
|
-
test("result promise resolves to AgentResult after stream completes", async () => {
|
|
61
|
-
test.setTimeout(60000);
|
|
62
|
-
const agent = v3.agent({
|
|
63
|
-
stream: true,
|
|
64
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
65
|
-
});
|
|
66
|
-
const page = v3.context.pages()[0];
|
|
67
|
-
await page.goto("https://example.com");
|
|
68
|
-
const streamResult = await agent.execute({
|
|
69
|
-
instruction: "What is this page about? Describe it briefly.",
|
|
70
|
-
maxSteps: 5,
|
|
71
|
-
});
|
|
72
|
-
// Consume the stream first
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
74
|
-
for await (const _ of streamResult.textStream) {
|
|
75
|
-
// Just consume
|
|
76
|
-
}
|
|
77
|
-
// Now get the final result
|
|
78
|
-
const finalResult = await streamResult.result;
|
|
79
|
-
// Verify it's a proper AgentResult
|
|
80
|
-
expect(finalResult).toHaveProperty("success");
|
|
81
|
-
expect(finalResult).toHaveProperty("message");
|
|
82
|
-
expect(finalResult).toHaveProperty("actions");
|
|
83
|
-
expect(finalResult).toHaveProperty("completed");
|
|
84
|
-
expect(typeof finalResult.success).toBe("boolean");
|
|
85
|
-
expect(typeof finalResult.message).toBe("string");
|
|
86
|
-
expect(Array.isArray(finalResult.actions)).toBe(true);
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
test.describe("agent({ stream: false }) or agent()", () => {
|
|
90
|
-
test("execute returns AgentResult without streaming properties", async () => {
|
|
91
|
-
test.setTimeout(60000);
|
|
92
|
-
const agent = v3.agent({
|
|
93
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
94
|
-
});
|
|
95
|
-
const page = v3.context.pages()[0];
|
|
96
|
-
await page.goto("https://example.com");
|
|
97
|
-
const result = await agent.execute({
|
|
98
|
-
instruction: "What is this page? Describe it briefly.",
|
|
99
|
-
maxSteps: 3,
|
|
100
|
-
});
|
|
101
|
-
// Should be AgentResult, not AgentStreamResult
|
|
102
|
-
expect(result).toHaveProperty("success");
|
|
103
|
-
expect(result).toHaveProperty("message");
|
|
104
|
-
expect(result).toHaveProperty("actions");
|
|
105
|
-
expect(result).toHaveProperty("completed");
|
|
106
|
-
// Should NOT have streaming properties
|
|
107
|
-
expect(result).not.toHaveProperty("textStream");
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
test.describe("CUA disables streaming", () => {
|
|
111
|
-
test("throws StagehandInvalidArgumentError when cua: true and stream: true", () => {
|
|
112
|
-
expect(() => {
|
|
113
|
-
v3.agent({
|
|
114
|
-
cua: true,
|
|
115
|
-
stream: true,
|
|
116
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
117
|
-
});
|
|
118
|
-
}).toThrow("streaming is not supported with CUA");
|
|
119
|
-
});
|
|
120
|
-
test("allows cua: true without stream", () => {
|
|
121
|
-
// Should not throw
|
|
122
|
-
const agent = v3.agent({
|
|
123
|
-
cua: true,
|
|
124
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
125
|
-
});
|
|
126
|
-
expect(agent).toHaveProperty("execute");
|
|
127
|
-
});
|
|
128
|
-
test("allows stream: true without cua", () => {
|
|
129
|
-
// Should not throw
|
|
130
|
-
const agent = v3.agent({
|
|
131
|
-
stream: true,
|
|
132
|
-
model: "anthropic/claude-haiku-4-5-20251001",
|
|
133
|
-
});
|
|
134
|
-
expect(agent).toHaveProperty("execute");
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
//# sourceMappingURL=agent-streaming.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-streaming.spec.js","sourceRoot":"","sources":["../../../../tests/integration/agent-streaming.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport type { AgentResult } from \"../../lib/v3/types/public/agent.js\";\n\ntest.describe(\"Stagehand agent streaming behavior\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3({\n ...v3TestConfig,\n experimental: true, // Required for streaming\n });\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test.describe(\"agent({ stream: true })\", () => {\n test(\"AgentStreamResult has textStream as async iterable\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n // Navigate to a simple page first\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const streamResult = await agent.execute({\n instruction: \"What is the title of this page? Describe it briefly.\",\n maxSteps: 3,\n });\n\n // Verify it's an AgentStreamResult with streaming capabilities\n expect(streamResult).toHaveProperty(\"textStream\");\n expect(streamResult).toHaveProperty(\"result\");\n\n // textStream should be async iterable\n expect(typeof streamResult.textStream[Symbol.asyncIterator]).toBe(\n \"function\",\n );\n\n // result should be a promise\n expect(streamResult.result).toBeInstanceOf(Promise);\n });\n\n test(\"textStream yields chunks incrementally\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const streamResult = await agent.execute({\n instruction: \"Say hello briefly.\",\n maxSteps: 3,\n });\n\n // Collect chunks from the stream\n const chunks: string[] = [];\n for await (const chunk of streamResult.textStream) {\n chunks.push(chunk);\n }\n\n // Should have received at least some chunks (streaming behavior)\n // The exact content depends on the LLM response\n expect(Array.isArray(chunks)).toBe(true);\n expect(chunks.length).toBeGreaterThan(0);\n });\n\n test(\"result promise resolves to AgentResult after stream completes\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const streamResult = await agent.execute({\n instruction: \"What is this page about? Describe it briefly.\",\n maxSteps: 5,\n });\n\n // Consume the stream first\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of streamResult.textStream) {\n // Just consume\n }\n\n // Now get the final result\n const finalResult: AgentResult = await streamResult.result;\n\n // Verify it's a proper AgentResult\n expect(finalResult).toHaveProperty(\"success\");\n expect(finalResult).toHaveProperty(\"message\");\n expect(finalResult).toHaveProperty(\"actions\");\n expect(finalResult).toHaveProperty(\"completed\");\n expect(typeof finalResult.success).toBe(\"boolean\");\n expect(typeof finalResult.message).toBe(\"string\");\n expect(Array.isArray(finalResult.actions)).toBe(true);\n });\n });\n\n test.describe(\"agent({ stream: false }) or agent()\", () => {\n test(\"execute returns AgentResult without streaming properties\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const result = await agent.execute({\n instruction: \"What is this page? Describe it briefly.\",\n maxSteps: 3,\n });\n // Should be AgentResult, not AgentStreamResult\n expect(result).toHaveProperty(\"success\");\n expect(result).toHaveProperty(\"message\");\n expect(result).toHaveProperty(\"actions\");\n expect(result).toHaveProperty(\"completed\");\n\n // Should NOT have streaming properties\n expect(result).not.toHaveProperty(\"textStream\");\n });\n });\n\n test.describe(\"CUA disables streaming\", () => {\n test(\"throws StagehandInvalidArgumentError when cua: true and stream: true\", () => {\n expect(() => {\n v3.agent({\n cua: true,\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n }).toThrow(\"streaming is not supported with CUA\");\n });\n\n test(\"allows cua: true without stream\", () => {\n // Should not throw\n const agent = v3.agent({\n cua: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n expect(agent).toHaveProperty(\"execute\");\n });\n\n test(\"allows stream: true without cua\", () => {\n // Should not throw\n const agent = v3.agent({\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n expect(agent).toHaveProperty(\"execute\");\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|