@browserbasehq/orca 3.1.0-patch.0 → 3.1.0-patch.1
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/cli.js +183 -0
- package/dist/cjs/cli.js.map +7 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +24956 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/lib/inference.d.ts +65 -0
- package/dist/cjs/lib/inferenceLogUtils.d.ts +12 -0
- package/dist/cjs/lib/logger.d.ts +69 -0
- package/dist/cjs/lib/modelUtils.d.ts +11 -0
- package/dist/cjs/lib/prompt.d.ts +14 -0
- package/dist/cjs/lib/utils.d.ts +68 -0
- package/dist/cjs/lib/v3/agent/AgentClient.d.ts +19 -0
- package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +20 -0
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.d.ts +57 -0
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.d.ts +74 -0
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.d.ts +71 -0
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +69 -0
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/act.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +5 -0
- package/dist/cjs/lib/v3/agent/tools/click.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/clickAndHold.d.ts +14 -0
- package/dist/cjs/lib/v3/agent/tools/dragAndDrop.d.ts +7 -0
- package/dist/cjs/lib/v3/agent/tools/extract.d.ts +20 -0
- package/dist/cjs/lib/v3/agent/tools/fillFormVision.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/goto.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/index.d.ts +92 -0
- package/dist/cjs/lib/v3/agent/tools/keys.d.ts +24 -0
- package/dist/cjs/lib/v3/agent/tools/navback.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/scroll.d.ts +19 -0
- package/dist/cjs/lib/v3/agent/tools/search.d.ts +15 -0
- package/dist/cjs/lib/v3/agent/tools/think.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/type.d.ts +7 -0
- package/dist/cjs/lib/v3/agent/tools/wait.d.ts +5 -0
- package/dist/cjs/lib/v3/agent/utils/actionMapping.d.ts +3 -0
- package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.d.ts +13 -0
- package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.d.ts +10 -0
- package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.d.ts +25 -0
- package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.d.ts +22 -0
- package/dist/cjs/lib/v3/agent/utils/imageCompression.d.ts +53 -0
- package/dist/cjs/lib/v3/agent/utils/messageProcessing.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/utils/screenshotHandler.d.ts +10 -0
- package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.d.ts +26 -0
- package/dist/cjs/lib/v3/agent/utils/xpath.d.ts +11 -0
- package/dist/cjs/lib/v3/api.d.ts +86 -0
- package/dist/cjs/lib/v3/cache/ActCache.d.ts +23 -0
- package/dist/cjs/lib/v3/cache/AgentCache.d.ts +109 -0
- package/dist/cjs/lib/v3/cache/CacheStorage.d.ts +17 -0
- package/dist/cjs/lib/v3/cache/serverAgentCache.d.ts +7 -0
- package/dist/cjs/lib/v3/cache/utils.d.ts +15 -0
- package/dist/cjs/lib/v3/cli.d.ts +2 -0
- package/dist/cjs/lib/v3/dom/a11yScripts/index.d.ts +11 -0
- package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.d.ts +16 -0
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.d.ts +52 -0
- package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/build/rerender-index.d.ts +0 -0
- package/dist/cjs/lib/v3/dom/build/rerender-index.js +1 -0
- package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.d.ts +4 -0
- package/dist/cjs/lib/v3/dom/build/scriptV3Content.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/build/v3-index.d.ts +0 -0
- package/dist/cjs/lib/v3/dom/build/v3-index.js +1 -0
- package/dist/cjs/lib/v3/dom/genA11yScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/genDomScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/genLocatorScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/genScreenshotScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/index.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/counts.d.ts +15 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/index.d.ts +4 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/scripts.d.ts +37 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/selectors.d.ts +4 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.d.ts +19 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.d.ts +76 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.d.ts +9 -0
- package/dist/cjs/lib/v3/dom/piercer.entry.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/piercer.runtime.d.ts +23 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/index.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.d.ts +8 -0
- package/dist/cjs/lib/v3/external_clients/aisdk.d.ts +11 -0
- package/dist/cjs/lib/v3/external_clients/customOpenAI.d.ts +18 -0
- package/dist/cjs/lib/v3/flowLogger.d.ts +139 -0
- package/dist/cjs/lib/v3/handlers/actHandler.d.ts +21 -0
- package/dist/cjs/lib/v3/handlers/extractHandler.d.ts +31 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +24 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.d.ts +2 -0
- package/dist/cjs/lib/v3/handlers/observeHandler.d.ts +17 -0
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +32 -0
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +33 -0
- package/dist/cjs/lib/v3/index.d.ts +18 -0
- package/dist/cjs/lib/v3/launch/browserbase.d.ts +7 -0
- package/dist/cjs/lib/v3/launch/local.d.ts +15 -0
- package/dist/cjs/lib/v3/llm/AnthropicClient.d.ts +16 -0
- package/dist/cjs/lib/v3/llm/CerebrasClient.d.ts +17 -0
- package/dist/cjs/lib/v3/llm/GoogleClient.d.ts +19 -0
- package/dist/cjs/lib/v3/llm/GroqClient.d.ts +17 -0
- package/dist/cjs/lib/v3/llm/LLMClient.d.ts +121 -0
- package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +13 -0
- package/dist/cjs/lib/v3/llm/OpenAIClient.d.ts +15 -0
- package/dist/cjs/lib/v3/llm/aisdk.d.ts +15 -0
- package/dist/cjs/lib/v3/logger.d.ts +9 -0
- package/dist/cjs/lib/v3/mcp/connection.d.ts +11 -0
- package/dist/cjs/lib/v3/mcp/utils.d.ts +3 -0
- package/dist/cjs/lib/v3/shutdown/cleanupLocal.d.ts +14 -0
- package/dist/cjs/lib/v3/shutdown/supervisor.d.ts +11 -0
- package/dist/cjs/lib/v3/shutdown/supervisorClient.d.ts +15 -0
- package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js +113 -0
- package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js +102 -0
- package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js +374 -0
- package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js +354 -0
- package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js +247 -0
- package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js +105 -0
- package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-streaming.spec.js +126 -0
- package/dist/cjs/lib/v3/tests/agent-streaming.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js +44 -0
- package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/click-count.spec.js +147 -0
- package/dist/cjs/lib/v3/tests/click-count.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js +54 -0
- package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js +176 -0
- package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js +53 -0
- package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/downloads.spec.js +80 -0
- package/dist/cjs/lib/v3/tests/downloads.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js +53 -0
- package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js +493 -0
- package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keep-alive.child.js +92 -0
- package/dist/cjs/lib/v3/tests/keep-alive.child.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keep-alive.helpers.js +568 -0
- package/dist/cjs/lib/v3/tests/keep-alive.helpers.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keep-alive.spec.js +15 -0
- package/dist/cjs/lib/v3/tests/keep-alive.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keyboard.spec.js +296 -0
- package/dist/cjs/lib/v3/tests/keyboard.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js +159 -0
- package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js +191 -0
- package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js +108 -0
- package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-count.spec.js +71 -0
- package/dist/cjs/lib/v3/tests/locator-count.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-fill.spec.js +118 -0
- package/dist/cjs/lib/v3/tests/locator-fill.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js +136 -0
- package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-nth.spec.js +157 -0
- package/dist/cjs/lib/v3/tests/locator-nth.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-select-option.spec.js +242 -0
- package/dist/cjs/lib/v3/tests/locator-select-option.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/logger-initialization.spec.js +547 -0
- package/dist/cjs/lib/v3/tests/logger-initialization.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js +269 -0
- package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/nested-div.spec.js +23 -0
- package/dist/cjs/lib/v3/tests/nested-div.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js +90 -0
- package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-console.spec.js +56 -0
- package/dist/cjs/lib/v3/tests/page-console.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js +418 -0
- package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-goto-response.spec.js +35 -0
- package/dist/cjs/lib/v3/tests/page-goto-response.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-hover.spec.js +167 -0
- package/dist/cjs/lib/v3/tests/page-hover.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-screenshot.spec.js +295 -0
- package/dist/cjs/lib/v3/tests/page-screenshot.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-scroll.spec.js +182 -0
- package/dist/cjs/lib/v3/tests/page-scroll.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js +46 -0
- package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js +98 -0
- package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/setinputfiles.spec.js +148 -0
- package/dist/cjs/lib/v3/tests/setinputfiles.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js +156 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js +156 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/testUtils.js +54 -0
- package/dist/cjs/lib/v3/tests/testUtils.js.map +7 -0
- package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js +100 -0
- package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/timeouts.spec.js +32 -0
- package/dist/cjs/lib/v3/tests/timeouts.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/user-data-dir.spec.js +65 -0
- package/dist/cjs/lib/v3/tests/user-data-dir.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/v3.config.js +36 -0
- package/dist/cjs/lib/v3/tests/v3.config.js.map +7 -0
- package/dist/cjs/lib/v3/tests/v3.dynamic.config.js +67 -0
- package/dist/cjs/lib/v3/tests/v3.dynamic.config.js.map +7 -0
- package/dist/cjs/lib/v3/tests/v3.playwright.config.js +61 -0
- package/dist/cjs/lib/v3/tests/v3.playwright.config.js.map +7 -0
- package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js +593 -0
- package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js +97 -0
- package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js +77 -0
- package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js.map +7 -0
- package/dist/cjs/lib/v3/timeoutConfig.d.ts +2 -0
- package/dist/cjs/lib/v3/types/private/agent.d.ts +6 -0
- package/dist/cjs/lib/v3/types/private/api.d.ts +11 -0
- package/dist/cjs/lib/v3/types/private/cache.d.ts +128 -0
- package/dist/cjs/lib/v3/types/private/evaluator.d.ts +40 -0
- package/dist/cjs/lib/v3/types/private/handlers.d.ts +38 -0
- package/dist/cjs/lib/v3/types/private/index.d.ts +7 -0
- package/dist/cjs/lib/v3/types/private/internal.d.ts +39 -0
- package/dist/cjs/lib/v3/types/private/locator.d.ts +9 -0
- package/dist/cjs/lib/v3/types/private/network.d.ts +34 -0
- package/dist/cjs/lib/v3/types/private/shutdown.d.ts +19 -0
- package/dist/cjs/lib/v3/types/private/shutdownErrors.d.ts +12 -0
- package/dist/cjs/lib/v3/types/private/snapshot.d.ts +117 -0
- package/dist/cjs/lib/v3/types/public/agent.d.ts +595 -0
- package/dist/cjs/lib/v3/types/public/api.d.ts +1211 -0
- package/dist/cjs/lib/v3/types/public/apiErrors.d.ts +18 -0
- package/dist/cjs/lib/v3/types/public/index.d.ts +12 -0
- package/dist/cjs/lib/v3/types/public/locator.d.ts +9 -0
- package/dist/cjs/lib/v3/types/public/logs.d.ts +23 -0
- package/dist/cjs/lib/v3/types/public/methods.d.ts +56 -0
- package/dist/cjs/lib/v3/types/public/metrics.d.ts +27 -0
- package/dist/cjs/lib/v3/types/public/model.d.ts +65 -0
- package/dist/cjs/lib/v3/types/public/options.d.ts +70 -0
- package/dist/cjs/lib/v3/types/public/page.d.ts +18 -0
- package/dist/cjs/lib/v3/types/public/screenshotTypes.d.ts +25 -0
- package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +152 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.d.ts +15 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.d.ts +8 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.d.ts +77 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.d.ts +7 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.d.ts +46 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +24 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.d.ts +4 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.d.ts +16 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.d.ts +28 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.d.ts +26 -0
- package/dist/cjs/lib/v3/understudy/a11yInvocation.d.ts +8 -0
- package/dist/cjs/lib/v3/understudy/cdp.d.ts +69 -0
- package/dist/cjs/lib/v3/understudy/consoleMessage.d.ts +22 -0
- package/dist/cjs/lib/v3/understudy/context.d.ts +132 -0
- package/dist/cjs/lib/v3/understudy/deepLocator.d.ts +87 -0
- package/dist/cjs/lib/v3/understudy/executionContextRegistry.d.ts +15 -0
- package/dist/cjs/lib/v3/understudy/fileUploadUtils.d.ts +13 -0
- package/dist/cjs/lib/v3/understudy/frame.d.ts +69 -0
- package/dist/cjs/lib/v3/understudy/frameLocator.d.ts +50 -0
- package/dist/cjs/lib/v3/understudy/frameRegistry.d.ts +101 -0
- package/dist/cjs/lib/v3/understudy/initScripts.d.ts +2 -0
- package/dist/cjs/lib/v3/understudy/lifecycleWatcher.d.ts +64 -0
- package/dist/cjs/lib/v3/understudy/locator.d.ts +194 -0
- package/dist/cjs/lib/v3/understudy/locatorInvocation.d.ts +8 -0
- package/dist/cjs/lib/v3/understudy/navigationResponseTracker.d.ts +84 -0
- package/dist/cjs/lib/v3/understudy/networkManager.d.ts +53 -0
- package/dist/cjs/lib/v3/understudy/page.d.ts +354 -0
- package/dist/cjs/lib/v3/understudy/piercer.d.ts +4 -0
- package/dist/cjs/lib/v3/understudy/response.d.ts +137 -0
- package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +16 -0
- package/dist/cjs/lib/v3/understudy/selectorResolver.d.ts +38 -0
- package/dist/cjs/lib/v3/v3.d.ts +191 -0
- package/dist/cjs/lib/v3/zodCompat.d.ts +12 -0
- package/dist/cjs/lib/v3Evaluator.d.ts +19 -0
- package/dist/cjs/lib/version.d.ts +5 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/tests/browserbase-session-accessors.test.js +101 -0
- package/dist/cjs/tests/browserbase-session-accessors.test.js.map +7 -0
- package/dist/cjs/tests/cache-llm-resolution.test.js +187 -0
- package/dist/cjs/tests/cache-llm-resolution.test.js.map +7 -0
- package/dist/cjs/tests/helpers/mockCDPSession.js +50 -0
- package/dist/cjs/tests/helpers/mockCDPSession.js.map +7 -0
- package/dist/cjs/tests/llm-provider.test.js +57 -0
- package/dist/cjs/tests/llm-provider.test.js.map +7 -0
- package/dist/cjs/tests/model-deprecation.test.js +132 -0
- package/dist/cjs/tests/model-deprecation.test.js.map +7 -0
- package/dist/cjs/tests/page-snapshot.test.js +58 -0
- package/dist/cjs/tests/page-snapshot.test.js.map +7 -0
- package/dist/cjs/tests/public-api/export-surface.test.js +76 -0
- package/dist/cjs/tests/public-api/export-surface.test.js.map +7 -0
- package/dist/cjs/tests/public-api/llm-and-agents.test.js +150 -0
- package/dist/cjs/tests/public-api/llm-and-agents.test.js.map +7 -0
- package/dist/cjs/tests/public-api/public-error-types.test.js +104 -0
- package/dist/cjs/tests/public-api/public-error-types.test.js.map +7 -0
- package/dist/cjs/tests/public-api/public-types.test.js +74 -0
- package/dist/cjs/tests/public-api/public-types.test.js.map +7 -0
- package/dist/cjs/tests/public-api/runtime-utils.test.js +53 -0
- package/dist/cjs/tests/public-api/runtime-utils.test.js.map +7 -0
- package/dist/cjs/tests/public-api/schema-utils.test.js +100 -0
- package/dist/cjs/tests/public-api/schema-utils.test.js.map +7 -0
- package/dist/cjs/tests/public-api/timeout-error-types.test.js +103 -0
- package/dist/cjs/tests/public-api/timeout-error-types.test.js.map +7 -0
- package/dist/cjs/tests/public-api/tool-type-export.test.js +47 -0
- package/dist/cjs/tests/public-api/tool-type-export.test.js.map +7 -0
- package/dist/cjs/tests/public-api/v3-core.test.js +104 -0
- package/dist/cjs/tests/public-api/v3-core.test.js.map +7 -0
- package/dist/cjs/tests/safety-confirmation.test.js +134 -0
- package/dist/cjs/tests/safety-confirmation.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-a11y-resolvers.test.js +370 -0
- package/dist/cjs/tests/snapshot-a11y-resolvers.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js +294 -0
- package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-capture-orchestration.test.js +403 -0
- package/dist/cjs/tests/snapshot-capture-orchestration.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-cbor.test.js +197 -0
- package/dist/cjs/tests/snapshot-cbor.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-dom-session-builders.test.js +246 -0
- package/dist/cjs/tests/snapshot-dom-session-builders.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-dom-tree-utils.test.js +104 -0
- package/dist/cjs/tests/snapshot-dom-tree-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js +45 -0
- package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-frame-merge.test.js +388 -0
- package/dist/cjs/tests/snapshot-frame-merge.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-tree-format-utils.test.js +106 -0
- package/dist/cjs/tests/snapshot-tree-format-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-xpath-utils.test.js +74 -0
- package/dist/cjs/tests/snapshot-xpath-utils.test.js.map +7 -0
- package/dist/cjs/tests/timeout-handlers.test.js +864 -0
- package/dist/cjs/tests/timeout-handlers.test.js.map +7 -0
- package/dist/cjs/tests/xpath-parser.test.js +314 -0
- package/dist/cjs/tests/xpath-parser.test.js.map +7 -0
- package/dist/cjs/tests/xpath-resolver.test.js +70 -0
- package/dist/cjs/tests/xpath-resolver.test.js.map +7 -0
- package/dist/cjs/tests/zod-enum-compatibility.test.js +119 -0
- package/dist/cjs/tests/zod-enum-compatibility.test.js.map +7 -0
- package/dist/esm/lib/modelUtils.d.ts +0 -3
- package/dist/esm/lib/modelUtils.js +2 -7
- package/dist/esm/lib/modelUtils.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/act.d.ts +1 -2
- package/dist/esm/lib/v3/agent/tools/act.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/extract.d.ts +1 -2
- package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/fillform.d.ts +1 -2
- package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/index.d.ts +2 -2
- package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
- package/dist/esm/lib/v3/cli.d.ts +2 -0
- package/dist/esm/lib/v3/cli.js +10 -0
- package/dist/esm/lib/v3/cli.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/rerender-index.d.ts +0 -0
- package/dist/esm/lib/v3/dom/build/rerender-index.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/v3-index.d.ts +0 -0
- package/dist/esm/lib/v3/dom/build/v3-index.js.map +1 -0
- package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +2 -2
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
- package/dist/esm/lib/v3/index.d.ts +1 -0
- package/dist/esm/lib/v3/index.js +1 -0
- package/dist/esm/lib/v3/index.js.map +1 -1
- package/dist/esm/lib/v3/shutdown/supervisor.d.ts +7 -5
- package/dist/esm/lib/v3/shutdown/supervisor.js +62 -52
- package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -1
- package/dist/esm/lib/v3/shutdown/supervisorClient.js +48 -52
- package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -1
- package/dist/esm/lib/v3/tests/click-count.spec.js +47 -12
- package/dist/esm/lib/v3/tests/click-count.spec.js.map +2 -2
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +67 -21
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +2 -2
- package/dist/esm/lib/v3/tests/v3.playwright.config.js +3 -60
- package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +2 -2
- package/dist/esm/lib/v3/types/private/shutdown.d.ts +1 -13
- package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -1
- package/dist/esm/lib/v3/understudy/context.js +10 -1
- package/dist/esm/lib/v3/understudy/context.js.map +1 -1
- package/dist/esm/lib/v3/understudy/locator.js +2 -2
- package/dist/esm/lib/v3/understudy/locator.js.map +1 -1
- package/dist/esm/lib/v3/understudy/page.js +2 -1
- package/dist/esm/lib/v3/understudy/page.js.map +1 -1
- package/dist/esm/lib/v3/v3.js +10 -13
- package/dist/esm/lib/v3/v3.js.map +1 -1
- package/dist/esm/tests/public-api/export-surface.test.js +1 -0
- package/dist/esm/tests/public-api/export-surface.test.js.map +2 -2
- package/package.json +13 -9
- package/dist/esm/lib/v3/tests/envReporter.js +0 -57
- package/dist/esm/lib/v3/tests/envReporter.js.map +0 -7
- package/dist/esm/tests/agent-execution-model.test.js +0 -139
- package/dist/esm/tests/agent-execution-model.test.js.map +0 -7
- package/dist/esm/tests/model-utils.test.js +0 -43
- package/dist/esm/tests/model-utils.test.js.map +0 -7
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
var import_test = require("@playwright/test");
|
|
2
|
+
var import_v3 = require("../v3.js");
|
|
3
|
+
var import_v3_dynamic_config = require("./v3.dynamic.config.js");
|
|
4
|
+
var import_testUtils = require("./testUtils.js");
|
|
5
|
+
import_test.test.describe("V3 Multi-Instance Logger Isolation", () => {
|
|
6
|
+
import_test.test.describe.configure({ mode: "serial" });
|
|
7
|
+
import_test.test.setTimeout(12e4);
|
|
8
|
+
(0, import_test.test)("multiple V3 instances can be created concurrently without logger conflicts", async () => {
|
|
9
|
+
const instanceCount = 5;
|
|
10
|
+
const instances = [];
|
|
11
|
+
const instanceLogs = /* @__PURE__ */ new Map();
|
|
12
|
+
try {
|
|
13
|
+
const creationPromises = Array.from({ length: instanceCount }, (_, i) => {
|
|
14
|
+
const logs = [];
|
|
15
|
+
instanceLogs.set(i, logs);
|
|
16
|
+
const config = (0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
17
|
+
verbose: 2,
|
|
18
|
+
disablePino: true,
|
|
19
|
+
logger: (line) => {
|
|
20
|
+
logs.push({
|
|
21
|
+
...line,
|
|
22
|
+
auxiliary: {
|
|
23
|
+
...line.auxiliary,
|
|
24
|
+
index: { value: String(i), type: "integer" }
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const v3 = new import_v3.V3(config);
|
|
30
|
+
instances.push(v3);
|
|
31
|
+
return v3.init();
|
|
32
|
+
});
|
|
33
|
+
await Promise.all(creationPromises);
|
|
34
|
+
(0, import_test.expect)(instances.length).toBe(instanceCount);
|
|
35
|
+
for (const instance of instances) {
|
|
36
|
+
(0, import_test.expect)(instance.context).toBeDefined();
|
|
37
|
+
}
|
|
38
|
+
await Promise.all(
|
|
39
|
+
instances.map(async (instance) => {
|
|
40
|
+
const page = await instance.context.awaitActivePage();
|
|
41
|
+
await page.goto("about:blank");
|
|
42
|
+
})
|
|
43
|
+
);
|
|
44
|
+
for (let i = 0; i < instanceCount; i++) {
|
|
45
|
+
const logs = instanceLogs.get(i);
|
|
46
|
+
(0, import_test.expect)(logs.length).toBeGreaterThan(0);
|
|
47
|
+
const hasOwnLogs = logs.some(
|
|
48
|
+
(log) => log.auxiliary?.index?.value === String(i) || log.category === "init"
|
|
49
|
+
);
|
|
50
|
+
(0, import_test.expect)(hasOwnLogs).toBe(true);
|
|
51
|
+
}
|
|
52
|
+
} finally {
|
|
53
|
+
await Promise.all(instances.map((instance) => (0, import_testUtils.closeV3)(instance)));
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
(0, import_test.test)("V3 instances with external loggers don't leak logs to each other", async () => {
|
|
57
|
+
const instance1Logs = [];
|
|
58
|
+
const instance2Logs = [];
|
|
59
|
+
const v3Instance1 = new import_v3.V3(
|
|
60
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
61
|
+
verbose: 2,
|
|
62
|
+
disablePino: true,
|
|
63
|
+
logger: (line) => instance1Logs.push(line)
|
|
64
|
+
})
|
|
65
|
+
);
|
|
66
|
+
const v3Instance2 = new import_v3.V3(
|
|
67
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
68
|
+
verbose: 2,
|
|
69
|
+
disablePino: true,
|
|
70
|
+
logger: (line) => instance2Logs.push(line)
|
|
71
|
+
})
|
|
72
|
+
);
|
|
73
|
+
try {
|
|
74
|
+
await Promise.all([v3Instance1.init(), v3Instance2.init()]);
|
|
75
|
+
const page1 = await v3Instance1.context.awaitActivePage();
|
|
76
|
+
await page1.goto("about:blank");
|
|
77
|
+
const page2 = await v3Instance2.context.awaitActivePage();
|
|
78
|
+
await page2.goto("data:text/html,<h1>Instance 2</h1>");
|
|
79
|
+
(0, import_test.expect)(instance1Logs.length).toBeGreaterThan(0);
|
|
80
|
+
(0, import_test.expect)(instance2Logs.length).toBeGreaterThan(0);
|
|
81
|
+
const instance1Messages = new Set(instance1Logs.map((l) => l.message));
|
|
82
|
+
const instance2Messages = new Set(instance2Logs.map((l) => l.message));
|
|
83
|
+
const allMessages = /* @__PURE__ */ new Set([...instance1Messages, ...instance2Messages]);
|
|
84
|
+
(0, import_test.expect)(allMessages.size).toBeGreaterThanOrEqual(
|
|
85
|
+
Math.max(instance1Messages.size, instance2Messages.size)
|
|
86
|
+
);
|
|
87
|
+
} finally {
|
|
88
|
+
await Promise.all([(0, import_testUtils.closeV3)(v3Instance1), (0, import_testUtils.closeV3)(v3Instance2)]);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
(0, import_test.test)("V3 instances without external loggers use shared global logger", async () => {
|
|
92
|
+
const v3Instance1 = new import_v3.V3(
|
|
93
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
94
|
+
verbose: 1,
|
|
95
|
+
disablePino: true
|
|
96
|
+
})
|
|
97
|
+
);
|
|
98
|
+
const v3Instance2 = new import_v3.V3(
|
|
99
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
100
|
+
verbose: 1,
|
|
101
|
+
disablePino: true
|
|
102
|
+
})
|
|
103
|
+
);
|
|
104
|
+
try {
|
|
105
|
+
await Promise.all([v3Instance1.init(), v3Instance2.init()]);
|
|
106
|
+
(0, import_test.expect)(v3Instance1.context).toBeDefined();
|
|
107
|
+
(0, import_test.expect)(v3Instance2.context).toBeDefined();
|
|
108
|
+
const page1 = await v3Instance1.context.awaitActivePage();
|
|
109
|
+
const page2 = await v3Instance2.context.awaitActivePage();
|
|
110
|
+
await Promise.all([page1.goto("about:blank"), page2.goto("about:blank")]);
|
|
111
|
+
(0, import_test.expect)(page1.url()).toContain("about:blank");
|
|
112
|
+
(0, import_test.expect)(page2.url()).toContain("about:blank");
|
|
113
|
+
} finally {
|
|
114
|
+
await Promise.all([(0, import_testUtils.closeV3)(v3Instance1), (0, import_testUtils.closeV3)(v3Instance2)]);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
(0, import_test.test)("rapidly creating and destroying instances doesn't cause logger issues", async () => {
|
|
118
|
+
const iterations = 5;
|
|
119
|
+
const results = [];
|
|
120
|
+
for (let i = 0; i < iterations; i++) {
|
|
121
|
+
const logs = [];
|
|
122
|
+
const v3 = new import_v3.V3(
|
|
123
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
124
|
+
verbose: 1,
|
|
125
|
+
// Capture INFO logs for verification
|
|
126
|
+
disablePino: true,
|
|
127
|
+
logger: (line) => logs.push(line)
|
|
128
|
+
})
|
|
129
|
+
);
|
|
130
|
+
try {
|
|
131
|
+
await v3.init();
|
|
132
|
+
const page = await v3.context.awaitActivePage();
|
|
133
|
+
await page.goto("about:blank");
|
|
134
|
+
results.push(true);
|
|
135
|
+
(0, import_test.expect)(logs.length).toBeGreaterThan(0);
|
|
136
|
+
} finally {
|
|
137
|
+
await (0, import_testUtils.closeV3)(v3);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
(0, import_test.expect)(results.length).toBe(iterations);
|
|
141
|
+
(0, import_test.expect)(results.every((r) => r === true)).toBe(true);
|
|
142
|
+
});
|
|
143
|
+
(0, import_test.test)("concurrent instance creation with mixed logger configurations", async () => {
|
|
144
|
+
const instances = [];
|
|
145
|
+
const configs = [
|
|
146
|
+
// With Pino disabled
|
|
147
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({ verbose: 1, disablePino: true }),
|
|
148
|
+
// With external logger
|
|
149
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
150
|
+
verbose: 2,
|
|
151
|
+
disablePino: true,
|
|
152
|
+
//eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
153
|
+
logger: (_line) => {
|
|
154
|
+
}
|
|
155
|
+
}),
|
|
156
|
+
// Without external logger
|
|
157
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({ verbose: 0, disablePino: true }),
|
|
158
|
+
// High verbosity
|
|
159
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({ verbose: 2, disablePino: true })
|
|
160
|
+
];
|
|
161
|
+
try {
|
|
162
|
+
const creationPromises = configs.map((config) => {
|
|
163
|
+
const v3 = new import_v3.V3(config);
|
|
164
|
+
instances.push(v3);
|
|
165
|
+
return v3.init();
|
|
166
|
+
});
|
|
167
|
+
await Promise.all(creationPromises);
|
|
168
|
+
(0, import_test.expect)(instances.length).toBe(configs.length);
|
|
169
|
+
for (const instance of instances) {
|
|
170
|
+
(0, import_test.expect)(instance.context).toBeDefined();
|
|
171
|
+
}
|
|
172
|
+
await Promise.all(
|
|
173
|
+
instances.map(async (instance) => {
|
|
174
|
+
const page = await instance.context.awaitActivePage();
|
|
175
|
+
await page.goto("about:blank");
|
|
176
|
+
(0, import_test.expect)(page.url()).toContain("about:blank");
|
|
177
|
+
})
|
|
178
|
+
);
|
|
179
|
+
} finally {
|
|
180
|
+
await Promise.all(instances.map((instance) => (0, import_testUtils.closeV3)(instance)));
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
(0, import_test.test)("V3 instance logger is properly cleaned up on close", async () => {
|
|
184
|
+
const logs = [];
|
|
185
|
+
const v3 = new import_v3.V3(
|
|
186
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
187
|
+
verbose: 2,
|
|
188
|
+
disablePino: true,
|
|
189
|
+
logger: (line) => logs.push(line)
|
|
190
|
+
})
|
|
191
|
+
);
|
|
192
|
+
await v3.init();
|
|
193
|
+
const initialLogCount = logs.length;
|
|
194
|
+
(0, import_test.expect)(initialLogCount).toBeGreaterThan(0);
|
|
195
|
+
await (0, import_testUtils.closeV3)(v3);
|
|
196
|
+
(0, import_test.expect)(v3["state"].kind).toBe("UNINITIALIZED");
|
|
197
|
+
});
|
|
198
|
+
(0, import_test.test)("logger works correctly across instance lifecycle", async () => {
|
|
199
|
+
const logs = [];
|
|
200
|
+
const v3 = new import_v3.V3(
|
|
201
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
202
|
+
verbose: 2,
|
|
203
|
+
disablePino: true,
|
|
204
|
+
logger: (line) => logs.push(line)
|
|
205
|
+
})
|
|
206
|
+
);
|
|
207
|
+
try {
|
|
208
|
+
(0, import_test.expect)(logs.length).toBe(0);
|
|
209
|
+
await v3.init();
|
|
210
|
+
const afterInitCount = logs.length;
|
|
211
|
+
(0, import_test.expect)(afterInitCount).toBeGreaterThan(0);
|
|
212
|
+
const page = await v3.context.awaitActivePage();
|
|
213
|
+
await page.goto("data:text/html,<h1>Test</h1>");
|
|
214
|
+
const afterOperationCount = logs.length;
|
|
215
|
+
(0, import_test.expect)(afterOperationCount).toBeGreaterThanOrEqual(afterInitCount);
|
|
216
|
+
const initLogs = logs.filter((log) => log.category === "init");
|
|
217
|
+
(0, import_test.expect)(initLogs.length).toBeGreaterThan(0);
|
|
218
|
+
for (const log of logs) {
|
|
219
|
+
(0, import_test.expect)(log.category).toBeDefined();
|
|
220
|
+
(0, import_test.expect)(log.message).toBeDefined();
|
|
221
|
+
(0, import_test.expect)(typeof log.level).toBe("number");
|
|
222
|
+
}
|
|
223
|
+
} finally {
|
|
224
|
+
await (0, import_testUtils.closeV3)(v3);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
(0, import_test.test)("multiple instances can navigate concurrently without logger interference", async () => {
|
|
228
|
+
const instanceCount = 3;
|
|
229
|
+
const instances = [];
|
|
230
|
+
const instanceLogs = /* @__PURE__ */ new Map();
|
|
231
|
+
try {
|
|
232
|
+
for (let i = 0; i < instanceCount; i++) {
|
|
233
|
+
const logs = [];
|
|
234
|
+
instanceLogs.set(i, logs);
|
|
235
|
+
const v3 = new import_v3.V3(
|
|
236
|
+
(0, import_v3_dynamic_config.getV3DynamicTestConfig)({
|
|
237
|
+
verbose: 1,
|
|
238
|
+
disablePino: true,
|
|
239
|
+
logger: (line) => logs.push(line)
|
|
240
|
+
})
|
|
241
|
+
);
|
|
242
|
+
instances.push(v3);
|
|
243
|
+
await v3.init();
|
|
244
|
+
}
|
|
245
|
+
const urls = [
|
|
246
|
+
"data:text/html,<h1>Page 1</h1>",
|
|
247
|
+
"data:text/html,<h1>Page 2</h1>",
|
|
248
|
+
"data:text/html,<h1>Page 3</h1>"
|
|
249
|
+
];
|
|
250
|
+
await Promise.all(
|
|
251
|
+
instances.map(async (instance, i) => {
|
|
252
|
+
const page = await instance.context.awaitActivePage();
|
|
253
|
+
await page.goto(urls[i]);
|
|
254
|
+
})
|
|
255
|
+
);
|
|
256
|
+
for (let i = 0; i < instanceCount; i++) {
|
|
257
|
+
const page = await instances[i].context.awaitActivePage();
|
|
258
|
+
(0, import_test.expect)(page.url()).toContain(`Page ${i + 1}`);
|
|
259
|
+
}
|
|
260
|
+
for (let i = 0; i < instanceCount; i++) {
|
|
261
|
+
const logs = instanceLogs.get(i);
|
|
262
|
+
(0, import_test.expect)(logs.length).toBeGreaterThan(0);
|
|
263
|
+
}
|
|
264
|
+
} finally {
|
|
265
|
+
await Promise.all(instances.map((instance) => (0, import_testUtils.closeV3)(instance)));
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
//# sourceMappingURL=multi-instance-logger.spec.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../lib/v3/tests/multi-instance-logger.spec.ts"],
|
|
4
|
+
"sourcesContent": ["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../v3.js\";\nimport { getV3DynamicTestConfig } from \"./v3.dynamic.config.js\";\nimport type { LogLine } from \"../types/public/logs.js\";\nimport { closeV3 } from \"./testUtils.js\";\n\ntest.describe(\"V3 Multi-Instance Logger Isolation\", () => {\n // Run tests serially to avoid resource exhaustion from creating many Chrome instances\n test.describe.configure({ mode: \"serial\" });\n // Increase timeout for stress tests that create/destroy multiple instances\n test.setTimeout(120_000);\n\n test(\"multiple V3 instances can be created concurrently without logger conflicts\", async () => {\n const instanceCount = 5;\n const instances: V3[] = [];\n const instanceLogs: Map<number, LogLine[]> = new Map();\n\n try {\n // Create multiple instances with individual loggers\n const creationPromises = Array.from({ length: instanceCount }, (_, i) => {\n const logs: LogLine[] = [];\n instanceLogs.set(i, logs);\n\n const config = getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => {\n logs.push({\n ...line,\n auxiliary: {\n ...line.auxiliary,\n index: { value: String(i), type: \"integer\" },\n },\n });\n },\n });\n\n const v3 = new V3(config);\n instances.push(v3);\n return v3.init();\n });\n\n // All instances should initialize successfully\n await Promise.all(creationPromises);\n\n // Each instance should be initialized\n expect(instances.length).toBe(instanceCount);\n for (const instance of instances) {\n expect(instance.context).toBeDefined();\n }\n\n // Perform operations that generate logs\n await Promise.all(\n instances.map(async (instance) => {\n const page = await instance.context.awaitActivePage();\n await page.goto(\"about:blank\");\n }),\n );\n\n // Each instance should have logged to its own logger\n for (let i = 0; i < instanceCount; i++) {\n const logs = instanceLogs.get(i)!;\n // Each instance should have some logs\n expect(logs.length).toBeGreaterThan(0);\n\n // Logs should not contain data from other instances\n // (though this is harder to verify without more specific markers)\n const hasOwnLogs = logs.some(\n (log) =>\n log.auxiliary?.index?.value === String(i) ||\n log.category === \"init\",\n );\n expect(hasOwnLogs).toBe(true);\n }\n } finally {\n // Clean up all instances\n await Promise.all(instances.map((instance) => closeV3(instance)));\n }\n });\n\n test(\"V3 instances with external loggers don't leak logs to each other\", async () => {\n const instance1Logs: LogLine[] = [];\n const instance2Logs: LogLine[] = [];\n\n const v3Instance1 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => instance1Logs.push(line),\n }),\n );\n\n const v3Instance2 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => instance2Logs.push(line),\n }),\n );\n\n try {\n // Initialize both instances\n await Promise.all([v3Instance1.init(), v3Instance2.init()]);\n\n // Perform operations on each instance\n const page1 = await v3Instance1.context.awaitActivePage();\n await page1.goto(\"about:blank\");\n\n const page2 = await v3Instance2.context.awaitActivePage();\n await page2.goto(\"data:text/html,<h1>Instance 2</h1>\");\n\n // Both instances should have logs\n expect(instance1Logs.length).toBeGreaterThan(0);\n expect(instance2Logs.length).toBeGreaterThan(0);\n\n // Logs should be distinct (no exact duplicates)\n // This is a weak check, but verifies basic isolation\n const instance1Messages = new Set(instance1Logs.map((l) => l.message));\n const instance2Messages = new Set(instance2Logs.map((l) => l.message));\n\n // At least some messages should be unique to each instance\n // (This might not always be true for very generic messages like \"init\",\n // but serves as a smoke test)\n const allMessages = new Set([...instance1Messages, ...instance2Messages]);\n expect(allMessages.size).toBeGreaterThanOrEqual(\n Math.max(instance1Messages.size, instance2Messages.size),\n );\n } finally {\n await Promise.all([closeV3(v3Instance1), closeV3(v3Instance2)]);\n }\n });\n\n test(\"V3 instances without external loggers use shared global logger\", async () => {\n // Create instances without external loggers\n const v3Instance1 = new V3(\n getV3DynamicTestConfig({\n verbose: 1,\n disablePino: true,\n }),\n );\n\n const v3Instance2 = new V3(\n getV3DynamicTestConfig({\n verbose: 1,\n disablePino: true,\n }),\n );\n\n try {\n // Initialize both instances concurrently\n await Promise.all([v3Instance1.init(), v3Instance2.init()]);\n\n // Both should work fine\n expect(v3Instance1.context).toBeDefined();\n expect(v3Instance2.context).toBeDefined();\n\n // Perform basic operations to ensure logging doesn't cause issues\n const page1 = await v3Instance1.context.awaitActivePage();\n const page2 = await v3Instance2.context.awaitActivePage();\n\n await Promise.all([page1.goto(\"about:blank\"), page2.goto(\"about:blank\")]);\n\n // Both should still be operational\n expect(page1.url()).toContain(\"about:blank\");\n expect(page2.url()).toContain(\"about:blank\");\n } finally {\n await Promise.all([closeV3(v3Instance1), closeV3(v3Instance2)]);\n }\n });\n\n test(\"rapidly creating and destroying instances doesn't cause logger issues\", async () => {\n const iterations = 5;\n const results: boolean[] = [];\n\n for (let i = 0; i < iterations; i++) {\n const logs: LogLine[] = [];\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 1, // Capture INFO logs for verification\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n try {\n await v3.init();\n const page = await v3.context.awaitActivePage();\n await page.goto(\"about:blank\");\n results.push(true);\n\n // Verify some logs were captured\n expect(logs.length).toBeGreaterThan(0);\n } finally {\n await closeV3(v3);\n }\n }\n\n // All iterations should succeed\n expect(results.length).toBe(iterations);\n expect(results.every((r) => r === true)).toBe(true);\n });\n\n test(\"concurrent instance creation with mixed logger configurations\", async () => {\n const instances: V3[] = [];\n const configs = [\n // With Pino disabled\n getV3DynamicTestConfig({ verbose: 1, disablePino: true }),\n // With external logger\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n //eslint-disable-next-line @typescript-eslint/no-unused-vars\n logger: (_line: LogLine) => {\n // External logger\n },\n }),\n // Without external logger\n getV3DynamicTestConfig({ verbose: 0, disablePino: true }),\n // High verbosity\n getV3DynamicTestConfig({ verbose: 2, disablePino: true }),\n ];\n\n try {\n // Create all instances concurrently\n const creationPromises = configs.map((config) => {\n const v3 = new V3(config);\n instances.push(v3);\n return v3.init();\n });\n\n await Promise.all(creationPromises);\n\n // All should be initialized successfully\n expect(instances.length).toBe(configs.length);\n for (const instance of instances) {\n expect(instance.context).toBeDefined();\n }\n\n // All should be able to perform operations\n await Promise.all(\n instances.map(async (instance) => {\n const page = await instance.context.awaitActivePage();\n await page.goto(\"about:blank\");\n expect(page.url()).toContain(\"about:blank\");\n }),\n );\n } finally {\n await Promise.all(instances.map((instance) => closeV3(instance)));\n }\n });\n\n test(\"V3 instance logger is properly cleaned up on close\", async () => {\n const logs: LogLine[] = [];\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n await v3.init();\n const initialLogCount = logs.length;\n expect(initialLogCount).toBeGreaterThan(0);\n\n await closeV3(v3);\n\n // After close, the instance should not generate new logs\n // (This is hard to test directly, but we can verify the instance is closed)\n expect(v3[\"state\"].kind).toBe(\"UNINITIALIZED\");\n });\n\n test(\"logger works correctly across instance lifecycle\", async () => {\n const logs: LogLine[] = [];\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 2,\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n try {\n // Before init\n expect(logs.length).toBe(0);\n\n // After init\n await v3.init();\n const afterInitCount = logs.length;\n expect(afterInitCount).toBeGreaterThan(0);\n\n // During operation\n const page = await v3.context.awaitActivePage();\n await page.goto(\"data:text/html,<h1>Test</h1>\");\n const afterOperationCount = logs.length;\n expect(afterOperationCount).toBeGreaterThanOrEqual(afterInitCount);\n\n // Verify log structure\n const initLogs = logs.filter((log) => log.category === \"init\");\n expect(initLogs.length).toBeGreaterThan(0);\n\n // All logs should have required fields\n for (const log of logs) {\n expect(log.category).toBeDefined();\n expect(log.message).toBeDefined();\n expect(typeof log.level).toBe(\"number\");\n }\n } finally {\n await closeV3(v3);\n }\n });\n\n test(\"multiple instances can navigate concurrently without logger interference\", async () => {\n const instanceCount = 3;\n const instances: V3[] = [];\n const instanceLogs: Map<number, LogLine[]> = new Map();\n\n try {\n // Create instances\n for (let i = 0; i < instanceCount; i++) {\n const logs: LogLine[] = [];\n instanceLogs.set(i, logs);\n\n const v3 = new V3(\n getV3DynamicTestConfig({\n verbose: 1,\n disablePino: true,\n logger: (line: LogLine) => logs.push(line),\n }),\n );\n\n instances.push(v3);\n await v3.init();\n }\n\n // Navigate all instances concurrently to different URLs\n const urls = [\n \"data:text/html,<h1>Page 1</h1>\",\n \"data:text/html,<h1>Page 2</h1>\",\n \"data:text/html,<h1>Page 3</h1>\",\n ];\n\n await Promise.all(\n instances.map(async (instance, i) => {\n const page = await instance.context.awaitActivePage();\n await page.goto(urls[i]);\n }),\n );\n\n // Verify each instance navigated to the correct URL\n for (let i = 0; i < instanceCount; i++) {\n const page = await instances[i].context.awaitActivePage();\n expect(page.url()).toContain(`Page ${i + 1}`);\n }\n\n // Each instance should have its own logs\n for (let i = 0; i < instanceCount; i++) {\n const logs = instanceLogs.get(i)!;\n expect(logs.length).toBeGreaterThan(0);\n }\n } finally {\n await Promise.all(instances.map((instance) => closeV3(instance)));\n }\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var import_test = require("@playwright/test");
|
|
2
|
+
var import_v3 = require("../v3.js");
|
|
3
|
+
var import_snapshot = require("../understudy/a11y/snapshot/index.js");
|
|
4
|
+
var import_v3_config = require("./v3.config.js");
|
|
5
|
+
import_test.test.describe("tests captureHybridSnapshot() does not break due to -32000 Failed to convert response to JSON: CBOR: stack limit exceeded", () => {
|
|
6
|
+
let v3;
|
|
7
|
+
import_test.test.beforeEach(async () => {
|
|
8
|
+
v3 = new import_v3.V3(import_v3_config.v3TestConfig);
|
|
9
|
+
await v3.init();
|
|
10
|
+
});
|
|
11
|
+
import_test.test.afterEach(async () => {
|
|
12
|
+
await v3?.close?.().catch(() => {
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
(0, import_test.test)("captureHybridSnapshot does not throw", async () => {
|
|
16
|
+
const page = v3.context.pages()[0];
|
|
17
|
+
await page.goto(
|
|
18
|
+
"https://browserbase.github.io/stagehand-eval-sites/sites/nested-div/"
|
|
19
|
+
);
|
|
20
|
+
await (0, import_test.expect)((0, import_snapshot.captureHybridSnapshot)(page)).resolves.toBeDefined();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=nested-div.spec.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../lib/v3/tests/nested-div.spec.ts"],
|
|
4
|
+
"sourcesContent": ["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../v3.js\";\nimport { captureHybridSnapshot } from \"../understudy/a11y/snapshot/index.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\n\ntest.describe(\"tests captureHybridSnapshot() does not break due to -32000 Failed to convert response to JSON: CBOR: stack limit exceeded\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3(v3TestConfig);\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"captureHybridSnapshot does not throw\", async () => {\n const page = v3.context.pages()[0];\n\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/nested-div/\",\n );\n\n await expect(captureHybridSnapshot(page)).resolves.toBeDefined();\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,kBAA6B;AAC7B,gBAAmB;AACnB,sBAAsC;AACtC,uBAA6B;AAE7B,iBAAK,SAAS,6HAA6H,MAAM;AAC/I,MAAI;AAEJ,mBAAK,WAAW,YAAY;AAC1B,SAAK,IAAI,aAAG,6BAAY;AACxB,UAAM,GAAG,KAAK;AAAA,EAChB,CAAC;AAED,mBAAK,UAAU,YAAY;AACzB,UAAM,IAAI,QAAQ,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACpC,CAAC;AAED,wBAAK,wCAAwC,YAAY;AACvD,UAAM,OAAO,GAAG,QAAQ,MAAM,EAAE,CAAC;AAEjC,UAAM,KAAK;AAAA,MACT;AAAA,IACF;AAEA,cAAM,wBAAO,uCAAsB,IAAI,CAAC,EAAE,SAAS,YAAY;AAAA,EACjE,CAAC;AACH,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
var import_test = require("@playwright/test");
|
|
2
|
+
var import_v3 = require("../v3.js");
|
|
3
|
+
var import_v3_config = require("./v3.config.js");
|
|
4
|
+
const EXAMPLE_URL = "https://example.com";
|
|
5
|
+
import_test.test.describe("page.addInitScript", () => {
|
|
6
|
+
let v3;
|
|
7
|
+
let ctx;
|
|
8
|
+
import_test.test.beforeEach(async () => {
|
|
9
|
+
v3 = new import_v3.V3(import_v3_config.v3TestConfig);
|
|
10
|
+
await v3.init();
|
|
11
|
+
ctx = v3.context;
|
|
12
|
+
});
|
|
13
|
+
import_test.test.afterEach(async () => {
|
|
14
|
+
await v3?.close?.().catch(() => {
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
(0, import_test.test)("runs scripts on real network navigations", async () => {
|
|
18
|
+
const page = await ctx.awaitActivePage();
|
|
19
|
+
await page.addInitScript(() => {
|
|
20
|
+
window.__fromPageInit = "page-level";
|
|
21
|
+
});
|
|
22
|
+
await page.goto(EXAMPLE_URL, { waitUntil: "domcontentloaded" });
|
|
23
|
+
const observed = await page.evaluate(() => {
|
|
24
|
+
return window.__fromPageInit;
|
|
25
|
+
});
|
|
26
|
+
(0, import_test.expect)(observed).toBe("page-level");
|
|
27
|
+
});
|
|
28
|
+
(0, import_test.test)("scopes scripts to the page only", async () => {
|
|
29
|
+
const first = await ctx.awaitActivePage();
|
|
30
|
+
await first.addInitScript(`
|
|
31
|
+
(function () {
|
|
32
|
+
function markScope() {
|
|
33
|
+
var root = document.documentElement;
|
|
34
|
+
if (!root) return;
|
|
35
|
+
root.dataset.scopeWitness = "page-one";
|
|
36
|
+
}
|
|
37
|
+
if (document.readyState === "loading") {
|
|
38
|
+
document.addEventListener("DOMContentLoaded", markScope, {
|
|
39
|
+
once: true,
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
markScope();
|
|
43
|
+
}
|
|
44
|
+
})();
|
|
45
|
+
`);
|
|
46
|
+
await first.goto(`${EXAMPLE_URL}/?page=one`, {
|
|
47
|
+
waitUntil: "domcontentloaded"
|
|
48
|
+
});
|
|
49
|
+
const second = await ctx.newPage();
|
|
50
|
+
await second.goto(`${EXAMPLE_URL}/?page=two`, {
|
|
51
|
+
waitUntil: "domcontentloaded"
|
|
52
|
+
});
|
|
53
|
+
const firstValue = await first.evaluate(() => {
|
|
54
|
+
return document.documentElement.dataset.scopeWitness ?? "missing";
|
|
55
|
+
});
|
|
56
|
+
const secondValue = await second.evaluate(() => {
|
|
57
|
+
return document.documentElement.dataset.scopeWitness ?? "missing";
|
|
58
|
+
});
|
|
59
|
+
(0, import_test.expect)(firstValue).toBe("page-one");
|
|
60
|
+
(0, import_test.expect)(secondValue).toBe("missing");
|
|
61
|
+
});
|
|
62
|
+
(0, import_test.test)("supports passing arguments to function sources", async () => {
|
|
63
|
+
const page = await ctx.awaitActivePage();
|
|
64
|
+
const payload = { greeting: "hi", nested: { count: 1 } };
|
|
65
|
+
const initPayload = (arg) => {
|
|
66
|
+
function setPayload() {
|
|
67
|
+
const root = document.documentElement;
|
|
68
|
+
if (!root) return;
|
|
69
|
+
root.dataset.pageInitPayload = JSON.stringify(arg);
|
|
70
|
+
}
|
|
71
|
+
if (document.readyState === "loading") {
|
|
72
|
+
document.addEventListener("DOMContentLoaded", setPayload, {
|
|
73
|
+
once: true
|
|
74
|
+
});
|
|
75
|
+
} else {
|
|
76
|
+
setPayload();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
await page.addInitScript(initPayload, payload);
|
|
80
|
+
await page.goto(`${EXAMPLE_URL}/?page=payload`, {
|
|
81
|
+
waitUntil: "domcontentloaded"
|
|
82
|
+
});
|
|
83
|
+
const observed = await page.evaluate(() => {
|
|
84
|
+
const raw = document.documentElement.dataset.pageInitPayload;
|
|
85
|
+
return raw ? JSON.parse(raw) : void 0;
|
|
86
|
+
});
|
|
87
|
+
(0, import_test.expect)(observed).toEqual(payload);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=page-addInitScript.spec.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../lib/v3/tests/page-addInitScript.spec.ts"],
|
|
4
|
+
"sourcesContent": ["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport { V3Context } from \"../understudy/context.js\";\n\nconst EXAMPLE_URL = \"https://example.com\";\n\ntest.describe(\"page.addInitScript\", () => {\n let v3: V3;\n let ctx: V3Context;\n\n test.beforeEach(async () => {\n v3 = new V3(v3TestConfig);\n await v3.init();\n ctx = v3.context;\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"runs scripts on real network navigations\", async () => {\n const page = await ctx.awaitActivePage();\n\n await page.addInitScript(() => {\n (window as unknown as { __fromPageInit?: string }).__fromPageInit =\n \"page-level\";\n });\n\n await page.goto(EXAMPLE_URL, { waitUntil: \"domcontentloaded\" });\n\n const observed = await page.evaluate(() => {\n return (window as unknown as { __fromPageInit?: string }).__fromPageInit;\n });\n\n expect(observed).toBe(\"page-level\");\n });\n\n test(\"scopes scripts to the page only\", async () => {\n const first = await ctx.awaitActivePage();\n\n await first.addInitScript(`\n (function () {\n function markScope() {\n var root = document.documentElement;\n if (!root) return;\n root.dataset.scopeWitness = \"page-one\";\n }\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", markScope, {\n once: true,\n });\n } else {\n markScope();\n }\n })();\n `);\n\n await first.goto(`${EXAMPLE_URL}/?page=one`, {\n waitUntil: \"domcontentloaded\",\n });\n\n const second = await ctx.newPage();\n await second.goto(`${EXAMPLE_URL}/?page=two`, {\n waitUntil: \"domcontentloaded\",\n });\n\n const firstValue = await first.evaluate(() => {\n return document.documentElement.dataset.scopeWitness ?? \"missing\";\n });\n const secondValue = await second.evaluate(() => {\n return document.documentElement.dataset.scopeWitness ?? \"missing\";\n });\n\n expect(firstValue).toBe(\"page-one\");\n expect(secondValue).toBe(\"missing\");\n });\n\n test(\"supports passing arguments to function sources\", async () => {\n const page = await ctx.awaitActivePage();\n const payload = { greeting: \"hi\", nested: { count: 1 } };\n\n const initPayload = ((arg) => {\n function setPayload() {\n const root = document.documentElement;\n if (!root) return;\n root.dataset.pageInitPayload = JSON.stringify(arg);\n }\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", setPayload, {\n once: true,\n });\n } else {\n setPayload();\n }\n }) as (arg: typeof payload) => void;\n await page.addInitScript(initPayload, payload);\n\n await page.goto(`${EXAMPLE_URL}/?page=payload`, {\n waitUntil: \"domcontentloaded\",\n });\n\n const observed = await page.evaluate(() => {\n const raw = document.documentElement.dataset.pageInitPayload;\n return raw ? JSON.parse(raw) : undefined;\n });\n\n expect(observed).toEqual(payload);\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,kBAA6B;AAC7B,gBAAmB;AACnB,uBAA6B;AAG7B,MAAM,cAAc;AAEpB,iBAAK,SAAS,sBAAsB,MAAM;AACxC,MAAI;AACJ,MAAI;AAEJ,mBAAK,WAAW,YAAY;AAC1B,SAAK,IAAI,aAAG,6BAAY;AACxB,UAAM,GAAG,KAAK;AACd,UAAM,GAAG;AAAA,EACX,CAAC;AAED,mBAAK,UAAU,YAAY;AACzB,UAAM,IAAI,QAAQ,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACpC,CAAC;AAED,wBAAK,4CAA4C,YAAY;AAC3D,UAAM,OAAO,MAAM,IAAI,gBAAgB;AAEvC,UAAM,KAAK,cAAc,MAAM;AAC7B,MAAC,OAAkD,iBACjD;AAAA,IACJ,CAAC;AAED,UAAM,KAAK,KAAK,aAAa,EAAE,WAAW,mBAAmB,CAAC;AAE9D,UAAM,WAAW,MAAM,KAAK,SAAS,MAAM;AACzC,aAAQ,OAAkD;AAAA,IAC5D,CAAC;AAED,4BAAO,QAAQ,EAAE,KAAK,YAAY;AAAA,EACpC,CAAC;AAED,wBAAK,mCAAmC,YAAY;AAClD,UAAM,QAAQ,MAAM,IAAI,gBAAgB;AAExC,UAAM,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAezB;AAED,UAAM,MAAM,KAAK,GAAG,WAAW,cAAc;AAAA,MAC3C,WAAW;AAAA,IACb,CAAC;AAED,UAAM,SAAS,MAAM,IAAI,QAAQ;AACjC,UAAM,OAAO,KAAK,GAAG,WAAW,cAAc;AAAA,MAC5C,WAAW;AAAA,IACb,CAAC;AAED,UAAM,aAAa,MAAM,MAAM,SAAS,MAAM;AAC5C,aAAO,SAAS,gBAAgB,QAAQ,gBAAgB;AAAA,IAC1D,CAAC;AACD,UAAM,cAAc,MAAM,OAAO,SAAS,MAAM;AAC9C,aAAO,SAAS,gBAAgB,QAAQ,gBAAgB;AAAA,IAC1D,CAAC;AAED,4BAAO,UAAU,EAAE,KAAK,UAAU;AAClC,4BAAO,WAAW,EAAE,KAAK,SAAS;AAAA,EACpC,CAAC;AAED,wBAAK,kDAAkD,YAAY;AACjE,UAAM,OAAO,MAAM,IAAI,gBAAgB;AACvC,UAAM,UAAU,EAAE,UAAU,MAAM,QAAQ,EAAE,OAAO,EAAE,EAAE;AAEvD,UAAM,cAAe,CAAC,QAAQ;AAC5B,eAAS,aAAa;AACpB,cAAM,OAAO,SAAS;AACtB,YAAI,CAAC,KAAM;AACX,aAAK,QAAQ,kBAAkB,KAAK,UAAU,GAAG;AAAA,MACnD;AACA,UAAI,SAAS,eAAe,WAAW;AACrC,iBAAS,iBAAiB,oBAAoB,YAAY;AAAA,UACxD,MAAM;AAAA,QACR,CAAC;AAAA,MACH,OAAO;AACL,mBAAW;AAAA,MACb;AAAA,IACF;AACA,UAAM,KAAK,cAAc,aAAa,OAAO;AAE7C,UAAM,KAAK,KAAK,GAAG,WAAW,kBAAkB;AAAA,MAC9C,WAAW;AAAA,IACb,CAAC;AAED,UAAM,WAAW,MAAM,KAAK,SAAS,MAAM;AACzC,YAAM,MAAM,SAAS,gBAAgB,QAAQ;AAC7C,aAAO,MAAM,KAAK,MAAM,GAAG,IAAI;AAAA,IACjC,CAAC;AAED,4BAAO,QAAQ,EAAE,QAAQ,OAAO;AAAA,EAClC,CAAC;AACH,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var import_test = require("@playwright/test");
|
|
2
|
+
var import_v3 = require("../v3.js");
|
|
3
|
+
var import_v3_config = require("./v3.config.js");
|
|
4
|
+
import_test.test.describe("Page console events", () => {
|
|
5
|
+
let v3;
|
|
6
|
+
import_test.test.beforeEach(async () => {
|
|
7
|
+
v3 = new import_v3.V3(import_v3_config.v3TestConfig);
|
|
8
|
+
await v3.init();
|
|
9
|
+
});
|
|
10
|
+
import_test.test.afterEach(async () => {
|
|
11
|
+
await v3?.close?.().catch(() => {
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
(0, import_test.test)("captures console messages emitted by the page", async () => {
|
|
15
|
+
const browserTarget = (process.env.STAGEHAND_BROWSER_TARGET ?? "local").toLowerCase();
|
|
16
|
+
const isBrowserbase = browserTarget === "browserbase";
|
|
17
|
+
if (isBrowserbase) {
|
|
18
|
+
console.warn(
|
|
19
|
+
"[page-console] TODO: re-enable once BB cloud browsers support Runtime.consoleAPICalled events again. See https://browserbase.slack.com/archives/C06U6CM7YS1/p1769483322836589"
|
|
20
|
+
);
|
|
21
|
+
import_test.test.skip(
|
|
22
|
+
true,
|
|
23
|
+
"TODO: re-enable once BB cloud browsers support Runtime.consoleAPICalled events again."
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
const page = v3.context.pages()[0];
|
|
27
|
+
const received = [];
|
|
28
|
+
page.on("console", (message) => {
|
|
29
|
+
received.push({ type: message.type(), text: message.text() });
|
|
30
|
+
});
|
|
31
|
+
await page.goto(
|
|
32
|
+
"https://browserbase.github.io/stagehand-eval-sites/sites/iframe-hn/"
|
|
33
|
+
);
|
|
34
|
+
await page.evaluate(() => {
|
|
35
|
+
console.log("stagehand console", { ok: true });
|
|
36
|
+
console.error("stagehand console error");
|
|
37
|
+
});
|
|
38
|
+
const waitForConsole = async (predicate, timeoutMs = 2e3) => {
|
|
39
|
+
const deadline = Date.now() + timeoutMs;
|
|
40
|
+
while (Date.now() < deadline) {
|
|
41
|
+
if (predicate()) return;
|
|
42
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
await waitForConsole(
|
|
46
|
+
() => received.some((m) => m.type === "log") && received.some((m) => m.type === "error" && m.text.includes("error")),
|
|
47
|
+
5e3
|
|
48
|
+
);
|
|
49
|
+
(0, import_test.expect)(received.length).toBeGreaterThanOrEqual(2);
|
|
50
|
+
(0, import_test.expect)(received.some((m) => m.type === "log")).toBeTruthy();
|
|
51
|
+
(0, import_test.expect)(
|
|
52
|
+
received.some((m) => m.type === "error" && m.text.includes("error"))
|
|
53
|
+
).toBeTruthy();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=page-console.spec.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../lib/v3/tests/page-console.spec.ts"],
|
|
4
|
+
"sourcesContent": ["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\n\ntest.describe(\"Page console events\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3(v3TestConfig);\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"captures console messages emitted by the page\", async () => {\n const browserTarget = (\n process.env.STAGEHAND_BROWSER_TARGET ?? \"local\"\n ).toLowerCase();\n const isBrowserbase = browserTarget === \"browserbase\";\n if (isBrowserbase) {\n console.warn(\n \"[page-console] TODO: re-enable once BB cloud browsers support Runtime.consoleAPICalled events again. See https://browserbase.slack.com/archives/C06U6CM7YS1/p1769483322836589\",\n );\n test.skip(\n true,\n \"TODO: re-enable once BB cloud browsers support Runtime.consoleAPICalled events again.\",\n );\n }\n const page = v3.context.pages()[0];\n const received: Array<{ type: string; text: string }> = [];\n\n page.on(\"console\", (message) => {\n received.push({ type: message.type(), text: message.text() });\n });\n\n await page.goto(\n \"https://browserbase.github.io/stagehand-eval-sites/sites/iframe-hn/\",\n );\n\n await page.evaluate(() => {\n console.log(\"stagehand console\", { ok: true });\n console.error(\"stagehand console error\");\n });\n\n const waitForConsole = async (\n predicate: () => boolean,\n timeoutMs = 2000,\n ) => {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n if (predicate()) return;\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n };\n\n await waitForConsole(\n () =>\n received.some((m) => m.type === \"log\") &&\n received.some((m) => m.type === \"error\" && m.text.includes(\"error\")),\n 5000,\n );\n\n expect(received.length).toBeGreaterThanOrEqual(2);\n expect(received.some((m) => m.type === \"log\")).toBeTruthy();\n expect(\n received.some((m) => m.type === \"error\" && m.text.includes(\"error\")),\n ).toBeTruthy();\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,kBAA6B;AAC7B,gBAAmB;AACnB,uBAA6B;AAE7B,iBAAK,SAAS,uBAAuB,MAAM;AACzC,MAAI;AAEJ,mBAAK,WAAW,YAAY;AAC1B,SAAK,IAAI,aAAG,6BAAY;AACxB,UAAM,GAAG,KAAK;AAAA,EAChB,CAAC;AAED,mBAAK,UAAU,YAAY;AACzB,UAAM,IAAI,QAAQ,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACpC,CAAC;AAED,wBAAK,iDAAiD,YAAY;AAChE,UAAM,iBACJ,QAAQ,IAAI,4BAA4B,SACxC,YAAY;AACd,UAAM,gBAAgB,kBAAkB;AACxC,QAAI,eAAe;AACjB,cAAQ;AAAA,QACN;AAAA,MACF;AACA,uBAAK;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,UAAM,OAAO,GAAG,QAAQ,MAAM,EAAE,CAAC;AACjC,UAAM,WAAkD,CAAC;AAEzD,SAAK,GAAG,WAAW,CAAC,YAAY;AAC9B,eAAS,KAAK,EAAE,MAAM,QAAQ,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,CAAC;AAAA,IAC9D,CAAC;AAED,UAAM,KAAK;AAAA,MACT;AAAA,IACF;AAEA,UAAM,KAAK,SAAS,MAAM;AACxB,cAAQ,IAAI,qBAAqB,EAAE,IAAI,KAAK,CAAC;AAC7C,cAAQ,MAAM,yBAAyB;AAAA,IACzC,CAAC;AAED,UAAM,iBAAiB,OACrB,WACA,YAAY,QACT;AACH,YAAM,WAAW,KAAK,IAAI,IAAI;AAC9B,aAAO,KAAK,IAAI,IAAI,UAAU;AAC5B,YAAI,UAAU,EAAG;AACjB,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,MACxD;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,MACE,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,KACrC,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,KAAK,SAAS,OAAO,CAAC;AAAA,MACrE;AAAA,IACF;AAEA,4BAAO,SAAS,MAAM,EAAE,uBAAuB,CAAC;AAChD,4BAAO,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,CAAC,EAAE,WAAW;AAC1D;AAAA,MACE,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,KAAK,SAAS,OAAO,CAAC;AAAA,IACrE,EAAE,WAAW;AAAA,EACf,CAAC;AACH,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|