retestkit 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/.claude/commands/openspec/apply.md +23 -0
  2. package/.claude/commands/openspec/archive.md +27 -0
  3. package/.claude/commands/openspec/proposal.md +28 -0
  4. package/.gemini/commands/openspec/apply.toml +21 -0
  5. package/.gemini/commands/openspec/archive.toml +25 -0
  6. package/.gemini/commands/openspec/proposal.toml +26 -0
  7. package/.github/prompts/openspec-apply.prompt.md +22 -0
  8. package/.github/prompts/openspec-archive.prompt.md +26 -0
  9. package/.github/prompts/openspec-proposal.prompt.md +27 -0
  10. package/.github/workflows/release.yml +33 -0
  11. package/.kilocode/workflows/openspec-apply.md +17 -0
  12. package/.kilocode/workflows/openspec-archive.md +21 -0
  13. package/.kilocode/workflows/openspec-proposal.md +22 -0
  14. package/.mcp.json +23 -0
  15. package/.opencode/command/openspec-apply.md +25 -0
  16. package/.opencode/command/openspec-archive.md +28 -0
  17. package/.opencode/command/openspec-proposal.md +30 -0
  18. package/.roo/commands/openspec-apply.md +20 -0
  19. package/.roo/commands/openspec-archive.md +24 -0
  20. package/.roo/commands/openspec-proposal.md +25 -0
  21. package/.vscode/mcp.json +23 -0
  22. package/AGENTS.md +18 -0
  23. package/CLAUDE.md +18 -0
  24. package/LICENSE +65 -0
  25. package/README.md +303 -0
  26. package/dist/config.d.ts +4 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +27 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/elicitation/index.d.ts +17 -0
  31. package/dist/elicitation/index.d.ts.map +1 -0
  32. package/dist/elicitation/index.js +118 -0
  33. package/dist/elicitation/index.js.map +1 -0
  34. package/dist/elicitation/types.d.ts +35 -0
  35. package/dist/elicitation/types.d.ts.map +1 -0
  36. package/dist/elicitation/types.js +39 -0
  37. package/dist/elicitation/types.js.map +1 -0
  38. package/dist/index.d.ts +3 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +76 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/lifecycle/index.d.ts +31 -0
  43. package/dist/lifecycle/index.d.ts.map +1 -0
  44. package/dist/lifecycle/index.js +61 -0
  45. package/dist/lifecycle/index.js.map +1 -0
  46. package/dist/logger.d.ts +21 -0
  47. package/dist/logger.d.ts.map +1 -0
  48. package/dist/logger.js +182 -0
  49. package/dist/logger.js.map +1 -0
  50. package/dist/playwright-client/index.d.ts +29 -0
  51. package/dist/playwright-client/index.d.ts.map +1 -0
  52. package/dist/playwright-client/index.js +288 -0
  53. package/dist/playwright-client/index.js.map +1 -0
  54. package/dist/playwright-client/types.d.ts +44 -0
  55. package/dist/playwright-client/types.d.ts.map +1 -0
  56. package/dist/playwright-client/types.js +49 -0
  57. package/dist/playwright-client/types.js.map +1 -0
  58. package/dist/progress/index.d.ts +39 -0
  59. package/dist/progress/index.d.ts.map +1 -0
  60. package/dist/progress/index.js +106 -0
  61. package/dist/progress/index.js.map +1 -0
  62. package/dist/progress/types.d.ts +24 -0
  63. package/dist/progress/types.d.ts.map +1 -0
  64. package/dist/progress/types.js +2 -0
  65. package/dist/progress/types.js.map +1 -0
  66. package/dist/prompts/index.d.ts +19 -0
  67. package/dist/prompts/index.d.ts.map +1 -0
  68. package/dist/prompts/index.js +207 -0
  69. package/dist/prompts/index.js.map +1 -0
  70. package/dist/prompts/loader.d.ts +20 -0
  71. package/dist/prompts/loader.d.ts.map +1 -0
  72. package/dist/prompts/loader.js +47 -0
  73. package/dist/prompts/loader.js.map +1 -0
  74. package/dist/resources/index.d.ts +27 -0
  75. package/dist/resources/index.d.ts.map +1 -0
  76. package/dist/resources/index.js +186 -0
  77. package/dist/resources/index.js.map +1 -0
  78. package/dist/resources/subscriptions.d.ts +10 -0
  79. package/dist/resources/subscriptions.d.ts.map +1 -0
  80. package/dist/resources/subscriptions.js +23 -0
  81. package/dist/resources/subscriptions.js.map +1 -0
  82. package/dist/sampling/index.d.ts +11 -0
  83. package/dist/sampling/index.d.ts.map +1 -0
  84. package/dist/sampling/index.js +201 -0
  85. package/dist/sampling/index.js.map +1 -0
  86. package/dist/sampling/prompts.d.ts +56 -0
  87. package/dist/sampling/prompts.d.ts.map +1 -0
  88. package/dist/sampling/prompts.js +124 -0
  89. package/dist/sampling/prompts.js.map +1 -0
  90. package/dist/sampling/types.d.ts +57 -0
  91. package/dist/sampling/types.d.ts.map +1 -0
  92. package/dist/sampling/types.js +2 -0
  93. package/dist/sampling/types.js.map +1 -0
  94. package/dist/schemas/config.d.ts +40 -0
  95. package/dist/schemas/config.d.ts.map +1 -0
  96. package/dist/schemas/config.js +30 -0
  97. package/dist/schemas/config.js.map +1 -0
  98. package/dist/security/index.d.ts +38 -0
  99. package/dist/security/index.d.ts.map +1 -0
  100. package/dist/security/index.js +281 -0
  101. package/dist/security/index.js.map +1 -0
  102. package/dist/server.d.ts +9 -0
  103. package/dist/server.d.ts.map +1 -0
  104. package/dist/server.js +142 -0
  105. package/dist/server.js.map +1 -0
  106. package/dist/test-utils/index.d.ts +6 -0
  107. package/dist/test-utils/index.d.ts.map +1 -0
  108. package/dist/test-utils/index.js +6 -0
  109. package/dist/test-utils/index.js.map +1 -0
  110. package/dist/test-utils/mock-context.d.ts +64 -0
  111. package/dist/test-utils/mock-context.d.ts.map +1 -0
  112. package/dist/test-utils/mock-context.js +347 -0
  113. package/dist/test-utils/mock-context.js.map +1 -0
  114. package/dist/test-utils/mock-playwright-client.d.ts +62 -0
  115. package/dist/test-utils/mock-playwright-client.d.ts.map +1 -0
  116. package/dist/test-utils/mock-playwright-client.js +315 -0
  117. package/dist/test-utils/mock-playwright-client.js.map +1 -0
  118. package/dist/tools/index.d.ts +4 -0
  119. package/dist/tools/index.d.ts.map +1 -0
  120. package/dist/tools/index.js +8 -0
  121. package/dist/tools/index.js.map +1 -0
  122. package/dist/tools/webtest/crawl.d.ts +46 -0
  123. package/dist/tools/webtest/crawl.d.ts.map +1 -0
  124. package/dist/tools/webtest/crawl.js +678 -0
  125. package/dist/tools/webtest/crawl.js.map +1 -0
  126. package/dist/tools/webtest/discover-features.d.ts +30 -0
  127. package/dist/tools/webtest/discover-features.d.ts.map +1 -0
  128. package/dist/tools/webtest/discover-features.js +343 -0
  129. package/dist/tools/webtest/discover-features.js.map +1 -0
  130. package/dist/tools/webtest/discover-flows.d.ts +29 -0
  131. package/dist/tools/webtest/discover-flows.d.ts.map +1 -0
  132. package/dist/tools/webtest/discover-flows.js +341 -0
  133. package/dist/tools/webtest/discover-flows.js.map +1 -0
  134. package/dist/tools/webtest/generate-tests.d.ts +54 -0
  135. package/dist/tools/webtest/generate-tests.d.ts.map +1 -0
  136. package/dist/tools/webtest/generate-tests.js +364 -0
  137. package/dist/tools/webtest/generate-tests.js.map +1 -0
  138. package/dist/tools/webtest/index.d.ts +8 -0
  139. package/dist/tools/webtest/index.d.ts.map +1 -0
  140. package/dist/tools/webtest/index.js +8 -0
  141. package/dist/tools/webtest/index.js.map +1 -0
  142. package/dist/tools/webtest/run-test-case.d.ts +28 -0
  143. package/dist/tools/webtest/run-test-case.d.ts.map +1 -0
  144. package/dist/tools/webtest/run-test-case.js +420 -0
  145. package/dist/tools/webtest/run-test-case.js.map +1 -0
  146. package/dist/tools/webtest/schemas.d.ts +175 -0
  147. package/dist/tools/webtest/schemas.d.ts.map +1 -0
  148. package/dist/tools/webtest/schemas.js +156 -0
  149. package/dist/tools/webtest/schemas.js.map +1 -0
  150. package/dist/tools/webtest/start-analysis.d.ts +16 -0
  151. package/dist/tools/webtest/start-analysis.d.ts.map +1 -0
  152. package/dist/tools/webtest/start-analysis.js +137 -0
  153. package/dist/tools/webtest/start-analysis.js.map +1 -0
  154. package/dist/transports/http.d.ts +8 -0
  155. package/dist/transports/http.d.ts.map +1 -0
  156. package/dist/transports/http.js +9 -0
  157. package/dist/transports/http.js.map +1 -0
  158. package/dist/transports/index.d.ts +14 -0
  159. package/dist/transports/index.d.ts.map +1 -0
  160. package/dist/transports/index.js +20 -0
  161. package/dist/transports/index.js.map +1 -0
  162. package/dist/transports/stdio.d.ts +4 -0
  163. package/dist/transports/stdio.d.ts.map +1 -0
  164. package/dist/transports/stdio.js +6 -0
  165. package/dist/transports/stdio.js.map +1 -0
  166. package/dist/types/capabilities.d.ts +18 -0
  167. package/dist/types/capabilities.d.ts.map +1 -0
  168. package/dist/types/capabilities.js +35 -0
  169. package/dist/types/capabilities.js.map +1 -0
  170. package/dist/types/context.d.ts +20 -0
  171. package/dist/types/context.d.ts.map +1 -0
  172. package/dist/types/context.js +2 -0
  173. package/dist/types/context.js.map +1 -0
  174. package/dist/types/tool.d.ts +10 -0
  175. package/dist/types/tool.d.ts.map +1 -0
  176. package/dist/types/tool.js +2 -0
  177. package/dist/types/tool.js.map +1 -0
  178. package/dist/workspace/index.d.ts +99 -0
  179. package/dist/workspace/index.d.ts.map +1 -0
  180. package/dist/workspace/index.js +648 -0
  181. package/dist/workspace/index.js.map +1 -0
  182. package/dist/workspace/markdown.d.ts +50 -0
  183. package/dist/workspace/markdown.d.ts.map +1 -0
  184. package/dist/workspace/markdown.js +210 -0
  185. package/dist/workspace/markdown.js.map +1 -0
  186. package/dist/workspace/types.d.ts +173 -0
  187. package/dist/workspace/types.d.ts.map +1 -0
  188. package/dist/workspace/types.js +2 -0
  189. package/dist/workspace/types.js.map +1 -0
  190. package/openspec/AGENTS.md +456 -0
  191. package/openspec/changes/archive/2025-12-18-add-hybrid-artifact-paths/proposal.md +33 -0
  192. package/openspec/changes/archive/2025-12-18-add-hybrid-artifact-paths/specs/webtest-resources/spec.md +27 -0
  193. package/openspec/changes/archive/2025-12-18-add-hybrid-artifact-paths/specs/webtest-tools/spec.md +304 -0
  194. package/openspec/changes/archive/2025-12-18-add-hybrid-artifact-paths/tasks.md +43 -0
  195. package/openspec/changes/archive/2025-12-18-add-mcp-server-foundation/design.md +209 -0
  196. package/openspec/changes/archive/2025-12-18-add-mcp-server-foundation/proposal.md +41 -0
  197. package/openspec/changes/archive/2025-12-18-add-mcp-server-foundation/specs/mcp-server-core/spec.md +183 -0
  198. package/openspec/changes/archive/2025-12-18-add-mcp-server-foundation/tasks.md +112 -0
  199. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/design.md +333 -0
  200. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/proposal.md +66 -0
  201. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/specs/mcp-server-core/spec.md +129 -0
  202. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/specs/webtest-lifecycle/spec.md +138 -0
  203. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/specs/webtest-logging/spec.md +211 -0
  204. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/specs/webtest-prompts/spec.md +157 -0
  205. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/specs/webtest-resources/spec.md +213 -0
  206. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/specs/webtest-sampling/spec.md +257 -0
  207. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/specs/webtest-tools/spec.md +501 -0
  208. package/openspec/changes/archive/2025-12-18-add-webtest-orchestrator/tasks.md +264 -0
  209. package/openspec/changes/archive/2025-12-18-allow-analysis-of-incomplete-crawls/proposal.md +24 -0
  210. package/openspec/changes/archive/2025-12-18-allow-analysis-of-incomplete-crawls/specs/webtest-tools/spec.md +80 -0
  211. package/openspec/changes/archive/2025-12-18-allow-analysis-of-incomplete-crawls/tasks.md +8 -0
  212. package/openspec/changes/archive/2025-12-18-fix-crawl-loop-stability/design.md +90 -0
  213. package/openspec/changes/archive/2025-12-18-fix-crawl-loop-stability/proposal.md +28 -0
  214. package/openspec/changes/archive/2025-12-18-fix-crawl-loop-stability/specs/webtest-sampling/spec.md +90 -0
  215. package/openspec/changes/archive/2025-12-18-fix-crawl-loop-stability/tasks.md +33 -0
  216. package/openspec/changes/archive/2025-12-18-use-markdown-artifacts/design.md +558 -0
  217. package/openspec/changes/archive/2025-12-18-use-markdown-artifacts/proposal.md +119 -0
  218. package/openspec/changes/archive/2025-12-18-use-markdown-artifacts/specs/webtest-resources/spec.md +109 -0
  219. package/openspec/changes/archive/2025-12-18-use-markdown-artifacts/specs/webtest-tools/spec.md +121 -0
  220. package/openspec/changes/archive/2025-12-18-use-markdown-artifacts/tasks.md +133 -0
  221. package/openspec/changes/extract-prompts-to-markdown/design.md +86 -0
  222. package/openspec/changes/extract-prompts-to-markdown/proposal.md +50 -0
  223. package/openspec/changes/extract-prompts-to-markdown/specs/webtest-prompts/spec.md +74 -0
  224. package/openspec/changes/extract-prompts-to-markdown/tasks.md +40 -0
  225. package/openspec/changes/refactor-webtest-naming/design.md +95 -0
  226. package/openspec/changes/refactor-webtest-naming/proposal.md +66 -0
  227. package/openspec/changes/refactor-webtest-naming/specs/webtest-prompts/spec.md +79 -0
  228. package/openspec/changes/refactor-webtest-naming/specs/webtest-resources/spec.md +80 -0
  229. package/openspec/changes/refactor-webtest-naming/specs/webtest-sampling/spec.md +122 -0
  230. package/openspec/changes/refactor-webtest-naming/specs/webtest-tools/spec.md +113 -0
  231. package/openspec/changes/refactor-webtest-naming/tasks.md +119 -0
  232. package/openspec/changes/rename-package-to-retest/proposal.md +52 -0
  233. package/openspec/changes/rename-package-to-retest/specs/mcp-server-core/spec.md +53 -0
  234. package/openspec/changes/rename-package-to-retest/specs/retest-lifecycle/spec.md +68 -0
  235. package/openspec/changes/rename-package-to-retest/specs/retest-logging/spec.md +35 -0
  236. package/openspec/changes/rename-package-to-retest/specs/retest-prompts/spec.md +159 -0
  237. package/openspec/changes/rename-package-to-retest/specs/retest-resources/spec.md +251 -0
  238. package/openspec/changes/rename-package-to-retest/specs/retest-sampling/spec.md +99 -0
  239. package/openspec/changes/rename-package-to-retest/specs/retest-tools/spec.md +295 -0
  240. package/openspec/changes/rename-package-to-retest/tasks.md +71 -0
  241. package/openspec/project.md +31 -0
  242. package/openspec/specs/mcp-server-core/spec.md +178 -0
  243. package/openspec/specs/webtest-lifecycle/spec.md +136 -0
  244. package/openspec/specs/webtest-logging/spec.md +209 -0
  245. package/openspec/specs/webtest-prompts/spec.md +155 -0
  246. package/openspec/specs/webtest-resources/spec.md +248 -0
  247. package/openspec/specs/webtest-sampling/spec.md +344 -0
  248. package/openspec/specs/webtest-tools/spec.md +282 -0
  249. package/package.json +54 -0
  250. package/release.config.js +9 -0
  251. package/src/config.test.ts +96 -0
  252. package/src/config.ts +32 -0
  253. package/src/elicitation/index.test.ts +399 -0
  254. package/src/elicitation/index.ts +171 -0
  255. package/src/elicitation/types.ts +68 -0
  256. package/src/index.ts +83 -0
  257. package/src/lifecycle/index.test.ts +260 -0
  258. package/src/lifecycle/index.ts +101 -0
  259. package/src/logger.redaction.test.ts +322 -0
  260. package/src/logger.test.ts +123 -0
  261. package/src/logger.ts +229 -0
  262. package/src/playwright-client/index.ts +392 -0
  263. package/src/playwright-client/types.ts +99 -0
  264. package/src/progress/index.test.ts +327 -0
  265. package/src/progress/index.ts +170 -0
  266. package/src/progress/types.ts +25 -0
  267. package/src/prompts/index.test.ts +451 -0
  268. package/src/prompts/index.ts +246 -0
  269. package/src/prompts/loader.test.ts +100 -0
  270. package/src/prompts/loader.ts +59 -0
  271. package/src/prompts/templates/mcp/webtest-crawl.md +7 -0
  272. package/src/prompts/templates/mcp/webtest-discover-flows.md +11 -0
  273. package/src/prompts/templates/mcp/webtest-discover.md +12 -0
  274. package/src/prompts/templates/mcp/webtest-full-workflow.md +12 -0
  275. package/src/prompts/templates/mcp/webtest-generate-tests.md +11 -0
  276. package/src/prompts/templates/mcp/webtest-run-test.md +11 -0
  277. package/src/prompts/templates/mcp/webtest-start.md +8 -0
  278. package/src/prompts/templates/sampling/crawl-action.md +35 -0
  279. package/src/prompts/templates/sampling/feature-discovery.md +27 -0
  280. package/src/prompts/templates/sampling/flow-discovery.md +29 -0
  281. package/src/prompts/templates/sampling/page-content-wrapper.md +5 -0
  282. package/src/prompts/templates/sampling/system-prefix.md +12 -0
  283. package/src/prompts/templates/sampling/test-evaluation.md +17 -0
  284. package/src/prompts/templates/sampling/test-generation.md +31 -0
  285. package/src/resources/index.ts +250 -0
  286. package/src/resources/subscriptions.ts +37 -0
  287. package/src/sampling/index.test.ts +414 -0
  288. package/src/sampling/index.ts +286 -0
  289. package/src/sampling/prompts.ts +194 -0
  290. package/src/sampling/types.ts +60 -0
  291. package/src/schemas/config.ts +39 -0
  292. package/src/security/index.test.ts +441 -0
  293. package/src/security/index.ts +361 -0
  294. package/src/security/security-scenarios.test.ts +468 -0
  295. package/src/server.ts +211 -0
  296. package/src/test-utils/index.ts +6 -0
  297. package/src/test-utils/mock-context.ts +426 -0
  298. package/src/test-utils/mock-playwright-client.ts +422 -0
  299. package/src/tools/index.ts +11 -0
  300. package/src/tools/webtest/crawl.test.ts +834 -0
  301. package/src/tools/webtest/crawl.ts +901 -0
  302. package/src/tools/webtest/discover-features.ts +412 -0
  303. package/src/tools/webtest/discover-flows.ts +408 -0
  304. package/src/tools/webtest/generate-tests.test.ts +532 -0
  305. package/src/tools/webtest/generate-tests.ts +425 -0
  306. package/src/tools/webtest/index.ts +7 -0
  307. package/src/tools/webtest/integration.test.ts +536 -0
  308. package/src/tools/webtest/run-test-case.test.ts +659 -0
  309. package/src/tools/webtest/run-test-case.ts +508 -0
  310. package/src/tools/webtest/schemas.ts +201 -0
  311. package/src/tools/webtest/start-analysis.test.ts +151 -0
  312. package/src/tools/webtest/start-analysis.ts +158 -0
  313. package/src/transports/http.ts +19 -0
  314. package/src/transports/index.ts +30 -0
  315. package/src/transports/stdio.ts +7 -0
  316. package/src/types/capabilities.test.ts +193 -0
  317. package/src/types/capabilities.ts +50 -0
  318. package/src/types/context.ts +21 -0
  319. package/src/types/tool.ts +11 -0
  320. package/src/workspace/index.ts +945 -0
  321. package/src/workspace/markdown.ts +272 -0
  322. package/src/workspace/types.ts +186 -0
  323. package/tests/integration/server.test.ts +89 -0
  324. package/tests/integration/tools.test.ts +99 -0
  325. package/tsconfig.json +20 -0
  326. package/vitest.config.ts +9 -0
  327. package/vitest.integration.config.ts +10 -0
@@ -0,0 +1,315 @@
1
+ /**
2
+ * Mock Playwright MCP Client for testing
3
+ *
4
+ * Provides a controllable mock implementation of PlaywrightClient
5
+ * for testing crawl, test execution, and other Playwright-dependent flows.
6
+ */
7
+ import { vi } from "vitest";
8
+ export function createMockPlaywrightClient(options) {
9
+ let pages = { ...options.pages };
10
+ let currentUrl;
11
+ let connected = false;
12
+ const actionHistory = [];
13
+ const errors = {
14
+ ...options.errors,
15
+ };
16
+ const toolMapping = {
17
+ snapshot: "browser_snapshot",
18
+ screenshot: "browser_take_screenshot",
19
+ click: "browser_click",
20
+ type: "browser_type",
21
+ navigate: "browser_navigate",
22
+ fill: "browser_type", // Microsoft Playwright MCP uses browser_type for fill
23
+ hover: "browser_hover",
24
+ select: "browser_select_option",
25
+ evaluate: "browser_evaluate",
26
+ press: "browser_press_key",
27
+ scroll: "browser_scroll",
28
+ wait: "browser_wait",
29
+ };
30
+ function getCurrentPage() {
31
+ if (!currentUrl)
32
+ return undefined;
33
+ return pages[currentUrl];
34
+ }
35
+ async function delay() {
36
+ if (options.latencyMs) {
37
+ await new Promise((resolve) => setTimeout(resolve, options.latencyMs));
38
+ }
39
+ }
40
+ function recordAction(tool, args) {
41
+ actionHistory.push({ tool, args });
42
+ }
43
+ const client = {
44
+ connect: vi.fn().mockImplementation(async () => {
45
+ await delay();
46
+ connected = true;
47
+ }),
48
+ disconnect: vi.fn().mockImplementation(async () => {
49
+ await delay();
50
+ connected = false;
51
+ currentUrl = undefined;
52
+ }),
53
+ isConnected: vi.fn().mockImplementation(() => {
54
+ return connected;
55
+ }),
56
+ getToolMapping: vi.fn().mockImplementation(() => {
57
+ return connected ? toolMapping : null;
58
+ }),
59
+ callTool: vi.fn().mockImplementation(async (canonicalName, args) => {
60
+ await delay();
61
+ recordAction(canonicalName, args);
62
+ // Check for configured errors
63
+ if (errors[canonicalName]) {
64
+ return {
65
+ content: [{ type: "text", text: `Error: ${errors[canonicalName]}` }],
66
+ isError: true,
67
+ };
68
+ }
69
+ // Check for custom handler
70
+ if (options.onToolCall) {
71
+ const customResult = options.onToolCall(canonicalName, args);
72
+ if (customResult)
73
+ return customResult;
74
+ }
75
+ // Default implementations
76
+ const actualName = toolMapping[canonicalName];
77
+ return {
78
+ content: [{ type: "text", text: `${actualName} executed successfully` }],
79
+ };
80
+ }),
81
+ snapshot: vi.fn().mockImplementation(async () => {
82
+ await delay();
83
+ recordAction("snapshot", {});
84
+ if (errors.snapshot) {
85
+ throw new Error(errors.snapshot);
86
+ }
87
+ const page = getCurrentPage();
88
+ if (!page) {
89
+ return {
90
+ url: currentUrl || "",
91
+ title: "",
92
+ content: "No page loaded",
93
+ };
94
+ }
95
+ return {
96
+ url: page.url,
97
+ title: page.title,
98
+ content: JSON.stringify({
99
+ url: page.url,
100
+ title: page.title,
101
+ links: page.links,
102
+ forms: page.forms,
103
+ buttons: page.buttons,
104
+ }),
105
+ };
106
+ }),
107
+ screenshot: vi.fn().mockImplementation(async () => {
108
+ await delay();
109
+ recordAction("screenshot", {});
110
+ if (errors.screenshot) {
111
+ throw new Error(errors.screenshot);
112
+ }
113
+ // Return a minimal valid PNG (1x1 transparent pixel)
114
+ const minimalPng = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==";
115
+ return {
116
+ data: minimalPng,
117
+ mimeType: "image/png",
118
+ };
119
+ }),
120
+ navigate: vi.fn().mockImplementation(async (url) => {
121
+ await delay();
122
+ recordAction("navigate", { url });
123
+ if (errors.navigate) {
124
+ throw new Error(errors.navigate);
125
+ }
126
+ currentUrl = url;
127
+ // Auto-create a default page if not defined
128
+ if (!pages[url]) {
129
+ pages[url] = {
130
+ url,
131
+ title: `Page: ${url}`,
132
+ html: `<html><head><title>Page: ${url}</title></head><body></body></html>`,
133
+ };
134
+ }
135
+ }),
136
+ click: vi.fn().mockImplementation(async (element, ref) => {
137
+ await delay();
138
+ recordAction("click", { element, ref });
139
+ if (errors.click) {
140
+ throw new Error(errors.click);
141
+ }
142
+ // Check if clicking a link triggers navigation (use ref as selector for mock lookup)
143
+ const page = getCurrentPage();
144
+ if (page?.links) {
145
+ const link = page.links.find((l) => l.selector === ref || l.text === element);
146
+ if (link?.href) {
147
+ currentUrl = link.href;
148
+ }
149
+ }
150
+ }),
151
+ type: vi.fn().mockImplementation(async (element, ref, text, options) => {
152
+ await delay();
153
+ recordAction("type", { element, ref, text, submit: options?.submit, slowly: options?.slowly });
154
+ if (errors.type) {
155
+ throw new Error(errors.type);
156
+ }
157
+ }),
158
+ fill: vi.fn().mockImplementation(async (element, ref, value) => {
159
+ await delay();
160
+ recordAction("fill", { element, ref, value });
161
+ if (errors.fill) {
162
+ throw new Error(errors.fill);
163
+ }
164
+ }),
165
+ hover: vi.fn().mockImplementation(async (element, ref) => {
166
+ await delay();
167
+ recordAction("hover", { element, ref });
168
+ if (errors.hover) {
169
+ throw new Error(errors.hover);
170
+ }
171
+ }),
172
+ select: vi.fn().mockImplementation(async (element, ref, values) => {
173
+ await delay();
174
+ recordAction("select", { element, ref, values });
175
+ if (errors.select) {
176
+ throw new Error(errors.select);
177
+ }
178
+ }),
179
+ evaluate: vi.fn().mockImplementation(async (fn, element, ref) => {
180
+ await delay();
181
+ const args = { function: fn };
182
+ if (element)
183
+ args.element = element;
184
+ if (ref)
185
+ args.ref = ref;
186
+ recordAction("evaluate", args);
187
+ if (errors.evaluate) {
188
+ throw new Error(errors.evaluate);
189
+ }
190
+ // Return the current page HTML as a default evaluation result
191
+ const page = getCurrentPage();
192
+ return page?.html || "";
193
+ }),
194
+ press: vi.fn().mockImplementation(async (key) => {
195
+ await delay();
196
+ recordAction("press", { key });
197
+ if (errors.press) {
198
+ throw new Error(errors.press);
199
+ }
200
+ }),
201
+ scroll: vi.fn().mockImplementation(async (x, y) => {
202
+ await delay();
203
+ recordAction("scroll", { x, y });
204
+ if (errors.scroll) {
205
+ throw new Error(errors.scroll);
206
+ }
207
+ }),
208
+ wait: vi.fn().mockImplementation(async (ms) => {
209
+ await delay();
210
+ recordAction("wait", { ms });
211
+ if (errors.wait) {
212
+ throw new Error(errors.wait);
213
+ }
214
+ // Actually wait for the specified time
215
+ await new Promise((resolve) => setTimeout(resolve, ms));
216
+ }),
217
+ // Test helpers
218
+ getCurrentPage,
219
+ setPages(newPages) {
220
+ pages = { ...newPages };
221
+ },
222
+ getActionHistory() {
223
+ return [...actionHistory];
224
+ },
225
+ clearActionHistory() {
226
+ actionHistory.length = 0;
227
+ },
228
+ setError(tool, message) {
229
+ if (message === null) {
230
+ delete errors[tool];
231
+ }
232
+ else {
233
+ errors[tool] = message;
234
+ }
235
+ },
236
+ };
237
+ return client;
238
+ }
239
+ /**
240
+ * Create a simple mock page for testing
241
+ */
242
+ export function createMockPage(url, options = {}) {
243
+ const hostname = new URL(url).hostname;
244
+ return {
245
+ url,
246
+ title: options.title || `Page - ${hostname}`,
247
+ html: options.html ||
248
+ `<html><head><title>${options.title || hostname}</title></head><body><h1>Welcome</h1></body></html>`,
249
+ links: options.links || [],
250
+ forms: options.forms || [],
251
+ buttons: options.buttons || [],
252
+ };
253
+ }
254
+ /**
255
+ * Create a typical e-commerce site mock for testing
256
+ */
257
+ export function createEcommerceMock() {
258
+ const baseUrl = "https://shop.example.com";
259
+ return {
260
+ [baseUrl]: createMockPage(baseUrl, {
261
+ title: "Shop - Home",
262
+ links: [
263
+ { selector: 'a[href="/products"]', href: `${baseUrl}/products`, text: "Products" },
264
+ { selector: 'a[href="/cart"]', href: `${baseUrl}/cart`, text: "Cart" },
265
+ { selector: 'a[href="/login"]', href: `${baseUrl}/login`, text: "Login" },
266
+ ],
267
+ buttons: [{ selector: "button.search", text: "Search" }],
268
+ }),
269
+ [`${baseUrl}/products`]: createMockPage(`${baseUrl}/products`, {
270
+ title: "Shop - Products",
271
+ links: [
272
+ { selector: 'a[href="/"]', href: baseUrl, text: "Home" },
273
+ { selector: 'a[href="/product/1"]', href: `${baseUrl}/product/1`, text: "Product 1" },
274
+ { selector: 'a[href="/product/2"]', href: `${baseUrl}/product/2`, text: "Product 2" },
275
+ ],
276
+ }),
277
+ [`${baseUrl}/product/1`]: createMockPage(`${baseUrl}/product/1`, {
278
+ title: "Product 1 - Shop",
279
+ buttons: [
280
+ { selector: "button.add-to-cart", text: "Add to Cart" },
281
+ { selector: "button.buy-now", text: "Buy Now" },
282
+ ],
283
+ }),
284
+ [`${baseUrl}/cart`]: createMockPage(`${baseUrl}/cart`, {
285
+ title: "Shopping Cart - Shop",
286
+ buttons: [
287
+ { selector: "button.checkout", text: "Checkout" },
288
+ { selector: "button.continue-shopping", text: "Continue Shopping" },
289
+ ],
290
+ }),
291
+ [`${baseUrl}/login`]: createMockPage(`${baseUrl}/login`, {
292
+ title: "Login - Shop",
293
+ forms: [
294
+ {
295
+ selector: "form#login",
296
+ action: "/auth/login",
297
+ inputs: ["email", "password"],
298
+ },
299
+ ],
300
+ buttons: [{ selector: "button.submit", text: "Sign In" }],
301
+ }),
302
+ [`${baseUrl}/checkout`]: createMockPage(`${baseUrl}/checkout`, {
303
+ title: "Checkout - Shop",
304
+ forms: [
305
+ {
306
+ selector: "form#checkout",
307
+ action: "/process-order",
308
+ inputs: ["name", "address", "card"],
309
+ },
310
+ ],
311
+ buttons: [{ selector: "button.place-order", text: "Place Order" }],
312
+ }),
313
+ };
314
+ }
315
+ //# sourceMappingURL=mock-playwright-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-playwright-client.js","sourceRoot":"","sources":["../../src/test-utils/mock-playwright-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpTool } from "../types/tool.js";
2
+ export * from "./webtest/index.js";
3
+ export declare const tools: McpTool[];
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,cAAc,oBAAoB,CAAC;AAGnC,eAAO,MAAM,KAAK,EAAE,OAAO,EAAO,CAAC"}
@@ -0,0 +1,8 @@
1
+ // Tools are now registered directly in server.ts via the webtest tools
2
+ // This file is kept for backwards compatibility but tools array is empty
3
+ // The hello tool has been removed as part of the webtest orchestrator implementation
4
+ // Webtest tools are exported from the webtest module
5
+ export * from "./webtest/index.js";
6
+ // Legacy tools array - empty since webtest tools are registered differently
7
+ export const tools = [];
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,qFAAqF;AAIrF,qDAAqD;AACrD,cAAc,oBAAoB,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAc,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { z } from "zod";
2
+ import type { McpTool } from "../../types/tool.js";
3
+ import type { ServerContext } from "../../types/context.js";
4
+ import type { WorkspaceManager } from "../../workspace/index.js";
5
+ import type { PlaywrightClient } from "../../playwright-client/index.js";
6
+ import type { SamplingClient } from "../../sampling/index.js";
7
+ import type { ElicitationClient } from "../../elicitation/index.js";
8
+ import type { CancellationRegistry, ProgressEmitter } from "../../progress/index.js";
9
+ import type { SecurityValidator } from "../../security/index.js";
10
+ import type { ResourceManager } from "../../resources/index.js";
11
+ export declare const crawlInputSchema: z.ZodObject<{
12
+ analysisId: z.ZodString;
13
+ goal: z.ZodString;
14
+ strategy: z.ZodDefault<z.ZodEnum<{
15
+ goal_directed: "goal_directed";
16
+ breadth_first: "breadth_first";
17
+ depth_first: "depth_first";
18
+ }>>;
19
+ limits: z.ZodOptional<z.ZodObject<{
20
+ maxSteps: z.ZodOptional<z.ZodNumber>;
21
+ maxMinutes: z.ZodOptional<z.ZodNumber>;
22
+ maxPages: z.ZodOptional<z.ZodNumber>;
23
+ }, z.core.$strip>>;
24
+ artifacts: z.ZodOptional<z.ZodObject<{
25
+ captureScreenshots: z.ZodDefault<z.ZodBoolean>;
26
+ captureSnapshots: z.ZodDefault<z.ZodBoolean>;
27
+ captureDom: z.ZodDefault<z.ZodBoolean>;
28
+ }, z.core.$strip>>;
29
+ resume: z.ZodDefault<z.ZodBoolean>;
30
+ manualNextActions: z.ZodOptional<z.ZodArray<z.ZodObject<{
31
+ tool: z.ZodString;
32
+ args: z.ZodRecord<z.ZodString, z.ZodAny>;
33
+ }, z.core.$strip>>>;
34
+ }, z.core.$strip>;
35
+ export type CrawlInput = z.infer<typeof crawlInputSchema>;
36
+ export declare function createCrawlTool(getContext: () => ServerContext & {
37
+ workspaceManager: WorkspaceManager;
38
+ playwrightClient: PlaywrightClient;
39
+ samplingClient: SamplingClient;
40
+ elicitationClient: ElicitationClient;
41
+ cancellationRegistry: CancellationRegistry;
42
+ progressEmitter: ProgressEmitter;
43
+ securityValidator: SecurityValidator;
44
+ resourceManager: ResourceManager;
45
+ }): McpTool<CrawlInput>;
46
+ //# sourceMappingURL=crawl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl.d.ts","sourceRoot":"","sources":["../../../src/tools/webtest/crawl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAA+B,MAAM,0BAA0B,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;iBAsC3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAqB1D,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,aAAa,GAAG;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;CAClC,GACA,OAAO,CAAC,UAAU,CAAC,CAgpBrB"}