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.
Files changed (604) hide show
  1. package/dist/index.mjs +1 -1
  2. package/dist/node_modules/minimist/.eslintrc +29 -0
  3. package/dist/node_modules/minimist/.github/FUNDING.yml +12 -0
  4. package/dist/node_modules/minimist/.nycrc +14 -0
  5. package/dist/node_modules/minimist/CHANGELOG.md +298 -0
  6. package/dist/node_modules/minimist/LICENSE +18 -0
  7. package/dist/node_modules/minimist/README.md +121 -0
  8. package/dist/node_modules/minimist/example/parse.js +4 -0
  9. package/dist/node_modules/minimist/index.js +263 -0
  10. package/dist/node_modules/minimist/package.json +75 -0
  11. package/dist/node_modules/minimist/test/all_bool.js +34 -0
  12. package/dist/node_modules/minimist/test/bool.js +177 -0
  13. package/dist/node_modules/minimist/test/dash.js +43 -0
  14. package/dist/node_modules/minimist/test/default_bool.js +37 -0
  15. package/dist/node_modules/minimist/test/dotted.js +24 -0
  16. package/dist/node_modules/minimist/test/kv_short.js +32 -0
  17. package/dist/node_modules/minimist/test/long.js +33 -0
  18. package/dist/node_modules/minimist/test/num.js +38 -0
  19. package/dist/node_modules/minimist/test/parse.js +209 -0
  20. package/dist/node_modules/minimist/test/parse_modified.js +11 -0
  21. package/dist/node_modules/minimist/test/proto.js +64 -0
  22. package/dist/node_modules/minimist/test/short.js +69 -0
  23. package/dist/node_modules/minimist/test/stop_early.js +17 -0
  24. package/dist/node_modules/minimist/test/unknown.js +104 -0
  25. package/dist/node_modules/minimist/test/whitespace.js +10 -0
  26. package/dist/node_modules/playwright/LICENSE +202 -0
  27. package/dist/node_modules/playwright/NOTICE +5 -0
  28. package/dist/node_modules/playwright/README.md +170 -0
  29. package/dist/node_modules/playwright/ThirdPartyNotices.txt +5042 -0
  30. package/dist/node_modules/playwright/cli.js +19 -0
  31. package/dist/node_modules/playwright/index.d.ts +17 -0
  32. package/dist/node_modules/playwright/index.js +17 -0
  33. package/dist/node_modules/playwright/index.mjs +18 -0
  34. package/dist/node_modules/playwright/jsx-runtime.js +42 -0
  35. package/dist/node_modules/playwright/jsx-runtime.mjs +21 -0
  36. package/dist/node_modules/playwright/lib/agents/agentParser.js +89 -0
  37. package/dist/node_modules/playwright/lib/agents/copilot-setup-steps.yml +34 -0
  38. package/dist/node_modules/playwright/lib/agents/generateAgents.js +348 -0
  39. package/dist/node_modules/playwright/lib/agents/playwright-test-coverage.prompt.md +31 -0
  40. package/dist/node_modules/playwright/lib/agents/playwright-test-generate.prompt.md +8 -0
  41. package/dist/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +88 -0
  42. package/dist/node_modules/playwright/lib/agents/playwright-test-heal.prompt.md +6 -0
  43. package/dist/node_modules/playwright/lib/agents/playwright-test-healer.agent.md +55 -0
  44. package/dist/node_modules/playwright/lib/agents/playwright-test-plan.prompt.md +9 -0
  45. package/dist/node_modules/playwright/lib/agents/playwright-test-planner.agent.md +73 -0
  46. package/dist/node_modules/playwright/lib/cli/client/appIcon.png +0 -0
  47. package/dist/node_modules/playwright/lib/cli/client/devtoolsApp.js +246 -0
  48. package/dist/node_modules/playwright/lib/cli/client/help.json +89 -0
  49. package/dist/node_modules/playwright/lib/cli/client/program.js +364 -0
  50. package/dist/node_modules/playwright/lib/cli/client/registry.js +146 -0
  51. package/dist/node_modules/playwright/lib/cli/client/session.js +309 -0
  52. package/dist/node_modules/playwright/lib/cli/client/socketConnection.js +99 -0
  53. package/dist/node_modules/playwright/lib/cli/daemon/command.js +73 -0
  54. package/dist/node_modules/playwright/lib/cli/daemon/commands.js +859 -0
  55. package/dist/node_modules/playwright/lib/cli/daemon/daemon.js +151 -0
  56. package/dist/node_modules/playwright/lib/cli/daemon/helpGenerator.js +173 -0
  57. package/dist/node_modules/playwright/lib/cli/daemon/program.js +109 -0
  58. package/dist/node_modules/playwright/lib/common/config.js +281 -0
  59. package/dist/node_modules/playwright/lib/common/configLoader.js +344 -0
  60. package/dist/node_modules/playwright/lib/common/esmLoaderHost.js +104 -0
  61. package/dist/node_modules/playwright/lib/common/expectBundle.js +28 -0
  62. package/dist/node_modules/playwright/lib/common/expectBundleImpl.js +407 -0
  63. package/dist/node_modules/playwright/lib/common/fixtures.js +302 -0
  64. package/dist/node_modules/playwright/lib/common/globals.js +58 -0
  65. package/dist/node_modules/playwright/lib/common/ipc.js +60 -0
  66. package/dist/node_modules/playwright/lib/common/poolBuilder.js +85 -0
  67. package/dist/node_modules/playwright/lib/common/process.js +132 -0
  68. package/dist/node_modules/playwright/lib/common/suiteUtils.js +140 -0
  69. package/dist/node_modules/playwright/lib/common/test.js +330 -0
  70. package/dist/node_modules/playwright/lib/common/testLoader.js +101 -0
  71. package/dist/node_modules/playwright/lib/common/testType.js +298 -0
  72. package/dist/node_modules/playwright/lib/common/validators.js +68 -0
  73. package/dist/node_modules/playwright/lib/fsWatcher.js +67 -0
  74. package/dist/node_modules/playwright/lib/index.js +726 -0
  75. package/dist/node_modules/playwright/lib/internalsForTest.js +42 -0
  76. package/dist/node_modules/playwright/lib/isomorphic/events.js +77 -0
  77. package/dist/node_modules/playwright/lib/isomorphic/folders.js +30 -0
  78. package/dist/node_modules/playwright/lib/isomorphic/stringInternPool.js +69 -0
  79. package/dist/node_modules/playwright/lib/isomorphic/teleReceiver.js +539 -0
  80. package/dist/node_modules/playwright/lib/isomorphic/teleSuiteUpdater.js +157 -0
  81. package/dist/node_modules/playwright/lib/isomorphic/testServerConnection.js +225 -0
  82. package/dist/node_modules/playwright/lib/isomorphic/testServerInterface.js +16 -0
  83. package/dist/node_modules/playwright/lib/isomorphic/testTree.js +329 -0
  84. package/dist/node_modules/playwright/lib/isomorphic/types.d.js +16 -0
  85. package/dist/node_modules/playwright/lib/loader/loaderMain.js +59 -0
  86. package/dist/node_modules/playwright/lib/matchers/expect.js +311 -0
  87. package/dist/node_modules/playwright/lib/matchers/matcherHint.js +44 -0
  88. package/dist/node_modules/playwright/lib/matchers/matchers.js +395 -0
  89. package/dist/node_modules/playwright/lib/matchers/toBeTruthy.js +75 -0
  90. package/dist/node_modules/playwright/lib/matchers/toEqual.js +100 -0
  91. package/dist/node_modules/playwright/lib/matchers/toHaveURL.js +101 -0
  92. package/dist/node_modules/playwright/lib/matchers/toMatchAriaSnapshot.js +159 -0
  93. package/dist/node_modules/playwright/lib/matchers/toMatchSnapshot.js +342 -0
  94. package/dist/node_modules/playwright/lib/matchers/toMatchText.js +99 -0
  95. package/dist/node_modules/playwright/lib/mcp/browser/browserContextFactory.js +332 -0
  96. package/dist/node_modules/playwright/lib/mcp/browser/browserServerBackend.js +85 -0
  97. package/dist/node_modules/playwright/lib/mcp/browser/config.js +467 -0
  98. package/dist/node_modules/playwright/lib/mcp/browser/configIni.js +190 -0
  99. package/dist/node_modules/playwright/lib/mcp/browser/context.js +302 -0
  100. package/dist/node_modules/playwright/lib/mcp/browser/logFile.js +96 -0
  101. package/dist/node_modules/playwright/lib/mcp/browser/response.js +270 -0
  102. package/dist/node_modules/playwright/lib/mcp/browser/sessionLog.js +75 -0
  103. package/dist/node_modules/playwright/lib/mcp/browser/tab.js +421 -0
  104. package/dist/node_modules/playwright/lib/mcp/browser/tools/common.js +63 -0
  105. package/dist/node_modules/playwright/lib/mcp/browser/tools/config.js +41 -0
  106. package/dist/node_modules/playwright/lib/mcp/browser/tools/console.js +65 -0
  107. package/dist/node_modules/playwright/lib/mcp/browser/tools/cookies.js +152 -0
  108. package/dist/node_modules/playwright/lib/mcp/browser/tools/devtools.js +42 -0
  109. package/dist/node_modules/playwright/lib/mcp/browser/tools/dialogs.js +59 -0
  110. package/dist/node_modules/playwright/lib/mcp/browser/tools/evaluate.js +61 -0
  111. package/dist/node_modules/playwright/lib/mcp/browser/tools/files.js +58 -0
  112. package/dist/node_modules/playwright/lib/mcp/browser/tools/form.js +63 -0
  113. package/dist/node_modules/playwright/lib/mcp/browser/tools/install.js +73 -0
  114. package/dist/node_modules/playwright/lib/mcp/browser/tools/keyboard.js +151 -0
  115. package/dist/node_modules/playwright/lib/mcp/browser/tools/mouse.js +159 -0
  116. package/dist/node_modules/playwright/lib/mcp/browser/tools/navigate.js +105 -0
  117. package/dist/node_modules/playwright/lib/mcp/browser/tools/network.js +92 -0
  118. package/dist/node_modules/playwright/lib/mcp/browser/tools/pdf.js +48 -0
  119. package/dist/node_modules/playwright/lib/mcp/browser/tools/route.js +140 -0
  120. package/dist/node_modules/playwright/lib/mcp/browser/tools/runCode.js +76 -0
  121. package/dist/node_modules/playwright/lib/mcp/browser/tools/screenshot.js +86 -0
  122. package/dist/node_modules/playwright/lib/mcp/browser/tools/snapshot.js +207 -0
  123. package/dist/node_modules/playwright/lib/mcp/browser/tools/storage.js +67 -0
  124. package/dist/node_modules/playwright/lib/mcp/browser/tools/tabs.js +67 -0
  125. package/dist/node_modules/playwright/lib/mcp/browser/tools/tool.js +47 -0
  126. package/dist/node_modules/playwright/lib/mcp/browser/tools/tracing.js +75 -0
  127. package/dist/node_modules/playwright/lib/mcp/browser/tools/utils.js +88 -0
  128. package/dist/node_modules/playwright/lib/mcp/browser/tools/verify.js +143 -0
  129. package/dist/node_modules/playwright/lib/mcp/browser/tools/video.js +89 -0
  130. package/dist/node_modules/playwright/lib/mcp/browser/tools/wait.js +63 -0
  131. package/dist/node_modules/playwright/lib/mcp/browser/tools/webstorage.js +223 -0
  132. package/dist/node_modules/playwright/lib/mcp/browser/tools.js +96 -0
  133. package/dist/node_modules/playwright/lib/mcp/browser/watchdog.js +44 -0
  134. package/dist/node_modules/playwright/lib/mcp/config.d.js +16 -0
  135. package/dist/node_modules/playwright/lib/mcp/extension/cdpRelay.js +354 -0
  136. package/dist/node_modules/playwright/lib/mcp/extension/extensionContextFactory.js +77 -0
  137. package/dist/node_modules/playwright/lib/mcp/extension/protocol.js +28 -0
  138. package/dist/node_modules/playwright/lib/mcp/index.js +61 -0
  139. package/dist/node_modules/playwright/lib/mcp/log.js +35 -0
  140. package/dist/node_modules/playwright/lib/mcp/program.js +76 -0
  141. package/dist/node_modules/playwright/lib/mcp/sdk/exports.js +28 -0
  142. package/dist/node_modules/playwright/lib/mcp/sdk/http.js +152 -0
  143. package/dist/node_modules/playwright/lib/mcp/sdk/inProcessTransport.js +71 -0
  144. package/dist/node_modules/playwright/lib/mcp/sdk/server.js +223 -0
  145. package/dist/node_modules/playwright/lib/mcp/sdk/tool.js +47 -0
  146. package/dist/node_modules/playwright/lib/mcp/test/browserBackend.js +98 -0
  147. package/dist/node_modules/playwright/lib/mcp/test/generatorTools.js +122 -0
  148. package/dist/node_modules/playwright/lib/mcp/test/plannerTools.js +145 -0
  149. package/dist/node_modules/playwright/lib/mcp/test/seed.js +82 -0
  150. package/dist/node_modules/playwright/lib/mcp/test/streams.js +44 -0
  151. package/dist/node_modules/playwright/lib/mcp/test/testBackend.js +99 -0
  152. package/dist/node_modules/playwright/lib/mcp/test/testContext.js +285 -0
  153. package/dist/node_modules/playwright/lib/mcp/test/testTool.js +30 -0
  154. package/dist/node_modules/playwright/lib/mcp/test/testTools.js +108 -0
  155. package/dist/node_modules/playwright/lib/plugins/gitCommitInfoPlugin.js +198 -0
  156. package/dist/node_modules/playwright/lib/plugins/index.js +28 -0
  157. package/dist/node_modules/playwright/lib/plugins/webServerPlugin.js +237 -0
  158. package/dist/node_modules/playwright/lib/program.js +425 -0
  159. package/dist/node_modules/playwright/lib/reporters/base.js +634 -0
  160. package/dist/node_modules/playwright/lib/reporters/blob.js +138 -0
  161. package/dist/node_modules/playwright/lib/reporters/dot.js +99 -0
  162. package/dist/node_modules/playwright/lib/reporters/empty.js +32 -0
  163. package/dist/node_modules/playwright/lib/reporters/github.js +128 -0
  164. package/dist/node_modules/playwright/lib/reporters/html.js +644 -0
  165. package/dist/node_modules/playwright/lib/reporters/internalReporter.js +138 -0
  166. package/dist/node_modules/playwright/lib/reporters/json.js +254 -0
  167. package/dist/node_modules/playwright/lib/reporters/junit.js +232 -0
  168. package/dist/node_modules/playwright/lib/reporters/line.js +131 -0
  169. package/dist/node_modules/playwright/lib/reporters/list.js +253 -0
  170. package/dist/node_modules/playwright/lib/reporters/listModeReporter.js +69 -0
  171. package/dist/node_modules/playwright/lib/reporters/markdown.js +144 -0
  172. package/dist/node_modules/playwright/lib/reporters/merge.js +579 -0
  173. package/dist/node_modules/playwright/lib/reporters/multiplexer.js +116 -0
  174. package/dist/node_modules/playwright/lib/reporters/reporterV2.js +102 -0
  175. package/dist/node_modules/playwright/lib/reporters/teleEmitter.js +319 -0
  176. package/dist/node_modules/playwright/lib/reporters/versions/blobV1.js +16 -0
  177. package/dist/node_modules/playwright/lib/runner/dispatcher.js +530 -0
  178. package/dist/node_modules/playwright/lib/runner/failureTracker.js +72 -0
  179. package/dist/node_modules/playwright/lib/runner/lastRun.js +77 -0
  180. package/dist/node_modules/playwright/lib/runner/loadUtils.js +334 -0
  181. package/dist/node_modules/playwright/lib/runner/loaderHost.js +89 -0
  182. package/dist/node_modules/playwright/lib/runner/processHost.js +180 -0
  183. package/dist/node_modules/playwright/lib/runner/projectUtils.js +241 -0
  184. package/dist/node_modules/playwright/lib/runner/rebase.js +189 -0
  185. package/dist/node_modules/playwright/lib/runner/reporters.js +143 -0
  186. package/dist/node_modules/playwright/lib/runner/sigIntWatcher.js +96 -0
  187. package/dist/node_modules/playwright/lib/runner/storage.js +91 -0
  188. package/dist/node_modules/playwright/lib/runner/taskRunner.js +127 -0
  189. package/dist/node_modules/playwright/lib/runner/tasks.js +410 -0
  190. package/dist/node_modules/playwright/lib/runner/testGroups.js +125 -0
  191. package/dist/node_modules/playwright/lib/runner/testRunner.js +398 -0
  192. package/dist/node_modules/playwright/lib/runner/testServer.js +269 -0
  193. package/dist/node_modules/playwright/lib/runner/uiModeReporter.js +30 -0
  194. package/dist/node_modules/playwright/lib/runner/vcs.js +72 -0
  195. package/dist/node_modules/playwright/lib/runner/watchMode.js +396 -0
  196. package/dist/node_modules/playwright/lib/runner/workerHost.js +104 -0
  197. package/dist/node_modules/playwright/lib/skill/SKILL.md +278 -0
  198. package/dist/node_modules/playwright/lib/skill/references/request-mocking.md +87 -0
  199. package/dist/node_modules/playwright/lib/skill/references/running-code.md +232 -0
  200. package/dist/node_modules/playwright/lib/skill/references/session-management.md +169 -0
  201. package/dist/node_modules/playwright/lib/skill/references/storage-state.md +275 -0
  202. package/dist/node_modules/playwright/lib/skill/references/test-generation.md +88 -0
  203. package/dist/node_modules/playwright/lib/skill/references/tracing.md +139 -0
  204. package/dist/node_modules/playwright/lib/skill/references/video-recording.md +43 -0
  205. package/dist/node_modules/playwright/lib/third_party/pirates.js +62 -0
  206. package/dist/node_modules/playwright/lib/third_party/tsconfig-loader.js +103 -0
  207. package/dist/node_modules/playwright/lib/transform/babelBundle.js +46 -0
  208. package/dist/node_modules/playwright/lib/transform/babelBundleImpl.js +461 -0
  209. package/dist/node_modules/playwright/lib/transform/compilationCache.js +274 -0
  210. package/dist/node_modules/playwright/lib/transform/esmLoader.js +103 -0
  211. package/dist/node_modules/playwright/lib/transform/md.js +221 -0
  212. package/dist/node_modules/playwright/lib/transform/portTransport.js +67 -0
  213. package/dist/node_modules/playwright/lib/transform/transform.js +303 -0
  214. package/dist/node_modules/playwright/lib/util.js +400 -0
  215. package/dist/node_modules/playwright/lib/utilsBundle.js +50 -0
  216. package/dist/node_modules/playwright/lib/utilsBundleImpl.js +103 -0
  217. package/dist/node_modules/playwright/lib/worker/fixtureRunner.js +262 -0
  218. package/dist/node_modules/playwright/lib/worker/testInfo.js +536 -0
  219. package/dist/node_modules/playwright/lib/worker/testTracing.js +345 -0
  220. package/dist/node_modules/playwright/lib/worker/timeoutManager.js +174 -0
  221. package/dist/node_modules/playwright/lib/worker/util.js +31 -0
  222. package/dist/node_modules/playwright/lib/worker/workerMain.js +532 -0
  223. package/dist/node_modules/playwright/node_modules/.bin/playwright-core +21 -0
  224. package/dist/node_modules/playwright/package.json +73 -0
  225. package/dist/node_modules/playwright/test.d.ts +18 -0
  226. package/dist/node_modules/playwright/test.js +24 -0
  227. package/dist/node_modules/playwright/test.mjs +34 -0
  228. package/dist/node_modules/playwright/types/test.d.ts +10326 -0
  229. package/dist/node_modules/playwright/types/testReporter.d.ts +822 -0
  230. package/dist/node_modules/playwright-core/LICENSE +202 -0
  231. package/dist/node_modules/playwright-core/NOTICE +5 -0
  232. package/dist/node_modules/playwright-core/README.md +3 -0
  233. package/dist/node_modules/playwright-core/ThirdPartyNotices.txt +4095 -0
  234. package/dist/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
  235. package/dist/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
  236. package/dist/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
  237. package/dist/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  238. package/dist/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  239. package/dist/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
  240. package/dist/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  241. package/dist/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  242. package/dist/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
  243. package/dist/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  244. package/dist/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  245. package/dist/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
  246. package/dist/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  247. package/dist/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  248. package/dist/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
  249. package/dist/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  250. package/dist/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  251. package/dist/node_modules/playwright-core/browsers.json +81 -0
  252. package/dist/node_modules/playwright-core/cli.js +18 -0
  253. package/dist/node_modules/playwright-core/index.d.ts +17 -0
  254. package/dist/node_modules/playwright-core/index.js +32 -0
  255. package/dist/node_modules/playwright-core/index.mjs +28 -0
  256. package/dist/node_modules/playwright-core/lib/androidServerImpl.js +65 -0
  257. package/dist/node_modules/playwright-core/lib/browserServerImpl.js +120 -0
  258. package/dist/node_modules/playwright-core/lib/cli/driver.js +97 -0
  259. package/dist/node_modules/playwright-core/lib/cli/program.js +589 -0
  260. package/dist/node_modules/playwright-core/lib/cli/programWithTestStub.js +74 -0
  261. package/dist/node_modules/playwright-core/lib/client/android.js +361 -0
  262. package/dist/node_modules/playwright-core/lib/client/api.js +137 -0
  263. package/dist/node_modules/playwright-core/lib/client/artifact.js +79 -0
  264. package/dist/node_modules/playwright-core/lib/client/browser.js +161 -0
  265. package/dist/node_modules/playwright-core/lib/client/browserContext.js +589 -0
  266. package/dist/node_modules/playwright-core/lib/client/browserType.js +195 -0
  267. package/dist/node_modules/playwright-core/lib/client/cdpSession.js +51 -0
  268. package/dist/node_modules/playwright-core/lib/client/channelOwner.js +194 -0
  269. package/dist/node_modules/playwright-core/lib/client/clientHelper.js +64 -0
  270. package/dist/node_modules/playwright-core/lib/client/clientInstrumentation.js +55 -0
  271. package/dist/node_modules/playwright-core/lib/client/clientStackTrace.js +69 -0
  272. package/dist/node_modules/playwright-core/lib/client/clock.js +68 -0
  273. package/dist/node_modules/playwright-core/lib/client/connection.js +318 -0
  274. package/dist/node_modules/playwright-core/lib/client/consoleMessage.js +61 -0
  275. package/dist/node_modules/playwright-core/lib/client/coverage.js +44 -0
  276. package/dist/node_modules/playwright-core/lib/client/dialog.js +56 -0
  277. package/dist/node_modules/playwright-core/lib/client/download.js +62 -0
  278. package/dist/node_modules/playwright-core/lib/client/electron.js +138 -0
  279. package/dist/node_modules/playwright-core/lib/client/elementHandle.js +284 -0
  280. package/dist/node_modules/playwright-core/lib/client/errors.js +77 -0
  281. package/dist/node_modules/playwright-core/lib/client/eventEmitter.js +314 -0
  282. package/dist/node_modules/playwright-core/lib/client/events.js +103 -0
  283. package/dist/node_modules/playwright-core/lib/client/fetch.js +368 -0
  284. package/dist/node_modules/playwright-core/lib/client/fileChooser.js +46 -0
  285. package/dist/node_modules/playwright-core/lib/client/fileUtils.js +34 -0
  286. package/dist/node_modules/playwright-core/lib/client/frame.js +409 -0
  287. package/dist/node_modules/playwright-core/lib/client/harRouter.js +99 -0
  288. package/dist/node_modules/playwright-core/lib/client/input.js +84 -0
  289. package/dist/node_modules/playwright-core/lib/client/jsHandle.js +109 -0
  290. package/dist/node_modules/playwright-core/lib/client/jsonPipe.js +39 -0
  291. package/dist/node_modules/playwright-core/lib/client/localUtils.js +60 -0
  292. package/dist/node_modules/playwright-core/lib/client/locator.js +369 -0
  293. package/dist/node_modules/playwright-core/lib/client/network.js +747 -0
  294. package/dist/node_modules/playwright-core/lib/client/page.js +741 -0
  295. package/dist/node_modules/playwright-core/lib/client/pageAgent.js +64 -0
  296. package/dist/node_modules/playwright-core/lib/client/platform.js +77 -0
  297. package/dist/node_modules/playwright-core/lib/client/playwright.js +71 -0
  298. package/dist/node_modules/playwright-core/lib/client/selectors.js +55 -0
  299. package/dist/node_modules/playwright-core/lib/client/stream.js +39 -0
  300. package/dist/node_modules/playwright-core/lib/client/timeoutSettings.js +79 -0
  301. package/dist/node_modules/playwright-core/lib/client/tracing.js +119 -0
  302. package/dist/node_modules/playwright-core/lib/client/types.js +28 -0
  303. package/dist/node_modules/playwright-core/lib/client/video.js +63 -0
  304. package/dist/node_modules/playwright-core/lib/client/waiter.js +142 -0
  305. package/dist/node_modules/playwright-core/lib/client/webError.js +39 -0
  306. package/dist/node_modules/playwright-core/lib/client/webSocket.js +93 -0
  307. package/dist/node_modules/playwright-core/lib/client/worker.js +85 -0
  308. package/dist/node_modules/playwright-core/lib/client/writableStream.js +39 -0
  309. package/dist/node_modules/playwright-core/lib/generated/bindingsControllerSource.js +28 -0
  310. package/dist/node_modules/playwright-core/lib/generated/clockSource.js +28 -0
  311. package/dist/node_modules/playwright-core/lib/generated/injectedScriptSource.js +28 -0
  312. package/dist/node_modules/playwright-core/lib/generated/pollingRecorderSource.js +28 -0
  313. package/dist/node_modules/playwright-core/lib/generated/storageScriptSource.js +28 -0
  314. package/dist/node_modules/playwright-core/lib/generated/utilityScriptSource.js +28 -0
  315. package/dist/node_modules/playwright-core/lib/generated/webSocketMockSource.js +336 -0
  316. package/dist/node_modules/playwright-core/lib/inProcessFactory.js +60 -0
  317. package/dist/node_modules/playwright-core/lib/inprocess.js +3 -0
  318. package/dist/node_modules/playwright-core/lib/mcpBundle.js +84 -0
  319. package/dist/node_modules/playwright-core/lib/mcpBundleImpl/index.js +147 -0
  320. package/dist/node_modules/playwright-core/lib/outofprocess.js +76 -0
  321. package/dist/node_modules/playwright-core/lib/protocol/serializers.js +197 -0
  322. package/dist/node_modules/playwright-core/lib/protocol/validator.js +3017 -0
  323. package/dist/node_modules/playwright-core/lib/protocol/validatorPrimitives.js +193 -0
  324. package/dist/node_modules/playwright-core/lib/remote/playwrightConnection.js +129 -0
  325. package/dist/node_modules/playwright-core/lib/remote/playwrightServer.js +334 -0
  326. package/dist/node_modules/playwright-core/lib/server/agent/actionRunner.js +341 -0
  327. package/dist/node_modules/playwright-core/lib/server/agent/actions.js +128 -0
  328. package/dist/node_modules/playwright-core/lib/server/agent/codegen.js +111 -0
  329. package/dist/node_modules/playwright-core/lib/server/agent/context.js +161 -0
  330. package/dist/node_modules/playwright-core/lib/server/agent/expectTools.js +156 -0
  331. package/dist/node_modules/playwright-core/lib/server/agent/pageAgent.js +204 -0
  332. package/dist/node_modules/playwright-core/lib/server/agent/performTools.js +262 -0
  333. package/dist/node_modules/playwright-core/lib/server/agent/tool.js +109 -0
  334. package/dist/node_modules/playwright-core/lib/server/android/android.js +465 -0
  335. package/dist/node_modules/playwright-core/lib/server/android/backendAdb.js +177 -0
  336. package/dist/node_modules/playwright-core/lib/server/artifact.js +127 -0
  337. package/dist/node_modules/playwright-core/lib/server/bidi/bidiBrowser.js +549 -0
  338. package/dist/node_modules/playwright-core/lib/server/bidi/bidiChromium.js +164 -0
  339. package/dist/node_modules/playwright-core/lib/server/bidi/bidiConnection.js +213 -0
  340. package/dist/node_modules/playwright-core/lib/server/bidi/bidiDeserializer.js +116 -0
  341. package/dist/node_modules/playwright-core/lib/server/bidi/bidiExecutionContext.js +267 -0
  342. package/dist/node_modules/playwright-core/lib/server/bidi/bidiFirefox.js +128 -0
  343. package/dist/node_modules/playwright-core/lib/server/bidi/bidiInput.js +146 -0
  344. package/dist/node_modules/playwright-core/lib/server/bidi/bidiNetworkManager.js +410 -0
  345. package/dist/node_modules/playwright-core/lib/server/bidi/bidiOverCdp.js +102 -0
  346. package/dist/node_modules/playwright-core/lib/server/bidi/bidiPage.js +598 -0
  347. package/dist/node_modules/playwright-core/lib/server/bidi/bidiPdf.js +106 -0
  348. package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  349. package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  350. package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  351. package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
  352. package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  353. package/dist/node_modules/playwright-core/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  354. package/dist/node_modules/playwright-core/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
  355. package/dist/node_modules/playwright-core/lib/server/browser.js +143 -0
  356. package/dist/node_modules/playwright-core/lib/server/browserContext.js +712 -0
  357. package/dist/node_modules/playwright-core/lib/server/browserType.js +332 -0
  358. package/dist/node_modules/playwright-core/lib/server/callLog.js +82 -0
  359. package/dist/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
  360. package/dist/node_modules/playwright-core/lib/server/chromium/chromium.js +403 -0
  361. package/dist/node_modules/playwright-core/lib/server/chromium/chromiumSwitches.js +104 -0
  362. package/dist/node_modules/playwright-core/lib/server/chromium/crBrowser.js +523 -0
  363. package/dist/node_modules/playwright-core/lib/server/chromium/crConnection.js +197 -0
  364. package/dist/node_modules/playwright-core/lib/server/chromium/crCoverage.js +235 -0
  365. package/dist/node_modules/playwright-core/lib/server/chromium/crDevTools.js +111 -0
  366. package/dist/node_modules/playwright-core/lib/server/chromium/crDragDrop.js +131 -0
  367. package/dist/node_modules/playwright-core/lib/server/chromium/crExecutionContext.js +146 -0
  368. package/dist/node_modules/playwright-core/lib/server/chromium/crInput.js +187 -0
  369. package/dist/node_modules/playwright-core/lib/server/chromium/crNetworkManager.js +707 -0
  370. package/dist/node_modules/playwright-core/lib/server/chromium/crPage.js +1004 -0
  371. package/dist/node_modules/playwright-core/lib/server/chromium/crPdf.js +121 -0
  372. package/dist/node_modules/playwright-core/lib/server/chromium/crProtocolHelper.js +145 -0
  373. package/dist/node_modules/playwright-core/lib/server/chromium/crServiceWorker.js +136 -0
  374. package/dist/node_modules/playwright-core/lib/server/chromium/defaultFontFamilies.js +162 -0
  375. package/dist/node_modules/playwright-core/lib/server/chromium/protocol.d.js +16 -0
  376. package/dist/node_modules/playwright-core/lib/server/clock.js +149 -0
  377. package/dist/node_modules/playwright-core/lib/server/codegen/csharp.js +327 -0
  378. package/dist/node_modules/playwright-core/lib/server/codegen/java.js +274 -0
  379. package/dist/node_modules/playwright-core/lib/server/codegen/javascript.js +247 -0
  380. package/dist/node_modules/playwright-core/lib/server/codegen/jsonl.js +52 -0
  381. package/dist/node_modules/playwright-core/lib/server/codegen/language.js +132 -0
  382. package/dist/node_modules/playwright-core/lib/server/codegen/languages.js +68 -0
  383. package/dist/node_modules/playwright-core/lib/server/codegen/python.js +279 -0
  384. package/dist/node_modules/playwright-core/lib/server/codegen/types.js +16 -0
  385. package/dist/node_modules/playwright-core/lib/server/console.js +61 -0
  386. package/dist/node_modules/playwright-core/lib/server/cookieStore.js +206 -0
  387. package/dist/node_modules/playwright-core/lib/server/debugController.js +191 -0
  388. package/dist/node_modules/playwright-core/lib/server/debugger.js +119 -0
  389. package/dist/node_modules/playwright-core/lib/server/deviceDescriptors.js +39 -0
  390. package/dist/node_modules/playwright-core/lib/server/deviceDescriptorsSource.json +1779 -0
  391. package/dist/node_modules/playwright-core/lib/server/devtoolsController.js +365 -0
  392. package/dist/node_modules/playwright-core/lib/server/dialog.js +116 -0
  393. package/dist/node_modules/playwright-core/lib/server/dispatchers/androidDispatcher.js +325 -0
  394. package/dist/node_modules/playwright-core/lib/server/dispatchers/artifactDispatcher.js +118 -0
  395. package/dist/node_modules/playwright-core/lib/server/dispatchers/browserContextDispatcher.js +383 -0
  396. package/dist/node_modules/playwright-core/lib/server/dispatchers/browserDispatcher.js +118 -0
  397. package/dist/node_modules/playwright-core/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
  398. package/dist/node_modules/playwright-core/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  399. package/dist/node_modules/playwright-core/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  400. package/dist/node_modules/playwright-core/lib/server/dispatchers/dialogDispatcher.js +47 -0
  401. package/dist/node_modules/playwright-core/lib/server/dispatchers/dispatcher.js +364 -0
  402. package/dist/node_modules/playwright-core/lib/server/dispatchers/electronDispatcher.js +90 -0
  403. package/dist/node_modules/playwright-core/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  404. package/dist/node_modules/playwright-core/lib/server/dispatchers/frameDispatcher.js +227 -0
  405. package/dist/node_modules/playwright-core/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  406. package/dist/node_modules/playwright-core/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  407. package/dist/node_modules/playwright-core/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  408. package/dist/node_modules/playwright-core/lib/server/dispatchers/networkDispatchers.js +211 -0
  409. package/dist/node_modules/playwright-core/lib/server/dispatchers/pageAgentDispatcher.js +106 -0
  410. package/dist/node_modules/playwright-core/lib/server/dispatchers/pageDispatcher.js +410 -0
  411. package/dist/node_modules/playwright-core/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  412. package/dist/node_modules/playwright-core/lib/server/dispatchers/streamDispatcher.js +67 -0
  413. package/dist/node_modules/playwright-core/lib/server/dispatchers/tracingDispatcher.js +68 -0
  414. package/dist/node_modules/playwright-core/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
  415. package/dist/node_modules/playwright-core/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  416. package/dist/node_modules/playwright-core/lib/server/dom.js +815 -0
  417. package/dist/node_modules/playwright-core/lib/server/download.js +70 -0
  418. package/dist/node_modules/playwright-core/lib/server/electron/electron.js +272 -0
  419. package/dist/node_modules/playwright-core/lib/server/electron/loader.js +30 -0
  420. package/dist/node_modules/playwright-core/lib/server/errors.js +69 -0
  421. package/dist/node_modules/playwright-core/lib/server/fetch.js +621 -0
  422. package/dist/node_modules/playwright-core/lib/server/fileChooser.js +43 -0
  423. package/dist/node_modules/playwright-core/lib/server/fileUploadUtils.js +84 -0
  424. package/dist/node_modules/playwright-core/lib/server/firefox/ffBrowser.js +415 -0
  425. package/dist/node_modules/playwright-core/lib/server/firefox/ffConnection.js +142 -0
  426. package/dist/node_modules/playwright-core/lib/server/firefox/ffExecutionContext.js +150 -0
  427. package/dist/node_modules/playwright-core/lib/server/firefox/ffInput.js +159 -0
  428. package/dist/node_modules/playwright-core/lib/server/firefox/ffNetworkManager.js +256 -0
  429. package/dist/node_modules/playwright-core/lib/server/firefox/ffPage.js +495 -0
  430. package/dist/node_modules/playwright-core/lib/server/firefox/firefox.js +114 -0
  431. package/dist/node_modules/playwright-core/lib/server/firefox/protocol.d.js +16 -0
  432. package/dist/node_modules/playwright-core/lib/server/formData.js +147 -0
  433. package/dist/node_modules/playwright-core/lib/server/frameSelectors.js +160 -0
  434. package/dist/node_modules/playwright-core/lib/server/frames.js +1476 -0
  435. package/dist/node_modules/playwright-core/lib/server/har/harRecorder.js +147 -0
  436. package/dist/node_modules/playwright-core/lib/server/har/harTracer.js +607 -0
  437. package/dist/node_modules/playwright-core/lib/server/harBackend.js +157 -0
  438. package/dist/node_modules/playwright-core/lib/server/helper.js +96 -0
  439. package/dist/node_modules/playwright-core/lib/server/index.js +56 -0
  440. package/dist/node_modules/playwright-core/lib/server/input.js +277 -0
  441. package/dist/node_modules/playwright-core/lib/server/instrumentation.js +72 -0
  442. package/dist/node_modules/playwright-core/lib/server/javascript.js +291 -0
  443. package/dist/node_modules/playwright-core/lib/server/launchApp.js +128 -0
  444. package/dist/node_modules/playwright-core/lib/server/localUtils.js +214 -0
  445. package/dist/node_modules/playwright-core/lib/server/macEditingCommands.js +143 -0
  446. package/dist/node_modules/playwright-core/lib/server/network.js +667 -0
  447. package/dist/node_modules/playwright-core/lib/server/page.js +839 -0
  448. package/dist/node_modules/playwright-core/lib/server/pipeTransport.js +89 -0
  449. package/dist/node_modules/playwright-core/lib/server/playwright.js +69 -0
  450. package/dist/node_modules/playwright-core/lib/server/progress.js +136 -0
  451. package/dist/node_modules/playwright-core/lib/server/protocolError.js +52 -0
  452. package/dist/node_modules/playwright-core/lib/server/recorder/chat.js +161 -0
  453. package/dist/node_modules/playwright-core/lib/server/recorder/recorderApp.js +366 -0
  454. package/dist/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +138 -0
  455. package/dist/node_modules/playwright-core/lib/server/recorder/recorderSignalProcessor.js +83 -0
  456. package/dist/node_modules/playwright-core/lib/server/recorder/recorderUtils.js +157 -0
  457. package/dist/node_modules/playwright-core/lib/server/recorder/throttledFile.js +57 -0
  458. package/dist/node_modules/playwright-core/lib/server/recorder.js +527 -0
  459. package/dist/node_modules/playwright-core/lib/server/registry/browserFetcher.js +177 -0
  460. package/dist/node_modules/playwright-core/lib/server/registry/dependencies.js +371 -0
  461. package/dist/node_modules/playwright-core/lib/server/registry/index.js +1391 -0
  462. package/dist/node_modules/playwright-core/lib/server/registry/nativeDeps.js +1281 -0
  463. package/dist/node_modules/playwright-core/lib/server/registry/oopDownloadBrowserMain.js +127 -0
  464. package/dist/node_modules/playwright-core/lib/server/screencast.js +204 -0
  465. package/dist/node_modules/playwright-core/lib/server/screenshotter.js +333 -0
  466. package/dist/node_modules/playwright-core/lib/server/selectors.js +112 -0
  467. package/dist/node_modules/playwright-core/lib/server/socksClientCertificatesInterceptor.js +383 -0
  468. package/dist/node_modules/playwright-core/lib/server/socksInterceptor.js +95 -0
  469. package/dist/node_modules/playwright-core/lib/server/trace/recorder/snapshotter.js +147 -0
  470. package/dist/node_modules/playwright-core/lib/server/trace/recorder/snapshotterInjected.js +561 -0
  471. package/dist/node_modules/playwright-core/lib/server/trace/recorder/tracing.js +604 -0
  472. package/dist/node_modules/playwright-core/lib/server/trace/viewer/traceParser.js +72 -0
  473. package/dist/node_modules/playwright-core/lib/server/trace/viewer/traceViewer.js +245 -0
  474. package/dist/node_modules/playwright-core/lib/server/transport.js +181 -0
  475. package/dist/node_modules/playwright-core/lib/server/types.js +28 -0
  476. package/dist/node_modules/playwright-core/lib/server/usKeyboardLayout.js +145 -0
  477. package/dist/node_modules/playwright-core/lib/server/utils/ascii.js +44 -0
  478. package/dist/node_modules/playwright-core/lib/server/utils/comparators.js +139 -0
  479. package/dist/node_modules/playwright-core/lib/server/utils/crypto.js +216 -0
  480. package/dist/node_modules/playwright-core/lib/server/utils/debug.js +42 -0
  481. package/dist/node_modules/playwright-core/lib/server/utils/debugLogger.js +122 -0
  482. package/dist/node_modules/playwright-core/lib/server/utils/env.js +73 -0
  483. package/dist/node_modules/playwright-core/lib/server/utils/eventsHelper.js +39 -0
  484. package/dist/node_modules/playwright-core/lib/server/utils/expectUtils.js +123 -0
  485. package/dist/node_modules/playwright-core/lib/server/utils/fileUtils.js +191 -0
  486. package/dist/node_modules/playwright-core/lib/server/utils/happyEyeballs.js +207 -0
  487. package/dist/node_modules/playwright-core/lib/server/utils/hostPlatform.js +138 -0
  488. package/dist/node_modules/playwright-core/lib/server/utils/httpServer.js +205 -0
  489. package/dist/node_modules/playwright-core/lib/server/utils/imageUtils.js +141 -0
  490. package/dist/node_modules/playwright-core/lib/server/utils/image_tools/colorUtils.js +89 -0
  491. package/dist/node_modules/playwright-core/lib/server/utils/image_tools/compare.js +109 -0
  492. package/dist/node_modules/playwright-core/lib/server/utils/image_tools/imageChannel.js +78 -0
  493. package/dist/node_modules/playwright-core/lib/server/utils/image_tools/stats.js +102 -0
  494. package/dist/node_modules/playwright-core/lib/server/utils/linuxUtils.js +71 -0
  495. package/dist/node_modules/playwright-core/lib/server/utils/network.js +242 -0
  496. package/dist/node_modules/playwright-core/lib/server/utils/nodePlatform.js +154 -0
  497. package/dist/node_modules/playwright-core/lib/server/utils/pipeTransport.js +84 -0
  498. package/dist/node_modules/playwright-core/lib/server/utils/processLauncher.js +242 -0
  499. package/dist/node_modules/playwright-core/lib/server/utils/profiler.js +65 -0
  500. package/dist/node_modules/playwright-core/lib/server/utils/socksProxy.js +511 -0
  501. package/dist/node_modules/playwright-core/lib/server/utils/spawnAsync.js +41 -0
  502. package/dist/node_modules/playwright-core/lib/server/utils/task.js +51 -0
  503. package/dist/node_modules/playwright-core/lib/server/utils/userAgent.js +98 -0
  504. package/dist/node_modules/playwright-core/lib/server/utils/wsServer.js +121 -0
  505. package/dist/node_modules/playwright-core/lib/server/utils/zipFile.js +74 -0
  506. package/dist/node_modules/playwright-core/lib/server/utils/zones.js +57 -0
  507. package/dist/node_modules/playwright-core/lib/server/videoRecorder.js +133 -0
  508. package/dist/node_modules/playwright-core/lib/server/webkit/protocol.d.js +16 -0
  509. package/dist/node_modules/playwright-core/lib/server/webkit/webkit.js +108 -0
  510. package/dist/node_modules/playwright-core/lib/server/webkit/wkBrowser.js +331 -0
  511. package/dist/node_modules/playwright-core/lib/server/webkit/wkConnection.js +144 -0
  512. package/dist/node_modules/playwright-core/lib/server/webkit/wkExecutionContext.js +154 -0
  513. package/dist/node_modules/playwright-core/lib/server/webkit/wkInput.js +181 -0
  514. package/dist/node_modules/playwright-core/lib/server/webkit/wkInterceptableRequest.js +197 -0
  515. package/dist/node_modules/playwright-core/lib/server/webkit/wkPage.js +1163 -0
  516. package/dist/node_modules/playwright-core/lib/server/webkit/wkProvisionalPage.js +83 -0
  517. package/dist/node_modules/playwright-core/lib/server/webkit/wkWorkers.js +106 -0
  518. package/dist/node_modules/playwright-core/lib/third_party/pixelmatch.js +255 -0
  519. package/dist/node_modules/playwright-core/lib/utils/isomorphic/ariaSnapshot.js +455 -0
  520. package/dist/node_modules/playwright-core/lib/utils/isomorphic/assert.js +31 -0
  521. package/dist/node_modules/playwright-core/lib/utils/isomorphic/colors.js +72 -0
  522. package/dist/node_modules/playwright-core/lib/utils/isomorphic/cssParser.js +245 -0
  523. package/dist/node_modules/playwright-core/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  524. package/dist/node_modules/playwright-core/lib/utils/isomorphic/headers.js +53 -0
  525. package/dist/node_modules/playwright-core/lib/utils/isomorphic/locatorGenerators.js +689 -0
  526. package/dist/node_modules/playwright-core/lib/utils/isomorphic/locatorParser.js +176 -0
  527. package/dist/node_modules/playwright-core/lib/utils/isomorphic/locatorUtils.js +81 -0
  528. package/dist/node_modules/playwright-core/lib/utils/isomorphic/lruCache.js +51 -0
  529. package/dist/node_modules/playwright-core/lib/utils/isomorphic/manualPromise.js +114 -0
  530. package/dist/node_modules/playwright-core/lib/utils/isomorphic/mimeType.js +459 -0
  531. package/dist/node_modules/playwright-core/lib/utils/isomorphic/multimap.js +80 -0
  532. package/dist/node_modules/playwright-core/lib/utils/isomorphic/protocolFormatter.js +81 -0
  533. package/dist/node_modules/playwright-core/lib/utils/isomorphic/protocolMetainfo.js +338 -0
  534. package/dist/node_modules/playwright-core/lib/utils/isomorphic/rtti.js +43 -0
  535. package/dist/node_modules/playwright-core/lib/utils/isomorphic/selectorParser.js +386 -0
  536. package/dist/node_modules/playwright-core/lib/utils/isomorphic/semaphore.js +54 -0
  537. package/dist/node_modules/playwright-core/lib/utils/isomorphic/stackTrace.js +158 -0
  538. package/dist/node_modules/playwright-core/lib/utils/isomorphic/stringUtils.js +204 -0
  539. package/dist/node_modules/playwright-core/lib/utils/isomorphic/time.js +49 -0
  540. package/dist/node_modules/playwright-core/lib/utils/isomorphic/timeoutRunner.js +66 -0
  541. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/entries.js +16 -0
  542. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotRenderer.js +502 -0
  543. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
  544. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
  545. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/traceLoader.js +131 -0
  546. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModel.js +365 -0
  547. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModernizer.js +400 -0
  548. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
  549. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
  550. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
  551. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
  552. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
  553. package/dist/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
  554. package/dist/node_modules/playwright-core/lib/utils/isomorphic/traceUtils.js +58 -0
  555. package/dist/node_modules/playwright-core/lib/utils/isomorphic/types.js +16 -0
  556. package/dist/node_modules/playwright-core/lib/utils/isomorphic/urlMatch.js +243 -0
  557. package/dist/node_modules/playwright-core/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
  558. package/dist/node_modules/playwright-core/lib/utils/isomorphic/yaml.js +84 -0
  559. package/dist/node_modules/playwright-core/lib/utils.js +111 -0
  560. package/dist/node_modules/playwright-core/lib/utilsBundle.js +112 -0
  561. package/dist/node_modules/playwright-core/lib/utilsBundleImpl/index.js +220 -0
  562. package/dist/node_modules/playwright-core/lib/utilsBundleImpl/xdg-open +1066 -0
  563. package/dist/node_modules/playwright-core/lib/vite/devtools/assets/index-BlUdtOgD.js +50 -0
  564. package/dist/node_modules/playwright-core/lib/vite/devtools/assets/index-CcsbAkl3.css +1 -0
  565. package/dist/node_modules/playwright-core/lib/vite/devtools/index.html +28 -0
  566. package/dist/node_modules/playwright-core/lib/vite/htmlReport/index.html +84 -0
  567. package/dist/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
  568. package/dist/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DadYNm1I.js +32 -0
  569. package/dist/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  570. package/dist/node_modules/playwright-core/lib/vite/recorder/assets/index-BSjZa4pk.css +1 -0
  571. package/dist/node_modules/playwright-core/lib/vite/recorder/assets/index-BhTWtUlo.js +193 -0
  572. package/dist/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
  573. package/dist/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  574. package/dist/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-DgOX2t83.js +32 -0
  575. package/dist/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Dlnhdtv5.js +266 -0
  576. package/dist/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  577. package/dist/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
  578. package/dist/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  579. package/dist/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.Cqh7ej8a.css +1 -0
  580. package/dist/node_modules/playwright-core/lib/vite/traceViewer/index.BVu7tZDe.css +1 -0
  581. package/dist/node_modules/playwright-core/lib/vite/traceViewer/index.DQVmDDrI.js +2 -0
  582. package/dist/node_modules/playwright-core/lib/vite/traceViewer/index.html +43 -0
  583. package/dist/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
  584. package/dist/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  585. package/dist/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +21 -0
  586. package/dist/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +5 -0
  587. package/dist/node_modules/playwright-core/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  588. package/dist/node_modules/playwright-core/lib/vite/traceViewer/uiMode.D_PBkkZn.js +5 -0
  589. package/dist/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +17 -0
  590. package/dist/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  591. package/dist/node_modules/playwright-core/lib/zipBundle.js +34 -0
  592. package/dist/node_modules/playwright-core/lib/zipBundleImpl.js +5 -0
  593. package/dist/node_modules/playwright-core/package.json +43 -0
  594. package/dist/node_modules/playwright-core/types/protocol.d.ts +24365 -0
  595. package/dist/node_modules/playwright-core/types/structs.d.ts +45 -0
  596. package/dist/node_modules/playwright-core/types/types.d.ts +23332 -0
  597. package/dist/playwright-cli.js +7 -1
  598. package/dist/stably-plugin-cli/skills/ai-to-programmatic-migration/SKILL.md +95 -0
  599. package/dist/stably-plugin-cli/skills/browser-interaction-guide/SKILL.md +67 -1
  600. package/dist/stably-plugin-cli/skills/bulk-test-handling/SKILL.md +4 -0
  601. package/dist/stably-plugin-cli/skills/debugging-test-failures/SKILL.md +73 -8
  602. package/dist/stably-plugin-cli/skills/playwright-cli/SKILL.md +32 -0
  603. package/dist/stably-plugin-cli/skills/stably-cli/SKILL.md +34 -16
  604. package/package.json +2 -2
@@ -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("npx", ["playwright", "test", "--config=" + wrapperConfigPath, ...testArgs], {
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) | Fix code, re-run with `playwright-cli run-test` |
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. **Find failed tests**: Use Read/Glob to identify failing test files
76
- 2. **Reproduce + diagnose**:
77
- - Fix mode: Delegate to `debug-worker`
78
- - Single/build/chat modes: Run `playwright-cli run-test` directly
79
- 3. **Implement fix**: Make necessary code changes
80
- 4. **Verify fix**: Use `playwright-cli run-test` for final verification
81
- 5. **Group related failures**: Only group tests that share the same root cause
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
- - Reproduce first: Always try to reproduce failures before diagnosing
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
- - run: npx stably install --with-deps
216
+ - name: Install browsers
217
+ run: npx stably install --with-deps
212
218
  - name: Run tests
213
219
  id: test
214
- run: npx stably --env staging test || echo "TEST_FAILED=true" >> "$GITHUB_ENV"
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: env.TEST_FAILED == 'true'
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: Re-run tests after fix
225
- if: env.TEST_FAILED == 'true'
226
- run: npx stably --env staging test
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
- STABLY_API_KEY: ${{ secrets.STABLY_API_KEY }}
229
- STABLY_PROJECT_ID: ${{ secrets.STABLY_PROJECT_ID }}
230
- - name: Commit fixes
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
- git config --local user.email "action@github.com"
234
- git config --local user.name "GitHub Action"
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.1",
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",