stably 4.12.1 → 4.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +1 -1
- package/dist/node_modules/minimist/.eslintrc +29 -0
- package/dist/node_modules/minimist/.github/FUNDING.yml +12 -0
- package/dist/node_modules/minimist/.nycrc +14 -0
- package/dist/node_modules/minimist/CHANGELOG.md +298 -0
- package/dist/node_modules/minimist/LICENSE +18 -0
- package/dist/node_modules/minimist/README.md +121 -0
- package/dist/node_modules/minimist/example/parse.js +4 -0
- package/dist/node_modules/minimist/index.js +263 -0
- package/dist/node_modules/minimist/package.json +75 -0
- package/dist/node_modules/minimist/test/all_bool.js +34 -0
- package/dist/node_modules/minimist/test/bool.js +177 -0
- package/dist/node_modules/minimist/test/dash.js +43 -0
- package/dist/node_modules/minimist/test/default_bool.js +37 -0
- package/dist/node_modules/minimist/test/dotted.js +24 -0
- package/dist/node_modules/minimist/test/kv_short.js +32 -0
- package/dist/node_modules/minimist/test/long.js +33 -0
- package/dist/node_modules/minimist/test/num.js +38 -0
- package/dist/node_modules/minimist/test/parse.js +209 -0
- package/dist/node_modules/minimist/test/parse_modified.js +11 -0
- package/dist/node_modules/minimist/test/proto.js +64 -0
- package/dist/node_modules/minimist/test/short.js +69 -0
- package/dist/node_modules/minimist/test/stop_early.js +17 -0
- package/dist/node_modules/minimist/test/unknown.js +104 -0
- package/dist/node_modules/minimist/test/whitespace.js +10 -0
- package/dist/node_modules/playwright/LICENSE +202 -0
- package/dist/node_modules/playwright/NOTICE +5 -0
- package/dist/node_modules/playwright/README.md +170 -0
- package/dist/node_modules/playwright/ThirdPartyNotices.txt +5042 -0
- package/dist/node_modules/playwright/cli.js +19 -0
- package/dist/node_modules/playwright/index.d.ts +17 -0
- package/dist/node_modules/playwright/index.js +17 -0
- package/dist/node_modules/playwright/index.mjs +18 -0
- package/dist/node_modules/playwright/jsx-runtime.js +42 -0
- package/dist/node_modules/playwright/jsx-runtime.mjs +21 -0
- package/dist/node_modules/playwright/lib/agents/agentParser.js +89 -0
- package/dist/node_modules/playwright/lib/agents/copilot-setup-steps.yml +34 -0
- package/dist/node_modules/playwright/lib/agents/generateAgents.js +348 -0
- package/dist/node_modules/playwright/lib/agents/playwright-test-coverage.prompt.md +31 -0
- package/dist/node_modules/playwright/lib/agents/playwright-test-generate.prompt.md +8 -0
- package/dist/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +88 -0
- package/dist/node_modules/playwright/lib/agents/playwright-test-heal.prompt.md +6 -0
- package/dist/node_modules/playwright/lib/agents/playwright-test-healer.agent.md +55 -0
- package/dist/node_modules/playwright/lib/agents/playwright-test-plan.prompt.md +9 -0
- package/dist/node_modules/playwright/lib/agents/playwright-test-planner.agent.md +73 -0
- package/dist/node_modules/playwright/lib/cli/client/appIcon.png +0 -0
- package/dist/node_modules/playwright/lib/cli/client/devtoolsApp.js +246 -0
- package/dist/node_modules/playwright/lib/cli/client/help.json +89 -0
- package/dist/node_modules/playwright/lib/cli/client/program.js +364 -0
- package/dist/node_modules/playwright/lib/cli/client/registry.js +146 -0
- package/dist/node_modules/playwright/lib/cli/client/session.js +309 -0
- package/dist/node_modules/playwright/lib/cli/client/socketConnection.js +99 -0
- package/dist/node_modules/playwright/lib/cli/daemon/command.js +73 -0
- package/dist/node_modules/playwright/lib/cli/daemon/commands.js +859 -0
- package/dist/node_modules/playwright/lib/cli/daemon/daemon.js +151 -0
- package/dist/node_modules/playwright/lib/cli/daemon/helpGenerator.js +173 -0
- package/dist/node_modules/playwright/lib/cli/daemon/program.js +109 -0
- package/dist/node_modules/playwright/lib/common/config.js +281 -0
- package/dist/node_modules/playwright/lib/common/configLoader.js +344 -0
- package/dist/node_modules/playwright/lib/common/esmLoaderHost.js +104 -0
- package/dist/node_modules/playwright/lib/common/expectBundle.js +28 -0
- package/dist/node_modules/playwright/lib/common/expectBundleImpl.js +407 -0
- package/dist/node_modules/playwright/lib/common/fixtures.js +302 -0
- package/dist/node_modules/playwright/lib/common/globals.js +58 -0
- package/dist/node_modules/playwright/lib/common/ipc.js +60 -0
- package/dist/node_modules/playwright/lib/common/poolBuilder.js +85 -0
- package/dist/node_modules/playwright/lib/common/process.js +132 -0
- package/dist/node_modules/playwright/lib/common/suiteUtils.js +140 -0
- package/dist/node_modules/playwright/lib/common/test.js +330 -0
- package/dist/node_modules/playwright/lib/common/testLoader.js +101 -0
- package/dist/node_modules/playwright/lib/common/testType.js +298 -0
- package/dist/node_modules/playwright/lib/common/validators.js +68 -0
- package/dist/node_modules/playwright/lib/fsWatcher.js +67 -0
- package/dist/node_modules/playwright/lib/index.js +726 -0
- package/dist/node_modules/playwright/lib/internalsForTest.js +42 -0
- package/dist/node_modules/playwright/lib/isomorphic/events.js +77 -0
- package/dist/node_modules/playwright/lib/isomorphic/folders.js +30 -0
- package/dist/node_modules/playwright/lib/isomorphic/stringInternPool.js +69 -0
- package/dist/node_modules/playwright/lib/isomorphic/teleReceiver.js +539 -0
- package/dist/node_modules/playwright/lib/isomorphic/teleSuiteUpdater.js +157 -0
- package/dist/node_modules/playwright/lib/isomorphic/testServerConnection.js +225 -0
- package/dist/node_modules/playwright/lib/isomorphic/testServerInterface.js +16 -0
- package/dist/node_modules/playwright/lib/isomorphic/testTree.js +329 -0
- package/dist/node_modules/playwright/lib/isomorphic/types.d.js +16 -0
- package/dist/node_modules/playwright/lib/loader/loaderMain.js +59 -0
- package/dist/node_modules/playwright/lib/matchers/expect.js +311 -0
- package/dist/node_modules/playwright/lib/matchers/matcherHint.js +44 -0
- package/dist/node_modules/playwright/lib/matchers/matchers.js +395 -0
- package/dist/node_modules/playwright/lib/matchers/toBeTruthy.js +75 -0
- package/dist/node_modules/playwright/lib/matchers/toEqual.js +100 -0
- package/dist/node_modules/playwright/lib/matchers/toHaveURL.js +101 -0
- package/dist/node_modules/playwright/lib/matchers/toMatchAriaSnapshot.js +159 -0
- package/dist/node_modules/playwright/lib/matchers/toMatchSnapshot.js +342 -0
- package/dist/node_modules/playwright/lib/matchers/toMatchText.js +99 -0
- package/dist/node_modules/playwright/lib/mcp/browser/browserContextFactory.js +332 -0
- package/dist/node_modules/playwright/lib/mcp/browser/browserServerBackend.js +85 -0
- package/dist/node_modules/playwright/lib/mcp/browser/config.js +467 -0
- package/dist/node_modules/playwright/lib/mcp/browser/configIni.js +190 -0
- package/dist/node_modules/playwright/lib/mcp/browser/context.js +302 -0
- package/dist/node_modules/playwright/lib/mcp/browser/logFile.js +96 -0
- package/dist/node_modules/playwright/lib/mcp/browser/response.js +270 -0
- package/dist/node_modules/playwright/lib/mcp/browser/sessionLog.js +75 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tab.js +421 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/common.js +63 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/config.js +41 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/console.js +65 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/cookies.js +152 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/devtools.js +42 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/dialogs.js +59 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/evaluate.js +61 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/files.js +58 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/form.js +63 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/install.js +73 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/keyboard.js +151 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/mouse.js +159 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/navigate.js +105 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/network.js +92 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/pdf.js +48 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/route.js +140 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/runCode.js +76 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/screenshot.js +86 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/snapshot.js +207 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/storage.js +67 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/tabs.js +67 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/tool.js +47 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/tracing.js +75 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/utils.js +88 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/verify.js +143 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/video.js +89 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/wait.js +63 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools/webstorage.js +223 -0
- package/dist/node_modules/playwright/lib/mcp/browser/tools.js +96 -0
- package/dist/node_modules/playwright/lib/mcp/browser/watchdog.js +44 -0
- package/dist/node_modules/playwright/lib/mcp/config.d.js +16 -0
- package/dist/node_modules/playwright/lib/mcp/extension/cdpRelay.js +354 -0
- package/dist/node_modules/playwright/lib/mcp/extension/extensionContextFactory.js +77 -0
- package/dist/node_modules/playwright/lib/mcp/extension/protocol.js +28 -0
- package/dist/node_modules/playwright/lib/mcp/index.js +61 -0
- package/dist/node_modules/playwright/lib/mcp/log.js +35 -0
- package/dist/node_modules/playwright/lib/mcp/program.js +76 -0
- package/dist/node_modules/playwright/lib/mcp/sdk/exports.js +28 -0
- package/dist/node_modules/playwright/lib/mcp/sdk/http.js +152 -0
- package/dist/node_modules/playwright/lib/mcp/sdk/inProcessTransport.js +71 -0
- package/dist/node_modules/playwright/lib/mcp/sdk/server.js +223 -0
- package/dist/node_modules/playwright/lib/mcp/sdk/tool.js +47 -0
- package/dist/node_modules/playwright/lib/mcp/test/browserBackend.js +98 -0
- package/dist/node_modules/playwright/lib/mcp/test/generatorTools.js +122 -0
- package/dist/node_modules/playwright/lib/mcp/test/plannerTools.js +145 -0
- package/dist/node_modules/playwright/lib/mcp/test/seed.js +82 -0
- package/dist/node_modules/playwright/lib/mcp/test/streams.js +44 -0
- package/dist/node_modules/playwright/lib/mcp/test/testBackend.js +99 -0
- package/dist/node_modules/playwright/lib/mcp/test/testContext.js +285 -0
- package/dist/node_modules/playwright/lib/mcp/test/testTool.js +30 -0
- package/dist/node_modules/playwright/lib/mcp/test/testTools.js +108 -0
- package/dist/node_modules/playwright/lib/plugins/gitCommitInfoPlugin.js +198 -0
- package/dist/node_modules/playwright/lib/plugins/index.js +28 -0
- package/dist/node_modules/playwright/lib/plugins/webServerPlugin.js +237 -0
- package/dist/node_modules/playwright/lib/program.js +425 -0
- package/dist/node_modules/playwright/lib/reporters/base.js +634 -0
- package/dist/node_modules/playwright/lib/reporters/blob.js +138 -0
- package/dist/node_modules/playwright/lib/reporters/dot.js +99 -0
- package/dist/node_modules/playwright/lib/reporters/empty.js +32 -0
- package/dist/node_modules/playwright/lib/reporters/github.js +128 -0
- package/dist/node_modules/playwright/lib/reporters/html.js +644 -0
- package/dist/node_modules/playwright/lib/reporters/internalReporter.js +138 -0
- package/dist/node_modules/playwright/lib/reporters/json.js +254 -0
- package/dist/node_modules/playwright/lib/reporters/junit.js +232 -0
- package/dist/node_modules/playwright/lib/reporters/line.js +131 -0
- package/dist/node_modules/playwright/lib/reporters/list.js +253 -0
- package/dist/node_modules/playwright/lib/reporters/listModeReporter.js +69 -0
- package/dist/node_modules/playwright/lib/reporters/markdown.js +144 -0
- package/dist/node_modules/playwright/lib/reporters/merge.js +579 -0
- package/dist/node_modules/playwright/lib/reporters/multiplexer.js +116 -0
- package/dist/node_modules/playwright/lib/reporters/reporterV2.js +102 -0
- package/dist/node_modules/playwright/lib/reporters/teleEmitter.js +319 -0
- package/dist/node_modules/playwright/lib/reporters/versions/blobV1.js +16 -0
- package/dist/node_modules/playwright/lib/runner/dispatcher.js +530 -0
- package/dist/node_modules/playwright/lib/runner/failureTracker.js +72 -0
- package/dist/node_modules/playwright/lib/runner/lastRun.js +77 -0
- package/dist/node_modules/playwright/lib/runner/loadUtils.js +334 -0
- package/dist/node_modules/playwright/lib/runner/loaderHost.js +89 -0
- package/dist/node_modules/playwright/lib/runner/processHost.js +180 -0
- package/dist/node_modules/playwright/lib/runner/projectUtils.js +241 -0
- package/dist/node_modules/playwright/lib/runner/rebase.js +189 -0
- package/dist/node_modules/playwright/lib/runner/reporters.js +143 -0
- package/dist/node_modules/playwright/lib/runner/sigIntWatcher.js +96 -0
- package/dist/node_modules/playwright/lib/runner/storage.js +91 -0
- package/dist/node_modules/playwright/lib/runner/taskRunner.js +127 -0
- package/dist/node_modules/playwright/lib/runner/tasks.js +410 -0
- package/dist/node_modules/playwright/lib/runner/testGroups.js +125 -0
- package/dist/node_modules/playwright/lib/runner/testRunner.js +398 -0
- package/dist/node_modules/playwright/lib/runner/testServer.js +269 -0
- package/dist/node_modules/playwright/lib/runner/uiModeReporter.js +30 -0
- package/dist/node_modules/playwright/lib/runner/vcs.js +72 -0
- package/dist/node_modules/playwright/lib/runner/watchMode.js +396 -0
- package/dist/node_modules/playwright/lib/runner/workerHost.js +104 -0
- package/dist/node_modules/playwright/lib/skill/SKILL.md +278 -0
- package/dist/node_modules/playwright/lib/skill/references/request-mocking.md +87 -0
- package/dist/node_modules/playwright/lib/skill/references/running-code.md +232 -0
- package/dist/node_modules/playwright/lib/skill/references/session-management.md +169 -0
- package/dist/node_modules/playwright/lib/skill/references/storage-state.md +275 -0
- package/dist/node_modules/playwright/lib/skill/references/test-generation.md +88 -0
- package/dist/node_modules/playwright/lib/skill/references/tracing.md +139 -0
- package/dist/node_modules/playwright/lib/skill/references/video-recording.md +43 -0
- package/dist/node_modules/playwright/lib/third_party/pirates.js +62 -0
- package/dist/node_modules/playwright/lib/third_party/tsconfig-loader.js +103 -0
- package/dist/node_modules/playwright/lib/transform/babelBundle.js +46 -0
- package/dist/node_modules/playwright/lib/transform/babelBundleImpl.js +461 -0
- package/dist/node_modules/playwright/lib/transform/compilationCache.js +274 -0
- package/dist/node_modules/playwright/lib/transform/esmLoader.js +103 -0
- package/dist/node_modules/playwright/lib/transform/md.js +221 -0
- package/dist/node_modules/playwright/lib/transform/portTransport.js +67 -0
- package/dist/node_modules/playwright/lib/transform/transform.js +303 -0
- package/dist/node_modules/playwright/lib/util.js +400 -0
- package/dist/node_modules/playwright/lib/utilsBundle.js +50 -0
- package/dist/node_modules/playwright/lib/utilsBundleImpl.js +103 -0
- package/dist/node_modules/playwright/lib/worker/fixtureRunner.js +262 -0
- package/dist/node_modules/playwright/lib/worker/testInfo.js +536 -0
- package/dist/node_modules/playwright/lib/worker/testTracing.js +345 -0
- package/dist/node_modules/playwright/lib/worker/timeoutManager.js +174 -0
- package/dist/node_modules/playwright/lib/worker/util.js +31 -0
- package/dist/node_modules/playwright/lib/worker/workerMain.js +532 -0
- package/dist/node_modules/playwright/node_modules/.bin/playwright-core +21 -0
- package/dist/node_modules/playwright/package.json +73 -0
- package/dist/node_modules/playwright/test.d.ts +18 -0
- package/dist/node_modules/playwright/test.js +24 -0
- package/dist/node_modules/playwright/test.mjs +34 -0
- package/dist/node_modules/playwright/types/test.d.ts +10326 -0
- package/dist/node_modules/playwright/types/testReporter.d.ts +822 -0
- package/dist/node_modules/playwright-core/LICENSE +202 -0
- package/dist/node_modules/playwright-core/NOTICE +5 -0
- package/dist/node_modules/playwright-core/README.md +3 -0
- package/dist/node_modules/playwright-core/ThirdPartyNotices.txt +4095 -0
- package/dist/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
- package/dist/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
- package/dist/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/dist/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/dist/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/dist/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/dist/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/dist/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/dist/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/dist/node_modules/playwright-core/browsers.json +81 -0
- package/dist/node_modules/playwright-core/cli.js +18 -0
- package/dist/node_modules/playwright-core/index.d.ts +17 -0
- package/dist/node_modules/playwright-core/index.js +32 -0
- package/dist/node_modules/playwright-core/index.mjs +28 -0
- package/dist/node_modules/playwright-core/lib/androidServerImpl.js +65 -0
- package/dist/node_modules/playwright-core/lib/browserServerImpl.js +120 -0
- package/dist/node_modules/playwright-core/lib/cli/driver.js +97 -0
- package/dist/node_modules/playwright-core/lib/cli/program.js +589 -0
- package/dist/node_modules/playwright-core/lib/cli/programWithTestStub.js +74 -0
- package/dist/node_modules/playwright-core/lib/client/android.js +361 -0
- package/dist/node_modules/playwright-core/lib/client/api.js +137 -0
- package/dist/node_modules/playwright-core/lib/client/artifact.js +79 -0
- package/dist/node_modules/playwright-core/lib/client/browser.js +161 -0
- package/dist/node_modules/playwright-core/lib/client/browserContext.js +589 -0
- package/dist/node_modules/playwright-core/lib/client/browserType.js +195 -0
- package/dist/node_modules/playwright-core/lib/client/cdpSession.js +51 -0
- package/dist/node_modules/playwright-core/lib/client/channelOwner.js +194 -0
- package/dist/node_modules/playwright-core/lib/client/clientHelper.js +64 -0
- package/dist/node_modules/playwright-core/lib/client/clientInstrumentation.js +55 -0
- package/dist/node_modules/playwright-core/lib/client/clientStackTrace.js +69 -0
- package/dist/node_modules/playwright-core/lib/client/clock.js +68 -0
- package/dist/node_modules/playwright-core/lib/client/connection.js +318 -0
- package/dist/node_modules/playwright-core/lib/client/consoleMessage.js +61 -0
- package/dist/node_modules/playwright-core/lib/client/coverage.js +44 -0
- package/dist/node_modules/playwright-core/lib/client/dialog.js +56 -0
- package/dist/node_modules/playwright-core/lib/client/download.js +62 -0
- package/dist/node_modules/playwright-core/lib/client/electron.js +138 -0
- package/dist/node_modules/playwright-core/lib/client/elementHandle.js +284 -0
- package/dist/node_modules/playwright-core/lib/client/errors.js +77 -0
- package/dist/node_modules/playwright-core/lib/client/eventEmitter.js +314 -0
- package/dist/node_modules/playwright-core/lib/client/events.js +103 -0
- package/dist/node_modules/playwright-core/lib/client/fetch.js +368 -0
- package/dist/node_modules/playwright-core/lib/client/fileChooser.js +46 -0
- package/dist/node_modules/playwright-core/lib/client/fileUtils.js +34 -0
- package/dist/node_modules/playwright-core/lib/client/frame.js +409 -0
- package/dist/node_modules/playwright-core/lib/client/harRouter.js +99 -0
- package/dist/node_modules/playwright-core/lib/client/input.js +84 -0
- package/dist/node_modules/playwright-core/lib/client/jsHandle.js +109 -0
- package/dist/node_modules/playwright-core/lib/client/jsonPipe.js +39 -0
- package/dist/node_modules/playwright-core/lib/client/localUtils.js +60 -0
- package/dist/node_modules/playwright-core/lib/client/locator.js +369 -0
- package/dist/node_modules/playwright-core/lib/client/network.js +747 -0
- package/dist/node_modules/playwright-core/lib/client/page.js +741 -0
- package/dist/node_modules/playwright-core/lib/client/pageAgent.js +64 -0
- package/dist/node_modules/playwright-core/lib/client/platform.js +77 -0
- package/dist/node_modules/playwright-core/lib/client/playwright.js +71 -0
- package/dist/node_modules/playwright-core/lib/client/selectors.js +55 -0
- package/dist/node_modules/playwright-core/lib/client/stream.js +39 -0
- package/dist/node_modules/playwright-core/lib/client/timeoutSettings.js +79 -0
- package/dist/node_modules/playwright-core/lib/client/tracing.js +119 -0
- package/dist/node_modules/playwright-core/lib/client/types.js +28 -0
- package/dist/node_modules/playwright-core/lib/client/video.js +63 -0
- package/dist/node_modules/playwright-core/lib/client/waiter.js +142 -0
- package/dist/node_modules/playwright-core/lib/client/webError.js +39 -0
- package/dist/node_modules/playwright-core/lib/client/webSocket.js +93 -0
- package/dist/node_modules/playwright-core/lib/client/worker.js +85 -0
- package/dist/node_modules/playwright-core/lib/client/writableStream.js +39 -0
- package/dist/node_modules/playwright-core/lib/generated/bindingsControllerSource.js +28 -0
- package/dist/node_modules/playwright-core/lib/generated/clockSource.js +28 -0
- package/dist/node_modules/playwright-core/lib/generated/injectedScriptSource.js +28 -0
- package/dist/node_modules/playwright-core/lib/generated/pollingRecorderSource.js +28 -0
- package/dist/node_modules/playwright-core/lib/generated/storageScriptSource.js +28 -0
- package/dist/node_modules/playwright-core/lib/generated/utilityScriptSource.js +28 -0
- package/dist/node_modules/playwright-core/lib/generated/webSocketMockSource.js +336 -0
- package/dist/node_modules/playwright-core/lib/inProcessFactory.js +60 -0
- package/dist/node_modules/playwright-core/lib/inprocess.js +3 -0
- package/dist/node_modules/playwright-core/lib/mcpBundle.js +84 -0
- package/dist/node_modules/playwright-core/lib/mcpBundleImpl/index.js +147 -0
- package/dist/node_modules/playwright-core/lib/outofprocess.js +76 -0
- package/dist/node_modules/playwright-core/lib/protocol/serializers.js +197 -0
- package/dist/node_modules/playwright-core/lib/protocol/validator.js +3017 -0
- package/dist/node_modules/playwright-core/lib/protocol/validatorPrimitives.js +193 -0
- package/dist/node_modules/playwright-core/lib/remote/playwrightConnection.js +129 -0
- package/dist/node_modules/playwright-core/lib/remote/playwrightServer.js +334 -0
- package/dist/node_modules/playwright-core/lib/server/agent/actionRunner.js +341 -0
- package/dist/node_modules/playwright-core/lib/server/agent/actions.js +128 -0
- package/dist/node_modules/playwright-core/lib/server/agent/codegen.js +111 -0
- package/dist/node_modules/playwright-core/lib/server/agent/context.js +161 -0
- package/dist/node_modules/playwright-core/lib/server/agent/expectTools.js +156 -0
- package/dist/node_modules/playwright-core/lib/server/agent/pageAgent.js +204 -0
- package/dist/node_modules/playwright-core/lib/server/agent/performTools.js +262 -0
- package/dist/node_modules/playwright-core/lib/server/agent/tool.js +109 -0
- package/dist/node_modules/playwright-core/lib/server/android/android.js +465 -0
- package/dist/node_modules/playwright-core/lib/server/android/backendAdb.js +177 -0
- package/dist/node_modules/playwright-core/lib/server/artifact.js +127 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiBrowser.js +549 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiChromium.js +164 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiConnection.js +213 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiDeserializer.js +116 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiExecutionContext.js +267 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiFirefox.js +128 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiInput.js +146 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiNetworkManager.js +410 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiOverCdp.js +102 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiPage.js +598 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/bidiPdf.js +106 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocol.js +24 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiSerializer.js +148 -0
- package/dist/node_modules/playwright-core/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
- package/dist/node_modules/playwright-core/lib/server/browser.js +143 -0
- package/dist/node_modules/playwright-core/lib/server/browserContext.js +712 -0
- package/dist/node_modules/playwright-core/lib/server/browserType.js +332 -0
- package/dist/node_modules/playwright-core/lib/server/callLog.js +82 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/chromium.js +403 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/chromiumSwitches.js +104 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crBrowser.js +523 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crConnection.js +197 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crCoverage.js +235 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crDevTools.js +111 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crDragDrop.js +131 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crExecutionContext.js +146 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crInput.js +187 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crNetworkManager.js +707 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crPage.js +1004 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crPdf.js +121 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crProtocolHelper.js +145 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/crServiceWorker.js +136 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/defaultFontFamilies.js +162 -0
- package/dist/node_modules/playwright-core/lib/server/chromium/protocol.d.js +16 -0
- package/dist/node_modules/playwright-core/lib/server/clock.js +149 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/csharp.js +327 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/java.js +274 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/javascript.js +247 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/jsonl.js +52 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/language.js +132 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/languages.js +68 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/python.js +279 -0
- package/dist/node_modules/playwright-core/lib/server/codegen/types.js +16 -0
- package/dist/node_modules/playwright-core/lib/server/console.js +61 -0
- package/dist/node_modules/playwright-core/lib/server/cookieStore.js +206 -0
- package/dist/node_modules/playwright-core/lib/server/debugController.js +191 -0
- package/dist/node_modules/playwright-core/lib/server/debugger.js +119 -0
- package/dist/node_modules/playwright-core/lib/server/deviceDescriptors.js +39 -0
- package/dist/node_modules/playwright-core/lib/server/deviceDescriptorsSource.json +1779 -0
- package/dist/node_modules/playwright-core/lib/server/devtoolsController.js +365 -0
- package/dist/node_modules/playwright-core/lib/server/dialog.js +116 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/androidDispatcher.js +325 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/artifactDispatcher.js +118 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/browserContextDispatcher.js +383 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/browserDispatcher.js +118 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/dialogDispatcher.js +47 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/dispatcher.js +364 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/electronDispatcher.js +90 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/frameDispatcher.js +227 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/networkDispatchers.js +211 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/pageAgentDispatcher.js +106 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/pageDispatcher.js +410 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/playwrightDispatcher.js +108 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/streamDispatcher.js +67 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/tracingDispatcher.js +68 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
- package/dist/node_modules/playwright-core/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
- package/dist/node_modules/playwright-core/lib/server/dom.js +815 -0
- package/dist/node_modules/playwright-core/lib/server/download.js +70 -0
- package/dist/node_modules/playwright-core/lib/server/electron/electron.js +272 -0
- package/dist/node_modules/playwright-core/lib/server/electron/loader.js +30 -0
- package/dist/node_modules/playwright-core/lib/server/errors.js +69 -0
- package/dist/node_modules/playwright-core/lib/server/fetch.js +621 -0
- package/dist/node_modules/playwright-core/lib/server/fileChooser.js +43 -0
- package/dist/node_modules/playwright-core/lib/server/fileUploadUtils.js +84 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/ffBrowser.js +415 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/ffConnection.js +142 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/ffExecutionContext.js +150 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/ffInput.js +159 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/ffNetworkManager.js +256 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/ffPage.js +495 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/firefox.js +114 -0
- package/dist/node_modules/playwright-core/lib/server/firefox/protocol.d.js +16 -0
- package/dist/node_modules/playwright-core/lib/server/formData.js +147 -0
- package/dist/node_modules/playwright-core/lib/server/frameSelectors.js +160 -0
- package/dist/node_modules/playwright-core/lib/server/frames.js +1476 -0
- package/dist/node_modules/playwright-core/lib/server/har/harRecorder.js +147 -0
- package/dist/node_modules/playwright-core/lib/server/har/harTracer.js +607 -0
- package/dist/node_modules/playwright-core/lib/server/harBackend.js +157 -0
- package/dist/node_modules/playwright-core/lib/server/helper.js +96 -0
- package/dist/node_modules/playwright-core/lib/server/index.js +56 -0
- package/dist/node_modules/playwright-core/lib/server/input.js +277 -0
- package/dist/node_modules/playwright-core/lib/server/instrumentation.js +72 -0
- package/dist/node_modules/playwright-core/lib/server/javascript.js +291 -0
- package/dist/node_modules/playwright-core/lib/server/launchApp.js +128 -0
- package/dist/node_modules/playwright-core/lib/server/localUtils.js +214 -0
- package/dist/node_modules/playwright-core/lib/server/macEditingCommands.js +143 -0
- package/dist/node_modules/playwright-core/lib/server/network.js +667 -0
- package/dist/node_modules/playwright-core/lib/server/page.js +839 -0
- package/dist/node_modules/playwright-core/lib/server/pipeTransport.js +89 -0
- package/dist/node_modules/playwright-core/lib/server/playwright.js +69 -0
- package/dist/node_modules/playwright-core/lib/server/progress.js +136 -0
- package/dist/node_modules/playwright-core/lib/server/protocolError.js +52 -0
- package/dist/node_modules/playwright-core/lib/server/recorder/chat.js +161 -0
- package/dist/node_modules/playwright-core/lib/server/recorder/recorderApp.js +366 -0
- package/dist/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +138 -0
- package/dist/node_modules/playwright-core/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/dist/node_modules/playwright-core/lib/server/recorder/recorderUtils.js +157 -0
- package/dist/node_modules/playwright-core/lib/server/recorder/throttledFile.js +57 -0
- package/dist/node_modules/playwright-core/lib/server/recorder.js +527 -0
- package/dist/node_modules/playwright-core/lib/server/registry/browserFetcher.js +177 -0
- package/dist/node_modules/playwright-core/lib/server/registry/dependencies.js +371 -0
- package/dist/node_modules/playwright-core/lib/server/registry/index.js +1391 -0
- package/dist/node_modules/playwright-core/lib/server/registry/nativeDeps.js +1281 -0
- package/dist/node_modules/playwright-core/lib/server/registry/oopDownloadBrowserMain.js +127 -0
- package/dist/node_modules/playwright-core/lib/server/screencast.js +204 -0
- package/dist/node_modules/playwright-core/lib/server/screenshotter.js +333 -0
- package/dist/node_modules/playwright-core/lib/server/selectors.js +112 -0
- package/dist/node_modules/playwright-core/lib/server/socksClientCertificatesInterceptor.js +383 -0
- package/dist/node_modules/playwright-core/lib/server/socksInterceptor.js +95 -0
- package/dist/node_modules/playwright-core/lib/server/trace/recorder/snapshotter.js +147 -0
- package/dist/node_modules/playwright-core/lib/server/trace/recorder/snapshotterInjected.js +561 -0
- package/dist/node_modules/playwright-core/lib/server/trace/recorder/tracing.js +604 -0
- package/dist/node_modules/playwright-core/lib/server/trace/viewer/traceParser.js +72 -0
- package/dist/node_modules/playwright-core/lib/server/trace/viewer/traceViewer.js +245 -0
- package/dist/node_modules/playwright-core/lib/server/transport.js +181 -0
- package/dist/node_modules/playwright-core/lib/server/types.js +28 -0
- package/dist/node_modules/playwright-core/lib/server/usKeyboardLayout.js +145 -0
- package/dist/node_modules/playwright-core/lib/server/utils/ascii.js +44 -0
- package/dist/node_modules/playwright-core/lib/server/utils/comparators.js +139 -0
- package/dist/node_modules/playwright-core/lib/server/utils/crypto.js +216 -0
- package/dist/node_modules/playwright-core/lib/server/utils/debug.js +42 -0
- package/dist/node_modules/playwright-core/lib/server/utils/debugLogger.js +122 -0
- package/dist/node_modules/playwright-core/lib/server/utils/env.js +73 -0
- package/dist/node_modules/playwright-core/lib/server/utils/eventsHelper.js +39 -0
- package/dist/node_modules/playwright-core/lib/server/utils/expectUtils.js +123 -0
- package/dist/node_modules/playwright-core/lib/server/utils/fileUtils.js +191 -0
- package/dist/node_modules/playwright-core/lib/server/utils/happyEyeballs.js +207 -0
- package/dist/node_modules/playwright-core/lib/server/utils/hostPlatform.js +138 -0
- package/dist/node_modules/playwright-core/lib/server/utils/httpServer.js +205 -0
- package/dist/node_modules/playwright-core/lib/server/utils/imageUtils.js +141 -0
- package/dist/node_modules/playwright-core/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/dist/node_modules/playwright-core/lib/server/utils/image_tools/compare.js +109 -0
- package/dist/node_modules/playwright-core/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/dist/node_modules/playwright-core/lib/server/utils/image_tools/stats.js +102 -0
- package/dist/node_modules/playwright-core/lib/server/utils/linuxUtils.js +71 -0
- package/dist/node_modules/playwright-core/lib/server/utils/network.js +242 -0
- package/dist/node_modules/playwright-core/lib/server/utils/nodePlatform.js +154 -0
- package/dist/node_modules/playwright-core/lib/server/utils/pipeTransport.js +84 -0
- package/dist/node_modules/playwright-core/lib/server/utils/processLauncher.js +242 -0
- package/dist/node_modules/playwright-core/lib/server/utils/profiler.js +65 -0
- package/dist/node_modules/playwright-core/lib/server/utils/socksProxy.js +511 -0
- package/dist/node_modules/playwright-core/lib/server/utils/spawnAsync.js +41 -0
- package/dist/node_modules/playwright-core/lib/server/utils/task.js +51 -0
- package/dist/node_modules/playwright-core/lib/server/utils/userAgent.js +98 -0
- package/dist/node_modules/playwright-core/lib/server/utils/wsServer.js +121 -0
- package/dist/node_modules/playwright-core/lib/server/utils/zipFile.js +74 -0
- package/dist/node_modules/playwright-core/lib/server/utils/zones.js +57 -0
- package/dist/node_modules/playwright-core/lib/server/videoRecorder.js +133 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/protocol.d.js +16 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/webkit.js +108 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkBrowser.js +331 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkConnection.js +144 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkExecutionContext.js +154 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkInput.js +181 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkInterceptableRequest.js +197 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkPage.js +1163 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkProvisionalPage.js +83 -0
- package/dist/node_modules/playwright-core/lib/server/webkit/wkWorkers.js +106 -0
- package/dist/node_modules/playwright-core/lib/third_party/pixelmatch.js +255 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/ariaSnapshot.js +455 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/assert.js +31 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/colors.js +72 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/cssParser.js +245 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/cssTokenizer.js +1051 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/headers.js +53 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/locatorGenerators.js +689 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/locatorParser.js +176 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/locatorUtils.js +81 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/lruCache.js +51 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/manualPromise.js +114 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/mimeType.js +459 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/multimap.js +80 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/protocolFormatter.js +81 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/protocolMetainfo.js +338 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/rtti.js +43 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/selectorParser.js +386 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/semaphore.js +54 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/stackTrace.js +158 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/stringUtils.js +204 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/time.js +49 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/entries.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotRenderer.js +502 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/traceLoader.js +131 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModel.js +365 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModernizer.js +400 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/traceUtils.js +58 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/types.js +16 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/urlMatch.js +243 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
- package/dist/node_modules/playwright-core/lib/utils/isomorphic/yaml.js +84 -0
- package/dist/node_modules/playwright-core/lib/utils.js +111 -0
- package/dist/node_modules/playwright-core/lib/utilsBundle.js +112 -0
- package/dist/node_modules/playwright-core/lib/utilsBundleImpl/index.js +220 -0
- package/dist/node_modules/playwright-core/lib/utilsBundleImpl/xdg-open +1066 -0
- package/dist/node_modules/playwright-core/lib/vite/devtools/assets/index-BlUdtOgD.js +50 -0
- package/dist/node_modules/playwright-core/lib/vite/devtools/assets/index-CcsbAkl3.css +1 -0
- package/dist/node_modules/playwright-core/lib/vite/devtools/index.html +28 -0
- package/dist/node_modules/playwright-core/lib/vite/htmlReport/index.html +84 -0
- package/dist/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
- package/dist/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DadYNm1I.js +32 -0
- package/dist/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/dist/node_modules/playwright-core/lib/vite/recorder/assets/index-BSjZa4pk.css +1 -0
- package/dist/node_modules/playwright-core/lib/vite/recorder/assets/index-BhTWtUlo.js +193 -0
- package/dist/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
- package/dist/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-DgOX2t83.js +32 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Dlnhdtv5.js +266 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.Cqh7ej8a.css +1 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/index.BVu7tZDe.css +1 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/index.DQVmDDrI.js +2 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/index.html +43 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +21 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +5 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/uiMode.D_PBkkZn.js +5 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +17 -0
- package/dist/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
- package/dist/node_modules/playwright-core/lib/zipBundle.js +34 -0
- package/dist/node_modules/playwright-core/lib/zipBundleImpl.js +5 -0
- package/dist/node_modules/playwright-core/package.json +43 -0
- package/dist/node_modules/playwright-core/types/protocol.d.ts +24365 -0
- package/dist/node_modules/playwright-core/types/structs.d.ts +45 -0
- package/dist/node_modules/playwright-core/types/types.d.ts +23332 -0
- package/dist/playwright-cli.js +7 -1
- package/dist/stably-plugin-cli/skills/ai-to-programmatic-migration/SKILL.md +95 -0
- package/dist/stably-plugin-cli/skills/browser-interaction-guide/SKILL.md +67 -1
- package/dist/stably-plugin-cli/skills/bulk-test-handling/SKILL.md +4 -0
- package/dist/stably-plugin-cli/skills/debugging-test-failures/SKILL.md +73 -8
- package/dist/stably-plugin-cli/skills/playwright-cli/SKILL.md +32 -0
- package/dist/stably-plugin-cli/skills/stably-cli/SKILL.md +34 -16
- package/package.json +2 -2
package/dist/playwright-cli.js
CHANGED
|
@@ -282,9 +282,15 @@ module.exports = defineConfig({
|
|
|
282
282
|
`;
|
|
283
283
|
fs.writeFileSync(wrapperConfigPath, wrapperConfig);
|
|
284
284
|
const testArgs = argv.slice(cmdIndex + 1).filter((a) => !a.startsWith("--config=") && !a.startsWith("--session=") && !a.startsWith("-s=") && a !== "--headed");
|
|
285
|
+
// Resolve @playwright/test CLI binary to avoid version mismatch with playwright package
|
|
286
|
+
var _runBin = "npx", _runArgs = ["playwright", "test"];
|
|
287
|
+
try { var _ptPkg = require.resolve("@playwright/test/package.json", { paths: [cwd] });
|
|
288
|
+
var _ptCli = path.join(path.dirname(_ptPkg), "cli.js");
|
|
289
|
+
if (fs.existsSync(_ptCli)) { _runBin = process.execPath; _runArgs = [_ptCli, "test"]; }
|
|
290
|
+
} catch (_) {}
|
|
285
291
|
let exitCode = 0;
|
|
286
292
|
try {
|
|
287
|
-
execFileSync(
|
|
293
|
+
execFileSync(_runBin, [..._runArgs, "--config=" + wrapperConfigPath, ...testArgs], {
|
|
288
294
|
stdio: "inherit",
|
|
289
295
|
env: {
|
|
290
296
|
...process.env,
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-to-programmatic-migration
|
|
3
|
+
description: Guide for refactoring tests that over-rely on AI methods (agent.act, aiAssert) into deterministic Playwright steps. Use when tests are flaky due to inconsistent AI behavior, slow due to AI inference overhead, or hard to debug because AI actions are unpredictable. Triggers on flaky AI test, slow agent.act, reduce AI usage, make test deterministic, migrate AI to playwright, improve test reliability, agent.act doing wrong thing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Migrate AI-Heavy Tests to Programmatic Playwright Steps
|
|
7
|
+
|
|
8
|
+
Refactor tests that rely on large, monolithic AI method calls into smaller, deterministic Playwright steps. AI methods are kept only where they add genuine value.
|
|
9
|
+
|
|
10
|
+
## When This Applies
|
|
11
|
+
|
|
12
|
+
A test is a migration candidate when it:
|
|
13
|
+
- Uses `agent.act()` to drive multi-step flows that could be expressed as simple clicks/fills/navigations
|
|
14
|
+
- Is flaky because the AI interprets instructions inconsistently across runs
|
|
15
|
+
- Is slow because AI inference adds overhead to every action
|
|
16
|
+
- Fails in ways that are hard to diagnose (the AI did something unexpected mid-flow)
|
|
17
|
+
|
|
18
|
+
## Approval Before Migrating
|
|
19
|
+
|
|
20
|
+
This is a significant refactoring decision — you are making an opinionated judgment that AI is overused, and the user may disagree.
|
|
21
|
+
|
|
22
|
+
**Check your system prompt for the current mode:**
|
|
23
|
+
|
|
24
|
+
- **If "one-shot mode" appears in your system prompt:** Log your rationale (which AI methods you're replacing and why), then proceed automatically. Do not block on user input.
|
|
25
|
+
- **Otherwise (chat mode):** Present your recommendation with evidence and get user approval before making changes.
|
|
26
|
+
|
|
27
|
+
### Recommendation Template (chat mode)
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
I noticed that `agent.act('click the Submit button and wait for the dashboard')` in line 42
|
|
31
|
+
fails inconsistently — sometimes it clicks the wrong button, sometimes it doesn't wait long enough.
|
|
32
|
+
|
|
33
|
+
I'd recommend replacing it with deterministic Playwright steps:
|
|
34
|
+
await page.getByRole('button', { name: 'Submit' }).click();
|
|
35
|
+
await page.waitForURL('**/dashboard');
|
|
36
|
+
|
|
37
|
+
This would make the test faster and more reliable. The AI call isn't adding value here since
|
|
38
|
+
the selector is stable.
|
|
39
|
+
|
|
40
|
+
Should I make this change? Or do you prefer keeping the AI method?
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
In either mode, do NOT silently refactor AI methods — always document what you changed and why.
|
|
44
|
+
|
|
45
|
+
## Migration Workflow
|
|
46
|
+
|
|
47
|
+
### 1. Understand the existing test's intent
|
|
48
|
+
|
|
49
|
+
Read the test file. Extract the logical steps from the `agent.act()` prompts:
|
|
50
|
+
- What pages does it visit?
|
|
51
|
+
- What actions does it perform?
|
|
52
|
+
- What does it verify?
|
|
53
|
+
|
|
54
|
+
### 2. Explore the app manually using the browser
|
|
55
|
+
|
|
56
|
+
Open a browser, walk through the flow step-by-step, snapshot at each stage, and record the exact selectors, link names, page titles, and UI patterns you encounter. This grounds your rewrite in reality rather than the AI prompt's assumptions.
|
|
57
|
+
|
|
58
|
+
See the "Manual Exploration Workflow" section in the `debugging-test-failures` skill.
|
|
59
|
+
|
|
60
|
+
### 3. Replace AI methods with Playwright equivalents
|
|
61
|
+
|
|
62
|
+
| AI method usage | Replace with |
|
|
63
|
+
|----------------|-------------|
|
|
64
|
+
| `agent.act("click the Submit button")` | `page.getByRole('button', { name: 'Submit' }).click()` |
|
|
65
|
+
| `agent.act("fill in the email field")` | `page.getByRole('textbox', { name: 'Email' }).fill('...')` |
|
|
66
|
+
| `agent.act("navigate to Settings page")` | Click the nav element or `page.goto('/settings')` |
|
|
67
|
+
| `agent.act("select Option B from dropdown")` | Open dropdown + click option programmatically |
|
|
68
|
+
| `agent.act("verify the table has data")` | `await expect(page.locator('table tbody tr')).not.toHaveCount(0)` |
|
|
69
|
+
|
|
70
|
+
### 4. Keep AI methods only where they earn their cost
|
|
71
|
+
|
|
72
|
+
Preserve `aiAssert` or `agent.act()` when:
|
|
73
|
+
- The check is inherently visual/subjective (e.g., "the dashboard looks loaded and has content")
|
|
74
|
+
- The UI is highly dynamic and selectors are unstable (canvas, drag-drop, complex widgets)
|
|
75
|
+
- Deterministic assertions would be brittle or impossible to write
|
|
76
|
+
|
|
77
|
+
When using `aiAssert`, write tolerant prompts — verify the intent, not pixel-perfect details.
|
|
78
|
+
|
|
79
|
+
### 5. Structure the rewritten test
|
|
80
|
+
|
|
81
|
+
- **One `test.step()` per logical action** — not one giant step for the whole flow
|
|
82
|
+
- **Extract repeated patterns into helper functions** — if multiple tests follow the same pattern, write one helper
|
|
83
|
+
- **Set explicit timeouts** where flows are slow (use `test.setTimeout()` inside the test body)
|
|
84
|
+
- **Handle conditional states** (e.g., login may or may not appear) with detection logic rather than hoping the AI handles it
|
|
85
|
+
|
|
86
|
+
### 6. Verify the rewrite
|
|
87
|
+
|
|
88
|
+
Run the migrated test end-to-end. If it fails, use the browser exploration workflow to diagnose. Run at least **twice** to confirm stability. Compare execution time against the original — migrated tests should be faster since they skip AI inference for routine actions.
|
|
89
|
+
|
|
90
|
+
## Key Principles
|
|
91
|
+
|
|
92
|
+
- **AI is expensive; use it deliberately.** Every `agent.act()` call adds latency and non-determinism. If a click is just a click, write it as a click.
|
|
93
|
+
- **Explore before you write.** Never rewrite a test based solely on what the old AI prompt says the UI looks like. Open the browser and see the actual page.
|
|
94
|
+
- **Migrate incrementally.** Replace one `agent.act()` block at a time, verify it works, then move to the next. Don't rewrite the entire test blind.
|
|
95
|
+
- **The goal is reliability, not zero AI.** A test with 20 programmatic steps and 1 `aiAssert` at the end is better than either extreme.
|
|
@@ -24,6 +24,34 @@ playwright-cli goto https://example.com
|
|
|
24
24
|
|
|
25
25
|
`playwright-cli run-test` auto-starts a browser if needed and preserves the session after tests finish. You can immediately use `playwright-cli snapshot`, `playwright-cli click`, etc. to inspect page state. No need to run `playwright-cli open` before or after `run-test`.
|
|
26
26
|
|
|
27
|
+
### Reset Browser Between Independent Test Verifications
|
|
28
|
+
|
|
29
|
+
**CRITICAL:** When verifying that multiple independent tests pass, you **MUST** run `playwright-cli close` between each `run-test` call. Browser state (cookies, localStorage, auth sessions) persists across runs, so a stale or logged-in state from one test will contaminate the next — causing cascading login failures or unexpected behavior.
|
|
30
|
+
|
|
31
|
+
**IMPORTANT: `playwright-cli close` must be its own separate Bash call.** Do NOT chain it with other commands (e.g., `playwright-cli close; playwright-cli run-test ...`). The browser is only fully terminated after the Bash command finishes, so chaining means the next command runs on the old browser with stale state.
|
|
32
|
+
|
|
33
|
+
This does NOT apply when intentionally using `run-test` as a setup/seed mechanism to build state for subsequent interaction.
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# CORRECT: Each command is a separate Bash call
|
|
37
|
+
playwright-cli run-test tests/test-a.spec.ts
|
|
38
|
+
playwright-cli close
|
|
39
|
+
playwright-cli run-test tests/test-b.spec.ts
|
|
40
|
+
playwright-cli close
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# WRONG: Chaining close with run-test in one command
|
|
45
|
+
playwright-cli close; playwright-cli run-test tests/test-b.spec.ts # ← run-test hits old browser
|
|
46
|
+
playwright-cli close && playwright-cli run-test tests/test-b.spec.ts # ← same problem
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# WRONG: Running independent tests without resetting
|
|
51
|
+
playwright-cli run-test tests/test-a.spec.ts
|
|
52
|
+
playwright-cli run-test tests/test-b.spec.ts # ← may fail: stale state from test-a
|
|
53
|
+
```
|
|
54
|
+
|
|
27
55
|
### Tool Decision Tree
|
|
28
56
|
|
|
29
57
|
```
|
|
@@ -50,7 +78,7 @@ For project selection (auth dependencies), see `playwright-config-auth` skill.
|
|
|
50
78
|
|
|
51
79
|
| Error Type | Action |
|
|
52
80
|
|------------|--------|
|
|
53
|
-
| **Test code error** (assertion failed, locator not found) |
|
|
81
|
+
| **Test code error** (assertion failed, locator not found) | Test the locator interactively with `playwright-cli run-code` first (seconds vs minutes), then fix code and re-run with `playwright-cli run-test` |
|
|
54
82
|
| **External service error** (timeout, network) | Retry up to 3 times |
|
|
55
83
|
| **Same error 3+ times** | Flag as blocked service issue, do not keep retrying |
|
|
56
84
|
|
|
@@ -111,6 +139,36 @@ page.locator('table tbody tr').first().locator('button')
|
|
|
111
139
|
- Empty text filters with indexes: `.filter({ hasText: /^$/ }).nth(5)`
|
|
112
140
|
- Absolute indexes without context
|
|
113
141
|
- CSS selectors based on implementation details
|
|
142
|
+
- **Parent traversal with `.locator('..')`**: Don't chain `.locator('..')` from buttons or interactive elements to find siblings. The accessibility tree and DOM tree don't always align, so going "up" from a button may not reach the container you expect. Instead, start from a nearby label/text and traverse from there, or use a broader structural locator.
|
|
143
|
+
|
|
144
|
+
### Snapshot Names vs textContent()
|
|
145
|
+
|
|
146
|
+
Accessible names shown in snapshots are cleaned and trimmed. `textContent()` in test code returns raw text, which may include icon font ligatures (e.g., Material Icons: `keyboard_arrow_right`, `filter_alt`, `chevron_left`) and extra whitespace.
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// BAD — exact match fails because textContent includes icon text
|
|
150
|
+
expect(await cell.textContent()).toBe('Settings');
|
|
151
|
+
|
|
152
|
+
// GOOD — use contains/regex to handle icon ligatures and whitespace
|
|
153
|
+
expect(await cell.textContent()).toContain('Settings');
|
|
154
|
+
// or
|
|
155
|
+
await expect(cell).toHaveText(/Settings/);
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Tri-State Checkboxes (Indeterminate)
|
|
159
|
+
|
|
160
|
+
Checkboxes can have three states: checked, unchecked, and indeterminate (`checked="mixed"`). `isChecked()` returns `false` for indeterminate state, so don't use it to determine initial state.
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// BAD — isChecked() returns false for indeterminate, so this skips the click
|
|
164
|
+
if (!await checkbox.isChecked()) await checkbox.click();
|
|
165
|
+
|
|
166
|
+
// GOOD — click first, then verify the resulting state
|
|
167
|
+
await checkbox.click();
|
|
168
|
+
if (await checkbox.isChecked()) {
|
|
169
|
+
// Now fully checked — if you wanted unchecked, click again
|
|
170
|
+
}
|
|
171
|
+
```
|
|
114
172
|
|
|
115
173
|
### Use `.describe()` Method
|
|
116
174
|
|
|
@@ -155,6 +213,14 @@ playwright-cli goto 'https://${process.env.BASE_URL}/dashboard'
|
|
|
155
213
|
playwright-cli fill e3 "${process.env.ACCOUNT_PASSWORD}"
|
|
156
214
|
```
|
|
157
215
|
|
|
216
|
+
## Browser Interaction Strategy (Priority Order)
|
|
217
|
+
|
|
218
|
+
1. **Standard Playwright methods** (`locator.click()`, `locator.fill()`) - First choice, fast and reliable
|
|
219
|
+
2. **`agent.act()`** for complex/dynamic UI - Use for sliders, carousels, drag-drop, dynamic menus. Slower but more robust.
|
|
220
|
+
3. **Custom JS `page.evaluate()`** - Last resort only when agent.act() is inconsistent
|
|
221
|
+
|
|
222
|
+
Don't prematurely optimize with custom JS. Slower but reliable `agent.act()` is better than fast but brittle custom JS.
|
|
223
|
+
|
|
158
224
|
## Page State Snapshots
|
|
159
225
|
|
|
160
226
|
Every `playwright-cli` command that changes page state (`open`, `goto`, `click`, `fill`, `run-test`, etc.) returns a snapshot file path in its output. **Read that snapshot file directly — do not call `playwright-cli snapshot` again.** Refs (e1, e2, etc.) are only valid from the most recent snapshot. After any command that returns a new snapshot, previous refs are stale.
|
|
@@ -71,6 +71,10 @@ Keep the user informed:
|
|
|
71
71
|
- "Completed 6/18 tests. Moving to batch 2..."
|
|
72
72
|
- "Batch 2 complete. 2 tests needed manual review..."
|
|
73
73
|
|
|
74
|
+
### Between Tests (Browser Reset)
|
|
75
|
+
|
|
76
|
+
**CRITICAL:** When verifying independent tests, run `playwright-cli close` after each `run-test` call before starting the next test. Browser state (cookies, auth, localStorage) persists between runs, causing cascading failures if not reset. **`playwright-cli close` must be its own separate Bash call** — do NOT chain it with other commands (e.g., `close; run-test`). The browser is only fully terminated after the Bash command finishes.
|
|
77
|
+
|
|
74
78
|
### Between Batches - Check Your System Prompt
|
|
75
79
|
|
|
76
80
|
Your system prompt tells you which mode you're in:
|
|
@@ -57,6 +57,8 @@ Five types of issues cause test failures:
|
|
|
57
57
|
|
|
58
58
|
**In `single`, `build`, `chat` modes**: Run `playwright-cli run-test` directly (no debug subagent available). Browser persists after test runs for inspection via `playwright-cli snapshot`.
|
|
59
59
|
|
|
60
|
+
**IMPORTANT:** When verifying multiple independent tests, run `playwright-cli close` between each `run-test` call. Stale browser state (cookies, auth sessions, localStorage) from one test will contaminate the next, causing cascading failures — especially at login. **`playwright-cli close` must be its own separate Bash call** — do NOT chain it with other commands (e.g., `close; run-test`). The browser is only fully terminated after the Bash command finishes.
|
|
61
|
+
|
|
60
62
|
### When to Use Subagents
|
|
61
63
|
|
|
62
64
|
- Verifying a test works after making changes
|
|
@@ -72,13 +74,74 @@ Five types of issues cause test failures:
|
|
|
72
74
|
|
|
73
75
|
## Debugging Workflow
|
|
74
76
|
|
|
75
|
-
1. **
|
|
76
|
-
2. **
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
1. **Run the test** and read the error output from `playwright-cli run-test`
|
|
78
|
+
2. **Read `error-context.md`**: On failure, check `test-results/<test-name>/error-context.md`. This is the page accessibility snapshot at the moment of failure — it shows every visible element, their roles, names, and states. This tells you what the page *actually looked like* when things went wrong.
|
|
79
|
+
3. **Classify the failure by symptom:**
|
|
80
|
+
|
|
81
|
+
| Symptom | Likely Cause | Typical Fix |
|
|
82
|
+
|---------|-------------|-------------|
|
|
83
|
+
| **Element not found** | Wrong selector, UI changed, element never rendered | Check error-context for actual element text/role, update selector |
|
|
84
|
+
| **Timeout waiting for element** | Page didn't reach expected state — auth redirect, skipped step, wrong page | Check error-context to see what page you're actually on |
|
|
85
|
+
| **Assertion failed** | Page loaded but content doesn't match expectations | Compare error-context to assertion, update expected value or fix app bug |
|
|
86
|
+
| **Test timeout exceeded** | Flow takes longer than allowed | Increase via `test.setTimeout()` inside test body |
|
|
87
|
+
|
|
88
|
+
4. **Fix or explore**:
|
|
89
|
+
- If error-context clearly explains the issue (wrong text, element missing, on wrong page) → fix the code directly
|
|
90
|
+
- If error-context is insufficient → open the browser and explore manually (see below)
|
|
91
|
+
5. **Verify**: Run the test again. Run at least **twice** to confirm the fix is stable.
|
|
92
|
+
6. **One fix at a time**: Fix the first failure point, re-run. Do not speculatively rewrite multiple parts at once.
|
|
93
|
+
7. **Group related failures**: Only group tests that share the same root cause
|
|
94
|
+
|
|
95
|
+
## When to Open the Browser for Manual Exploration
|
|
96
|
+
|
|
97
|
+
**Open the browser** (`playwright-cli open` or use the persisted session after `run-test`) when:
|
|
98
|
+
- The error-context doesn't explain the failure — you can see the page state but not *why* the selector doesn't match
|
|
99
|
+
- You need to discover interactive behavior (dropdowns, modals, hover states, animations) that a static snapshot can't capture
|
|
100
|
+
- You're writing or rewriting a test for a flow you haven't seen before
|
|
101
|
+
- The same test keeps failing after 2+ code fixes based on error-context alone
|
|
102
|
+
- **AI methods behave unexpectedly** — when `agent.act()`, `page.extract()`, or `toMatchScreenshotPrompt()` do the wrong thing, you need to see the actual page to understand what the AI was "seeing" and adjust the prompt. You can't debug AI prompts from a text snapshot alone.
|
|
103
|
+
|
|
104
|
+
**Don't open the browser** when:
|
|
105
|
+
- The error-context clearly shows the issue — wrong selector text, element not present, on wrong page. Just fix the code directly.
|
|
106
|
+
- It's a simple timeout that just needs a higher value
|
|
107
|
+
- It's a known flaky pattern you already know the fix for
|
|
108
|
+
|
|
109
|
+
### Manual Exploration Workflow
|
|
110
|
+
|
|
111
|
+
1. Open the browser at the test's starting URL (or use the persisted session after a failed `run-test`)
|
|
112
|
+
2. Walk through the flow step by step — snapshot, click, fill, navigate using refs
|
|
113
|
+
3. At each step, compare what you see vs. what the test expects
|
|
114
|
+
4. Record the correct selectors, text content, and page structure as you go
|
|
115
|
+
5. Find the divergence point — where reality differs from the test's assumptions
|
|
116
|
+
6. Fix the test to match what you observed
|
|
117
|
+
|
|
118
|
+
### Use `run-code` to Debug Locators Interactively
|
|
119
|
+
|
|
120
|
+
**If a locator fails on the first `run-test`, don't immediately retry `run-test`.** Open the browser and test the locator interactively with `playwright-cli run-code` — it gives results in seconds instead of waiting for a full test run (~2 minutes).
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Test a locator and see what it actually returns
|
|
124
|
+
playwright-cli run-code "async page => {
|
|
125
|
+
const el = page.getByRole('button', { name: 'Submit' });
|
|
126
|
+
return { count: await el.count(), text: await el.first().textContent() };
|
|
127
|
+
}"
|
|
128
|
+
|
|
129
|
+
# Explore DOM structure around an element
|
|
130
|
+
playwright-cli run-code "async page => {
|
|
131
|
+
let el = page.getByText('Filters', { exact: true });
|
|
132
|
+
for (let i = 1; i <= 5; i++) {
|
|
133
|
+
el = el.locator('..');
|
|
134
|
+
const buttons = await el.locator('button').count();
|
|
135
|
+
console.log('up' + i + ': ' + buttons + ' buttons');
|
|
136
|
+
}
|
|
137
|
+
}"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
This is especially useful for:
|
|
141
|
+
- Discovering that `textContent()` includes icon font ligatures not shown in snapshots
|
|
142
|
+
- Testing how many parent levels up you need to traverse to find a sibling element
|
|
143
|
+
- Checking checkbox states (`isChecked()` returns `false` for indeterminate/mixed)
|
|
144
|
+
- Verifying that a locator matches exactly one element, not zero or many
|
|
82
145
|
|
|
83
146
|
## Parallel Diagnosis
|
|
84
147
|
|
|
@@ -128,7 +191,9 @@ A failing test that catches a real bug is more valuable than a passing test that
|
|
|
128
191
|
|
|
129
192
|
## Best Practices
|
|
130
193
|
|
|
131
|
-
-
|
|
194
|
+
- **Read error-context first**: Always check `test-results/<test-name>/error-context.md` before touching code. The page snapshot tells you what went wrong faster than reading stack traces.
|
|
195
|
+
- **One fix at a time**: Fix the first point of failure, re-run. Don't rewrite the whole test speculatively.
|
|
196
|
+
- **Verify twice**: Run the test at least twice after fixing to confirm stability.
|
|
132
197
|
- Be specific: Identify actual file/function/selector locations
|
|
133
198
|
- Use evidence: Base analysis on actual test runs, errors, code inspection
|
|
134
199
|
- Respect annotations: If test is marked with `test.skip()`, do not touch it
|
|
@@ -231,6 +231,38 @@ playwright-cli run-test --help
|
|
|
231
231
|
- Overrides `browser`/`context`/`page` fixtures to connect via CDP (no new browser launched)
|
|
232
232
|
- Preserves browser state after the run (pages remain open for inspection)
|
|
233
233
|
|
|
234
|
+
### Running Multiple Tests Sequentially (Verification)
|
|
235
|
+
|
|
236
|
+
**CRITICAL:** When verifying that multiple independent tests pass, you **MUST close and reopen the browser** between each `run-test` call. Browser state (cookies, localStorage, auth sessions) persists between runs, and stale state from one test will contaminate the next.
|
|
237
|
+
|
|
238
|
+
This applies when you are running separate test files to check they pass — not when intentionally using `run-test` as a setup/seed mechanism (see "Use run-test as a Setup/Seed Mechanism" above).
|
|
239
|
+
|
|
240
|
+
**IMPORTANT: `playwright-cli close` must be its own separate Bash call.** Do NOT chain it with other commands (e.g., `playwright-cli close; playwright-cli run-test ...`). The browser is only fully terminated after the Bash command finishes, so chaining means the next command runs on the old browser with stale state.
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# CORRECT: Each command is a separate Bash call
|
|
244
|
+
playwright-cli run-test tests/login.spec.ts
|
|
245
|
+
playwright-cli close
|
|
246
|
+
playwright-cli run-test tests/checkout.spec.ts
|
|
247
|
+
playwright-cli close
|
|
248
|
+
playwright-cli run-test tests/settings.spec.ts
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# WRONG: Chaining close with run-test in one command
|
|
253
|
+
playwright-cli close; playwright-cli run-test tests/checkout.spec.ts # ← run-test hits old browser
|
|
254
|
+
playwright-cli close && playwright-cli run-test tests/settings.spec.ts # ← same problem
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# WRONG: Running independent tests without resetting — causes cascading failures
|
|
259
|
+
playwright-cli run-test tests/login.spec.ts
|
|
260
|
+
playwright-cli run-test tests/checkout.spec.ts # ← may fail: browser still has login state from test 1
|
|
261
|
+
playwright-cli run-test tests/settings.spec.ts # ← may fail: stale cookies/auth from previous tests
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Why this matters:** The browser is a cloud VM that persists across commands. `playwright-cli close` terminates it, but only after the Bash call returns. If you chain `close; run-test`, the test runs on the old browser before it's terminated. Running `close` as its own Bash call ensures the old browser is fully gone before the next test starts with a fresh one.
|
|
265
|
+
|
|
234
266
|
### Key Differences from `npx playwright test`
|
|
235
267
|
|
|
236
268
|
| Feature | `playwright-cli run-test` | `npx playwright test` |
|
|
@@ -195,6 +195,11 @@ export default defineConfig({
|
|
|
195
195
|
|
|
196
196
|
## CI/CD: GitHub Actions
|
|
197
197
|
|
|
198
|
+
### Important CI patterns
|
|
199
|
+
|
|
200
|
+
- **Use `stably install`** instead of `playwright install` to set up browsers.
|
|
201
|
+
- **Use `continue-on-error: true`** on test, fix, and PR steps so the pipeline can run fix/PR steps after failures — but **always add a final step that fails the workflow** if tests failed. Without `continue-on-error` on the fix/PR steps, a failure there blocks downstream steps.
|
|
202
|
+
|
|
198
203
|
### Self-healing test pipeline
|
|
199
204
|
|
|
200
205
|
```yaml
|
|
@@ -208,34 +213,47 @@ jobs:
|
|
|
208
213
|
- uses: actions/setup-node@v4
|
|
209
214
|
with: { node-version: '20' }
|
|
210
215
|
- run: npm ci
|
|
211
|
-
-
|
|
216
|
+
- name: Install browsers
|
|
217
|
+
run: npx stably install --with-deps
|
|
212
218
|
- name: Run tests
|
|
213
219
|
id: test
|
|
214
|
-
|
|
220
|
+
continue-on-error: true
|
|
221
|
+
run: npx stably --env staging test
|
|
215
222
|
env:
|
|
216
223
|
STABLY_API_KEY: ${{ secrets.STABLY_API_KEY }}
|
|
217
224
|
STABLY_PROJECT_ID: ${{ secrets.STABLY_PROJECT_ID }}
|
|
218
225
|
- name: Auto-fix failures
|
|
219
|
-
if:
|
|
226
|
+
if: steps.test.outcome == 'failure'
|
|
227
|
+
continue-on-error: true
|
|
220
228
|
run: npx stably --env staging fix
|
|
221
229
|
env:
|
|
222
230
|
STABLY_API_KEY: ${{ secrets.STABLY_API_KEY }}
|
|
223
231
|
STABLY_PROJECT_ID: ${{ secrets.STABLY_PROJECT_ID }}
|
|
224
|
-
- name:
|
|
225
|
-
if:
|
|
226
|
-
|
|
232
|
+
- name: Create PR with fixes
|
|
233
|
+
if: steps.test.outcome == 'failure'
|
|
234
|
+
continue-on-error: true
|
|
235
|
+
run: |
|
|
236
|
+
if [ -n "$(git status --porcelain)" ]; then
|
|
237
|
+
BRANCH="stably-fix/$(date +%Y%m%d-%H%M%S)"
|
|
238
|
+
git config user.name "github-actions[bot]"
|
|
239
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
240
|
+
git checkout -b "$BRANCH"
|
|
241
|
+
git add -A
|
|
242
|
+
git commit -m "fix: auto-repair failing tests"
|
|
243
|
+
git push origin "$BRANCH"
|
|
244
|
+
gh pr create \
|
|
245
|
+
--title "fix: auto-repair failing tests" \
|
|
246
|
+
--body "Automated PR from Stably Fix after test failures in run #${{ github.run_number }}." \
|
|
247
|
+
--base "${{ github.ref_name }}" \
|
|
248
|
+
--head "$BRANCH"
|
|
249
|
+
fi
|
|
227
250
|
env:
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
if: env.TEST_FAILED == 'true' && github.event_name == 'push'
|
|
251
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
252
|
+
- name: Fail if tests failed
|
|
253
|
+
if: steps.test.outcome == 'failure'
|
|
232
254
|
run: |
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
# Adjust paths to match your project's test directories
|
|
236
|
-
git add 'tests/' 'e2e/' '**/*.spec.ts' '**/*.test.ts' 2>/dev/null || true
|
|
237
|
-
git diff --staged --quiet || git commit -m "fix: auto-repair failing tests [skip ci]"
|
|
238
|
-
git push
|
|
255
|
+
echo "::error::Tests failed"
|
|
256
|
+
exit 1
|
|
239
257
|
```
|
|
240
258
|
|
|
241
259
|
## Troubleshooting
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stably",
|
|
3
|
-
"version": "4.12.
|
|
3
|
+
"version": "4.12.2",
|
|
4
4
|
"packageManager": "pnpm@10.24.0",
|
|
5
5
|
"description": "AI-powered E2E Playwright testing CLI. Stably can understand your codebase, edit/run tests, and handle complex test scenarios for you.",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@playwright/test": "^1.58.2",
|
|
87
|
+
"playwright": "1.59.0-alpha-1771104257000",
|
|
87
88
|
"@stablyai/codegen-agent-constants": "workspace:*",
|
|
88
89
|
"@stablyai-internal/api-client": "workspace:*",
|
|
89
90
|
"@stablyai-internal/playwright-cli": "0.4.0",
|
|
@@ -106,7 +107,6 @@
|
|
|
106
107
|
"dotenv-cli": "^11.0.0",
|
|
107
108
|
"execa": "^9.5.3",
|
|
108
109
|
"node-pty": "1.2.0-beta.10",
|
|
109
|
-
"playwright": "1.57.0",
|
|
110
110
|
"terser": "^5.44.1",
|
|
111
111
|
"tsup": "^8.5.0",
|
|
112
112
|
"tsx": "^4.20.5",
|