@browserbasehq/orca 3.0.9-alpha-4 → 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/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/lib/inference.d.ts +65 -0
- package/dist/esm/lib/inference.js +333 -0
- package/dist/esm/lib/inference.js.map +1 -0
- package/dist/esm/lib/inferenceLogUtils.d.ts +12 -0
- package/dist/esm/lib/inferenceLogUtils.js +92 -0
- package/dist/esm/lib/inferenceLogUtils.js.map +1 -0
- package/dist/esm/lib/logger.d.ts +69 -0
- package/dist/esm/lib/logger.js +323 -0
- package/dist/esm/lib/logger.js.map +1 -0
- package/dist/esm/lib/modelUtils.d.ts +11 -0
- package/dist/esm/lib/modelUtils.js +43 -0
- package/dist/esm/lib/modelUtils.js.map +1 -0
- package/dist/esm/lib/prompt.d.ts +14 -0
- package/dist/esm/lib/prompt.js +230 -0
- package/dist/esm/lib/prompt.js.map +1 -0
- package/dist/esm/lib/utils.d.ts +68 -0
- package/dist/esm/lib/utils.js +654 -0
- package/dist/esm/lib/utils.js.map +1 -0
- package/dist/esm/lib/v3/agent/AgentClient.d.ts +19 -0
- package/dist/esm/lib/v3/agent/AgentClient.js +17 -0
- package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/AgentProvider.d.ts +20 -0
- package/dist/esm/lib/v3/agent/AgentProvider.js +77 -0
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -0
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.d.ts +57 -0
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +822 -0
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/GoogleCUAClient.d.ts +74 -0
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js +799 -0
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.d.ts +71 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +770 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +69 -0
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js +615 -0
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +12 -0
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +186 -0
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/act.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/act.js +49 -0
- package/dist/esm/lib/v3/agent/tools/act.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +5 -0
- package/dist/esm/lib/v3/agent/tools/ariaTree.js +31 -0
- package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/click.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/click.js +104 -0
- package/dist/esm/lib/v3/agent/tools/click.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/clickAndHold.d.ts +14 -0
- package/dist/esm/lib/v3/agent/tools/clickAndHold.js +68 -0
- package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.d.ts +7 -0
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +105 -0
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/extract.d.ts +20 -0
- package/dist/esm/lib/v3/agent/tools/extract.js +93 -0
- package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/fillFormVision.js +143 -0
- package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/fillform.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/fillform.js +56 -0
- package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/goto.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/goto.js +31 -0
- package/dist/esm/lib/v3/agent/tools/goto.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/index.d.ts +92 -0
- package/dist/esm/lib/v3/agent/tools/index.js +74 -0
- package/dist/esm/lib/v3/agent/tools/index.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/keys.d.ts +24 -0
- package/dist/esm/lib/v3/agent/tools/keys.js +60 -0
- package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/navback.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/navback.js +23 -0
- package/dist/esm/lib/v3/agent/tools/navback.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/screenshot.js +26 -0
- package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/scroll.d.ts +19 -0
- package/dist/esm/lib/v3/agent/tools/scroll.js +142 -0
- package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/search.d.ts +15 -0
- package/dist/esm/lib/v3/agent/tools/search.js +73 -0
- package/dist/esm/lib/v3/agent/tools/search.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/think.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/think.js +24 -0
- package/dist/esm/lib/v3/agent/tools/think.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/type.d.ts +7 -0
- package/dist/esm/lib/v3/agent/tools/type.js +106 -0
- package/dist/esm/lib/v3/agent/tools/type.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/wait.d.ts +5 -0
- package/dist/esm/lib/v3/agent/tools/wait.js +53 -0
- package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/actionMapping.d.ts +3 -0
- package/dist/esm/lib/v3/agent/utils/actionMapping.js +100 -0
- package/dist/esm/lib/v3/agent/utils/actionMapping.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.d.ts +13 -0
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js +28 -0
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.d.ts +10 -0
- package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js +62 -0
- package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.d.ts +25 -0
- package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js +145 -0
- package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.d.ts +22 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +101 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/imageCompression.d.ts +53 -0
- package/dist/esm/lib/v3/agent/utils/imageCompression.js +204 -0
- package/dist/esm/lib/v3/agent/utils/imageCompression.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/messageProcessing.d.ts +12 -0
- package/dist/esm/lib/v3/agent/utils/messageProcessing.js +164 -0
- package/dist/esm/lib/v3/agent/utils/messageProcessing.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/screenshotHandler.d.ts +10 -0
- package/dist/esm/lib/v3/agent/utils/screenshotHandler.js +26 -0
- package/dist/esm/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.d.ts +26 -0
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +79 -0
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/xpath.d.ts +11 -0
- package/dist/esm/lib/v3/agent/utils/xpath.js +19 -0
- package/dist/esm/lib/v3/agent/utils/xpath.js.map +1 -0
- package/dist/esm/lib/v3/api.d.ts +86 -0
- package/dist/esm/lib/v3/api.js +484 -0
- package/dist/esm/lib/v3/api.js.map +1 -0
- package/dist/esm/lib/v3/cache/ActCache.d.ts +23 -0
- package/dist/esm/lib/v3/cache/ActCache.js +292 -0
- package/dist/esm/lib/v3/cache/ActCache.js.map +1 -0
- package/dist/esm/lib/v3/cache/AgentCache.d.ts +109 -0
- package/dist/esm/lib/v3/cache/AgentCache.js +640 -0
- package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -0
- package/dist/esm/lib/v3/cache/CacheStorage.d.ts +17 -0
- package/dist/esm/lib/v3/cache/CacheStorage.js +98 -0
- package/dist/esm/lib/v3/cache/CacheStorage.js.map +1 -0
- package/dist/esm/lib/v3/cache/serverAgentCache.d.ts +7 -0
- package/dist/esm/lib/v3/cache/serverAgentCache.js +49 -0
- package/dist/esm/lib/v3/cache/serverAgentCache.js.map +1 -0
- package/dist/esm/lib/v3/cache/utils.d.ts +15 -0
- package/dist/esm/lib/v3/cache/utils.js +39 -0
- package/dist/esm/lib/v3/cache/utils.js.map +1 -0
- 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/a11yScripts/index.d.ts +11 -0
- package/dist/esm/lib/v3/dom/a11yScripts/index.js +117 -0
- package/dist/esm/lib/v3/dom/a11yScripts/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/a11yScripts.generated.d.ts +16 -0
- package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js +20 -0
- package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +52 -0
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +56 -0
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/reRenderScriptContent.d.ts +1 -0
- package/dist/esm/lib/v3/dom/build/reRenderScriptContent.js +2 -0
- package/dist/esm/lib/v3/dom/build/reRenderScriptContent.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 +1 -0
- package/dist/esm/lib/v3/dom/build/rerender-index.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.d.ts +4 -0
- package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js +8 -0
- package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/scriptV3Content.d.ts +1 -0
- package/dist/esm/lib/v3/dom/build/scriptV3Content.js +2 -0
- package/dist/esm/lib/v3/dom/build/scriptV3Content.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 +1 -0
- package/dist/esm/lib/v3/dom/build/v3-index.js.map +1 -0
- package/dist/esm/lib/v3/dom/genA11yScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genA11yScripts.js +54 -0
- package/dist/esm/lib/v3/dom/genA11yScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/genDomScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genDomScripts.js +38 -0
- package/dist/esm/lib/v3/dom/genDomScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/genLocatorScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genLocatorScripts.js +51 -0
- package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/genScreenshotScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genScreenshotScripts.js +37 -0
- package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/index.d.ts +1 -0
- package/dist/esm/lib/v3/dom/index.js +2 -0
- package/dist/esm/lib/v3/dom/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/counts.d.ts +15 -0
- package/dist/esm/lib/v3/dom/locatorScripts/counts.js +272 -0
- package/dist/esm/lib/v3/dom/locatorScripts/counts.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/index.d.ts +4 -0
- package/dist/esm/lib/v3/dom/locatorScripts/index.js +5 -0
- package/dist/esm/lib/v3/dom/locatorScripts/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/scripts.d.ts +37 -0
- package/dist/esm/lib/v3/dom/locatorScripts/scripts.js +458 -0
- package/dist/esm/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/selectors.d.ts +4 -0
- package/dist/esm/lib/v3/dom/locatorScripts/selectors.js +283 -0
- package/dist/esm/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.d.ts +19 -0
- package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js +283 -0
- package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.d.ts +76 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js +376 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.d.ts +9 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +196 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
- package/dist/esm/lib/v3/dom/piercer.entry.d.ts +1 -0
- package/dist/esm/lib/v3/dom/piercer.entry.js +3 -0
- package/dist/esm/lib/v3/dom/piercer.entry.js.map +1 -0
- package/dist/esm/lib/v3/dom/piercer.runtime.d.ts +23 -0
- package/dist/esm/lib/v3/dom/piercer.runtime.js +90 -0
- package/dist/esm/lib/v3/dom/piercer.runtime.js.map +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.d.ts +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js +3 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.d.ts +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js +40 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/index.d.ts +1 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/index.js +2 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.d.ts +8 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js +82 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
- package/dist/esm/lib/v3/external_clients/aisdk.d.ts +11 -0
- package/dist/esm/lib/v3/external_clients/aisdk.js +103 -0
- package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -0
- package/dist/esm/lib/v3/external_clients/customOpenAI.d.ts +18 -0
- package/dist/esm/lib/v3/external_clients/customOpenAI.js +220 -0
- package/dist/esm/lib/v3/external_clients/customOpenAI.js.map +1 -0
- package/dist/esm/lib/v3/flowLogger.d.ts +139 -0
- package/dist/esm/lib/v3/flowLogger.js +868 -0
- package/dist/esm/lib/v3/flowLogger.js.map +1 -0
- package/dist/esm/lib/v3/handlers/actHandler.d.ts +21 -0
- package/dist/esm/lib/v3/handlers/actHandler.js +340 -0
- package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/extractHandler.d.ts +31 -0
- package/dist/esm/lib/v3/handlers/extractHandler.js +139 -0
- package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +24 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +623 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.d.ts +2 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js +14 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
- package/dist/esm/lib/v3/handlers/observeHandler.d.ts +17 -0
- package/dist/esm/lib/v3/handlers/observeHandler.js +156 -0
- package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +32 -0
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js +461 -0
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +33 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +528 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
- package/dist/esm/lib/v3/index.d.ts +18 -0
- package/dist/esm/lib/v3/index.js +14 -0
- package/dist/esm/lib/v3/index.js.map +1 -0
- package/dist/esm/lib/v3/launch/browserbase.d.ts +7 -0
- package/dist/esm/lib/v3/launch/browserbase.js +46 -0
- package/dist/esm/lib/v3/launch/browserbase.js.map +1 -0
- package/dist/esm/lib/v3/launch/local.d.ts +15 -0
- package/dist/esm/lib/v3/launch/local.js +98 -0
- package/dist/esm/lib/v3/launch/local.js.map +1 -0
- package/dist/esm/lib/v3/llm/AnthropicClient.d.ts +16 -0
- package/dist/esm/lib/v3/llm/AnthropicClient.js +239 -0
- package/dist/esm/lib/v3/llm/AnthropicClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/CerebrasClient.d.ts +17 -0
- package/dist/esm/lib/v3/llm/CerebrasClient.js +235 -0
- package/dist/esm/lib/v3/llm/CerebrasClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/GoogleClient.d.ts +19 -0
- package/dist/esm/lib/v3/llm/GoogleClient.js +369 -0
- package/dist/esm/lib/v3/llm/GoogleClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/GroqClient.d.ts +17 -0
- package/dist/esm/lib/v3/llm/GroqClient.js +236 -0
- package/dist/esm/lib/v3/llm/GroqClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/LLMClient.d.ts +121 -0
- package/dist/esm/lib/v3/llm/LLMClient.js +23 -0
- package/dist/esm/lib/v3/llm/LLMClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/LLMProvider.d.ts +13 -0
- package/dist/esm/lib/v3/llm/LLMProvider.js +194 -0
- package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.d.ts +15 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.js +329 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/aisdk.d.ts +15 -0
- package/dist/esm/lib/v3/llm/aisdk.js +348 -0
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -0
- package/dist/esm/lib/v3/logger.d.ts +9 -0
- package/dist/esm/lib/v3/logger.js +96 -0
- package/dist/esm/lib/v3/logger.js.map +1 -0
- package/dist/esm/lib/v3/mcp/connection.d.ts +11 -0
- package/dist/esm/lib/v3/mcp/connection.js +49 -0
- package/dist/esm/lib/v3/mcp/connection.js.map +1 -0
- package/dist/esm/lib/v3/mcp/utils.d.ts +3 -0
- package/dist/esm/lib/v3/mcp/utils.js +36 -0
- package/dist/esm/lib/v3/mcp/utils.js.map +1 -0
- package/dist/esm/lib/v3/shutdown/cleanupLocal.d.ts +14 -0
- package/dist/esm/lib/v3/shutdown/cleanupLocal.js +30 -0
- package/dist/esm/lib/v3/shutdown/cleanupLocal.js.map +1 -0
- package/dist/esm/lib/v3/shutdown/supervisor.d.ts +11 -0
- package/dist/esm/lib/v3/shutdown/supervisor.js +166 -0
- package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -0
- package/dist/esm/lib/v3/shutdown/supervisorClient.d.ts +15 -0
- package/dist/esm/lib/v3/shutdown/supervisorClient.js +93 -0
- package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -0
- package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +113 -0
- package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +80 -0
- package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +374 -0
- package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +357 -0
- package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +247 -0
- package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +105 -0
- package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-streaming.spec.js +126 -0
- package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +44 -0
- package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/click-count.spec.js +147 -0
- package/dist/esm/lib/v3/tests/click-count.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +54 -0
- package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +176 -0
- package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +53 -0
- package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/downloads.spec.js +58 -0
- package/dist/esm/lib/v3/tests/downloads.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +53 -0
- package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +493 -0
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/keep-alive.child.js +92 -0
- package/dist/esm/lib/v3/tests/keep-alive.child.js.map +7 -0
- package/dist/esm/lib/v3/tests/keep-alive.helpers.js +532 -0
- package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +7 -0
- package/dist/esm/lib/v3/tests/keep-alive.spec.js +19 -0
- package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/keyboard.spec.js +296 -0
- package/dist/esm/lib/v3/tests/keyboard.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +159 -0
- package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +191 -0
- package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +108 -0
- package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-count.spec.js +71 -0
- package/dist/esm/lib/v3/tests/locator-count.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-fill.spec.js +118 -0
- package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +136 -0
- package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-nth.spec.js +157 -0
- package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-select-option.spec.js +242 -0
- package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/logger-initialization.spec.js +552 -0
- package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +269 -0
- package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/nested-div.spec.js +23 -0
- package/dist/esm/lib/v3/tests/nested-div.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +90 -0
- package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-console.spec.js +56 -0
- package/dist/esm/lib/v3/tests/page-console.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +418 -0
- package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-goto-response.spec.js +35 -0
- package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-hover.spec.js +167 -0
- package/dist/esm/lib/v3/tests/page-hover.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-screenshot.spec.js +273 -0
- package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-scroll.spec.js +182 -0
- package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +46 -0
- package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +98 -0
- package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/setinputfiles.spec.js +126 -0
- package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +134 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +134 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/testUtils.js +31 -0
- package/dist/esm/lib/v3/tests/testUtils.js.map +7 -0
- package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +100 -0
- package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/timeouts.spec.js +32 -0
- package/dist/esm/lib/v3/tests/timeouts.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/user-data-dir.spec.js +43 -0
- package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/v3.config.js +15 -0
- package/dist/esm/lib/v3/tests/v3.config.js.map +7 -0
- package/dist/esm/lib/v3/tests/v3.dynamic.config.js +43 -0
- package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +7 -0
- package/dist/esm/lib/v3/tests/v3.playwright.config.js +41 -0
- package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +7 -0
- package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +593 -0
- package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +97 -0
- package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +77 -0
- package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +7 -0
- package/dist/esm/lib/v3/timeoutConfig.d.ts +2 -0
- package/dist/esm/lib/v3/timeoutConfig.js +27 -0
- package/dist/esm/lib/v3/timeoutConfig.js.map +1 -0
- package/dist/esm/lib/v3/types/private/agent.d.ts +6 -0
- package/dist/esm/lib/v3/types/private/agent.js +2 -0
- package/dist/esm/lib/v3/types/private/agent.js.map +1 -0
- package/dist/esm/lib/v3/types/private/api.d.ts +11 -0
- package/dist/esm/lib/v3/types/private/api.js +2 -0
- package/dist/esm/lib/v3/types/private/api.js.map +1 -0
- package/dist/esm/lib/v3/types/private/cache.d.ts +128 -0
- package/dist/esm/lib/v3/types/private/cache.js +2 -0
- package/dist/esm/lib/v3/types/private/cache.js.map +1 -0
- package/dist/esm/lib/v3/types/private/evaluator.d.ts +40 -0
- package/dist/esm/lib/v3/types/private/evaluator.js +2 -0
- package/dist/esm/lib/v3/types/private/evaluator.js.map +1 -0
- package/dist/esm/lib/v3/types/private/handlers.d.ts +38 -0
- package/dist/esm/lib/v3/types/private/handlers.js +16 -0
- package/dist/esm/lib/v3/types/private/handlers.js.map +1 -0
- package/dist/esm/lib/v3/types/private/index.d.ts +7 -0
- package/dist/esm/lib/v3/types/private/index.js +8 -0
- package/dist/esm/lib/v3/types/private/index.js.map +1 -0
- package/dist/esm/lib/v3/types/private/internal.d.ts +39 -0
- package/dist/esm/lib/v3/types/private/internal.js +2 -0
- package/dist/esm/lib/v3/types/private/internal.js.map +1 -0
- package/dist/esm/lib/v3/types/private/locator.d.ts +9 -0
- package/dist/esm/lib/v3/types/private/locator.js +2 -0
- package/dist/esm/lib/v3/types/private/locator.js.map +1 -0
- package/dist/esm/lib/v3/types/private/network.d.ts +34 -0
- package/dist/esm/lib/v3/types/private/network.js +3 -0
- package/dist/esm/lib/v3/types/private/network.js.map +1 -0
- package/dist/esm/lib/v3/types/private/shutdown.d.ts +19 -0
- package/dist/esm/lib/v3/types/private/shutdown.js +5 -0
- package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -0
- package/dist/esm/lib/v3/types/private/shutdownErrors.d.ts +12 -0
- package/dist/esm/lib/v3/types/private/shutdownErrors.js +22 -0
- package/dist/esm/lib/v3/types/private/shutdownErrors.js.map +1 -0
- package/dist/esm/lib/v3/types/private/snapshot.d.ts +117 -0
- package/dist/esm/lib/v3/types/private/snapshot.js +2 -0
- package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -0
- package/dist/esm/lib/v3/types/public/agent.d.ts +595 -0
- package/dist/esm/lib/v3/types/public/agent.js +15 -0
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -0
- package/dist/esm/lib/v3/types/public/api.d.ts +1211 -0
- package/dist/esm/lib/v3/types/public/api.js +915 -0
- package/dist/esm/lib/v3/types/public/api.js.map +1 -0
- package/dist/esm/lib/v3/types/public/apiErrors.d.ts +18 -0
- package/dist/esm/lib/v3/types/public/apiErrors.js +32 -0
- package/dist/esm/lib/v3/types/public/apiErrors.js.map +1 -0
- package/dist/esm/lib/v3/types/public/index.d.ts +12 -0
- package/dist/esm/lib/v3/types/public/index.js +14 -0
- package/dist/esm/lib/v3/types/public/index.js.map +1 -0
- package/dist/esm/lib/v3/types/public/locator.d.ts +9 -0
- package/dist/esm/lib/v3/types/public/locator.js +2 -0
- package/dist/esm/lib/v3/types/public/locator.js.map +1 -0
- package/dist/esm/lib/v3/types/public/logs.d.ts +23 -0
- package/dist/esm/lib/v3/types/public/logs.js +13 -0
- package/dist/esm/lib/v3/types/public/logs.js.map +1 -0
- package/dist/esm/lib/v3/types/public/methods.d.ts +56 -0
- package/dist/esm/lib/v3/types/public/methods.js +15 -0
- package/dist/esm/lib/v3/types/public/methods.js.map +1 -0
- package/dist/esm/lib/v3/types/public/metrics.d.ts +27 -0
- package/dist/esm/lib/v3/types/public/metrics.js +2 -0
- package/dist/esm/lib/v3/types/public/metrics.js.map +1 -0
- package/dist/esm/lib/v3/types/public/model.d.ts +65 -0
- package/dist/esm/lib/v3/types/public/model.js +2 -0
- package/dist/esm/lib/v3/types/public/model.js.map +1 -0
- package/dist/esm/lib/v3/types/public/options.d.ts +70 -0
- package/dist/esm/lib/v3/types/public/options.js +4 -0
- package/dist/esm/lib/v3/types/public/options.js.map +1 -0
- package/dist/esm/lib/v3/types/public/page.d.ts +18 -0
- package/dist/esm/lib/v3/types/public/page.js +3 -0
- package/dist/esm/lib/v3/types/public/page.js.map +1 -0
- package/dist/esm/lib/v3/types/public/screenshotTypes.d.ts +25 -0
- package/dist/esm/lib/v3/types/public/screenshotTypes.js +2 -0
- package/dist/esm/lib/v3/types/public/screenshotTypes.js.map +1 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +152 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js +305 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.d.ts +15 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +196 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.d.ts +8 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js +121 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.d.ts +77 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js +336 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.d.ts +7 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +129 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.d.ts +46 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js +274 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +24 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +216 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/index.d.ts +4 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js +5 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.d.ts +16 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js +22 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.d.ts +28 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +135 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.d.ts +26 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js +102 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11yInvocation.d.ts +8 -0
- package/dist/esm/lib/v3/understudy/a11yInvocation.js +12 -0
- package/dist/esm/lib/v3/understudy/a11yInvocation.js.map +1 -0
- package/dist/esm/lib/v3/understudy/cdp.d.ts +69 -0
- package/dist/esm/lib/v3/understudy/cdp.js +251 -0
- package/dist/esm/lib/v3/understudy/cdp.js.map +1 -0
- package/dist/esm/lib/v3/understudy/consoleMessage.d.ts +22 -0
- package/dist/esm/lib/v3/understudy/consoleMessage.js +66 -0
- package/dist/esm/lib/v3/understudy/consoleMessage.js.map +1 -0
- package/dist/esm/lib/v3/understudy/context.d.ts +132 -0
- package/dist/esm/lib/v3/understudy/context.js +696 -0
- package/dist/esm/lib/v3/understudy/context.js.map +1 -0
- package/dist/esm/lib/v3/understudy/deepLocator.d.ts +87 -0
- package/dist/esm/lib/v3/understudy/deepLocator.js +218 -0
- package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -0
- package/dist/esm/lib/v3/understudy/executionContextRegistry.d.ts +15 -0
- package/dist/esm/lib/v3/understudy/executionContextRegistry.js +83 -0
- package/dist/esm/lib/v3/understudy/executionContextRegistry.js.map +1 -0
- package/dist/esm/lib/v3/understudy/fileUploadUtils.d.ts +13 -0
- package/dist/esm/lib/v3/understudy/fileUploadUtils.js +81 -0
- package/dist/esm/lib/v3/understudy/fileUploadUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/frame.d.ts +69 -0
- package/dist/esm/lib/v3/understudy/frame.js +211 -0
- package/dist/esm/lib/v3/understudy/frame.js.map +1 -0
- package/dist/esm/lib/v3/understudy/frameLocator.d.ts +50 -0
- package/dist/esm/lib/v3/understudy/frameLocator.js +255 -0
- package/dist/esm/lib/v3/understudy/frameLocator.js.map +1 -0
- package/dist/esm/lib/v3/understudy/frameRegistry.d.ts +101 -0
- package/dist/esm/lib/v3/understudy/frameRegistry.js +298 -0
- package/dist/esm/lib/v3/understudy/frameRegistry.js.map +1 -0
- package/dist/esm/lib/v3/understudy/initScripts.d.ts +2 -0
- package/dist/esm/lib/v3/understudy/initScripts.js +33 -0
- package/dist/esm/lib/v3/understudy/initScripts.js.map +1 -0
- package/dist/esm/lib/v3/understudy/lifecycleWatcher.d.ts +64 -0
- package/dist/esm/lib/v3/understudy/lifecycleWatcher.js +245 -0
- package/dist/esm/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
- package/dist/esm/lib/v3/understudy/locator.d.ts +194 -0
- package/dist/esm/lib/v3/understudy/locator.js +753 -0
- package/dist/esm/lib/v3/understudy/locator.js.map +1 -0
- package/dist/esm/lib/v3/understudy/locatorInvocation.d.ts +8 -0
- package/dist/esm/lib/v3/understudy/locatorInvocation.js +12 -0
- package/dist/esm/lib/v3/understudy/locatorInvocation.js.map +1 -0
- package/dist/esm/lib/v3/understudy/navigationResponseTracker.d.ts +84 -0
- package/dist/esm/lib/v3/understudy/navigationResponseTracker.js +224 -0
- package/dist/esm/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
- package/dist/esm/lib/v3/understudy/networkManager.d.ts +53 -0
- package/dist/esm/lib/v3/understudy/networkManager.js +306 -0
- package/dist/esm/lib/v3/understudy/networkManager.js.map +1 -0
- package/dist/esm/lib/v3/understudy/page.d.ts +354 -0
- package/dist/esm/lib/v3/understudy/page.js +1942 -0
- package/dist/esm/lib/v3/understudy/page.js.map +1 -0
- package/dist/esm/lib/v3/understudy/piercer.d.ts +4 -0
- package/dist/esm/lib/v3/understudy/piercer.js +61 -0
- package/dist/esm/lib/v3/understudy/piercer.js.map +1 -0
- package/dist/esm/lib/v3/understudy/response.d.ts +137 -0
- package/dist/esm/lib/v3/understudy/response.js +330 -0
- package/dist/esm/lib/v3/understudy/response.js.map +1 -0
- package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +16 -0
- package/dist/esm/lib/v3/understudy/screenshotUtils.js +352 -0
- package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/selectorResolver.d.ts +38 -0
- package/dist/esm/lib/v3/understudy/selectorResolver.js +296 -0
- package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -0
- package/dist/esm/lib/v3/v3.d.ts +191 -0
- package/dist/esm/lib/v3/v3.js +1569 -0
- package/dist/esm/lib/v3/v3.js.map +1 -0
- package/dist/esm/lib/v3/zodCompat.d.ts +12 -0
- package/dist/esm/lib/v3/zodCompat.js +17 -0
- package/dist/esm/lib/v3/zodCompat.js.map +1 -0
- package/dist/esm/lib/v3Evaluator.d.ts +19 -0
- package/dist/esm/lib/v3Evaluator.js +210 -0
- package/dist/esm/lib/v3Evaluator.js.map +1 -0
- package/dist/esm/lib/version.d.ts +5 -0
- package/dist/esm/lib/version.js +6 -0
- package/dist/esm/lib/version.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/tests/browserbase-session-accessors.test.js +101 -0
- package/dist/esm/tests/browserbase-session-accessors.test.js.map +7 -0
- package/dist/esm/tests/cache-llm-resolution.test.js +187 -0
- package/dist/esm/tests/cache-llm-resolution.test.js.map +7 -0
- package/dist/esm/tests/helpers/mockCDPSession.js +27 -0
- package/dist/esm/tests/helpers/mockCDPSession.js.map +7 -0
- package/dist/esm/tests/llm-provider.test.js +57 -0
- package/dist/esm/tests/llm-provider.test.js.map +7 -0
- package/dist/esm/tests/model-deprecation.test.js +135 -0
- package/dist/esm/tests/model-deprecation.test.js.map +7 -0
- package/dist/esm/tests/page-snapshot.test.js +36 -0
- package/dist/esm/tests/page-snapshot.test.js.map +7 -0
- package/dist/esm/tests/public-api/export-surface.test.js +54 -0
- package/dist/esm/tests/public-api/export-surface.test.js.map +7 -0
- package/dist/esm/tests/public-api/llm-and-agents.test.js +128 -0
- package/dist/esm/tests/public-api/llm-and-agents.test.js.map +7 -0
- package/dist/esm/tests/public-api/public-error-types.test.js +71 -0
- package/dist/esm/tests/public-api/public-error-types.test.js.map +7 -0
- package/dist/esm/tests/public-api/public-types.test.js +74 -0
- package/dist/esm/tests/public-api/public-types.test.js.map +7 -0
- package/dist/esm/tests/public-api/runtime-utils.test.js +31 -0
- package/dist/esm/tests/public-api/runtime-utils.test.js.map +7 -0
- package/dist/esm/tests/public-api/schema-utils.test.js +78 -0
- package/dist/esm/tests/public-api/schema-utils.test.js.map +7 -0
- package/dist/esm/tests/public-api/timeout-error-types.test.js +81 -0
- package/dist/esm/tests/public-api/timeout-error-types.test.js.map +7 -0
- package/dist/esm/tests/public-api/tool-type-export.test.js +25 -0
- package/dist/esm/tests/public-api/tool-type-export.test.js.map +7 -0
- package/dist/esm/tests/public-api/v3-core.test.js +82 -0
- package/dist/esm/tests/public-api/v3-core.test.js.map +7 -0
- package/dist/esm/tests/safety-confirmation.test.js +134 -0
- package/dist/esm/tests/safety-confirmation.test.js.map +7 -0
- package/dist/esm/tests/snapshot-a11y-resolvers.test.js +348 -0
- package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +7 -0
- package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +300 -0
- package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-capture-orchestration.test.js +381 -0
- package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +7 -0
- package/dist/esm/tests/snapshot-cbor.test.js +197 -0
- package/dist/esm/tests/snapshot-cbor.test.js.map +7 -0
- package/dist/esm/tests/snapshot-dom-session-builders.test.js +251 -0
- package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +7 -0
- package/dist/esm/tests/snapshot-dom-tree-utils.test.js +109 -0
- package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +49 -0
- package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-frame-merge.test.js +391 -0
- package/dist/esm/tests/snapshot-frame-merge.test.js.map +7 -0
- package/dist/esm/tests/snapshot-tree-format-utils.test.js +113 -0
- package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-xpath-utils.test.js +79 -0
- package/dist/esm/tests/snapshot-xpath-utils.test.js.map +7 -0
- package/dist/esm/tests/timeout-handlers.test.js +850 -0
- package/dist/esm/tests/timeout-handlers.test.js.map +7 -0
- package/dist/esm/tests/xpath-parser.test.js +317 -0
- package/dist/esm/tests/xpath-parser.test.js.map +7 -0
- package/dist/esm/tests/xpath-resolver.test.js +73 -0
- package/dist/esm/tests/xpath-resolver.test.js.map +7 -0
- package/dist/esm/tests/zod-enum-compatibility.test.js +97 -0
- package/dist/esm/tests/zod-enum-compatibility.test.js.map +7 -0
- package/package.json +41 -24
- package/dist/index.d.ts +0 -4363
- package/dist/index.js +0 -76530
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../tests/timeout-handlers.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport { ActHandler } from \"../lib/v3/handlers/actHandler.js\";\nimport { ExtractHandler } from \"../lib/v3/handlers/extractHandler.js\";\nimport { ObserveHandler } from \"../lib/v3/handlers/observeHandler.js\";\nimport type { Page } from \"../lib/v3/understudy/page.js\";\nimport type { ClientOptions } from \"../lib/v3/types/public/model.js\";\nimport type { LLMClient } from \"../lib/v3/llm/LLMClient.js\";\nimport { createTimeoutGuard } from \"../lib/v3/handlers/handlerUtils/timeoutGuard.js\";\nimport { waitForDomNetworkQuiet } from \"../lib/v3/handlers/handlerUtils/actHandlerUtils.js\";\nimport { captureHybridSnapshot } from \"../lib/v3/understudy/a11y/snapshot/index.js\";\nimport {\n ActTimeoutError,\n ExtractTimeoutError,\n ObserveTimeoutError,\n} from \"../lib/v3/types/public/sdkErrors.js\";\nimport {\n act as actInference,\n extract as extractInference,\n observe as observeInference,\n} from \"../lib/inference.js\";\nimport { V3FunctionName } from \"../lib/v3/types/public/methods.js\";\n\nvi.mock(\"../lib/v3/handlers/handlerUtils/timeoutGuard\", () => ({\n createTimeoutGuard: vi.fn(),\n}));\n\nvi.mock(\"../lib/v3/handlers/handlerUtils/actHandlerUtils\", () => ({\n waitForDomNetworkQuiet: vi.fn(),\n performUnderstudyMethod: vi.fn(),\n}));\n\nvi.mock(\"../lib/v3/understudy/a11y/snapshot\", () => ({\n captureHybridSnapshot: vi.fn(),\n diffCombinedTrees: vi.fn(),\n}));\n\nvi.mock(\"../lib/inference\", () => ({\n act: vi.fn(),\n extract: vi.fn(),\n observe: vi.fn(),\n}));\n\ndescribe(\"ActHandler timeout guard\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ActTimeoutError when timeout expires before snapshot\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n // Make createTimeoutGuard return a guard that throws on call #2\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"do something\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Verify pre-timeout helper ran\n expect(waitForDomNetworkQuietMock).toHaveBeenCalledTimes(1);\n // Verify snapshot was NOT called (timeout fired before it)\n expect(captureHybridSnapshotMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ActTimeoutError when timeout expires before LLM call\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const actInferenceMock = vi.mocked(actInference);\n\n // Throw on call #3 (after snapshot but before LLM)\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 3) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"do something\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Snapshot should have been called\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);\n // LLM inference should NOT have been called\n expect(actInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ActTimeoutError with correct message format\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const timeoutMs = 100;\n\n vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory ? errorFactory(ms!) : new ActTimeoutError(ms!);\n });\n });\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n try {\n await handler.act({\n instruction: \"do something\",\n page: fakePage,\n timeout: timeoutMs,\n });\n throw new Error(\"Expected ActTimeoutError to be thrown\");\n } catch (error) {\n expect(error).toBeInstanceOf(ActTimeoutError);\n expect((error as ActTimeoutError).message).toContain(\"act()\");\n expect((error as ActTimeoutError).message).toContain(`${timeoutMs}ms`);\n expect((error as ActTimeoutError).name).toBe(\"ActTimeoutError\");\n }\n });\n});\n\ndescribe(\"ActHandler two-step timeout\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ActTimeoutError during step 2; step 2 action does not run\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n // First call returns a two-step action\n actInferenceMock.mockResolvedValueOnce({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: true,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n const diffCombinedTreesMock = vi.mocked(\n (await import(\"../lib/v3/understudy/a11y/snapshot/index.js\"))\n .diffCombinedTrees,\n );\n diffCombinedTreesMock.mockReturnValue(\"diff tree\");\n\n // Timeout fires after step 1 completes, during step 2 snapshot\n // ensureTimeRemaining calls: 1=before wait, 2=after wait/before snap1, 3=before LLM1,\n // 4=before action1, 5=inside takeDeterministicAction, 6=performUnderstudy,\n // 7=before snap2 (this one should throw)\n let callCount = 0;\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n callCount += 1;\n if (callCount >= 7) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"click then type\",\n page: fakePage,\n timeout: 50,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Step 1 action should have been executed\n expect(performUnderstudyMethodMock).toHaveBeenCalledTimes(1);\n // Step 2 LLM call should NOT have happened\n expect(actInferenceMock).toHaveBeenCalledTimes(1);\n });\n});\n\ndescribe(\"ActHandler self-heal timeout\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ActTimeoutError during self-heal snapshot; no retry action executes\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n // First call fails, triggering self-heal\n performUnderstudyMethodMock.mockRejectedValueOnce(\n new Error(\"Element not found\"),\n );\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // Timeout during self-heal snapshot (call 7 or later)\n let callCount = 0;\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n callCount += 1;\n // Timeout during self-heal snapshot call\n if (callCount >= 7) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler({ selfHeal: true });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: 50,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // First action attempt should have been tried\n expect(performUnderstudyMethodMock).toHaveBeenCalledTimes(1);\n // First LLM call should have happened\n expect(actInferenceMock).toHaveBeenCalledTimes(1);\n // Self-heal snapshot should have been started (call happened)\n expect(captureHybridSnapshotMock).toHaveBeenCalled();\n });\n\n it(\"throws ActTimeoutError during self-heal LLM inference; no retry action executes\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n // First call fails, triggering self-heal\n performUnderstudyMethodMock.mockRejectedValueOnce(\n new Error(\"Element not found\"),\n );\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValueOnce({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // Timeout during self-heal LLM inference (call 8)\n let callCount = 0;\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n callCount += 1;\n // Timeout during self-heal LLM call\n if (callCount >= 8) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ActTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildActHandler({ selfHeal: true });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: 50,\n }),\n ).rejects.toThrow(ActTimeoutError);\n\n // Self-heal snapshot was captured\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(2);\n // Only one LLM inference (the retry inference was aborted by timeout)\n expect(actInferenceMock).toHaveBeenCalledTimes(1);\n });\n});\n\ndescribe(\"ExtractHandler timeout guard\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ExtractTimeoutError when timeout expires before snapshot\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n\n // Throw immediately on first call\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ExtractTimeoutError(timeoutMs!);\n });\n },\n );\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ExtractTimeoutError);\n\n // Snapshot should NOT have been called\n expect(captureHybridSnapshotMock).not.toHaveBeenCalled();\n // LLM inference should NOT have been called\n expect(extractInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ExtractTimeoutError when timeout expires before LLM call\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n\n // Throw on call #2 (after snapshot but before LLM)\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ExtractTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ExtractTimeoutError);\n\n // Snapshot should have been called\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);\n // LLM inference should NOT have been called\n expect(extractInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ExtractTimeoutError with correct message format\", async () => {\n const timeoutMs = 200;\n\n vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory ? errorFactory(ms!) : new ExtractTimeoutError(ms!);\n });\n });\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n try {\n await handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n timeout: timeoutMs,\n });\n throw new Error(\"Expected ExtractTimeoutError to be thrown\");\n } catch (error) {\n expect(error).toBeInstanceOf(ExtractTimeoutError);\n expect((error as ExtractTimeoutError).message).toContain(\"extract()\");\n expect((error as ExtractTimeoutError).message).toContain(\n `${timeoutMs}ms`,\n );\n expect((error as ExtractTimeoutError).name).toBe(\"ExtractTimeoutError\");\n }\n });\n\n it(\"stops LLM and post-processing when timeout expires\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: { \"1-0\": \"https://example.com\" },\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n\n // Allow snapshot but timeout before LLM\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ExtractTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildExtractHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.extract({\n instruction: \"extract links\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ExtractTimeoutError);\n\n // Post-processing (URL injection) never runs because LLM was never called\n expect(extractInferenceMock).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"ObserveHandler timeout guard\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"throws ObserveTimeoutError when timeout expires before snapshot\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n\n // Throw immediately on first call\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ObserveTimeoutError(timeoutMs!);\n });\n },\n );\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ObserveTimeoutError);\n\n // Snapshot should NOT have been called\n expect(captureHybridSnapshotMock).not.toHaveBeenCalled();\n // LLM inference should NOT have been called\n expect(observeInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ObserveTimeoutError when timeout expires before LLM call\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n\n // Throw on call #2 (after snapshot but before LLM)\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ObserveTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ObserveTimeoutError);\n\n // Snapshot should have been called\n expect(captureHybridSnapshotMock).toHaveBeenCalledTimes(1);\n // LLM inference should NOT have been called\n expect(observeInferenceMock).not.toHaveBeenCalled();\n });\n\n it(\"throws ObserveTimeoutError with correct message format\", async () => {\n const timeoutMs = 150;\n\n vi.mocked(createTimeoutGuard).mockImplementation((ms, errorFactory) => {\n return vi.fn(() => {\n throw errorFactory ? errorFactory(ms!) : new ObserveTimeoutError(ms!);\n });\n });\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n try {\n await handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n timeout: timeoutMs,\n });\n throw new Error(\"Expected ObserveTimeoutError to be thrown\");\n } catch (error) {\n expect(error).toBeInstanceOf(ObserveTimeoutError);\n expect((error as ObserveTimeoutError).message).toContain(\"observe()\");\n expect((error as ObserveTimeoutError).message).toContain(\n `${timeoutMs}ms`,\n );\n expect((error as ObserveTimeoutError).name).toBe(\"ObserveTimeoutError\");\n }\n });\n\n it(\"aborts result processing when timeout expires\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n\n // Timeout before LLM call\n vi.mocked(createTimeoutGuard).mockImplementation(\n (timeoutMs, errorFactory) => {\n let calls = 0;\n return vi.fn(() => {\n calls += 1;\n if (calls >= 2) {\n throw errorFactory\n ? errorFactory(timeoutMs!)\n : new ObserveTimeoutError(timeoutMs!);\n }\n });\n },\n );\n\n const handler = buildObserveHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n await expect(\n handler.observe({\n instruction: \"find all interactive elements\",\n page: fakePage,\n timeout: 5,\n }),\n ).rejects.toThrow(ObserveTimeoutError);\n\n // Result mapping/processing never happens\n expect(observeInferenceMock).not.toHaveBeenCalled();\n });\n});\n\ndescribe(\"No-timeout success paths\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"act() completes successfully without timeout and records metrics\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n reasoning_tokens: 10,\n cached_input_tokens: 5,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // No timeout - guard never throws\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const metricsCallback = vi.fn();\n const handler = buildActHandler({ onMetrics: metricsCallback });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.act({\n instruction: \"click button\",\n page: fakePage,\n // No timeout specified\n });\n\n expect(result.success).toBe(true);\n expect(metricsCallback).toHaveBeenCalledWith(\n V3FunctionName.ACT,\n 100,\n 50,\n 10,\n 5,\n 500,\n );\n });\n\n it(\"extract() completes successfully without timeout and records metrics\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n });\n\n const extractInferenceMock = vi.mocked(extractInference);\n extractInferenceMock.mockResolvedValue({\n title: \"Test Title\",\n metadata: { completed: true, progress: \"100%\" },\n prompt_tokens: 200,\n completion_tokens: 100,\n reasoning_tokens: 20,\n cached_input_tokens: 10,\n inference_time_ms: 800,\n } as ReturnType<typeof extractInference> extends Promise<infer T>\n ? T\n : never);\n\n // No timeout - guard never throws\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const metricsCallback = vi.fn();\n const handler = buildExtractHandler({ onMetrics: metricsCallback });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.extract({\n instruction: \"extract title\",\n page: fakePage,\n // No timeout specified\n });\n\n expect(result).toHaveProperty(\"title\", \"Test Title\");\n expect(metricsCallback).toHaveBeenCalledWith(\n V3FunctionName.EXTRACT,\n 200,\n 100,\n 20,\n 10,\n 800,\n );\n });\n\n it(\"observe() completes successfully without timeout and records metrics\", async () => {\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const observeInferenceMock = vi.mocked(observeInference);\n observeInferenceMock.mockResolvedValue({\n elements: [\n {\n elementId: \"1-0\",\n description: \"Submit button\",\n },\n ],\n prompt_tokens: 150,\n completion_tokens: 75,\n reasoning_tokens: 15,\n cached_input_tokens: 8,\n inference_time_ms: 600,\n } as ReturnType<typeof observeInference> extends Promise<infer T>\n ? T\n : never);\n\n // No timeout - guard never throws\n vi.mocked(createTimeoutGuard).mockImplementation(() => {\n return vi.fn(() => {\n // No-op - never throws\n });\n });\n\n const metricsCallback = vi.fn();\n const handler = buildObserveHandler({ onMetrics: metricsCallback });\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.observe({\n instruction: \"find buttons\",\n page: fakePage,\n // No timeout specified\n });\n\n expect(result).toHaveLength(1);\n expect(result[0]).toHaveProperty(\"description\", \"Submit button\");\n expect(metricsCallback).toHaveBeenCalledWith(\n V3FunctionName.OBSERVE,\n 150,\n 75,\n 15,\n 8,\n 600,\n );\n });\n\n it(\"act() with zero timeout behaves as no timeout\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n // When timeout is 0 or negative, createTimeoutGuard returns a no-op\n vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs) => {\n if (!timeoutMs || timeoutMs <= 0) {\n return vi.fn(() => {\n // No-op\n });\n }\n return vi.fn(() => {\n throw new ActTimeoutError(timeoutMs);\n });\n });\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: 0, // Zero timeout should be treated as \"no timeout\"\n });\n\n expect(result.success).toBe(true);\n });\n\n it(\"act() with negative timeout behaves as no timeout\", async () => {\n const waitForDomNetworkQuietMock = vi.mocked(waitForDomNetworkQuiet);\n waitForDomNetworkQuietMock.mockResolvedValue(undefined);\n\n const captureHybridSnapshotMock = vi.mocked(captureHybridSnapshot);\n captureHybridSnapshotMock.mockResolvedValue({\n combinedTree: \"tree content\",\n combinedXpathMap: { \"1-0\": \"/html/body/button\" },\n combinedUrlMap: {},\n });\n\n const { performUnderstudyMethod } = await import(\n \"../lib/v3/handlers/handlerUtils/actHandlerUtils.js\"\n );\n const performUnderstudyMethodMock = vi.mocked(performUnderstudyMethod);\n performUnderstudyMethodMock.mockResolvedValue(undefined);\n\n const actInferenceMock = vi.mocked(actInference);\n actInferenceMock.mockResolvedValue({\n element: {\n elementId: \"1-0\",\n description: \"click button\",\n method: \"click\",\n arguments: [],\n },\n twoStep: false,\n prompt_tokens: 100,\n completion_tokens: 50,\n inference_time_ms: 500,\n } as ReturnType<typeof actInference> extends Promise<infer T> ? T : never);\n\n vi.mocked(createTimeoutGuard).mockImplementation((timeoutMs) => {\n if (!timeoutMs || timeoutMs <= 0) {\n return vi.fn(() => {\n // No-op\n });\n }\n return vi.fn(() => {\n throw new ActTimeoutError(timeoutMs);\n });\n });\n\n const handler = buildActHandler();\n const fakePage = {\n mainFrame: vi.fn().mockReturnValue({}),\n } as unknown as Page;\n\n const result = await handler.act({\n instruction: \"click button\",\n page: fakePage,\n timeout: -100, // Negative timeout should be treated as \"no timeout\"\n });\n\n expect(result.success).toBe(true);\n });\n});\n\ninterface BuildActHandlerOptions {\n selfHeal?: boolean;\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n}\n\nfunction buildActHandler(options: BuildActHandlerOptions = {}): ActHandler {\n const defaultClientOptions = {} as ClientOptions;\n const fakeClient = {\n type: \"openai\",\n modelName: \"gpt-4o\",\n clientOptions: defaultClientOptions,\n } as LLMClient;\n const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);\n\n return new ActHandler(\n fakeClient,\n \"gpt-4o\",\n defaultClientOptions,\n resolveLlmClient,\n undefined,\n false,\n options.selfHeal ?? false,\n options.onMetrics,\n undefined,\n );\n}\n\ninterface BuildExtractHandlerOptions {\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n}\n\nfunction buildExtractHandler(\n options: BuildExtractHandlerOptions = {},\n): ExtractHandler {\n const defaultClientOptions = {} as ClientOptions;\n const fakeClient = {\n type: \"openai\",\n modelName: \"gpt-4o\",\n clientOptions: defaultClientOptions,\n } as LLMClient;\n const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);\n\n return new ExtractHandler(\n fakeClient,\n \"gpt-4o\",\n defaultClientOptions,\n resolveLlmClient,\n undefined,\n false,\n false,\n options.onMetrics,\n );\n}\n\ninterface BuildObserveHandlerOptions {\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n}\n\nfunction buildObserveHandler(\n options: BuildObserveHandlerOptions = {},\n): ObserveHandler {\n const defaultClientOptions = {} as ClientOptions;\n const fakeClient = {\n type: \"openai\",\n modelName: \"gpt-4o\",\n clientOptions: defaultClientOptions,\n } as LLMClient;\n const resolveLlmClient = vi.fn().mockReturnValue(fakeClient);\n\n return new ObserveHandler(\n fakeClient,\n \"gpt-4o\",\n defaultClientOptions,\n resolveLlmClient,\n undefined,\n false,\n false,\n options.onMetrics,\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["actInference", "extractInference", "observeInference"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
var import_vitest = require("vitest");
|
|
2
|
+
var import_xpathParser = require("../lib/v3/dom/locatorScripts/xpathParser.js");
|
|
3
|
+
(0, import_vitest.describe)("parseXPathSteps", () => {
|
|
4
|
+
(0, import_vitest.describe)("basic tag parsing", () => {
|
|
5
|
+
(0, import_vitest.it)("parses a simple absolute path", () => {
|
|
6
|
+
(0, import_vitest.expect)((0, import_xpathParser.parseXPathSteps)("/html/body/div")).toEqual([
|
|
7
|
+
{ axis: "child", tag: "html", predicates: [] },
|
|
8
|
+
{ axis: "child", tag: "body", predicates: [] },
|
|
9
|
+
{ axis: "child", tag: "div", predicates: [] }
|
|
10
|
+
]);
|
|
11
|
+
});
|
|
12
|
+
(0, import_vitest.it)("lowercases tag names", () => {
|
|
13
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("/HTML/BODY");
|
|
14
|
+
(0, import_vitest.expect)(steps[0].tag).toBe("html");
|
|
15
|
+
(0, import_vitest.expect)(steps[1].tag).toBe("body");
|
|
16
|
+
});
|
|
17
|
+
(0, import_vitest.it)("treats wildcard correctly", () => {
|
|
18
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//*");
|
|
19
|
+
(0, import_vitest.expect)(steps).toEqual([{ axis: "desc", tag: "*", predicates: [] }]);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
(0, import_vitest.describe)("axes", () => {
|
|
23
|
+
(0, import_vitest.it)("distinguishes child (/) from descendant (//)", () => {
|
|
24
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("/html//div/span");
|
|
25
|
+
(0, import_vitest.expect)(steps).toEqual([
|
|
26
|
+
{ axis: "child", tag: "html", predicates: [] },
|
|
27
|
+
{ axis: "desc", tag: "div", predicates: [] },
|
|
28
|
+
{ axis: "child", tag: "span", predicates: [] }
|
|
29
|
+
]);
|
|
30
|
+
});
|
|
31
|
+
(0, import_vitest.it)("handles leading //", () => {
|
|
32
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div");
|
|
33
|
+
(0, import_vitest.expect)(steps[0].axis).toBe("desc");
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
(0, import_vitest.describe)("positional indices", () => {
|
|
37
|
+
(0, import_vitest.it)("parses positional index", () => {
|
|
38
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("/div[1]/span[3]");
|
|
39
|
+
(0, import_vitest.expect)(steps[0]).toMatchObject({
|
|
40
|
+
tag: "div",
|
|
41
|
+
predicates: [{ type: "index", index: 1 }]
|
|
42
|
+
});
|
|
43
|
+
(0, import_vitest.expect)(steps[1]).toMatchObject({
|
|
44
|
+
tag: "span",
|
|
45
|
+
predicates: [{ type: "index", index: 3 }]
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
(0, import_vitest.it)("clamps index to minimum 1", () => {
|
|
49
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("/div[0]");
|
|
50
|
+
(0, import_vitest.expect)(steps[0].predicates[0]).toMatchObject({
|
|
51
|
+
type: "index",
|
|
52
|
+
index: 1
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
(0, import_vitest.it)("keeps multiple positional predicates in order", () => {
|
|
56
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[2][3]");
|
|
57
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
58
|
+
{ type: "index", index: 2 },
|
|
59
|
+
{ type: "index", index: 3 }
|
|
60
|
+
]);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
(0, import_vitest.describe)("attribute predicates", () => {
|
|
64
|
+
(0, import_vitest.it)("parses single attribute predicate with single quotes", () => {
|
|
65
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//img[@alt='Stagehand']");
|
|
66
|
+
(0, import_vitest.expect)(steps).toEqual([
|
|
67
|
+
{
|
|
68
|
+
axis: "desc",
|
|
69
|
+
tag: "img",
|
|
70
|
+
predicates: [{ type: "attrEquals", name: "alt", value: "Stagehand" }]
|
|
71
|
+
}
|
|
72
|
+
]);
|
|
73
|
+
});
|
|
74
|
+
(0, import_vitest.it)("parses single attribute predicate with double quotes", () => {
|
|
75
|
+
const steps = (0, import_xpathParser.parseXPathSteps)('//img[@alt="Stagehand"]');
|
|
76
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
77
|
+
{ type: "attrEquals", name: "alt", value: "Stagehand" }
|
|
78
|
+
]);
|
|
79
|
+
});
|
|
80
|
+
(0, import_vitest.it)("parses multiple attribute predicates", () => {
|
|
81
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@class='foo'][@id='bar']");
|
|
82
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
83
|
+
{ type: "attrEquals", name: "class", value: "foo" },
|
|
84
|
+
{ type: "attrEquals", name: "id", value: "bar" }
|
|
85
|
+
]);
|
|
86
|
+
});
|
|
87
|
+
(0, import_vitest.it)("parses attribute predicate combined with positional index", () => {
|
|
88
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@class='item'][2]");
|
|
89
|
+
(0, import_vitest.expect)(steps[0]).toMatchObject({
|
|
90
|
+
tag: "div",
|
|
91
|
+
predicates: [
|
|
92
|
+
{ type: "attrEquals", name: "class", value: "item" },
|
|
93
|
+
{ type: "index", index: 2 }
|
|
94
|
+
]
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
(0, import_vitest.it)("parses attribute with hyphenated name", () => {
|
|
98
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@data-testid='submit']");
|
|
99
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
100
|
+
{ type: "attrEquals", name: "data-testid", value: "submit" }
|
|
101
|
+
]);
|
|
102
|
+
});
|
|
103
|
+
(0, import_vitest.it)("parses attribute with empty value", () => {
|
|
104
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//input[@value='']");
|
|
105
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
106
|
+
{ type: "attrEquals", name: "value", value: "" }
|
|
107
|
+
]);
|
|
108
|
+
});
|
|
109
|
+
(0, import_vitest.it)("parses attribute value containing closing bracket", () => {
|
|
110
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@title='array[0]']");
|
|
111
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
112
|
+
{ type: "attrEquals", name: "title", value: "array[0]" }
|
|
113
|
+
]);
|
|
114
|
+
});
|
|
115
|
+
(0, import_vitest.it)("parses attribute value containing multiple brackets", () => {
|
|
116
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@data-json='[1,2,3]']");
|
|
117
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
118
|
+
{ type: "attrEquals", name: "data-json", value: "[1,2,3]" }
|
|
119
|
+
]);
|
|
120
|
+
});
|
|
121
|
+
(0, import_vitest.it)("parses attribute value containing a closing bracket", () => {
|
|
122
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@title='a]b']/span");
|
|
123
|
+
(0, import_vitest.expect)(steps).toEqual([
|
|
124
|
+
{
|
|
125
|
+
axis: "desc",
|
|
126
|
+
tag: "div",
|
|
127
|
+
predicates: [{ type: "attrEquals", name: "title", value: "a]b" }]
|
|
128
|
+
},
|
|
129
|
+
{ axis: "child", tag: "span", predicates: [] }
|
|
130
|
+
]);
|
|
131
|
+
});
|
|
132
|
+
(0, import_vitest.it)("parses attribute existence predicates", () => {
|
|
133
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//iframe[@data-test]");
|
|
134
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
135
|
+
{ type: "attrExists", name: "data-test" }
|
|
136
|
+
]);
|
|
137
|
+
});
|
|
138
|
+
(0, import_vitest.it)("parses attribute contains predicates", () => {
|
|
139
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//iframe[contains(@src,'checkout')]");
|
|
140
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
141
|
+
{ type: "attrContains", name: "src", value: "checkout" }
|
|
142
|
+
]);
|
|
143
|
+
});
|
|
144
|
+
(0, import_vitest.it)("parses attribute starts-with predicates", () => {
|
|
145
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//button[starts-with(@id,'save-')]");
|
|
146
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
147
|
+
{ type: "attrStartsWith", name: "id", value: "save-" }
|
|
148
|
+
]);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
(0, import_vitest.describe)("text predicates", () => {
|
|
152
|
+
(0, import_vitest.it)("parses text equality", () => {
|
|
153
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//button[text()='Submit']");
|
|
154
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
155
|
+
{ type: "textEquals", value: "Submit" }
|
|
156
|
+
]);
|
|
157
|
+
});
|
|
158
|
+
(0, import_vitest.it)("parses text contains", () => {
|
|
159
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[contains(text(),'Welcome')]");
|
|
160
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
161
|
+
{ type: "textContains", value: "Welcome" }
|
|
162
|
+
]);
|
|
163
|
+
});
|
|
164
|
+
(0, import_vitest.it)("parses normalize-space on text", () => {
|
|
165
|
+
const steps = (0, import_xpathParser.parseXPathSteps)(
|
|
166
|
+
"//div[normalize-space(text())='Hello world']"
|
|
167
|
+
);
|
|
168
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
169
|
+
{ type: "textEquals", value: "Hello world", normalize: true }
|
|
170
|
+
]);
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
(0, import_vitest.describe)("boolean predicates", () => {
|
|
174
|
+
(0, import_vitest.it)("parses and predicates", () => {
|
|
175
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@a='x' and @b='y']");
|
|
176
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
177
|
+
{
|
|
178
|
+
type: "and",
|
|
179
|
+
predicates: [
|
|
180
|
+
{ type: "attrEquals", name: "a", value: "x" },
|
|
181
|
+
{ type: "attrEquals", name: "b", value: "y" }
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
]);
|
|
185
|
+
});
|
|
186
|
+
(0, import_vitest.it)("parses operators without surrounding whitespace", () => {
|
|
187
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[not(@x)and@y='z']");
|
|
188
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
189
|
+
{
|
|
190
|
+
type: "and",
|
|
191
|
+
predicates: [
|
|
192
|
+
{ type: "not", predicate: { type: "attrExists", name: "x" } },
|
|
193
|
+
{ type: "attrEquals", name: "y", value: "z" }
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
]);
|
|
197
|
+
});
|
|
198
|
+
(0, import_vitest.it)("parses or predicates", () => {
|
|
199
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@a='x' or @b='y']");
|
|
200
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
201
|
+
{
|
|
202
|
+
type: "or",
|
|
203
|
+
predicates: [
|
|
204
|
+
{ type: "attrEquals", name: "a", value: "x" },
|
|
205
|
+
{ type: "attrEquals", name: "b", value: "y" }
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
]);
|
|
209
|
+
});
|
|
210
|
+
(0, import_vitest.it)("parses not predicates", () => {
|
|
211
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//button[not(@disabled)]");
|
|
212
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
213
|
+
{ type: "not", predicate: { type: "attrExists", name: "disabled" } }
|
|
214
|
+
]);
|
|
215
|
+
});
|
|
216
|
+
(0, import_vitest.it)("does not treat @and as a boolean operator", () => {
|
|
217
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//div[@and='x' and @y='z']");
|
|
218
|
+
(0, import_vitest.expect)(steps[0].predicates).toEqual([
|
|
219
|
+
{
|
|
220
|
+
type: "and",
|
|
221
|
+
predicates: [
|
|
222
|
+
{ type: "attrEquals", name: "and", value: "x" },
|
|
223
|
+
{ type: "attrEquals", name: "y", value: "z" }
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
]);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
(0, import_vitest.describe)("multi-step with predicates", () => {
|
|
230
|
+
(0, import_vitest.it)("parses complex path with mixed predicates", () => {
|
|
231
|
+
const steps = (0, import_xpathParser.parseXPathSteps)(
|
|
232
|
+
"/html/body//div[@class='container']/ul/li[3]"
|
|
233
|
+
);
|
|
234
|
+
(0, import_vitest.expect)(steps).toEqual([
|
|
235
|
+
{ axis: "child", tag: "html", predicates: [] },
|
|
236
|
+
{ axis: "child", tag: "body", predicates: [] },
|
|
237
|
+
{
|
|
238
|
+
axis: "desc",
|
|
239
|
+
tag: "div",
|
|
240
|
+
predicates: [
|
|
241
|
+
{ type: "attrEquals", name: "class", value: "container" }
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
{ axis: "child", tag: "ul", predicates: [] },
|
|
245
|
+
{ axis: "child", tag: "li", predicates: [{ type: "index", index: 3 }] }
|
|
246
|
+
]);
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
(0, import_vitest.describe)("edge cases", () => {
|
|
250
|
+
(0, import_vitest.it)("returns empty array for empty string", () => {
|
|
251
|
+
(0, import_vitest.expect)((0, import_xpathParser.parseXPathSteps)("")).toEqual([]);
|
|
252
|
+
});
|
|
253
|
+
(0, import_vitest.it)("strips xpath= prefix", () => {
|
|
254
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("xpath=//div");
|
|
255
|
+
(0, import_vitest.expect)(steps).toEqual([{ axis: "desc", tag: "div", predicates: [] }]);
|
|
256
|
+
});
|
|
257
|
+
(0, import_vitest.it)("strips XPATH= prefix (case-insensitive)", () => {
|
|
258
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("XPATH=//div");
|
|
259
|
+
(0, import_vitest.expect)(steps).toEqual([{ axis: "desc", tag: "div", predicates: [] }]);
|
|
260
|
+
});
|
|
261
|
+
(0, import_vitest.it)("handles forward slashes inside attribute values", () => {
|
|
262
|
+
const steps = (0, import_xpathParser.parseXPathSteps)("//a[@href='/api/endpoint']");
|
|
263
|
+
(0, import_vitest.expect)(steps).toEqual([
|
|
264
|
+
{
|
|
265
|
+
axis: "desc",
|
|
266
|
+
tag: "a",
|
|
267
|
+
predicates: [
|
|
268
|
+
{ type: "attrEquals", name: "href", value: "/api/endpoint" }
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
]);
|
|
272
|
+
});
|
|
273
|
+
(0, import_vitest.it)("handles URL attribute values with multiple slashes", () => {
|
|
274
|
+
const steps = (0, import_xpathParser.parseXPathSteps)(
|
|
275
|
+
"//a[@data-url='http://example.com/path/to/page']"
|
|
276
|
+
);
|
|
277
|
+
(0, import_vitest.expect)(steps).toEqual([
|
|
278
|
+
{
|
|
279
|
+
axis: "desc",
|
|
280
|
+
tag: "a",
|
|
281
|
+
predicates: [
|
|
282
|
+
{
|
|
283
|
+
type: "attrEquals",
|
|
284
|
+
name: "data-url",
|
|
285
|
+
value: "http://example.com/path/to/page"
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
}
|
|
289
|
+
]);
|
|
290
|
+
});
|
|
291
|
+
(0, import_vitest.it)("handles whitespace", () => {
|
|
292
|
+
const steps = (0, import_xpathParser.parseXPathSteps)(" //div ");
|
|
293
|
+
(0, import_vitest.expect)(steps.length).toBe(1);
|
|
294
|
+
(0, import_vitest.expect)(steps[0].tag).toBe("div");
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
(0, import_vitest.describe)("applyPredicates", () => {
|
|
299
|
+
const makeElement = (id) => {
|
|
300
|
+
return {
|
|
301
|
+
localName: "div",
|
|
302
|
+
getAttribute: (name) => name === "id" ? id : null
|
|
303
|
+
};
|
|
304
|
+
};
|
|
305
|
+
(0, import_vitest.it)("applies positional predicates sequentially", () => {
|
|
306
|
+
const elements = ["a", "b", "c", "d"].map(makeElement);
|
|
307
|
+
const predicates = [
|
|
308
|
+
{ type: "index", index: 2 },
|
|
309
|
+
{ type: "index", index: 3 }
|
|
310
|
+
];
|
|
311
|
+
(0, import_vitest.expect)((0, import_xpathParser.applyPredicates)(elements, predicates)).toEqual([]);
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
//# sourceMappingURL=xpath-parser.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../tests/xpath-parser.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { describe, expect, it } from \"vitest\";\nimport {\n applyPredicates,\n parseXPathSteps,\n type XPathPredicate,\n} from \"../lib/v3/dom/locatorScripts/xpathParser.js\";\n\ndescribe(\"parseXPathSteps\", () => {\n describe(\"basic tag parsing\", () => {\n it(\"parses a simple absolute path\", () => {\n expect(parseXPathSteps(\"/html/body/div\")).toEqual([\n { axis: \"child\", tag: \"html\", predicates: [] },\n { axis: \"child\", tag: \"body\", predicates: [] },\n { axis: \"child\", tag: \"div\", predicates: [] },\n ]);\n });\n\n it(\"lowercases tag names\", () => {\n const steps = parseXPathSteps(\"/HTML/BODY\");\n expect(steps[0].tag).toBe(\"html\");\n expect(steps[1].tag).toBe(\"body\");\n });\n\n it(\"treats wildcard correctly\", () => {\n const steps = parseXPathSteps(\"//*\");\n expect(steps).toEqual([{ axis: \"desc\", tag: \"*\", predicates: [] }]);\n });\n });\n\n describe(\"axes\", () => {\n it(\"distinguishes child (/) from descendant (//)\", () => {\n const steps = parseXPathSteps(\"/html//div/span\");\n expect(steps).toEqual([\n { axis: \"child\", tag: \"html\", predicates: [] },\n { axis: \"desc\", tag: \"div\", predicates: [] },\n { axis: \"child\", tag: \"span\", predicates: [] },\n ]);\n });\n\n it(\"handles leading //\", () => {\n const steps = parseXPathSteps(\"//div\");\n expect(steps[0].axis).toBe(\"desc\");\n });\n });\n\n describe(\"positional indices\", () => {\n it(\"parses positional index\", () => {\n const steps = parseXPathSteps(\"/div[1]/span[3]\");\n expect(steps[0]).toMatchObject({\n tag: \"div\",\n predicates: [{ type: \"index\", index: 1 }],\n });\n expect(steps[1]).toMatchObject({\n tag: \"span\",\n predicates: [{ type: \"index\", index: 3 }],\n });\n });\n\n it(\"clamps index to minimum 1\", () => {\n const steps = parseXPathSteps(\"/div[0]\");\n expect(steps[0].predicates[0]).toMatchObject({\n type: \"index\",\n index: 1,\n });\n });\n\n it(\"keeps multiple positional predicates in order\", () => {\n const steps = parseXPathSteps(\"//div[2][3]\");\n expect(steps[0].predicates).toEqual([\n { type: \"index\", index: 2 },\n { type: \"index\", index: 3 },\n ]);\n });\n });\n\n describe(\"attribute predicates\", () => {\n it(\"parses single attribute predicate with single quotes\", () => {\n const steps = parseXPathSteps(\"//img[@alt='Stagehand']\");\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"img\",\n predicates: [{ type: \"attrEquals\", name: \"alt\", value: \"Stagehand\" }],\n },\n ]);\n });\n\n it(\"parses single attribute predicate with double quotes\", () => {\n const steps = parseXPathSteps('//img[@alt=\"Stagehand\"]');\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"alt\", value: \"Stagehand\" },\n ]);\n });\n\n it(\"parses multiple attribute predicates\", () => {\n const steps = parseXPathSteps(\"//div[@class='foo'][@id='bar']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"class\", value: \"foo\" },\n { type: \"attrEquals\", name: \"id\", value: \"bar\" },\n ]);\n });\n\n it(\"parses attribute predicate combined with positional index\", () => {\n const steps = parseXPathSteps(\"//div[@class='item'][2]\");\n expect(steps[0]).toMatchObject({\n tag: \"div\",\n predicates: [\n { type: \"attrEquals\", name: \"class\", value: \"item\" },\n { type: \"index\", index: 2 },\n ],\n });\n });\n\n it(\"parses attribute with hyphenated name\", () => {\n const steps = parseXPathSteps(\"//div[@data-testid='submit']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"data-testid\", value: \"submit\" },\n ]);\n });\n\n it(\"parses attribute with empty value\", () => {\n const steps = parseXPathSteps(\"//input[@value='']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"value\", value: \"\" },\n ]);\n });\n\n it(\"parses attribute value containing closing bracket\", () => {\n const steps = parseXPathSteps(\"//div[@title='array[0]']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"title\", value: \"array[0]\" },\n ]);\n });\n\n it(\"parses attribute value containing multiple brackets\", () => {\n const steps = parseXPathSteps(\"//div[@data-json='[1,2,3]']\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrEquals\", name: \"data-json\", value: \"[1,2,3]\" },\n ]);\n });\n\n it(\"parses attribute value containing a closing bracket\", () => {\n // The step splitter should ignore ] characters inside quotes.\n const steps = parseXPathSteps(\"//div[@title='a]b']/span\");\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"div\",\n predicates: [{ type: \"attrEquals\", name: \"title\", value: \"a]b\" }],\n },\n { axis: \"child\", tag: \"span\", predicates: [] },\n ]);\n });\n\n it(\"parses attribute existence predicates\", () => {\n const steps = parseXPathSteps(\"//iframe[@data-test]\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrExists\", name: \"data-test\" },\n ]);\n });\n\n it(\"parses attribute contains predicates\", () => {\n const steps = parseXPathSteps(\"//iframe[contains(@src,'checkout')]\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrContains\", name: \"src\", value: \"checkout\" },\n ]);\n });\n\n it(\"parses attribute starts-with predicates\", () => {\n const steps = parseXPathSteps(\"//button[starts-with(@id,'save-')]\");\n expect(steps[0].predicates).toEqual([\n { type: \"attrStartsWith\", name: \"id\", value: \"save-\" },\n ]);\n });\n });\n\n describe(\"text predicates\", () => {\n it(\"parses text equality\", () => {\n const steps = parseXPathSteps(\"//button[text()='Submit']\");\n expect(steps[0].predicates).toEqual([\n { type: \"textEquals\", value: \"Submit\" },\n ]);\n });\n\n it(\"parses text contains\", () => {\n const steps = parseXPathSteps(\"//div[contains(text(),'Welcome')]\");\n expect(steps[0].predicates).toEqual([\n { type: \"textContains\", value: \"Welcome\" },\n ]);\n });\n\n it(\"parses normalize-space on text\", () => {\n const steps = parseXPathSteps(\n \"//div[normalize-space(text())='Hello world']\",\n );\n expect(steps[0].predicates).toEqual([\n { type: \"textEquals\", value: \"Hello world\", normalize: true },\n ]);\n });\n });\n\n describe(\"boolean predicates\", () => {\n it(\"parses and predicates\", () => {\n const steps = parseXPathSteps(\"//div[@a='x' and @b='y']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"and\",\n predicates: [\n { type: \"attrEquals\", name: \"a\", value: \"x\" },\n { type: \"attrEquals\", name: \"b\", value: \"y\" },\n ],\n },\n ]);\n });\n\n it(\"parses operators without surrounding whitespace\", () => {\n const steps = parseXPathSteps(\"//div[not(@x)and@y='z']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"and\",\n predicates: [\n { type: \"not\", predicate: { type: \"attrExists\", name: \"x\" } },\n { type: \"attrEquals\", name: \"y\", value: \"z\" },\n ],\n },\n ]);\n });\n\n it(\"parses or predicates\", () => {\n const steps = parseXPathSteps(\"//div[@a='x' or @b='y']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"or\",\n predicates: [\n { type: \"attrEquals\", name: \"a\", value: \"x\" },\n { type: \"attrEquals\", name: \"b\", value: \"y\" },\n ],\n },\n ]);\n });\n\n it(\"parses not predicates\", () => {\n const steps = parseXPathSteps(\"//button[not(@disabled)]\");\n expect(steps[0].predicates).toEqual([\n { type: \"not\", predicate: { type: \"attrExists\", name: \"disabled\" } },\n ]);\n });\n\n it(\"does not treat @and as a boolean operator\", () => {\n const steps = parseXPathSteps(\"//div[@and='x' and @y='z']\");\n expect(steps[0].predicates).toEqual([\n {\n type: \"and\",\n predicates: [\n { type: \"attrEquals\", name: \"and\", value: \"x\" },\n { type: \"attrEquals\", name: \"y\", value: \"z\" },\n ],\n },\n ]);\n });\n });\n\n describe(\"multi-step with predicates\", () => {\n it(\"parses complex path with mixed predicates\", () => {\n const steps = parseXPathSteps(\n \"/html/body//div[@class='container']/ul/li[3]\",\n );\n expect(steps).toEqual([\n { axis: \"child\", tag: \"html\", predicates: [] },\n { axis: \"child\", tag: \"body\", predicates: [] },\n {\n axis: \"desc\",\n tag: \"div\",\n predicates: [\n { type: \"attrEquals\", name: \"class\", value: \"container\" },\n ],\n },\n { axis: \"child\", tag: \"ul\", predicates: [] },\n { axis: \"child\", tag: \"li\", predicates: [{ type: \"index\", index: 3 }] },\n ]);\n });\n });\n\n describe(\"edge cases\", () => {\n it(\"returns empty array for empty string\", () => {\n expect(parseXPathSteps(\"\")).toEqual([]);\n });\n\n it(\"strips xpath= prefix\", () => {\n const steps = parseXPathSteps(\"xpath=//div\");\n expect(steps).toEqual([{ axis: \"desc\", tag: \"div\", predicates: [] }]);\n });\n\n it(\"strips XPATH= prefix (case-insensitive)\", () => {\n const steps = parseXPathSteps(\"XPATH=//div\");\n expect(steps).toEqual([{ axis: \"desc\", tag: \"div\", predicates: [] }]);\n });\n\n it(\"handles forward slashes inside attribute values\", () => {\n const steps = parseXPathSteps(\"//a[@href='/api/endpoint']\");\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"a\",\n predicates: [\n { type: \"attrEquals\", name: \"href\", value: \"/api/endpoint\" },\n ],\n },\n ]);\n });\n\n it(\"handles URL attribute values with multiple slashes\", () => {\n const steps = parseXPathSteps(\n \"//a[@data-url='http://example.com/path/to/page']\",\n );\n expect(steps).toEqual([\n {\n axis: \"desc\",\n tag: \"a\",\n predicates: [\n {\n type: \"attrEquals\",\n name: \"data-url\",\n value: \"http://example.com/path/to/page\",\n },\n ],\n },\n ]);\n });\n\n it(\"handles whitespace\", () => {\n const steps = parseXPathSteps(\" //div \");\n expect(steps.length).toBe(1);\n expect(steps[0].tag).toBe(\"div\");\n });\n });\n});\n\ndescribe(\"applyPredicates\", () => {\n const makeElement = (id: string): Element => {\n return {\n localName: \"div\",\n getAttribute: (name: string) => (name === \"id\" ? id : null),\n } as unknown as Element;\n };\n\n it(\"applies positional predicates sequentially\", () => {\n const elements = [\"a\", \"b\", \"c\", \"d\"].map(makeElement);\n const predicates: XPathPredicate[] = [\n { type: \"index\", index: 2 },\n { type: \"index\", index: 3 },\n ];\n expect(applyPredicates(elements, predicates)).toEqual([]);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
var import_jsdom = require("jsdom");
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_xpathResolver = require("../lib/v3/dom/locatorScripts/xpathResolver.js");
|
|
4
|
+
const globalRef = globalThis;
|
|
5
|
+
const originalGlobals = {
|
|
6
|
+
window: globalRef.window,
|
|
7
|
+
document: globalRef.document,
|
|
8
|
+
Node: globalRef.Node,
|
|
9
|
+
NodeFilter: globalRef.NodeFilter,
|
|
10
|
+
Element: globalRef.Element,
|
|
11
|
+
HTMLElement: globalRef.HTMLElement,
|
|
12
|
+
Document: globalRef.Document,
|
|
13
|
+
DocumentFragment: globalRef.DocumentFragment,
|
|
14
|
+
ShadowRoot: globalRef.ShadowRoot,
|
|
15
|
+
XPathResult: globalRef.XPathResult
|
|
16
|
+
};
|
|
17
|
+
let dom;
|
|
18
|
+
const installDomGlobals = () => {
|
|
19
|
+
const win = dom.window;
|
|
20
|
+
globalRef.window = win;
|
|
21
|
+
globalRef.document = win.document;
|
|
22
|
+
globalRef.Node = win.Node;
|
|
23
|
+
globalRef.NodeFilter = win.NodeFilter;
|
|
24
|
+
globalRef.Element = win.Element;
|
|
25
|
+
globalRef.HTMLElement = win.HTMLElement;
|
|
26
|
+
globalRef.Document = win.Document;
|
|
27
|
+
globalRef.DocumentFragment = win.DocumentFragment;
|
|
28
|
+
globalRef.ShadowRoot = win.ShadowRoot;
|
|
29
|
+
globalRef.XPathResult = win.XPathResult;
|
|
30
|
+
};
|
|
31
|
+
const restoreDomGlobals = () => {
|
|
32
|
+
for (const [key, value] of Object.entries(originalGlobals)) {
|
|
33
|
+
if (value === void 0) {
|
|
34
|
+
delete globalRef[key];
|
|
35
|
+
} else {
|
|
36
|
+
globalRef[key] = value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
(0, import_vitest.describe)("xpathResolver composed traversal", () => {
|
|
41
|
+
(0, import_vitest.beforeAll)(() => {
|
|
42
|
+
dom = new import_jsdom.JSDOM("<!doctype html><html><body></body></html>");
|
|
43
|
+
installDomGlobals();
|
|
44
|
+
});
|
|
45
|
+
(0, import_vitest.afterAll)(() => {
|
|
46
|
+
dom.window.close();
|
|
47
|
+
restoreDomGlobals();
|
|
48
|
+
});
|
|
49
|
+
(0, import_vitest.beforeEach)(() => {
|
|
50
|
+
document.body.innerHTML = "";
|
|
51
|
+
});
|
|
52
|
+
(0, import_vitest.it)("counts matches across light + shadow DOM without double counting", () => {
|
|
53
|
+
document.body.innerHTML = '<div id="light-1"></div><shadow-host id="host"></shadow-host><div id="light-2"></div>';
|
|
54
|
+
const host = document.getElementById("host");
|
|
55
|
+
const shadow = host.attachShadow({ mode: "open" });
|
|
56
|
+
shadow.innerHTML = '<div id="shadow-1"></div><div id="shadow-2"></div>';
|
|
57
|
+
(0, import_vitest.expect)((0, import_xpathResolver.countXPathMatches)("//div")).toBe(4);
|
|
58
|
+
});
|
|
59
|
+
(0, import_vitest.it)("resolves nth over composed tree in document-order DFS", () => {
|
|
60
|
+
document.body.innerHTML = '<div id="light-1"></div><shadow-host id="host"></shadow-host><div id="light-2"></div>';
|
|
61
|
+
const host = document.getElementById("host");
|
|
62
|
+
const shadow = host.attachShadow({ mode: "open" });
|
|
63
|
+
shadow.innerHTML = '<div id="shadow-1"></div><div id="shadow-2"></div>';
|
|
64
|
+
(0, import_vitest.expect)((0, import_xpathResolver.resolveXPathAtIndex)("//div", 0)?.id).toBe("light-1");
|
|
65
|
+
(0, import_vitest.expect)((0, import_xpathResolver.resolveXPathAtIndex)("//div", 1)?.id).toBe("shadow-1");
|
|
66
|
+
(0, import_vitest.expect)((0, import_xpathResolver.resolveXPathAtIndex)("//div", 2)?.id).toBe("shadow-2");
|
|
67
|
+
(0, import_vitest.expect)((0, import_xpathResolver.resolveXPathAtIndex)("//div", 3)?.id).toBe("light-2");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=xpath-resolver.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../tests/xpath-resolver.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { JSDOM } from \"jsdom\";\nimport { afterAll, beforeAll, beforeEach, describe, expect, it } from \"vitest\";\nimport {\n countXPathMatches,\n resolveXPathAtIndex,\n} from \"../lib/v3/dom/locatorScripts/xpathResolver.js\";\n\ntype DomGlobals = {\n window: Window;\n document: Document;\n Node: typeof Node;\n NodeFilter: typeof NodeFilter;\n Element: typeof Element;\n HTMLElement: typeof HTMLElement;\n Document: typeof Document;\n DocumentFragment: typeof DocumentFragment;\n ShadowRoot: typeof ShadowRoot;\n XPathResult: typeof XPathResult;\n};\n\nconst globalRef = globalThis as typeof globalThis & Partial<DomGlobals>;\nconst originalGlobals: Partial<DomGlobals> = {\n window: globalRef.window,\n document: globalRef.document,\n Node: globalRef.Node,\n NodeFilter: globalRef.NodeFilter,\n Element: globalRef.Element,\n HTMLElement: globalRef.HTMLElement,\n Document: globalRef.Document,\n DocumentFragment: globalRef.DocumentFragment,\n ShadowRoot: globalRef.ShadowRoot,\n XPathResult: globalRef.XPathResult,\n};\n\nlet dom: JSDOM;\n\nconst installDomGlobals = () => {\n const win = dom.window;\n globalRef.window = win as unknown as Window;\n globalRef.document = win.document;\n globalRef.Node = win.Node as unknown as typeof Node;\n globalRef.NodeFilter = win.NodeFilter as unknown as typeof NodeFilter;\n globalRef.Element = win.Element as unknown as typeof Element;\n globalRef.HTMLElement = win.HTMLElement as unknown as typeof HTMLElement;\n globalRef.Document = win.Document as unknown as typeof Document;\n globalRef.DocumentFragment =\n win.DocumentFragment as unknown as typeof DocumentFragment;\n globalRef.ShadowRoot = win.ShadowRoot as unknown as typeof ShadowRoot;\n globalRef.XPathResult = win.XPathResult as unknown as typeof XPathResult;\n};\n\nconst restoreDomGlobals = () => {\n for (const [key, value] of Object.entries(originalGlobals)) {\n if (value === undefined) {\n delete (globalRef as Record<string, unknown>)[key];\n } else {\n (globalRef as Record<string, unknown>)[key] = value;\n }\n }\n};\n\ndescribe(\"xpathResolver composed traversal\", () => {\n beforeAll(() => {\n dom = new JSDOM(\"<!doctype html><html><body></body></html>\");\n installDomGlobals();\n });\n\n afterAll(() => {\n dom.window.close();\n restoreDomGlobals();\n });\n\n beforeEach(() => {\n document.body.innerHTML = \"\";\n });\n\n it(\"counts matches across light + shadow DOM without double counting\", () => {\n document.body.innerHTML =\n '<div id=\"light-1\"></div>' +\n '<shadow-host id=\"host\"></shadow-host>' +\n '<div id=\"light-2\"></div>';\n\n const host = document.getElementById(\"host\") as HTMLElement;\n const shadow = host.attachShadow({ mode: \"open\" });\n shadow.innerHTML = '<div id=\"shadow-1\"></div><div id=\"shadow-2\"></div>';\n\n expect(countXPathMatches(\"//div\")).toBe(4);\n });\n\n it(\"resolves nth over composed tree in document-order DFS\", () => {\n document.body.innerHTML =\n '<div id=\"light-1\"></div>' +\n '<shadow-host id=\"host\"></shadow-host>' +\n '<div id=\"light-2\"></div>';\n\n const host = document.getElementById(\"host\") as HTMLElement;\n const shadow = host.attachShadow({ mode: \"open\" });\n shadow.innerHTML = '<div id=\"shadow-1\"></div><div id=\"shadow-2\"></div>';\n\n expect(resolveXPathAtIndex(\"//div\", 0)?.id).toBe(\"light-1\");\n expect(resolveXPathAtIndex(\"//div\", 1)?.id).toBe(\"shadow-1\");\n expect(resolveXPathAtIndex(\"//div\", 2)?.id).toBe(\"shadow-2\");\n expect(resolveXPathAtIndex(\"//div\", 3)?.id).toBe(\"light-2\");\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,mBAAsB;AACtB,oBAAsE;AACtE,2BAGO;AAeP,MAAM,YAAY;AAClB,MAAM,kBAAuC;AAAA,EAC3C,QAAQ,UAAU;AAAA,EAClB,UAAU,UAAU;AAAA,EACpB,MAAM,UAAU;AAAA,EAChB,YAAY,UAAU;AAAA,EACtB,SAAS,UAAU;AAAA,EACnB,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,kBAAkB,UAAU;AAAA,EAC5B,YAAY,UAAU;AAAA,EACtB,aAAa,UAAU;AACzB;AAEA,IAAI;AAEJ,MAAM,oBAAoB,MAAM;AAC9B,QAAM,MAAM,IAAI;AAChB,YAAU,SAAS;AACnB,YAAU,WAAW,IAAI;AACzB,YAAU,OAAO,IAAI;AACrB,YAAU,aAAa,IAAI;AAC3B,YAAU,UAAU,IAAI;AACxB,YAAU,cAAc,IAAI;AAC5B,YAAU,WAAW,IAAI;AACzB,YAAU,mBACR,IAAI;AACN,YAAU,aAAa,IAAI;AAC3B,YAAU,cAAc,IAAI;AAC9B;AAEA,MAAM,oBAAoB,MAAM;AAC9B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,eAAe,GAAG;AAC1D,QAAI,UAAU,QAAW;AACvB,aAAQ,UAAsC,GAAG;AAAA,IACnD,OAAO;AACL,MAAC,UAAsC,GAAG,IAAI;AAAA,IAChD;AAAA,EACF;AACF;AAAA,IAEA,wBAAS,oCAAoC,MAAM;AACjD,+BAAU,MAAM;AACd,UAAM,IAAI,mBAAM,2CAA2C;AAC3D,sBAAkB;AAAA,EACpB,CAAC;AAED,8BAAS,MAAM;AACb,QAAI,OAAO,MAAM;AACjB,sBAAkB;AAAA,EACpB,CAAC;AAED,gCAAW,MAAM;AACf,aAAS,KAAK,YAAY;AAAA,EAC5B,CAAC;AAED,wBAAG,oEAAoE,MAAM;AAC3E,aAAS,KAAK,YACZ;AAIF,UAAM,OAAO,SAAS,eAAe,MAAM;AAC3C,UAAM,SAAS,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AACjD,WAAO,YAAY;AAEnB,kCAAO,wCAAkB,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA,EAC3C,CAAC;AAED,wBAAG,yDAAyD,MAAM;AAChE,aAAS,KAAK,YACZ;AAIF,UAAM,OAAO,SAAS,eAAe,MAAM;AAC3C,UAAM,SAAS,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AACjD,WAAO,YAAY;AAEnB,kCAAO,0CAAoB,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,SAAS;AAC1D,kCAAO,0CAAoB,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,UAAU;AAC3D,kCAAO,0CAAoB,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,UAAU;AAC3D,kCAAO,0CAAoB,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,SAAS;AAAA,EAC5D,CAAC;AACH,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|