playwright-codegen-pro-core 1.0.0
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/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +3 -0
- package/ThirdPartyNotices.txt +3552 -0
- package/bin/install_media_pack.ps1 +5 -0
- package/bin/install_webkit_wsl.ps1 +33 -0
- package/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/browsers.json +81 -0
- package/bundles/mcp/package-lock.json +1135 -0
- package/bundles/mcp/package.json +10 -0
- package/bundles/mcp/raw-body.ts +43 -0
- package/bundles/utils/package-lock.json +466 -0
- package/bundles/utils/package.json +40 -0
- package/bundles/zip/package-lock.json +257 -0
- package/bundles/zip/package.json +16 -0
- package/cli.js +18 -0
- package/index.d.ts +17 -0
- package/index.js +32 -0
- package/index.mjs +28 -0
- package/lib/androidServerImpl.js +65 -0
- package/lib/browserServerImpl.js +120 -0
- package/lib/cli/driver.js +98 -0
- package/lib/cli/program.js +599 -0
- package/lib/cli/programWithTestStub.js +74 -0
- package/lib/client/android.js +361 -0
- package/lib/client/api.js +137 -0
- package/lib/client/artifact.js +79 -0
- package/lib/client/browser.js +169 -0
- package/lib/client/browserContext.js +563 -0
- package/lib/client/browserType.js +153 -0
- package/lib/client/cdpSession.js +55 -0
- package/lib/client/channelOwner.js +194 -0
- package/lib/client/clientHelper.js +64 -0
- package/lib/client/clientInstrumentation.js +55 -0
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +68 -0
- package/lib/client/connect.js +143 -0
- package/lib/client/connection.js +322 -0
- package/lib/client/consoleMessage.js +61 -0
- package/lib/client/coverage.js +44 -0
- package/lib/client/debugger.js +57 -0
- package/lib/client/dialog.js +56 -0
- package/lib/client/disposable.js +76 -0
- package/lib/client/download.js +62 -0
- package/lib/client/electron.js +138 -0
- package/lib/client/elementHandle.js +281 -0
- package/lib/client/errors.js +77 -0
- package/lib/client/eventEmitter.js +314 -0
- package/lib/client/events.js +103 -0
- package/lib/client/fetch.js +367 -0
- package/lib/client/fileChooser.js +46 -0
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +404 -0
- package/lib/client/harRouter.js +99 -0
- package/lib/client/input.js +84 -0
- package/lib/client/jsHandle.js +105 -0
- package/lib/client/jsonPipe.js +39 -0
- package/lib/client/localUtils.js +60 -0
- package/lib/client/locator.js +367 -0
- package/lib/client/network.js +750 -0
- package/lib/client/page.js +729 -0
- package/lib/client/platform.js +77 -0
- package/lib/client/playwright.js +71 -0
- package/lib/client/screencast.js +48 -0
- package/lib/client/selectors.js +57 -0
- package/lib/client/stream.js +39 -0
- package/lib/client/timeoutSettings.js +79 -0
- package/lib/client/tracing.js +126 -0
- package/lib/client/types.js +28 -0
- package/lib/client/video.js +68 -0
- package/lib/client/waiter.js +142 -0
- package/lib/client/webError.js +39 -0
- package/lib/client/worker.js +85 -0
- package/lib/client/writableStream.js +39 -0
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +28 -0
- package/lib/generated/injectedScriptSource.js +28 -0
- package/lib/generated/pollingRecorderSource.js +28 -0
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +28 -0
- package/lib/generated/webSocketMockSource.js +336 -0
- package/lib/inProcessFactory.js +60 -0
- package/lib/inprocess.js +3 -0
- package/lib/mcpBundle.js +81 -0
- package/lib/mcpBundleImpl/index.js +91 -0
- package/lib/outofprocess.js +76 -0
- package/lib/protocol/serializers.js +197 -0
- package/lib/protocol/validator.js +3035 -0
- package/lib/protocol/validatorPrimitives.js +193 -0
- package/lib/remote/playwrightConnection.js +131 -0
- package/lib/remote/playwrightPipeServer.js +100 -0
- package/lib/remote/playwrightServer.js +339 -0
- package/lib/remote/playwrightWebSocketServer.js +73 -0
- package/lib/remote/serverTransport.js +96 -0
- package/lib/server/android/android.js +465 -0
- package/lib/server/android/backendAdb.js +177 -0
- package/lib/server/artifact.js +127 -0
- package/lib/server/bidi/bidiBrowser.js +571 -0
- package/lib/server/bidi/bidiChromium.js +162 -0
- package/lib/server/bidi/bidiConnection.js +213 -0
- package/lib/server/bidi/bidiDeserializer.js +116 -0
- package/lib/server/bidi/bidiExecutionContext.js +267 -0
- package/lib/server/bidi/bidiFirefox.js +128 -0
- package/lib/server/bidi/bidiInput.js +146 -0
- package/lib/server/bidi/bidiNetworkManager.js +411 -0
- package/lib/server/bidi/bidiOverCdp.js +102 -0
- package/lib/server/bidi/bidiPage.js +599 -0
- package/lib/server/bidi/bidiPdf.js +106 -0
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
- package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
- package/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
- package/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
- package/lib/server/browser.js +223 -0
- package/lib/server/browserContext.js +703 -0
- package/lib/server/browserType.js +338 -0
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/appIcon.png +0 -0
- package/lib/server/chromium/chromium.js +399 -0
- package/lib/server/chromium/chromiumSwitches.js +104 -0
- package/lib/server/chromium/crBrowser.js +532 -0
- package/lib/server/chromium/crConnection.js +197 -0
- package/lib/server/chromium/crCoverage.js +235 -0
- package/lib/server/chromium/crDevTools.js +111 -0
- package/lib/server/chromium/crDragDrop.js +131 -0
- package/lib/server/chromium/crExecutionContext.js +146 -0
- package/lib/server/chromium/crInput.js +187 -0
- package/lib/server/chromium/crNetworkManager.js +711 -0
- package/lib/server/chromium/crPage.js +1004 -0
- package/lib/server/chromium/crPdf.js +121 -0
- package/lib/server/chromium/crProtocolHelper.js +145 -0
- package/lib/server/chromium/crServiceWorker.js +137 -0
- package/lib/server/chromium/defaultFontFamilies.js +162 -0
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/clock.js +149 -0
- package/lib/server/codegen/csharp.js +327 -0
- package/lib/server/codegen/java.js +274 -0
- package/lib/server/codegen/javascript.js +247 -0
- package/lib/server/codegen/jsonl.js +52 -0
- package/lib/server/codegen/language.js +132 -0
- package/lib/server/codegen/languages.js +68 -0
- package/lib/server/codegen/python.js +279 -0
- package/lib/server/codegen/types.js +16 -0
- package/lib/server/console.js +61 -0
- package/lib/server/cookieStore.js +206 -0
- package/lib/server/debugController.js +197 -0
- package/lib/server/debugger.js +117 -0
- package/lib/server/deviceDescriptors.js +39 -0
- package/lib/server/deviceDescriptorsSource.json +1779 -0
- package/lib/server/dialog.js +116 -0
- package/lib/server/dispatchers/androidDispatcher.js +325 -0
- package/lib/server/dispatchers/artifactDispatcher.js +118 -0
- package/lib/server/dispatchers/browserContextDispatcher.js +381 -0
- package/lib/server/dispatchers/browserDispatcher.js +124 -0
- package/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +47 -0
- package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
- package/lib/server/dispatchers/debuggerDispatcher.js +80 -0
- package/lib/server/dispatchers/dialogDispatcher.js +47 -0
- package/lib/server/dispatchers/dispatcher.js +364 -0
- package/lib/server/dispatchers/disposableDispatcher.js +39 -0
- package/lib/server/dispatchers/electronDispatcher.js +90 -0
- package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
- package/lib/server/dispatchers/frameDispatcher.js +227 -0
- package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
- package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
- package/lib/server/dispatchers/localUtilsDispatcher.js +185 -0
- package/lib/server/dispatchers/networkDispatchers.js +214 -0
- package/lib/server/dispatchers/pageDispatcher.js +430 -0
- package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
- package/lib/server/dispatchers/streamDispatcher.js +67 -0
- package/lib/server/dispatchers/tracingDispatcher.js +68 -0
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
- package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
- package/lib/server/disposable.js +41 -0
- package/lib/server/dom.js +833 -0
- package/lib/server/download.js +71 -0
- package/lib/server/electron/electron.js +272 -0
- package/lib/server/electron/loader.js +29 -0
- package/lib/server/errors.js +69 -0
- package/lib/server/fetch.js +621 -0
- package/lib/server/fileChooser.js +43 -0
- package/lib/server/fileUploadUtils.js +84 -0
- package/lib/server/firefox/ffBrowser.js +415 -0
- package/lib/server/firefox/ffConnection.js +142 -0
- package/lib/server/firefox/ffExecutionContext.js +150 -0
- package/lib/server/firefox/ffInput.js +175 -0
- package/lib/server/firefox/ffNetworkManager.js +256 -0
- package/lib/server/firefox/ffPage.js +495 -0
- package/lib/server/firefox/firefox.js +114 -0
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +147 -0
- package/lib/server/frameSelectors.js +160 -0
- package/lib/server/frames.js +1495 -0
- package/lib/server/har/harRecorder.js +147 -0
- package/lib/server/har/harTracer.js +608 -0
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +96 -0
- package/lib/server/index.js +58 -0
- package/lib/server/input.js +322 -0
- package/lib/server/instrumentation.js +72 -0
- package/lib/server/javascript.js +291 -0
- package/lib/server/launchApp.js +127 -0
- package/lib/server/localUtils.js +214 -0
- package/lib/server/macEditingCommands.js +143 -0
- package/lib/server/network.js +668 -0
- package/lib/server/page.js +884 -0
- package/lib/server/pipeTransport.js +89 -0
- package/lib/server/playwright.js +69 -0
- package/lib/server/progress.js +136 -0
- package/lib/server/protocolError.js +52 -0
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/networkCapture.js +282 -0
- package/lib/server/recorder/recorderApp.js +581 -0
- package/lib/server/recorder/recorderRunner.js +138 -0
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +157 -0
- package/lib/server/recorder/sessionExporter.js +40 -0
- package/lib/server/recorder/sessionPromptBuilder.js +128 -0
- package/lib/server/recorder/sessionRedactor.js +74 -0
- package/lib/server/recorder/throttledFile.js +57 -0
- package/lib/server/recorder.js +538 -0
- package/lib/server/registry/browserFetcher.js +177 -0
- package/lib/server/registry/dependencies.js +371 -0
- package/lib/server/registry/index.js +1395 -0
- package/lib/server/registry/nativeDeps.js +1281 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +127 -0
- package/lib/server/screencast.js +238 -0
- package/lib/server/screenshotter.js +333 -0
- package/lib/server/selectors.js +112 -0
- package/lib/server/socksClientCertificatesInterceptor.js +383 -0
- package/lib/server/socksInterceptor.js +95 -0
- package/lib/server/trace/recorder/snapshotter.js +147 -0
- package/lib/server/trace/recorder/snapshotterInjected.js +561 -0
- package/lib/server/trace/recorder/tracing.js +615 -0
- package/lib/server/trace/viewer/traceViewer.js +244 -0
- package/lib/server/transport.js +181 -0
- package/lib/server/types.js +28 -0
- package/lib/server/usKeyboardLayout.js +152 -0
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +139 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +42 -0
- package/lib/server/utils/debugLogger.js +122 -0
- package/lib/server/utils/disposable.js +32 -0
- package/lib/server/utils/env.js +73 -0
- package/lib/server/utils/eventsHelper.js +41 -0
- package/lib/server/utils/expectUtils.js +123 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +123 -0
- package/lib/server/utils/httpServer.js +205 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/server/utils/image_tools/compare.js +109 -0
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/server/utils/image_tools/stats.js +102 -0
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +243 -0
- package/lib/server/utils/nodePlatform.js +154 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +243 -0
- package/lib/server/utils/profiler.js +65 -0
- package/lib/server/utils/socksProxy.js +511 -0
- package/lib/server/utils/spawnAsync.js +41 -0
- package/lib/server/utils/task.js +51 -0
- package/lib/server/utils/userAgent.js +98 -0
- package/lib/server/utils/wsServer.js +121 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- package/lib/server/videoRecorder.js +133 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +108 -0
- package/lib/server/webkit/wkBrowser.js +331 -0
- package/lib/server/webkit/wkConnection.js +144 -0
- package/lib/server/webkit/wkExecutionContext.js +154 -0
- package/lib/server/webkit/wkInput.js +181 -0
- package/lib/server/webkit/wkInterceptableRequest.js +197 -0
- package/lib/server/webkit/wkPage.js +1164 -0
- package/lib/server/webkit/wkProvisionalPage.js +83 -0
- package/lib/server/webkit/wkWorkers.js +106 -0
- package/lib/serverRegistry.js +147 -0
- package/lib/third_party/pixelmatch.js +255 -0
- package/lib/tools/backend/browserBackend.js +79 -0
- package/lib/tools/backend/common.js +63 -0
- package/lib/tools/backend/config.js +41 -0
- package/lib/tools/backend/console.js +66 -0
- package/lib/tools/backend/context.js +290 -0
- package/lib/tools/backend/cookies.js +152 -0
- package/lib/tools/backend/devtools.js +69 -0
- package/lib/tools/backend/dialogs.js +59 -0
- package/lib/tools/backend/evaluate.js +64 -0
- package/lib/tools/backend/files.js +60 -0
- package/lib/tools/backend/form.js +64 -0
- package/lib/tools/backend/keyboard.js +155 -0
- package/lib/tools/backend/logFile.js +95 -0
- package/lib/tools/backend/mouse.js +168 -0
- package/lib/tools/backend/navigate.js +106 -0
- package/lib/tools/backend/network.js +135 -0
- package/lib/tools/backend/pdf.js +48 -0
- package/lib/tools/backend/recorder.js +74 -0
- package/lib/tools/backend/response.js +302 -0
- package/lib/tools/backend/route.js +140 -0
- package/lib/tools/backend/runCode.js +76 -0
- package/lib/tools/backend/screenshot.js +88 -0
- package/lib/tools/backend/sessionLog.js +74 -0
- package/lib/tools/backend/snapshot.js +208 -0
- package/lib/tools/backend/storage.js +67 -0
- package/lib/tools/backend/tab.js +445 -0
- package/lib/tools/backend/tabs.js +67 -0
- package/lib/tools/backend/tool.js +47 -0
- package/lib/tools/backend/tools.js +104 -0
- package/lib/tools/backend/tracing.js +75 -0
- package/lib/tools/backend/utils.js +83 -0
- package/lib/tools/backend/verify.js +151 -0
- package/lib/tools/backend/video.js +89 -0
- package/lib/tools/backend/wait.js +63 -0
- package/lib/tools/backend/webstorage.js +223 -0
- package/lib/tools/cli-client/cli.js +6 -0
- package/lib/tools/cli-client/help.json +101 -0
- package/lib/tools/cli-client/minimist.js +128 -0
- package/lib/tools/cli-client/program.js +382 -0
- package/lib/tools/cli-client/registry.js +176 -0
- package/lib/tools/cli-client/session.js +289 -0
- package/lib/tools/cli-client/skill/SKILL.md +326 -0
- package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
- package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
- package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
- package/lib/tools/cli-client/skill/references/running-code.md +231 -0
- package/lib/tools/cli-client/skill/references/session-management.md +169 -0
- package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
- package/lib/tools/cli-client/skill/references/test-generation.md +88 -0
- package/lib/tools/cli-client/skill/references/tracing.md +139 -0
- package/lib/tools/cli-client/skill/references/video-recording.md +46 -0
- package/lib/tools/cli-daemon/command.js +73 -0
- package/lib/tools/cli-daemon/commands.js +933 -0
- package/lib/tools/cli-daemon/daemon.js +178 -0
- package/lib/tools/cli-daemon/helpGenerator.js +173 -0
- package/lib/tools/cli-daemon/program.js +118 -0
- package/lib/tools/dashboard/appIcon.png +0 -0
- package/lib/tools/dashboard/dashboardApp.js +286 -0
- package/lib/tools/dashboard/dashboardController.js +296 -0
- package/lib/tools/exports.js +60 -0
- package/lib/tools/mcp/browserFactory.js +233 -0
- package/lib/tools/mcp/cdpRelay.js +353 -0
- package/lib/tools/mcp/cli-stub.js +7 -0
- package/lib/tools/mcp/config.d.js +16 -0
- package/lib/tools/mcp/config.js +401 -0
- package/lib/tools/mcp/configIni.js +189 -0
- package/lib/tools/mcp/extensionContextFactory.js +59 -0
- package/lib/tools/mcp/index.js +62 -0
- package/lib/tools/mcp/log.js +35 -0
- package/lib/tools/mcp/program.js +107 -0
- package/lib/tools/mcp/protocol.js +28 -0
- package/lib/tools/mcp/watchdog.js +44 -0
- package/lib/tools/trace/SKILL.md +163 -0
- package/lib/tools/trace/installSkill.js +48 -0
- package/lib/tools/trace/traceActions.js +142 -0
- package/lib/tools/trace/traceAttachments.js +69 -0
- package/lib/tools/trace/traceCli.js +80 -0
- package/lib/tools/trace/traceConsole.js +97 -0
- package/lib/tools/trace/traceErrors.js +55 -0
- package/lib/tools/trace/traceOpen.js +69 -0
- package/lib/tools/trace/traceParser.js +96 -0
- package/lib/tools/trace/traceRequests.js +158 -0
- package/lib/tools/trace/traceScreenshot.js +68 -0
- package/lib/tools/trace/traceSnapshot.js +149 -0
- package/lib/tools/trace/traceUtils.js +135 -0
- package/lib/tools/utils/connect.js +32 -0
- package/lib/tools/utils/mcp/http.js +152 -0
- package/lib/tools/utils/mcp/server.js +230 -0
- package/lib/tools/utils/mcp/tool.js +47 -0
- package/lib/tools/utils/socketConnection.js +108 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +455 -0
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +245 -0
- package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
- package/lib/utils/isomorphic/formatUtils.js +64 -0
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/imageUtils.js +141 -0
- package/lib/utils/isomorphic/locatorGenerators.js +689 -0
- package/lib/utils/isomorphic/locatorParser.js +176 -0
- package/lib/utils/isomorphic/locatorUtils.js +81 -0
- package/lib/utils/isomorphic/lruCache.js +51 -0
- package/lib/utils/isomorphic/manualPromise.js +114 -0
- package/lib/utils/isomorphic/mimeType.js +464 -0
- package/lib/utils/isomorphic/multimap.js +80 -0
- package/lib/utils/isomorphic/protocolFormatter.js +81 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +347 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +386 -0
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +204 -0
- package/lib/utils/isomorphic/time.js +49 -0
- package/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/lib/utils/isomorphic/trace/entries.js +16 -0
- package/lib/utils/isomorphic/trace/snapshotRenderer.js +492 -0
- package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
- package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
- package/lib/utils/isomorphic/trace/traceLoader.js +131 -0
- package/lib/utils/isomorphic/trace/traceModel.js +366 -0
- package/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
- package/lib/utils/isomorphic/trace/traceUtils.js +58 -0
- package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
- package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +243 -0
- package/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
- package/lib/utils/isomorphic/yaml.js +84 -0
- package/lib/utils.js +113 -0
- package/lib/utilsBundle.js +91 -0
- package/lib/utilsBundleImpl/index.js +218 -0
- package/lib/utilsBundleImpl/xdg-open +1066 -0
- package/lib/vite/dashboard/assets/index-Bn2lDGZX.js +50 -0
- package/lib/vite/dashboard/assets/index-DDWrEWMc.css +1 -0
- package/lib/vite/dashboard/index.html +28 -0
- package/lib/vite/htmlReport/index.html +89 -0
- package/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
- package/lib/vite/recorder/assets/codeMirrorModule-RoSmqW0t.js +32 -0
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-CLrDthbi.js +193 -0
- package/lib/vite/recorder/assets/index-OFPIkgDs.css +1 -0
- package/lib/vite/recorder/index.html +29 -0
- package/lib/vite/recorder/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-Cigrr2OM.js +32 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-ConrJv9G.js +262 -0
- package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
- package/lib/vite/traceViewer/index.CzXZzn5A.css +1 -0
- package/lib/vite/traceViewer/index.EVGp-u_4.js +2 -0
- package/lib/vite/traceViewer/index.html +43 -0
- package/lib/vite/traceViewer/manifest.webmanifest +16 -0
- package/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/snapshot.html +21 -0
- package/lib/vite/traceViewer/sw.bundle.js +5 -0
- package/lib/vite/traceViewer/uiMode.Bewj7-uD.js +6 -0
- package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
- package/lib/vite/traceViewer/uiMode.html +17 -0
- package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
- package/lib/zipBundle.js +34 -0
- package/lib/zipBundleImpl.js +5 -0
- package/package.json +46 -0
- package/types/protocol.d.ts +24365 -0
- package/types/structs.d.ts +45 -0
- package/types/types.d.ts +23498 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var dialogs_exports = {};
|
|
20
|
+
__export(dialogs_exports, {
|
|
21
|
+
default: () => dialogs_default,
|
|
22
|
+
handleDialog: () => handleDialog
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(dialogs_exports);
|
|
25
|
+
var import_mcpBundle = require("../../mcpBundle");
|
|
26
|
+
var import_tool = require("./tool");
|
|
27
|
+
const handleDialog = (0, import_tool.defineTabTool)({
|
|
28
|
+
capability: "core",
|
|
29
|
+
schema: {
|
|
30
|
+
name: "browser_handle_dialog",
|
|
31
|
+
title: "Handle a dialog",
|
|
32
|
+
description: "Handle a dialog",
|
|
33
|
+
inputSchema: import_mcpBundle.z.object({
|
|
34
|
+
accept: import_mcpBundle.z.boolean().describe("Whether to accept the dialog."),
|
|
35
|
+
promptText: import_mcpBundle.z.string().optional().describe("The text of the prompt in case of a prompt dialog.")
|
|
36
|
+
}),
|
|
37
|
+
type: "action"
|
|
38
|
+
},
|
|
39
|
+
handle: async (tab, params, response) => {
|
|
40
|
+
const dialogState = tab.modalStates().find((state) => state.type === "dialog");
|
|
41
|
+
if (!dialogState)
|
|
42
|
+
throw new Error("No dialog visible");
|
|
43
|
+
tab.clearModalState(dialogState);
|
|
44
|
+
await tab.waitForCompletion(async () => {
|
|
45
|
+
if (params.accept)
|
|
46
|
+
await dialogState.dialog.accept(params.promptText);
|
|
47
|
+
else
|
|
48
|
+
await dialogState.dialog.dismiss();
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
clearsModalState: "dialog"
|
|
52
|
+
});
|
|
53
|
+
var dialogs_default = [
|
|
54
|
+
handleDialog
|
|
55
|
+
];
|
|
56
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
57
|
+
0 && (module.exports = {
|
|
58
|
+
handleDialog
|
|
59
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var evaluate_exports = {};
|
|
20
|
+
__export(evaluate_exports, {
|
|
21
|
+
default: () => evaluate_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(evaluate_exports);
|
|
24
|
+
var import_mcpBundle = require("../../mcpBundle");
|
|
25
|
+
var import_stringUtils = require("../../utils/isomorphic/stringUtils");
|
|
26
|
+
var import_tool = require("./tool");
|
|
27
|
+
const evaluateSchema = import_mcpBundle.z.object({
|
|
28
|
+
function: import_mcpBundle.z.string().describe("() => { /* code */ } or (element) => { /* code */ } when element is provided"),
|
|
29
|
+
element: import_mcpBundle.z.string().optional().describe("Human-readable element description used to obtain permission to interact with the element"),
|
|
30
|
+
ref: import_mcpBundle.z.string().optional().describe("Exact target element reference from the page snapshot"),
|
|
31
|
+
selector: import_mcpBundle.z.string().optional().describe('CSS or role selector for the target element, when "ref" is not available.'),
|
|
32
|
+
filename: import_mcpBundle.z.string().optional().describe("Filename to save the result to. If not provided, result is returned as text.")
|
|
33
|
+
});
|
|
34
|
+
const evaluate = (0, import_tool.defineTabTool)({
|
|
35
|
+
capability: "core",
|
|
36
|
+
schema: {
|
|
37
|
+
name: "browser_evaluate",
|
|
38
|
+
title: "Evaluate JavaScript",
|
|
39
|
+
description: "Evaluate JavaScript expression on page or element",
|
|
40
|
+
inputSchema: evaluateSchema,
|
|
41
|
+
type: "action"
|
|
42
|
+
},
|
|
43
|
+
handle: async (tab, params, response) => {
|
|
44
|
+
let locator;
|
|
45
|
+
if (!params.function.includes("=>"))
|
|
46
|
+
params.function = `() => (${params.function})`;
|
|
47
|
+
if (params.ref) {
|
|
48
|
+
locator = await tab.refLocator({ ref: params.ref, selector: params.selector, element: params.element || "element" });
|
|
49
|
+
response.addCode(`await page.${locator.resolved}.evaluate(${(0, import_stringUtils.escapeWithQuotes)(params.function)});`);
|
|
50
|
+
} else {
|
|
51
|
+
response.addCode(`await page.evaluate(${(0, import_stringUtils.escapeWithQuotes)(params.function)});`);
|
|
52
|
+
}
|
|
53
|
+
await tab.waitForCompletion(async () => {
|
|
54
|
+
const func = new Function();
|
|
55
|
+
func.toString = () => params.function;
|
|
56
|
+
const result = locator?.locator ? await locator?.locator.evaluate(func) : await tab.page.evaluate(func);
|
|
57
|
+
const text = JSON.stringify(result, null, 2) || "undefined";
|
|
58
|
+
await response.addResult("Evaluation result", text, { prefix: "result", ext: "json", suggestedFilename: params.filename });
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
var evaluate_default = [
|
|
63
|
+
evaluate
|
|
64
|
+
];
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var files_exports = {};
|
|
20
|
+
__export(files_exports, {
|
|
21
|
+
default: () => files_default,
|
|
22
|
+
uploadFile: () => uploadFile
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(files_exports);
|
|
25
|
+
var import_mcpBundle = require("../../mcpBundle");
|
|
26
|
+
var import_tool = require("./tool");
|
|
27
|
+
const uploadFile = (0, import_tool.defineTabTool)({
|
|
28
|
+
capability: "core",
|
|
29
|
+
schema: {
|
|
30
|
+
name: "browser_file_upload",
|
|
31
|
+
title: "Upload files",
|
|
32
|
+
description: "Upload one or multiple files",
|
|
33
|
+
inputSchema: import_mcpBundle.z.object({
|
|
34
|
+
paths: import_mcpBundle.z.array(import_mcpBundle.z.string()).optional().describe("The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled.")
|
|
35
|
+
}),
|
|
36
|
+
type: "action"
|
|
37
|
+
},
|
|
38
|
+
handle: async (tab, params, response) => {
|
|
39
|
+
response.setIncludeSnapshot();
|
|
40
|
+
const modalState = tab.modalStates().find((state) => state.type === "fileChooser");
|
|
41
|
+
if (!modalState)
|
|
42
|
+
throw new Error("No file chooser visible");
|
|
43
|
+
if (params.paths)
|
|
44
|
+
await Promise.all(params.paths.map((filePath) => response.resolveClientFilename(filePath)));
|
|
45
|
+
response.addCode(`await fileChooser.setFiles(${JSON.stringify(params.paths)})`);
|
|
46
|
+
tab.clearModalState(modalState);
|
|
47
|
+
await tab.waitForCompletion(async () => {
|
|
48
|
+
if (params.paths)
|
|
49
|
+
await modalState.fileChooser.setFiles(params.paths);
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
clearsModalState: "fileChooser"
|
|
53
|
+
});
|
|
54
|
+
var files_default = [
|
|
55
|
+
uploadFile
|
|
56
|
+
];
|
|
57
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
58
|
+
0 && (module.exports = {
|
|
59
|
+
uploadFile
|
|
60
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var form_exports = {};
|
|
20
|
+
__export(form_exports, {
|
|
21
|
+
default: () => form_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(form_exports);
|
|
24
|
+
var import_mcpBundle = require("../../mcpBundle");
|
|
25
|
+
var import_stringUtils = require("../../utils/isomorphic/stringUtils");
|
|
26
|
+
var import_tool = require("./tool");
|
|
27
|
+
const fillForm = (0, import_tool.defineTabTool)({
|
|
28
|
+
capability: "core",
|
|
29
|
+
schema: {
|
|
30
|
+
name: "browser_fill_form",
|
|
31
|
+
title: "Fill form",
|
|
32
|
+
description: "Fill multiple form fields",
|
|
33
|
+
inputSchema: import_mcpBundle.z.object({
|
|
34
|
+
fields: import_mcpBundle.z.array(import_mcpBundle.z.object({
|
|
35
|
+
name: import_mcpBundle.z.string().describe("Human-readable field name"),
|
|
36
|
+
type: import_mcpBundle.z.enum(["textbox", "checkbox", "radio", "combobox", "slider"]).describe("Type of the field"),
|
|
37
|
+
ref: import_mcpBundle.z.string().describe("Exact target field reference from the page snapshot"),
|
|
38
|
+
selector: import_mcpBundle.z.string().optional().describe('CSS or role selector for the field element, when "ref" is not available. Either "selector" or "ref" is required.'),
|
|
39
|
+
value: import_mcpBundle.z.string().describe("Value to fill in the field. If the field is a checkbox, the value should be `true` or `false`. If the field is a combobox, the value should be the text of the option.")
|
|
40
|
+
})).describe("Fields to fill in")
|
|
41
|
+
}),
|
|
42
|
+
type: "input"
|
|
43
|
+
},
|
|
44
|
+
handle: async (tab, params, response) => {
|
|
45
|
+
for (const field of params.fields) {
|
|
46
|
+
const { locator, resolved } = await tab.refLocator({ element: field.name, ref: field.ref, selector: field.selector });
|
|
47
|
+
const locatorSource = `await page.${resolved}`;
|
|
48
|
+
if (field.type === "textbox" || field.type === "slider") {
|
|
49
|
+
const secret = tab.context.lookupSecret(field.value);
|
|
50
|
+
await locator.fill(secret.value, tab.actionTimeoutOptions);
|
|
51
|
+
response.addCode(`${locatorSource}.fill(${secret.code});`);
|
|
52
|
+
} else if (field.type === "checkbox" || field.type === "radio") {
|
|
53
|
+
await locator.setChecked(field.value === "true", tab.actionTimeoutOptions);
|
|
54
|
+
response.addCode(`${locatorSource}.setChecked(${field.value});`);
|
|
55
|
+
} else if (field.type === "combobox") {
|
|
56
|
+
await locator.selectOption({ label: field.value }, tab.actionTimeoutOptions);
|
|
57
|
+
response.addCode(`${locatorSource}.selectOption(${(0, import_stringUtils.escapeWithQuotes)(field.value)});`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
var form_default = [
|
|
63
|
+
fillForm
|
|
64
|
+
];
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var keyboard_exports = {};
|
|
20
|
+
__export(keyboard_exports, {
|
|
21
|
+
default: () => keyboard_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(keyboard_exports);
|
|
24
|
+
var import_mcpBundle = require("../../mcpBundle");
|
|
25
|
+
var import_tool = require("./tool");
|
|
26
|
+
var import_snapshot = require("./snapshot");
|
|
27
|
+
const press = (0, import_tool.defineTabTool)({
|
|
28
|
+
capability: "core-input",
|
|
29
|
+
schema: {
|
|
30
|
+
name: "browser_press_key",
|
|
31
|
+
title: "Press a key",
|
|
32
|
+
description: "Press a key on the keyboard",
|
|
33
|
+
inputSchema: import_mcpBundle.z.object({
|
|
34
|
+
key: import_mcpBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`")
|
|
35
|
+
}),
|
|
36
|
+
type: "input"
|
|
37
|
+
},
|
|
38
|
+
handle: async (tab, params, response) => {
|
|
39
|
+
response.addCode(`// Press ${params.key}`);
|
|
40
|
+
response.addCode(`await page.keyboard.press('${params.key}');`);
|
|
41
|
+
if (params.key === "Enter") {
|
|
42
|
+
response.setIncludeSnapshot();
|
|
43
|
+
await tab.waitForCompletion(async () => {
|
|
44
|
+
await tab.page.keyboard.press("Enter");
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
await tab.page.keyboard.press(params.key);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const pressSequentially = (0, import_tool.defineTabTool)({
|
|
52
|
+
capability: "core-input",
|
|
53
|
+
skillOnly: true,
|
|
54
|
+
schema: {
|
|
55
|
+
name: "browser_press_sequentially",
|
|
56
|
+
title: "Type text key by key",
|
|
57
|
+
description: "Type text key by key on the keyboard",
|
|
58
|
+
inputSchema: import_mcpBundle.z.object({
|
|
59
|
+
text: import_mcpBundle.z.string().describe("Text to type"),
|
|
60
|
+
submit: import_mcpBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)")
|
|
61
|
+
}),
|
|
62
|
+
type: "input"
|
|
63
|
+
},
|
|
64
|
+
handle: async (tab, params, response) => {
|
|
65
|
+
response.addCode(`// Press ${params.text}`);
|
|
66
|
+
response.addCode(`await page.keyboard.type('${params.text}');`);
|
|
67
|
+
await tab.page.keyboard.type(params.text);
|
|
68
|
+
if (params.submit) {
|
|
69
|
+
response.addCode(`await page.keyboard.press('Enter');`);
|
|
70
|
+
response.setIncludeSnapshot();
|
|
71
|
+
await tab.waitForCompletion(async () => {
|
|
72
|
+
await tab.page.keyboard.press("Enter");
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const typeSchema = import_snapshot.elementSchema.extend({
|
|
78
|
+
text: import_mcpBundle.z.string().describe("Text to type into the element"),
|
|
79
|
+
submit: import_mcpBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)"),
|
|
80
|
+
slowly: import_mcpBundle.z.boolean().optional().describe("Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.")
|
|
81
|
+
});
|
|
82
|
+
const type = (0, import_tool.defineTabTool)({
|
|
83
|
+
capability: "core-input",
|
|
84
|
+
schema: {
|
|
85
|
+
name: "browser_type",
|
|
86
|
+
title: "Type text",
|
|
87
|
+
description: "Type text into editable element",
|
|
88
|
+
inputSchema: typeSchema,
|
|
89
|
+
type: "input"
|
|
90
|
+
},
|
|
91
|
+
handle: async (tab, params, response) => {
|
|
92
|
+
const { locator, resolved } = await tab.refLocator(params);
|
|
93
|
+
const secret = tab.context.lookupSecret(params.text);
|
|
94
|
+
const action = async () => {
|
|
95
|
+
if (params.slowly) {
|
|
96
|
+
response.setIncludeSnapshot();
|
|
97
|
+
response.addCode(`await page.${resolved}.pressSequentially(${secret.code});`);
|
|
98
|
+
await locator.pressSequentially(secret.value, tab.actionTimeoutOptions);
|
|
99
|
+
} else {
|
|
100
|
+
response.addCode(`await page.${resolved}.fill(${secret.code});`);
|
|
101
|
+
await locator.fill(secret.value, tab.actionTimeoutOptions);
|
|
102
|
+
}
|
|
103
|
+
if (params.submit) {
|
|
104
|
+
response.setIncludeSnapshot();
|
|
105
|
+
response.addCode(`await page.${resolved}.press('Enter');`);
|
|
106
|
+
await locator.press("Enter", tab.actionTimeoutOptions);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
if (params.submit || params.slowly)
|
|
110
|
+
await tab.waitForCompletion(action);
|
|
111
|
+
else
|
|
112
|
+
await action();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
const keydown = (0, import_tool.defineTabTool)({
|
|
116
|
+
capability: "core-input",
|
|
117
|
+
skillOnly: true,
|
|
118
|
+
schema: {
|
|
119
|
+
name: "browser_keydown",
|
|
120
|
+
title: "Press a key down",
|
|
121
|
+
description: "Press a key down on the keyboard",
|
|
122
|
+
inputSchema: import_mcpBundle.z.object({
|
|
123
|
+
key: import_mcpBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`")
|
|
124
|
+
}),
|
|
125
|
+
type: "input"
|
|
126
|
+
},
|
|
127
|
+
handle: async (tab, params, response) => {
|
|
128
|
+
response.addCode(`await page.keyboard.down('${params.key}');`);
|
|
129
|
+
await tab.page.keyboard.down(params.key);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
const keyup = (0, import_tool.defineTabTool)({
|
|
133
|
+
capability: "core-input",
|
|
134
|
+
skillOnly: true,
|
|
135
|
+
schema: {
|
|
136
|
+
name: "browser_keyup",
|
|
137
|
+
title: "Press a key up",
|
|
138
|
+
description: "Press a key up on the keyboard",
|
|
139
|
+
inputSchema: import_mcpBundle.z.object({
|
|
140
|
+
key: import_mcpBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`")
|
|
141
|
+
}),
|
|
142
|
+
type: "input"
|
|
143
|
+
},
|
|
144
|
+
handle: async (tab, params, response) => {
|
|
145
|
+
response.addCode(`await page.keyboard.up('${params.key}');`);
|
|
146
|
+
await tab.page.keyboard.up(params.key);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
var keyboard_default = [
|
|
150
|
+
press,
|
|
151
|
+
type,
|
|
152
|
+
pressSequentially,
|
|
153
|
+
keydown,
|
|
154
|
+
keyup
|
|
155
|
+
];
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var logFile_exports = {};
|
|
30
|
+
__export(logFile_exports, {
|
|
31
|
+
LogFile: () => LogFile
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(logFile_exports);
|
|
34
|
+
var import_fs = __toESM(require("fs"));
|
|
35
|
+
var import_path = __toESM(require("path"));
|
|
36
|
+
var import_utilsBundle = require("../../utilsBundle");
|
|
37
|
+
class LogFile {
|
|
38
|
+
constructor(context, startTime, filePrefix, title) {
|
|
39
|
+
this._stopped = false;
|
|
40
|
+
this._line = 0;
|
|
41
|
+
this._entries = 0;
|
|
42
|
+
this._lastLine = 0;
|
|
43
|
+
this._lastEntries = 0;
|
|
44
|
+
this._writeChain = Promise.resolve();
|
|
45
|
+
this._context = context;
|
|
46
|
+
this._startTime = startTime;
|
|
47
|
+
this._filePrefix = filePrefix;
|
|
48
|
+
this._title = title;
|
|
49
|
+
}
|
|
50
|
+
appendLine(wallTime, text) {
|
|
51
|
+
this._writeChain = this._writeChain.then(() => this._write(wallTime, text)).catch((e) => (0, import_utilsBundle.debug)("pw:tools:error")(e));
|
|
52
|
+
}
|
|
53
|
+
stop() {
|
|
54
|
+
this._stopped = true;
|
|
55
|
+
}
|
|
56
|
+
async take(relativeTo) {
|
|
57
|
+
const logChunk = await this._take();
|
|
58
|
+
if (!logChunk)
|
|
59
|
+
return void 0;
|
|
60
|
+
const logFilePath = relativeTo ? import_path.default.relative(relativeTo, logChunk.file) : logChunk.file;
|
|
61
|
+
const lineRange = logChunk.fromLine === logChunk.toLine ? `#L${logChunk.fromLine}` : `#L${logChunk.fromLine}-L${logChunk.toLine}`;
|
|
62
|
+
return `${logFilePath}${lineRange}`;
|
|
63
|
+
}
|
|
64
|
+
async _take() {
|
|
65
|
+
await this._writeChain;
|
|
66
|
+
if (!this._file || this._entries === this._lastEntries)
|
|
67
|
+
return void 0;
|
|
68
|
+
const chunk = {
|
|
69
|
+
type: this._title.toLowerCase(),
|
|
70
|
+
file: this._file,
|
|
71
|
+
fromLine: this._lastLine + 1,
|
|
72
|
+
toLine: this._line,
|
|
73
|
+
entryCount: this._entries - this._lastEntries
|
|
74
|
+
};
|
|
75
|
+
this._lastLine = this._line;
|
|
76
|
+
this._lastEntries = this._entries;
|
|
77
|
+
return chunk;
|
|
78
|
+
}
|
|
79
|
+
async _write(wallTime, text) {
|
|
80
|
+
if (this._stopped)
|
|
81
|
+
return;
|
|
82
|
+
this._file ??= await this._context.outputFile({ prefix: this._filePrefix, ext: "log", date: new Date(this._startTime) }, { origin: "code" });
|
|
83
|
+
const relativeTime = Math.round(wallTime - this._startTime);
|
|
84
|
+
const logLine = `[${String(relativeTime).padStart(8, " ")}ms] ${text}
|
|
85
|
+
`;
|
|
86
|
+
await import_fs.default.promises.appendFile(this._file, logLine);
|
|
87
|
+
const lineCount = logLine.split("\n").length - 1;
|
|
88
|
+
this._line += lineCount;
|
|
89
|
+
this._entries++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
93
|
+
0 && (module.exports = {
|
|
94
|
+
LogFile
|
|
95
|
+
});
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var mouse_exports = {};
|
|
20
|
+
__export(mouse_exports, {
|
|
21
|
+
default: () => mouse_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(mouse_exports);
|
|
24
|
+
var import_mcpBundle = require("../../mcpBundle");
|
|
25
|
+
var import_stringUtils = require("../../utils/isomorphic/stringUtils");
|
|
26
|
+
var import_tool = require("./tool");
|
|
27
|
+
const mouseMove = (0, import_tool.defineTabTool)({
|
|
28
|
+
capability: "vision",
|
|
29
|
+
schema: {
|
|
30
|
+
name: "browser_mouse_move_xy",
|
|
31
|
+
title: "Move mouse",
|
|
32
|
+
description: "Move mouse to a given position",
|
|
33
|
+
inputSchema: import_mcpBundle.z.object({
|
|
34
|
+
x: import_mcpBundle.z.number().describe("X coordinate"),
|
|
35
|
+
y: import_mcpBundle.z.number().describe("Y coordinate")
|
|
36
|
+
}),
|
|
37
|
+
type: "input"
|
|
38
|
+
},
|
|
39
|
+
handle: async (tab, params, response) => {
|
|
40
|
+
response.addCode(`// Move mouse to (${params.x}, ${params.y})`);
|
|
41
|
+
response.addCode(`await page.mouse.move(${params.x}, ${params.y});`);
|
|
42
|
+
await tab.page.mouse.move(params.x, params.y);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
const mouseDown = (0, import_tool.defineTabTool)({
|
|
46
|
+
capability: "vision",
|
|
47
|
+
schema: {
|
|
48
|
+
name: "browser_mouse_down",
|
|
49
|
+
title: "Press mouse down",
|
|
50
|
+
description: "Press mouse down",
|
|
51
|
+
inputSchema: import_mcpBundle.z.object({
|
|
52
|
+
button: import_mcpBundle.z.enum(["left", "right", "middle"]).optional().describe("Button to press, defaults to left")
|
|
53
|
+
}),
|
|
54
|
+
type: "input"
|
|
55
|
+
},
|
|
56
|
+
handle: async (tab, params, response) => {
|
|
57
|
+
const options = { button: params.button };
|
|
58
|
+
const optionsArg = (0, import_stringUtils.formatObjectOrVoid)(options);
|
|
59
|
+
response.addCode(`// Press mouse down`);
|
|
60
|
+
response.addCode(`await page.mouse.down(${optionsArg});`);
|
|
61
|
+
await tab.page.mouse.down(options);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
const mouseUp = (0, import_tool.defineTabTool)({
|
|
65
|
+
capability: "vision",
|
|
66
|
+
schema: {
|
|
67
|
+
name: "browser_mouse_up",
|
|
68
|
+
title: "Press mouse up",
|
|
69
|
+
description: "Press mouse up",
|
|
70
|
+
inputSchema: import_mcpBundle.z.object({
|
|
71
|
+
button: import_mcpBundle.z.enum(["left", "right", "middle"]).optional().describe("Button to press, defaults to left")
|
|
72
|
+
}),
|
|
73
|
+
type: "input"
|
|
74
|
+
},
|
|
75
|
+
handle: async (tab, params, response) => {
|
|
76
|
+
const options = { button: params.button };
|
|
77
|
+
const optionsArg = (0, import_stringUtils.formatObjectOrVoid)(options);
|
|
78
|
+
response.addCode(`// Press mouse up`);
|
|
79
|
+
response.addCode(`await page.mouse.up(${optionsArg});`);
|
|
80
|
+
await tab.page.mouse.up(options);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
const mouseWheel = (0, import_tool.defineTabTool)({
|
|
84
|
+
capability: "vision",
|
|
85
|
+
schema: {
|
|
86
|
+
name: "browser_mouse_wheel",
|
|
87
|
+
title: "Scroll mouse wheel",
|
|
88
|
+
description: "Scroll mouse wheel",
|
|
89
|
+
inputSchema: import_mcpBundle.z.object({
|
|
90
|
+
deltaX: import_mcpBundle.z.number().default(0).describe("X delta"),
|
|
91
|
+
deltaY: import_mcpBundle.z.number().default(0).describe("Y delta")
|
|
92
|
+
}),
|
|
93
|
+
type: "input"
|
|
94
|
+
},
|
|
95
|
+
handle: async (tab, params, response) => {
|
|
96
|
+
response.addCode(`// Scroll mouse wheel`);
|
|
97
|
+
response.addCode(`await page.mouse.wheel(${params.deltaX}, ${params.deltaY});`);
|
|
98
|
+
await tab.page.mouse.wheel(params.deltaX, params.deltaY);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
const mouseClick = (0, import_tool.defineTabTool)({
|
|
102
|
+
capability: "vision",
|
|
103
|
+
schema: {
|
|
104
|
+
name: "browser_mouse_click_xy",
|
|
105
|
+
title: "Click",
|
|
106
|
+
description: "Click mouse button at a given position",
|
|
107
|
+
inputSchema: import_mcpBundle.z.object({
|
|
108
|
+
x: import_mcpBundle.z.number().describe("X coordinate"),
|
|
109
|
+
y: import_mcpBundle.z.number().describe("Y coordinate"),
|
|
110
|
+
button: import_mcpBundle.z.enum(["left", "right", "middle"]).optional().describe("Button to click, defaults to left"),
|
|
111
|
+
clickCount: import_mcpBundle.z.number().optional().describe("Number of clicks, defaults to 1"),
|
|
112
|
+
delay: import_mcpBundle.z.number().optional().describe("Time to wait between mouse down and mouse up in milliseconds, defaults to 0")
|
|
113
|
+
}),
|
|
114
|
+
type: "input"
|
|
115
|
+
},
|
|
116
|
+
handle: async (tab, params, response) => {
|
|
117
|
+
response.setIncludeSnapshot();
|
|
118
|
+
const options = {
|
|
119
|
+
button: params.button,
|
|
120
|
+
clickCount: params.clickCount,
|
|
121
|
+
delay: params.delay
|
|
122
|
+
};
|
|
123
|
+
const formatted = (0, import_stringUtils.formatObjectOrVoid)(options);
|
|
124
|
+
const optionsArg = formatted ? `, ${formatted}` : "";
|
|
125
|
+
response.addCode(`// Click mouse at coordinates (${params.x}, ${params.y})`);
|
|
126
|
+
response.addCode(`await page.mouse.click(${params.x}, ${params.y}${optionsArg});`);
|
|
127
|
+
await tab.waitForCompletion(async () => {
|
|
128
|
+
await tab.page.mouse.click(params.x, params.y, options);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
const mouseDrag = (0, import_tool.defineTabTool)({
|
|
133
|
+
capability: "vision",
|
|
134
|
+
schema: {
|
|
135
|
+
name: "browser_mouse_drag_xy",
|
|
136
|
+
title: "Drag mouse",
|
|
137
|
+
description: "Drag left mouse button to a given position",
|
|
138
|
+
inputSchema: import_mcpBundle.z.object({
|
|
139
|
+
startX: import_mcpBundle.z.number().describe("Start X coordinate"),
|
|
140
|
+
startY: import_mcpBundle.z.number().describe("Start Y coordinate"),
|
|
141
|
+
endX: import_mcpBundle.z.number().describe("End X coordinate"),
|
|
142
|
+
endY: import_mcpBundle.z.number().describe("End Y coordinate")
|
|
143
|
+
}),
|
|
144
|
+
type: "input"
|
|
145
|
+
},
|
|
146
|
+
handle: async (tab, params, response) => {
|
|
147
|
+
response.setIncludeSnapshot();
|
|
148
|
+
response.addCode(`// Drag mouse from (${params.startX}, ${params.startY}) to (${params.endX}, ${params.endY})`);
|
|
149
|
+
response.addCode(`await page.mouse.move(${params.startX}, ${params.startY});`);
|
|
150
|
+
response.addCode(`await page.mouse.down();`);
|
|
151
|
+
response.addCode(`await page.mouse.move(${params.endX}, ${params.endY});`);
|
|
152
|
+
response.addCode(`await page.mouse.up();`);
|
|
153
|
+
await tab.waitForCompletion(async () => {
|
|
154
|
+
await tab.page.mouse.move(params.startX, params.startY);
|
|
155
|
+
await tab.page.mouse.down();
|
|
156
|
+
await tab.page.mouse.move(params.endX, params.endY);
|
|
157
|
+
await tab.page.mouse.up();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
var mouse_default = [
|
|
162
|
+
mouseMove,
|
|
163
|
+
mouseClick,
|
|
164
|
+
mouseDrag,
|
|
165
|
+
mouseDown,
|
|
166
|
+
mouseUp,
|
|
167
|
+
mouseWheel
|
|
168
|
+
];
|