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,178 @@
|
|
|
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 daemon_exports = {};
|
|
30
|
+
__export(daemon_exports, {
|
|
31
|
+
startCliDaemonServer: () => startCliDaemonServer
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(daemon_exports);
|
|
34
|
+
var import_fs = __toESM(require("fs"));
|
|
35
|
+
var import_net = __toESM(require("net"));
|
|
36
|
+
var import_os = __toESM(require("os"));
|
|
37
|
+
var import_path = __toESM(require("path"));
|
|
38
|
+
var import_utils = require("../../utils");
|
|
39
|
+
var import_utilsBundle = require("../../utilsBundle");
|
|
40
|
+
var import_network = require("../../server/utils/network");
|
|
41
|
+
var import_processLauncher = require("../../server/utils/processLauncher");
|
|
42
|
+
var import_browserBackend = require("../backend/browserBackend");
|
|
43
|
+
var import_tools = require("../backend/tools");
|
|
44
|
+
var import_command = require("./command");
|
|
45
|
+
var import_commands = require("./commands");
|
|
46
|
+
var import_socketConnection = require("../utils/socketConnection");
|
|
47
|
+
var import_registry = require("../cli-client/registry");
|
|
48
|
+
const daemonDebug = (0, import_utilsBundle.debug)("pw:daemon");
|
|
49
|
+
async function socketExists(socketPath) {
|
|
50
|
+
try {
|
|
51
|
+
const stat = await import_fs.default.promises.stat(socketPath);
|
|
52
|
+
if (stat?.isSocket())
|
|
53
|
+
return true;
|
|
54
|
+
} catch (e) {
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
async function startCliDaemonServer(sessionName, browserContext, browserInfo, contextConfig = {}, clientInfo = (0, import_registry.createClientInfo)(), options) {
|
|
59
|
+
const sessionConfig = createSessionConfig(clientInfo, sessionName, browserInfo, options);
|
|
60
|
+
const { socketPath } = sessionConfig;
|
|
61
|
+
if (process.platform !== "win32" && await socketExists(socketPath)) {
|
|
62
|
+
daemonDebug(`Socket already exists, removing: ${socketPath}`);
|
|
63
|
+
try {
|
|
64
|
+
await import_fs.default.promises.unlink(socketPath);
|
|
65
|
+
} catch (error) {
|
|
66
|
+
daemonDebug(`Failed to remove existing socket: ${error}`);
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const backend = new import_browserBackend.BrowserBackend(contextConfig, browserContext, import_tools.browserTools);
|
|
71
|
+
await backend.initialize({ cwd: process.cwd() });
|
|
72
|
+
await import_fs.default.promises.mkdir(import_path.default.dirname(socketPath), { recursive: true });
|
|
73
|
+
if (browserContext.isClosed())
|
|
74
|
+
throw new Error("Browser context was closed before the daemon could start");
|
|
75
|
+
const server = import_net.default.createServer((socket) => {
|
|
76
|
+
daemonDebug("new client connection");
|
|
77
|
+
const connection = new import_socketConnection.SocketConnection(socket);
|
|
78
|
+
connection.onclose = () => {
|
|
79
|
+
daemonDebug("client disconnected");
|
|
80
|
+
};
|
|
81
|
+
connection.onmessage = async (message) => {
|
|
82
|
+
const { id, method, params } = message;
|
|
83
|
+
try {
|
|
84
|
+
daemonDebug("received command", method);
|
|
85
|
+
if (method === "stop") {
|
|
86
|
+
daemonDebug("stop command received, shutting down");
|
|
87
|
+
await deleteSessionFile(clientInfo, sessionConfig);
|
|
88
|
+
const sendAck = async () => connection.send({ id, result: "ok" }).catch(() => {
|
|
89
|
+
});
|
|
90
|
+
if (options?.exitOnClose)
|
|
91
|
+
(0, import_processLauncher.gracefullyProcessExitDoNotHang)(0, () => sendAck());
|
|
92
|
+
else
|
|
93
|
+
await sendAck();
|
|
94
|
+
} else if (method === "run") {
|
|
95
|
+
const { toolName, toolParams } = parseCliCommand(params.args);
|
|
96
|
+
if (params.cwd)
|
|
97
|
+
toolParams._meta = { cwd: params.cwd };
|
|
98
|
+
const response = await backend.callTool(toolName, toolParams);
|
|
99
|
+
await connection.send({ id, result: formatResult(response) });
|
|
100
|
+
} else {
|
|
101
|
+
throw new Error(`Unknown method: ${method}`);
|
|
102
|
+
}
|
|
103
|
+
} catch (e) {
|
|
104
|
+
daemonDebug("command failed", e);
|
|
105
|
+
const error = process.env.PWDEBUGIMPL ? e.stack || e.message : e.message;
|
|
106
|
+
connection.send({ id, error }).catch(() => {
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
(0, import_network.decorateServer)(server);
|
|
112
|
+
browserContext.on("close", () => Promise.resolve().then(async () => {
|
|
113
|
+
await deleteSessionFile(clientInfo, sessionConfig);
|
|
114
|
+
if (options?.exitOnClose)
|
|
115
|
+
(0, import_processLauncher.gracefullyProcessExitDoNotHang)(0);
|
|
116
|
+
}));
|
|
117
|
+
await new Promise((resolve, reject) => {
|
|
118
|
+
server.on("error", (error) => {
|
|
119
|
+
daemonDebug(`server error: ${error.message}`);
|
|
120
|
+
reject(error);
|
|
121
|
+
});
|
|
122
|
+
server.listen(socketPath, () => resolve());
|
|
123
|
+
});
|
|
124
|
+
await saveSessionFile(clientInfo, sessionConfig);
|
|
125
|
+
return socketPath;
|
|
126
|
+
}
|
|
127
|
+
async function saveSessionFile(clientInfo, sessionConfig) {
|
|
128
|
+
await import_fs.default.promises.mkdir(clientInfo.daemonProfilesDir, { recursive: true });
|
|
129
|
+
const sessionFile = import_path.default.join(clientInfo.daemonProfilesDir, `${sessionConfig.name}.session`);
|
|
130
|
+
await import_fs.default.promises.writeFile(sessionFile, JSON.stringify(sessionConfig, null, 2));
|
|
131
|
+
}
|
|
132
|
+
async function deleteSessionFile(clientInfo, sessionConfig) {
|
|
133
|
+
await import_fs.default.promises.unlink(sessionConfig.socketPath).catch(() => {
|
|
134
|
+
});
|
|
135
|
+
if (!sessionConfig.cli.persistent) {
|
|
136
|
+
const sessionFile = import_path.default.join(clientInfo.daemonProfilesDir, `${sessionConfig.name}.session`);
|
|
137
|
+
await import_fs.default.promises.rm(sessionFile).catch(() => {
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function formatResult(result) {
|
|
142
|
+
const isError = result.isError;
|
|
143
|
+
const text = result.content[0].type === "text" ? result.content[0].text : void 0;
|
|
144
|
+
return { isError, text };
|
|
145
|
+
}
|
|
146
|
+
function parseCliCommand(args) {
|
|
147
|
+
const command = import_commands.commands[args._[0]];
|
|
148
|
+
if (!command)
|
|
149
|
+
throw new Error("Command is required");
|
|
150
|
+
return (0, import_command.parseCommand)(command, args);
|
|
151
|
+
}
|
|
152
|
+
function daemonSocketPath(clientInfo, sessionName) {
|
|
153
|
+
const userNameHash = (0, import_utils.calculateSha1)(process.env.USERNAME || "default").slice(0, 8);
|
|
154
|
+
const socketName = `${sessionName}-${userNameHash}.sock`;
|
|
155
|
+
if (process.platform === "win32")
|
|
156
|
+
return `\\\\.\\pipe\\${clientInfo.workspaceDirHash}-${socketName}`;
|
|
157
|
+
const socketsDir = process.env.PLAYWRIGHT_DAEMON_SOCKETS_DIR || import_path.default.join(import_os.default.tmpdir(), "playwright-cli");
|
|
158
|
+
return import_path.default.join(socketsDir, clientInfo.workspaceDirHash, socketName);
|
|
159
|
+
}
|
|
160
|
+
function createSessionConfig(clientInfo, sessionName, browserInfo, options = {}) {
|
|
161
|
+
return {
|
|
162
|
+
name: sessionName,
|
|
163
|
+
version: clientInfo.version,
|
|
164
|
+
timestamp: Date.now(),
|
|
165
|
+
socketPath: daemonSocketPath(clientInfo, sessionName),
|
|
166
|
+
workspaceDir: clientInfo.workspaceDir,
|
|
167
|
+
cli: { persistent: options.persistent },
|
|
168
|
+
browser: {
|
|
169
|
+
browserName: browserInfo.browserName,
|
|
170
|
+
launchOptions: browserInfo.launchOptions,
|
|
171
|
+
userDataDir: browserInfo.userDataDir
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
176
|
+
0 && (module.exports = {
|
|
177
|
+
startCliDaemonServer
|
|
178
|
+
});
|
|
@@ -0,0 +1,173 @@
|
|
|
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 helpGenerator_exports = {};
|
|
20
|
+
__export(helpGenerator_exports, {
|
|
21
|
+
generateHelp: () => generateHelp,
|
|
22
|
+
generateHelpJSON: () => generateHelpJSON,
|
|
23
|
+
generateReadme: () => generateReadme
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(helpGenerator_exports);
|
|
26
|
+
var import_mcpBundle = require("../../mcpBundle");
|
|
27
|
+
var import_commands = require("./commands");
|
|
28
|
+
function commandArgs(command) {
|
|
29
|
+
const args = [];
|
|
30
|
+
const shape = command.args ? command.args.shape : {};
|
|
31
|
+
for (const [name, schema] of Object.entries(shape)) {
|
|
32
|
+
const zodSchema = schema;
|
|
33
|
+
const description = zodSchema.description ?? "";
|
|
34
|
+
args.push({ name, description, optional: zodSchema.safeParse(void 0).success });
|
|
35
|
+
}
|
|
36
|
+
return args;
|
|
37
|
+
}
|
|
38
|
+
function commandArgsText(args) {
|
|
39
|
+
return args.map((a) => a.optional ? `[${a.name}]` : `<${a.name}>`).join(" ");
|
|
40
|
+
}
|
|
41
|
+
function generateCommandHelp(command) {
|
|
42
|
+
const args = commandArgs(command);
|
|
43
|
+
const lines = [
|
|
44
|
+
`playwright-cli ${command.name} ${commandArgsText(args)}`,
|
|
45
|
+
"",
|
|
46
|
+
command.description,
|
|
47
|
+
""
|
|
48
|
+
];
|
|
49
|
+
if (args.length) {
|
|
50
|
+
lines.push("Arguments:");
|
|
51
|
+
lines.push(...args.map((a) => formatWithGap(` ${a.optional ? `[${a.name}]` : `<${a.name}>`}`, a.description.toLowerCase())));
|
|
52
|
+
}
|
|
53
|
+
if (command.options) {
|
|
54
|
+
lines.push("Options:");
|
|
55
|
+
const optionsShape = command.options.shape;
|
|
56
|
+
for (const [name, schema] of Object.entries(optionsShape)) {
|
|
57
|
+
const zodSchema = schema;
|
|
58
|
+
const description = (zodSchema.description ?? "").toLowerCase();
|
|
59
|
+
lines.push(formatWithGap(` --${name}`, description));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return lines.join("\n");
|
|
63
|
+
}
|
|
64
|
+
const categories = [
|
|
65
|
+
{ name: "core", title: "Core" },
|
|
66
|
+
{ name: "navigation", title: "Navigation" },
|
|
67
|
+
{ name: "keyboard", title: "Keyboard" },
|
|
68
|
+
{ name: "mouse", title: "Mouse" },
|
|
69
|
+
{ name: "export", title: "Save as" },
|
|
70
|
+
{ name: "tabs", title: "Tabs" },
|
|
71
|
+
{ name: "storage", title: "Storage" },
|
|
72
|
+
{ name: "network", title: "Network" },
|
|
73
|
+
{ name: "devtools", title: "DevTools" },
|
|
74
|
+
{ name: "install", title: "Install" },
|
|
75
|
+
{ name: "config", title: "Configuration" },
|
|
76
|
+
{ name: "browsers", title: "Browser sessions" }
|
|
77
|
+
];
|
|
78
|
+
function generateHelp() {
|
|
79
|
+
const lines = [];
|
|
80
|
+
lines.push("Usage: playwright-cli <command> [args] [options]");
|
|
81
|
+
lines.push("Usage: playwright-cli -s=<session> <command> [args] [options]");
|
|
82
|
+
const commandsByCategory = /* @__PURE__ */ new Map();
|
|
83
|
+
for (const c of categories)
|
|
84
|
+
commandsByCategory.set(c.name, []);
|
|
85
|
+
for (const command of Object.values(import_commands.commands)) {
|
|
86
|
+
if (command.hidden)
|
|
87
|
+
continue;
|
|
88
|
+
commandsByCategory.get(command.category).push(command);
|
|
89
|
+
}
|
|
90
|
+
for (const c of categories) {
|
|
91
|
+
const cc = commandsByCategory.get(c.name);
|
|
92
|
+
if (!cc.length)
|
|
93
|
+
continue;
|
|
94
|
+
lines.push(`
|
|
95
|
+
${c.title}:`);
|
|
96
|
+
for (const command of cc)
|
|
97
|
+
lines.push(generateHelpEntry(command));
|
|
98
|
+
}
|
|
99
|
+
lines.push("\nGlobal options:");
|
|
100
|
+
lines.push(formatWithGap(" --help [command]", "print help"));
|
|
101
|
+
lines.push(formatWithGap(" --version", "print version"));
|
|
102
|
+
return lines.join("\n");
|
|
103
|
+
}
|
|
104
|
+
function generateReadme() {
|
|
105
|
+
const lines = [];
|
|
106
|
+
lines.push("\n## Commands");
|
|
107
|
+
const commandsByCategory = /* @__PURE__ */ new Map();
|
|
108
|
+
for (const c of categories)
|
|
109
|
+
commandsByCategory.set(c.name, []);
|
|
110
|
+
for (const command of Object.values(import_commands.commands))
|
|
111
|
+
commandsByCategory.get(command.category).push(command);
|
|
112
|
+
for (const c of categories) {
|
|
113
|
+
const cc = commandsByCategory.get(c.name);
|
|
114
|
+
if (!cc.length)
|
|
115
|
+
continue;
|
|
116
|
+
lines.push(`
|
|
117
|
+
### ${c.title}
|
|
118
|
+
`);
|
|
119
|
+
lines.push("```bash");
|
|
120
|
+
for (const command of cc)
|
|
121
|
+
lines.push(generateReadmeEntry(command));
|
|
122
|
+
lines.push("```");
|
|
123
|
+
}
|
|
124
|
+
return lines.join("\n");
|
|
125
|
+
}
|
|
126
|
+
function generateHelpEntry(command) {
|
|
127
|
+
const args = commandArgs(command);
|
|
128
|
+
const prefix = ` ${command.name} ${commandArgsText(args)}`;
|
|
129
|
+
const suffix = command.description.toLowerCase();
|
|
130
|
+
return formatWithGap(prefix, suffix);
|
|
131
|
+
}
|
|
132
|
+
function generateReadmeEntry(command) {
|
|
133
|
+
const args = commandArgs(command);
|
|
134
|
+
const prefix = `playwright-cli ${command.name} ${commandArgsText(args)}`;
|
|
135
|
+
const suffix = "# " + command.description.toLowerCase();
|
|
136
|
+
return formatWithGap(prefix, suffix, 40);
|
|
137
|
+
}
|
|
138
|
+
function unwrapZodType(schema) {
|
|
139
|
+
if ("unwrap" in schema && typeof schema.unwrap === "function")
|
|
140
|
+
return unwrapZodType(schema.unwrap());
|
|
141
|
+
return schema;
|
|
142
|
+
}
|
|
143
|
+
function generateHelpJSON() {
|
|
144
|
+
const booleanOptions = /* @__PURE__ */ new Set();
|
|
145
|
+
for (const command of Object.values(import_commands.commands)) {
|
|
146
|
+
if (!command.options)
|
|
147
|
+
continue;
|
|
148
|
+
const optionsShape = command.options.shape;
|
|
149
|
+
for (const [name, schema] of Object.entries(optionsShape)) {
|
|
150
|
+
const innerSchema = unwrapZodType(schema);
|
|
151
|
+
if (innerSchema instanceof import_mcpBundle.z.ZodBoolean)
|
|
152
|
+
booleanOptions.add(name);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const help = {
|
|
156
|
+
global: generateHelp(),
|
|
157
|
+
commands: Object.fromEntries(
|
|
158
|
+
Object.entries(import_commands.commands).map(([name, command]) => [name, generateCommandHelp(command)])
|
|
159
|
+
),
|
|
160
|
+
booleanOptions: [...booleanOptions]
|
|
161
|
+
};
|
|
162
|
+
return help;
|
|
163
|
+
}
|
|
164
|
+
function formatWithGap(prefix, text, threshold = 30) {
|
|
165
|
+
const indent = Math.max(1, threshold - prefix.length);
|
|
166
|
+
return prefix + " ".repeat(indent) + text;
|
|
167
|
+
}
|
|
168
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
169
|
+
0 && (module.exports = {
|
|
170
|
+
generateHelp,
|
|
171
|
+
generateHelpJSON,
|
|
172
|
+
generateReadme
|
|
173
|
+
});
|
|
@@ -0,0 +1,118 @@
|
|
|
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 program_exports = {};
|
|
30
|
+
__export(program_exports, {
|
|
31
|
+
resolveCLIConfig: () => resolveCLIConfig
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(program_exports);
|
|
34
|
+
var import_fs = __toESM(require("fs"));
|
|
35
|
+
var import_path = __toESM(require("path"));
|
|
36
|
+
var import_daemon = require("./daemon");
|
|
37
|
+
var import_watchdog = require("../mcp/watchdog");
|
|
38
|
+
var import_browserFactory = require("../mcp/browserFactory");
|
|
39
|
+
var configUtils = __toESM(require("../mcp/config"));
|
|
40
|
+
var import_registry = require("../cli-client/registry");
|
|
41
|
+
var import_utilsBundle = require("../../utilsBundle");
|
|
42
|
+
import_utilsBundle.program.argument("[session-name]", "name of the session to create or connect to", "default").option("--headed", "run in headed mode (non-headless)").option("--extension", "run with the extension").option("--browser <name>", "browser to use (chromium, chrome, firefox, webkit)").option("--persistent", "use a persistent browser context").option("--profile <path>", "path to the user data dir").option("--config <path>", "path to the config file").option("--attach <name-or-endpoint>", "attach to a running Playwright browser by name or endpoint").action(async (sessionName, options) => {
|
|
43
|
+
(0, import_watchdog.setupExitWatchdog)();
|
|
44
|
+
const clientInfo = (0, import_registry.createClientInfo)();
|
|
45
|
+
const mcpConfig = await resolveCLIConfig(clientInfo, sessionName, options);
|
|
46
|
+
const clientInfoEx = {
|
|
47
|
+
cwd: process.cwd(),
|
|
48
|
+
sessionName,
|
|
49
|
+
workspaceDir: clientInfo.workspaceDir
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
const { browser, browserInfo } = await (0, import_browserFactory.createBrowserWithInfo)(mcpConfig, clientInfoEx);
|
|
53
|
+
const browserContext = mcpConfig.browser.isolated ? await browser.newContext(mcpConfig.browser.contextOptions) : browser.contexts()[0];
|
|
54
|
+
if (!browserContext)
|
|
55
|
+
throw new Error("Error: unable to connect to a browser that does not have any contexts");
|
|
56
|
+
const persistent = options.persistent || options.profile || mcpConfig.browser.userDataDir ? true : void 0;
|
|
57
|
+
const socketPath = await (0, import_daemon.startCliDaemonServer)(sessionName, browserContext, browserInfo, mcpConfig, clientInfo, { persistent, exitOnClose: true });
|
|
58
|
+
console.log(`### Success
|
|
59
|
+
Daemon listening on ${socketPath}`);
|
|
60
|
+
console.log("<EOF>");
|
|
61
|
+
} catch (error) {
|
|
62
|
+
const message = process.env.PWDEBUGIMPL ? error.stack || error.message : error.message;
|
|
63
|
+
console.log(`### Error
|
|
64
|
+
${message}`);
|
|
65
|
+
console.log("<EOF>");
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
void import_utilsBundle.program.parseAsync();
|
|
69
|
+
function defaultConfigFile() {
|
|
70
|
+
return import_path.default.resolve(".playwright", "cli.config.json");
|
|
71
|
+
}
|
|
72
|
+
async function resolveCLIConfig(clientInfo, sessionName, options) {
|
|
73
|
+
const config = options.config ? import_path.default.resolve(options.config) : void 0;
|
|
74
|
+
try {
|
|
75
|
+
if (!config && import_fs.default.existsSync(defaultConfigFile()))
|
|
76
|
+
options.config = defaultConfigFile();
|
|
77
|
+
} catch {
|
|
78
|
+
}
|
|
79
|
+
const daemonOverrides = configUtils.configFromCLIOptions({
|
|
80
|
+
config: options.config,
|
|
81
|
+
browser: options.browser,
|
|
82
|
+
headless: options.headed ? false : void 0,
|
|
83
|
+
extension: options.extension,
|
|
84
|
+
userDataDir: options.profile,
|
|
85
|
+
snapshotMode: "full"
|
|
86
|
+
});
|
|
87
|
+
daemonOverrides.browser.remoteEndpoint = options.attach;
|
|
88
|
+
const envOverrides = configUtils.configFromEnv();
|
|
89
|
+
const configFile = envOverrides.configFile ?? daemonOverrides.configFile;
|
|
90
|
+
const configInFile = await configUtils.loadConfig(configFile);
|
|
91
|
+
let result = configUtils.mergeConfig(configUtils.defaultConfig, {
|
|
92
|
+
browser: {
|
|
93
|
+
launchOptions: {
|
|
94
|
+
headless: true
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
result = configUtils.mergeConfig(result, configInFile);
|
|
99
|
+
result = configUtils.mergeConfig(result, daemonOverrides);
|
|
100
|
+
result = configUtils.mergeConfig(result, envOverrides);
|
|
101
|
+
if (result.browser.isolated === void 0)
|
|
102
|
+
result.browser.isolated = !options.profile && !options.persistent && !result.browser.userDataDir && !result.browser.remoteEndpoint && !result.extension;
|
|
103
|
+
if (!result.extension && !result.browser.isolated && !result.browser.userDataDir && !result.browser.remoteEndpoint) {
|
|
104
|
+
const browserToken = result.browser.launchOptions?.channel ?? result.browser?.browserName;
|
|
105
|
+
const userDataDir = import_path.default.resolve(clientInfo.daemonProfilesDir, `ud-${sessionName}-${browserToken}`);
|
|
106
|
+
result.browser.userDataDir = userDataDir;
|
|
107
|
+
}
|
|
108
|
+
result.configFile = configFile;
|
|
109
|
+
result.skillMode = true;
|
|
110
|
+
if (result.browser.launchOptions.headless !== false)
|
|
111
|
+
result.browser.contextOptions.viewport ??= { width: 1280, height: 720 };
|
|
112
|
+
await configUtils.validateConfig(result);
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
116
|
+
0 && (module.exports = {
|
|
117
|
+
resolveCLIConfig
|
|
118
|
+
});
|
|
Binary file
|