testdriverai 7.2.64 → 7.2.69

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 (369) hide show
  1. package/agent/index.js +4 -3
  2. package/agent/interface.js +11 -251
  3. package/agent/lib/debugger-server.js +2 -1
  4. package/agent/lib/logger.js +56 -0
  5. package/agent/lib/sandbox.js +6 -7
  6. package/ai/agents/test-writer.md +457 -0
  7. package/{docs/v7/ai.mdx → ai/skills/testdriver:ai/SKILL.md} +3 -5
  8. package/{docs/v7/assert.mdx → ai/skills/testdriver:assert/SKILL.md} +3 -4
  9. package/{docs/v7/aws-setup.mdx → ai/skills/testdriver:aws-setup/SKILL.md} +3 -4
  10. package/{docs/v7/caching.mdx → ai/skills/testdriver:caching/SKILL.md} +3 -7
  11. package/{docs/v7/captcha.mdx → ai/skills/testdriver:captcha/SKILL.md} +4 -5
  12. package/{docs/v7/ci-cd.mdx → ai/skills/testdriver:ci-cd/SKILL.md} +3 -4
  13. package/{docs/v7/click.mdx → ai/skills/testdriver:click/SKILL.md} +3 -4
  14. package/{docs/v7/client.mdx → ai/skills/testdriver:client/SKILL.md} +11 -5
  15. package/{docs/v7/cloud.mdx → ai/skills/testdriver:cloud/SKILL.md} +3 -4
  16. package/{docs/v7/customizing-devices.mdx → ai/skills/testdriver:customizing-devices/SKILL.md} +36 -26
  17. package/{docs/v7/dashcam.mdx → ai/skills/testdriver:dashcam/SKILL.md} +3 -4
  18. package/{docs/v7/device-config.mdx → ai/skills/testdriver:device-config/SKILL.md} +3 -3
  19. package/{docs/v7/double-click.mdx → ai/skills/testdriver:double-click/SKILL.md} +3 -3
  20. package/{docs/v7/elements.mdx → ai/skills/testdriver:elements/SKILL.md} +3 -4
  21. package/{docs/v7/enterprise.mdx → ai/skills/testdriver:enterprise/SKILL.md} +3 -5
  22. package/ai/skills/testdriver:examples/SKILL.md +7 -0
  23. package/{docs/v7/exec.mdx → ai/skills/testdriver:exec/SKILL.md} +3 -4
  24. package/{docs/v7/find.mdx → ai/skills/testdriver:find/SKILL.md} +81 -4
  25. package/{docs/v7/focus-application.mdx → ai/skills/testdriver:focus-application/SKILL.md} +3 -4
  26. package/{docs/v7/generating-tests.mdx → ai/skills/testdriver:generating-tests/SKILL.md} +3 -3
  27. package/{docs/v7/hover.mdx → ai/skills/testdriver:hover/SKILL.md} +3 -4
  28. package/{docs/v7/locating-elements.mdx → ai/skills/testdriver:locating-elements/SKILL.md} +3 -3
  29. package/{docs/v7/making-assertions.mdx → ai/skills/testdriver:making-assertions/SKILL.md} +3 -3
  30. package/ai/skills/testdriver:mcp-workflow/SKILL.md +410 -0
  31. package/{docs/v7/mouse-down.mdx → ai/skills/testdriver:mouse-down/SKILL.md} +3 -3
  32. package/{docs/v7/mouse-up.mdx → ai/skills/testdriver:mouse-up/SKILL.md} +3 -3
  33. package/{docs/v7/performing-actions.mdx → ai/skills/testdriver:performing-actions/SKILL.md} +3 -3
  34. package/{docs/v7/press-keys.mdx → ai/skills/testdriver:press-keys/SKILL.md} +3 -4
  35. package/{docs/v7/quickstart.mdx → ai/skills/testdriver:quickstart/SKILL.md} +3 -4
  36. package/{docs/v7/reusable-code.mdx → ai/skills/testdriver:reusable-code/SKILL.md} +3 -3
  37. package/{docs/v7/right-click.mdx → ai/skills/testdriver:right-click/SKILL.md} +3 -3
  38. package/{docs/v7/running-tests.mdx → ai/skills/testdriver:running-tests/SKILL.md} +3 -3
  39. package/{docs/v7/screenshot.mdx → ai/skills/testdriver:screenshot/SKILL.md} +3 -4
  40. package/{docs/v7/scroll.mdx → ai/skills/testdriver:scroll/SKILL.md} +3 -4
  41. package/{docs/v7/secrets.mdx → ai/skills/testdriver:secrets/SKILL.md} +3 -3
  42. package/{docs/v7/self-hosted.mdx → ai/skills/testdriver:self-hosted/SKILL.md} +3 -4
  43. package/ai/skills/testdriver:testdriver/SKILL.md +31 -0
  44. package/{docs/v7/type.mdx → ai/skills/testdriver:type/SKILL.md} +3 -4
  45. package/{docs/v7/variables.mdx → ai/skills/testdriver:variables/SKILL.md} +3 -3
  46. package/{docs/v7/waiting-for-elements.mdx → ai/skills/testdriver:waiting-for-elements/SKILL.md} +3 -3
  47. package/{docs/v7/what-is-testdriver.mdx → ai/skills/testdriver:what-is-testdriver/SKILL.md} +3 -3
  48. package/interfaces/cli/commands/init.js +278 -1
  49. package/interfaces/cli/commands/setup.js +382 -0
  50. package/interfaces/vitest-plugin.mjs +190 -122
  51. package/lib/sentry.js +4 -3
  52. package/lib/vitest/hooks.mjs +70 -16
  53. package/mcp-server/dist/codegen.d.ts +9 -0
  54. package/mcp-server/dist/codegen.js +165 -0
  55. package/mcp-server/dist/mcp-app.html +114 -0
  56. package/mcp-server/dist/provision-types.d.ts +290 -0
  57. package/mcp-server/dist/provision-types.js +174 -0
  58. package/mcp-server/dist/server.d.ts +6 -0
  59. package/mcp-server/dist/server.js +1441 -0
  60. package/mcp-server/dist/session.d.ts +85 -0
  61. package/mcp-server/dist/session.js +152 -0
  62. package/package.json +30 -9
  63. package/sdk.d.ts +29 -2
  64. package/sdk.js +1 -0
  65. package/.env.example +0 -4
  66. package/.github/workflows/acceptance-linux-scheduled.yaml +0 -45
  67. package/.github/workflows/acceptance-windows-scheduled.yaml +0 -54
  68. package/.github/workflows/acceptance.yaml +0 -87
  69. package/.github/workflows/publish.yaml +0 -68
  70. package/.github/workflows/test-init.yml +0 -145
  71. package/.github/workflows/testdriver.yml +0 -170
  72. package/.github/workflows/windows-self-hosted.yaml +0 -82
  73. package/.prettierignore +0 -4
  74. package/.prettierrc +0 -1
  75. package/CHANGELOG.md +0 -34
  76. package/agents.md +0 -455
  77. package/debugger/bg.png +0 -0
  78. package/debugger/icon.png +0 -0
  79. package/debugger/index.html +0 -797
  80. package/debugger/td.png +0 -0
  81. package/debugger/tray-buffered.png +0 -0
  82. package/debugger/tray.png +0 -0
  83. package/docs/GITHUB_COMMENTS.md +0 -330
  84. package/docs/GITHUB_COMMENTS_ANNOUNCEMENT.md +0 -167
  85. package/docs/QUICK-START-GITHUB-COMMENTS.md +0 -84
  86. package/docs/TEST-GITHUB-COMMENTS.md +0 -129
  87. package/docs/_scripts/link-replacer.js +0 -164
  88. package/docs/_scripts/upload-docs-to-openai.js +0 -284
  89. package/docs/docs.json +0 -393
  90. package/docs/github-integration-setup.md +0 -266
  91. package/docs/guide/best-practices-polling.mdx +0 -154
  92. package/docs/images/content/account/newprojectsettings.png +0 -0
  93. package/docs/images/content/account/projectpage.png +0 -0
  94. package/docs/images/content/account/projectreplays.png +0 -0
  95. package/docs/images/content/account/team-manage.png +0 -0
  96. package/docs/images/content/account/teampage.png +0 -0
  97. package/docs/images/content/extension/cursor.svg +0 -1
  98. package/docs/images/content/extension/vscode.svg +0 -57
  99. package/docs/images/content/extension/windsurf.svg +0 -3
  100. package/docs/images/content/self-hosted/launchtemplateid.png +0 -0
  101. package/docs/images/content/side-by-side.png +0 -0
  102. package/docs/images/content/vscode/ide-full.png +0 -0
  103. package/docs/images/content/vscode/running.png +0 -0
  104. package/docs/images/content/vscode/vscode-2-assert.png +0 -0
  105. package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
  106. package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
  107. package/docs/images/content/vscode/vscode-file-creation.png +0 -0
  108. package/docs/images/content/vscode/vscode-install.png +0 -0
  109. package/docs/images/content/vscode/vscode-overview.png +0 -0
  110. package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
  111. package/docs/images/content/vscode/vscode-stopchat.png +0 -0
  112. package/docs/images/content/vscode/vscode-stoptest.png +0 -0
  113. package/docs/images/content/vscode/vscode-tdservice.png +0 -0
  114. package/docs/images/content/vscode/vscode-test-output.png +0 -0
  115. package/docs/images/content/vscode/vscode-testhistory.png +0 -0
  116. package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
  117. package/docs/images/content/vscode/vscode-testpane.png +0 -0
  118. package/docs/images/template/dark.png +0 -0
  119. package/docs/images/template/icon.png +0 -0
  120. package/docs/images/template/light.png +0 -0
  121. package/docs/snippets/calendar-link.mdx +0 -4
  122. package/docs/snippets/gitignore-warning.mdx +0 -7
  123. package/docs/snippets/lifecycle-warning.mdx +0 -6
  124. package/docs/snippets/test-prereqs.mdx +0 -12
  125. package/docs/snippets/tests/assert-replay.mdx +0 -7
  126. package/docs/snippets/tests/assert-yaml.mdx +0 -8
  127. package/docs/snippets/tests/exec-js-replay.mdx +0 -7
  128. package/docs/snippets/tests/exec-js-yaml.mdx +0 -32
  129. package/docs/snippets/tests/exec-shell-replay.mdx +0 -7
  130. package/docs/snippets/tests/exec-shell-yaml.mdx +0 -15
  131. package/docs/snippets/tests/hover-image-replay.mdx +0 -7
  132. package/docs/snippets/tests/hover-image-yaml.mdx +0 -17
  133. package/docs/snippets/tests/hover-text-replay.mdx +0 -7
  134. package/docs/snippets/tests/hover-text-with-description-replay.mdx +0 -7
  135. package/docs/snippets/tests/hover-text-with-description-yaml.mdx +0 -24
  136. package/docs/snippets/tests/hover-text-yaml.mdx +0 -14
  137. package/docs/snippets/tests/match-image-replay.mdx +0 -7
  138. package/docs/snippets/tests/match-image-yaml.mdx +0 -17
  139. package/docs/snippets/tests/press-keys-replay.mdx +0 -7
  140. package/docs/snippets/tests/press-keys-yaml.mdx +0 -36
  141. package/docs/snippets/tests/remember-replay.mdx +0 -7
  142. package/docs/snippets/tests/remember-yaml.mdx +0 -28
  143. package/docs/snippets/tests/scroll-replay.mdx +0 -7
  144. package/docs/snippets/tests/scroll-until-image-replay.mdx +0 -7
  145. package/docs/snippets/tests/scroll-until-image-yaml.mdx +0 -14
  146. package/docs/snippets/tests/scroll-until-text-replay.mdx +0 -7
  147. package/docs/snippets/tests/scroll-until-text-yaml.mdx +0 -17
  148. package/docs/snippets/tests/scroll-yaml.mdx +0 -30
  149. package/docs/snippets/tests/type-repeated-replay.mdx +0 -7
  150. package/docs/snippets/tests/type-repeated-yaml.mdx +0 -22
  151. package/docs/snippets/tests/type-replay.mdx +0 -7
  152. package/docs/snippets/tests/type-yaml.mdx +0 -28
  153. package/docs/snippets/tests/wait-for-image-replay.mdx +0 -7
  154. package/docs/snippets/tests/wait-for-image-yaml.mdx +0 -18
  155. package/docs/snippets/tests/wait-for-text-replay.mdx +0 -7
  156. package/docs/snippets/tests/wait-for-text-yaml.mdx +0 -18
  157. package/docs/snippets/tests/wait-replay.mdx +0 -7
  158. package/docs/snippets/tests/wait-yaml.mdx +0 -13
  159. package/docs/styles.css +0 -65
  160. package/docs/v6/account/dashboard.mdx +0 -16
  161. package/docs/v6/account/enterprise.mdx +0 -110
  162. package/docs/v6/account/pricing.mdx +0 -33
  163. package/docs/v6/account/projects.mdx +0 -33
  164. package/docs/v6/account/team.mdx +0 -35
  165. package/docs/v6/action/ami.mdx +0 -109
  166. package/docs/v6/action/performance.mdx +0 -105
  167. package/docs/v6/action/secrets.mdx +0 -93
  168. package/docs/v6/apps/chrome-extensions.mdx +0 -48
  169. package/docs/v6/apps/desktop-apps.mdx +0 -93
  170. package/docs/v6/apps/mobile-apps.mdx +0 -26
  171. package/docs/v6/apps/static-websites.mdx +0 -54
  172. package/docs/v6/apps/tauri-apps.mdx +0 -361
  173. package/docs/v6/bugs/jira.mdx +0 -232
  174. package/docs/v6/cli/overview.mdx +0 -66
  175. package/docs/v6/commands/assert.mdx +0 -45
  176. package/docs/v6/commands/exec.mdx +0 -282
  177. package/docs/v6/commands/focus-application.mdx +0 -44
  178. package/docs/v6/commands/hover-image.mdx +0 -69
  179. package/docs/v6/commands/hover-text.mdx +0 -47
  180. package/docs/v6/commands/if.mdx +0 -53
  181. package/docs/v6/commands/match-image.mdx +0 -67
  182. package/docs/v6/commands/press-keys.mdx +0 -87
  183. package/docs/v6/commands/remember.mdx +0 -49
  184. package/docs/v6/commands/run.mdx +0 -44
  185. package/docs/v6/commands/scroll-until-image.mdx +0 -66
  186. package/docs/v6/commands/scroll-until-text.mdx +0 -60
  187. package/docs/v6/commands/scroll.mdx +0 -69
  188. package/docs/v6/commands/type.mdx +0 -45
  189. package/docs/v6/commands/wait-for-image.mdx +0 -54
  190. package/docs/v6/commands/wait-for-text.mdx +0 -48
  191. package/docs/v6/commands/wait.mdx +0 -45
  192. package/docs/v6/exporting/junit.mdx +0 -218
  193. package/docs/v6/exporting/playwright.mdx +0 -197
  194. package/docs/v6/features/auto-healing.mdx +0 -144
  195. package/docs/v6/features/generation.mdx +0 -116
  196. package/docs/v6/features/parallel-testing.mdx +0 -151
  197. package/docs/v6/features/reusable-snippets.mdx +0 -131
  198. package/docs/v6/features/selectorless.mdx +0 -80
  199. package/docs/v6/features/visual-assertions.mdx +0 -139
  200. package/docs/v6/getting-started/ci.mdx +0 -146
  201. package/docs/v6/getting-started/cli.mdx +0 -91
  202. package/docs/v6/getting-started/editing.mdx +0 -100
  203. package/docs/v6/getting-started/playwright.mdx +0 -342
  204. package/docs/v6/getting-started/running.mdx +0 -48
  205. package/docs/v6/getting-started/self-hosting.mdx +0 -408
  206. package/docs/v6/getting-started/vscode.mdx +0 -89
  207. package/docs/v6/guide/assertions.mdx +0 -189
  208. package/docs/v6/guide/authentication.mdx +0 -136
  209. package/docs/v6/guide/code.mdx +0 -65
  210. package/docs/v6/guide/dashcam.mdx +0 -118
  211. package/docs/v6/guide/environment-variables.mdx +0 -26
  212. package/docs/v6/guide/lifecycle.mdx +0 -242
  213. package/docs/v6/guide/locating.mdx +0 -141
  214. package/docs/v6/guide/protips.mdx +0 -43
  215. package/docs/v6/guide/variables.mdx +0 -143
  216. package/docs/v6/guide/waiting.mdx +0 -130
  217. package/docs/v6/importing/csv.mdx +0 -196
  218. package/docs/v6/importing/gherkin.mdx +0 -143
  219. package/docs/v6/importing/jira.mdx +0 -164
  220. package/docs/v6/importing/testrail.mdx +0 -162
  221. package/docs/v6/integrations/electron.mdx +0 -146
  222. package/docs/v6/integrations/netlify.mdx +0 -100
  223. package/docs/v6/integrations/vercel.mdx +0 -125
  224. package/docs/v6/interactive/explore.mdx +0 -99
  225. package/docs/v6/interactive/run.mdx +0 -52
  226. package/docs/v6/interactive/save.mdx +0 -63
  227. package/docs/v6/overview/comparison.mdx +0 -101
  228. package/docs/v6/overview/faq.mdx +0 -162
  229. package/docs/v6/overview/performance.mdx +0 -52
  230. package/docs/v6/overview/quickstart.mdx +0 -137
  231. package/docs/v6/overview/what-is-testdriver.mdx +0 -85
  232. package/docs/v6/scenarios/ai-chatbot.mdx +0 -28
  233. package/docs/v6/scenarios/cookie-banner.mdx +0 -32
  234. package/docs/v6/scenarios/file-upload.mdx +0 -33
  235. package/docs/v6/scenarios/form-filling.mdx +0 -32
  236. package/docs/v6/scenarios/log-in.mdx +0 -75
  237. package/docs/v6/scenarios/pdf-generation.mdx +0 -25
  238. package/docs/v6/scenarios/spell-check.mdx +0 -22
  239. package/docs/v6/security/action.mdx +0 -84
  240. package/docs/v6/security/agent.mdx +0 -73
  241. package/docs/v6/security/platform.mdx +0 -77
  242. package/docs/v6/tutorials/advanced-test.mdx +0 -81
  243. package/docs/v6/tutorials/basic-test.mdx +0 -45
  244. package/docs/v7/_drafts/agents.mdx +0 -852
  245. package/docs/v7/_drafts/architecture.mdx +0 -399
  246. package/docs/v7/_drafts/auto-cache-key.mdx +0 -167
  247. package/docs/v7/_drafts/awesome-logs-quick-ref.mdx +0 -100
  248. package/docs/v7/_drafts/best-practices.mdx +0 -486
  249. package/docs/v7/_drafts/caching-ai.mdx +0 -215
  250. package/docs/v7/_drafts/caching-selectors.mdx +0 -424
  251. package/docs/v7/_drafts/caching.mdx +0 -366
  252. package/docs/v7/_drafts/cli-to-sdk-migration.mdx +0 -425
  253. package/docs/v7/_drafts/commands/assert.mdx +0 -45
  254. package/docs/v7/_drafts/commands/exec.mdx +0 -282
  255. package/docs/v7/_drafts/commands/focus-application.mdx +0 -44
  256. package/docs/v7/_drafts/commands/hover-image.mdx +0 -69
  257. package/docs/v7/_drafts/commands/hover-text.mdx +0 -47
  258. package/docs/v7/_drafts/commands/if.mdx +0 -53
  259. package/docs/v7/_drafts/commands/match-image.mdx +0 -67
  260. package/docs/v7/_drafts/commands/press-keys.mdx +0 -87
  261. package/docs/v7/_drafts/commands/remember.mdx +0 -49
  262. package/docs/v7/_drafts/commands/run.mdx +0 -44
  263. package/docs/v7/_drafts/commands/scroll-until-image.mdx +0 -66
  264. package/docs/v7/_drafts/commands/scroll-until-text.mdx +0 -60
  265. package/docs/v7/_drafts/commands/scroll.mdx +0 -69
  266. package/docs/v7/_drafts/commands/type.mdx +0 -45
  267. package/docs/v7/_drafts/commands/wait-for-image.mdx +0 -54
  268. package/docs/v7/_drafts/commands/wait-for-text.mdx +0 -48
  269. package/docs/v7/_drafts/commands/wait.mdx +0 -45
  270. package/docs/v7/_drafts/configuration.mdx +0 -378
  271. package/docs/v7/_drafts/contributing.mdx +0 -174
  272. package/docs/v7/_drafts/core.mdx +0 -458
  273. package/docs/v7/_drafts/dashcam-title-feature.mdx +0 -89
  274. package/docs/v7/_drafts/debugging.mdx +0 -349
  275. package/docs/v7/_drafts/error-handling.mdx +0 -501
  276. package/docs/v7/_drafts/faq.mdx +0 -393
  277. package/docs/v7/_drafts/hooks.mdx +0 -360
  278. package/docs/v7/_drafts/init-command.mdx +0 -95
  279. package/docs/v7/_drafts/installation.mdx +0 -420
  280. package/docs/v7/_drafts/migration.mdx +0 -562
  281. package/docs/v7/_drafts/observable.mdx +0 -604
  282. package/docs/v7/_drafts/playwright.mdx +0 -342
  283. package/docs/v7/_drafts/plugin-migration.mdx +0 -220
  284. package/docs/v7/_drafts/powerful.mdx +0 -419
  285. package/docs/v7/_drafts/presets.mdx +0 -210
  286. package/docs/v7/_drafts/progressive-disclosure.mdx +0 -230
  287. package/docs/v7/_drafts/prompt-cache.mdx +0 -200
  288. package/docs/v7/_drafts/provision.mdx +0 -390
  289. package/docs/v7/_drafts/quick-start-test-recording.mdx +0 -214
  290. package/docs/v7/_drafts/readme.mdx +0 -135
  291. package/docs/v7/_drafts/reports.mdx +0 -414
  292. package/docs/v7/_drafts/scalable.mdx +0 -754
  293. package/docs/v7/_drafts/screenshot.mdx +0 -155
  294. package/docs/v7/_drafts/sdk-awesome-logs.mdx +0 -468
  295. package/docs/v7/_drafts/sdk-browser-rendering.mdx +0 -167
  296. package/docs/v7/_drafts/sdk-migration.mdx +0 -474
  297. package/docs/v7/_drafts/sdk-v7-complete.mdx +0 -345
  298. package/docs/v7/_drafts/self-hosting.mdx +0 -369
  299. package/docs/v7/_drafts/test-recording.mdx +0 -382
  300. package/docs/v7/_drafts/troubleshooting.mdx +0 -526
  301. package/docs/v7/_drafts/vitest-plugin.mdx +0 -477
  302. package/docs/v7/_drafts/vitest.mdx +0 -535
  303. package/docs/v7/_drafts/writing-tests.mdx +0 -25
  304. package/docs/v7/examples.mdx +0 -5
  305. package/eslint.config.js +0 -67
  306. package/examples/ai.test.mjs +0 -30
  307. package/examples/assert.test.mjs +0 -46
  308. package/examples/captcha-api.test.mjs +0 -50
  309. package/examples/chrome-extension.test.mjs +0 -94
  310. package/examples/drag-and-drop.test.mjs +0 -58
  311. package/examples/element-not-found.test.mjs +0 -26
  312. package/examples/exec-output.test.mjs +0 -59
  313. package/examples/exec-pwsh.test.mjs +0 -57
  314. package/examples/focus-window.test.mjs +0 -36
  315. package/examples/formatted-logging.test.mjs +0 -26
  316. package/examples/hover-image.test.mjs +0 -52
  317. package/examples/hover-text-with-description.test.mjs +0 -56
  318. package/examples/hover-text.test.mjs +0 -27
  319. package/examples/installer.test.mjs +0 -49
  320. package/examples/launch-vscode-linux.test.mjs +0 -54
  321. package/examples/match-image.test.mjs +0 -54
  322. package/examples/no-provision.test.mjs +0 -23
  323. package/examples/press-keys.test.mjs +0 -50
  324. package/examples/prompt.test.mjs +0 -33
  325. package/examples/scroll-keyboard.test.mjs +0 -37
  326. package/examples/scroll-until-image.test.mjs +0 -39
  327. package/examples/scroll-until-text.test.mjs +0 -67
  328. package/examples/scroll.test.mjs +0 -41
  329. package/examples/type.test.mjs +0 -45
  330. package/examples/windows-installer.test.mjs +0 -53
  331. package/interfaces/cli/commands/edit.js +0 -3
  332. package/interfaces/cli/commands/generate.js +0 -3
  333. package/interfaces/cli/commands/run.js +0 -3
  334. package/interfaces/cli/utils/factory.js +0 -71
  335. package/jsconfig.json +0 -26
  336. package/manual/test-init-command.js +0 -223
  337. package/sdk-log-formatter.js +0 -930
  338. package/setup/aws/cloudformation.yaml +0 -470
  339. package/setup/aws/spawn-runner.sh +0 -190
  340. package/test/api-resilience.test.mjs +0 -0
  341. package/test/captcha-solver.test.mjs +0 -70
  342. package/test/chrome-remote-debugging.test.mjs +0 -66
  343. package/test/manual/debug-locate-response.js +0 -82
  344. package/test/manual/reconnect-provision.test.mjs +0 -49
  345. package/test/manual/test-console-logs.test.mjs +0 -42
  346. package/test/manual/test-find-api.js +0 -73
  347. package/test/manual/test-init.sh +0 -54
  348. package/test/manual/test-prompt-cache.js +0 -96
  349. package/test/manual/test-provision-auth.mjs +0 -22
  350. package/test/manual/test-sandbox-render.js +0 -28
  351. package/test/manual/test-sdk-methods.js +0 -15
  352. package/test/manual/test-sdk-refactor.js +0 -53
  353. package/test/manual/test-stack-trace.mjs +0 -57
  354. package/test/manual/verify-element-api.js +0 -89
  355. package/test/manual/verify-types.js +0 -0
  356. package/test/manual-unawaited-promise.test.mjs +0 -31
  357. package/testdriver-plugin/skills/actions/SKILL.md +0 -93
  358. package/testdriver-plugin/skills/assertions/SKILL.md +0 -77
  359. package/testdriver-plugin/skills/caching/SKILL.md +0 -66
  360. package/testdriver-plugin/skills/creating-tests/SKILL.md +0 -104
  361. package/testdriver-plugin/skills/finding-elements/SKILL.md +0 -77
  362. package/testdriver-plugin/skills/github-actions/SKILL.md +0 -100
  363. package/testdriver-plugin/skills/running-tests/SKILL.md +0 -77
  364. package/testdriver-plugin/skills/secrets/SKILL.md +0 -87
  365. package/testdriver-plugin/skills/self-hosting/SKILL.md +0 -89
  366. package/testdriver-plugin/skills/setup/SKILL.md +0 -76
  367. package/testdriver-plugin/skills/variables/SKILL.md +0 -88
  368. package/testdriver-plugin/skills/waiting/SKILL.md +0 -72
  369. package/vitest.config.mjs +0 -29
@@ -0,0 +1,410 @@
1
+ ---
2
+ name: testdriver:mcp-workflow
3
+ description: Build TestDriver tests iteratively using MCP tools with visual feedback
4
+ ---
5
+
6
+ # TestDriver MCP Workflow
7
+
8
+ Build automated tests by directly controlling a sandbox through MCP tools. Every action returns a screenshot AND the generated code to add to your test file.
9
+
10
+ ## When to Use This Skill
11
+
12
+ Use this skill when:
13
+ - You have access to TestDriver MCP tools (`session_start`, `find`, `click`, etc.)
14
+ - User asks to "write a test", "automate this workflow", "check if X works"
15
+ - You need to build tests iteratively with visual feedback
16
+
17
+ ## Overview
18
+
19
+ Use MCP tools to:
20
+
21
+ 1. **Control the sandbox directly** - Click, type, scroll in real-time
22
+ 2. **See visual feedback** - Every action shows a screenshot with overlays
23
+ 3. **Get generated code** - Each successful action returns the code to add to your test file
24
+ 4. **Build tests incrementally** - Append code to test files as you go
25
+
26
+ ## Quick Start
27
+
28
+ ### 1. Start a Session
29
+
30
+ ```
31
+ session_start({ type: "chrome", url: "https://your-app.com" })
32
+ ```
33
+
34
+ This provisions a sandbox with Chrome and navigates to your URL. You'll see a screenshot and the provision code:
35
+
36
+ ```
37
+ Add to test file:
38
+ await testdriver.provision.chrome({ url: "https://your-app.com" });
39
+ ```
40
+
41
+ **For local development** (pointing to a custom API endpoint):
42
+
43
+ ```
44
+ session_start({
45
+ type: "chrome",
46
+ url: "https://your-app.com",
47
+ apiRoot: "https://your-ngrok-url.ngrok.io"
48
+ })
49
+ ```
50
+
51
+ **For self-hosted AWS instances** (your own Windows EC2):
52
+
53
+ ```
54
+ session_start({
55
+ type: "chrome",
56
+ url: "https://your-app.com",
57
+ os: "windows",
58
+ ip: "1.2.3.4" // IP from your AWS instance
59
+ })
60
+ ```
61
+
62
+ See [AWS Setup Guide](https://docs.testdriver.ai/v7/aws-setup) to deploy your own infrastructure.
63
+
64
+ ### 2. Interact with the App
65
+
66
+ Find elements and interact with them. Each action returns a screenshot AND generated code:
67
+
68
+ ```
69
+ find_and_click({ description: "Sign In button" })
70
+ → Returns: screenshot with element highlighted
71
+ → Add to test file: await testdriver.find("Sign In button").click();
72
+
73
+ type({ text: "user@example.com" })
74
+ → Returns: screenshot showing typed text
75
+ → Add to test file: await testdriver.type("user@example.com");
76
+ ```
77
+
78
+ ### 3. Check If Actions Succeeded
79
+
80
+ After performing actions, use `check` to verify they worked:
81
+
82
+ ```
83
+ check({ task: "Was the text entered into the field?" })
84
+ → Returns: AI analysis of whether the task completed, with screenshot
85
+
86
+ check({ task: "Did the button click navigate to a new page?" })
87
+ → Returns: AI compares previous screenshot to current state
88
+ ```
89
+
90
+ ### 4. Make Assertions (for Test Files)
91
+
92
+ Use `assert` for boolean pass/fail conditions that get recorded in test files:
93
+
94
+ ```
95
+ assert({ assertion: "the login form is visible" })
96
+ → Returns: pass/fail with screenshot
97
+ → Add to test file:
98
+ const assertResult = await testdriver.assert("the login form is visible");
99
+ expect(assertResult).toBeTruthy();
100
+ ```
101
+
102
+ ### 5. Write the Test File
103
+
104
+ As you perform actions, append the generated code to your test file:
105
+
106
+ ```javascript
107
+ /**
108
+ * Login Flow test
109
+ */
110
+ import { describe, expect, it } from "vitest";
111
+ import { TestDriver } from "testdriverai/lib/vitest/hooks.mjs";
112
+
113
+ describe("Login Flow", () => {
114
+ it("should complete login", async (context) => {
115
+ const testdriver = TestDriver(context);
116
+
117
+ // Append generated code here as you go:
118
+ await testdriver.provision.chrome({ url: "https://app.example.com" });
119
+ await testdriver.find("email input field").click();
120
+ await testdriver.type("user@example.com");
121
+ // ... more code as you perform actions
122
+ });
123
+ });
124
+ ```
125
+
126
+ ### 6. Verify the Test
127
+
128
+ Run the test from scratch to validate it works:
129
+
130
+ ```
131
+ verify({ testFile: "tests/login.test.mjs" })
132
+ ```
133
+
134
+ ## Tools Reference
135
+
136
+ ### Session Management
137
+
138
+ | Tool | Description |
139
+ |------|-------------|
140
+ | `session_start` | Start sandbox with browser/app, returns screenshot + provision code |
141
+ | `session_status` | Check session health and time remaining |
142
+ | `session_extend` | Add more time before session expires |
143
+
144
+ ### Element Interaction
145
+
146
+ Each tool returns a screenshot AND the generated code to add to your test file.
147
+
148
+ | Tool | Description |
149
+ |------|-------------|
150
+ | `find` | Locate element by description, returns ref for later use |
151
+ | `click` | Click on element ref |
152
+ | `find_and_click` | Find and click in one action |
153
+ | `type` | Type text into focused field |
154
+ | `press_keys` | Press keyboard shortcuts (e.g., `["ctrl", "a"]`) |
155
+ | `scroll` | Scroll page (up/down/left/right) |
156
+
157
+ ### Verification & Display
158
+
159
+ | Tool | Description |
160
+ |------|-------------|
161
+ | `check` | **For AI to understand screen state.** Analyzes current screen and tells you (the AI) whether a task/condition is met. Use this after actions to verify they worked. |
162
+ | `assert` | AI-powered boolean assertion for test files (pass/fail for CI). Returns generated code. |
163
+ | `screenshot` | **For showing the user the screen.** Captures and displays a screenshot. Does NOT return analysis to you (the AI). |
164
+ | `exec` | Execute JavaScript, shell, or PowerShell in sandbox. Returns generated code. |
165
+
166
+ ### Test Validation
167
+
168
+ | Tool | Description |
169
+ |------|-------------|
170
+ | `verify` | Run test file from scratch to validate it works |
171
+
172
+ ## Visual Feedback
173
+
174
+ Every tool returns a screenshot showing:
175
+
176
+ - **Element highlights** - Blue box around found elements
177
+ - **Click markers** - Red dot with ripple effect at click location
178
+ - **Scroll indicators** - Arrow showing scroll direction
179
+ - **Action status** - Success/failure with duration
180
+ - **Session info** - Time remaining before expiry
181
+
182
+ ## Workflow Best Practices
183
+
184
+ ### 1. Work Incrementally
185
+
186
+ Don't try to build the entire test at once:
187
+
188
+ ```
189
+ # Step 1: Get to login page
190
+ session_start({ url: "https://app.com" })
191
+ → Add to test: await testdriver.provision.chrome({ url: "https://app.com" });
192
+
193
+ # Step 2: Verify you're on the right page
194
+ check({ task: "Is this the login page?" })
195
+
196
+ # Step 3: Fill in email
197
+ find_and_click({ description: "email input field" })
198
+ → Add to test: await testdriver.find("email input field").click();
199
+
200
+ type({ text: "user@example.com" })
201
+ → Add to test: await testdriver.type("user@example.com");
202
+
203
+ # Step 4: Check if email was entered
204
+ check({ task: "Was the email entered correctly?" })
205
+
206
+ # Step 5: Continue with password...
207
+ ```
208
+
209
+ ### 2. Use Check After Actions
210
+
211
+ After each action, use `check` to verify it worked:
212
+
213
+ ```
214
+ find_and_click({ description: "Submit button" })
215
+ check({ task: "Was the form submitted?" })
216
+ ```
217
+
218
+ The `check` tool compares the previous screenshot (from before your action) with the current state, giving you AI analysis of what changed and whether the action succeeded.
219
+
220
+ ### 3. Understanding Screen State
221
+
222
+ **For AI understanding:** Use `check` to analyze the screen:
223
+ ```
224
+ check({ task: "Did the form submit successfully?" })
225
+ → Returns AI analysis you can read and understand
226
+ ```
227
+
228
+ **For user visibility:** Use `screenshot` to show the user:
229
+ ```
230
+ screenshot()
231
+ → Displays to user, no analysis returned to you
232
+ ```
233
+
234
+ Action tools (`find`, `click`, `find_and_click`) return screenshots automatically, which the user can see. But if you need to understand the state, use `check`.
235
+
236
+ ### 4. Handle Timing Issues
237
+
238
+ If elements take time to appear, use `find` with timeout:
239
+
240
+ ```
241
+ find({ description: "Loading complete indicator", timeout: 30000 })
242
+ ```
243
+
244
+ ### 5. Check Session Time
245
+
246
+ Sessions expire after 5 minutes by default. Use `session_status` to check time remaining and `session_extend` to add more time:
247
+
248
+ ```
249
+ session_status()
250
+ → "Time remaining: 45s"
251
+
252
+ session_extend({ additionalMs: 60000 })
253
+ → "New expiry: 105s"
254
+ ```
255
+
256
+ ### 6. Write Code as You Go
257
+
258
+ After each successful action, append the generated code to your test file. This ensures you don't lose progress and makes the test easier to debug.
259
+
260
+ ## Error Recovery
261
+
262
+ ### Element Not Found
263
+
264
+ If `find` fails:
265
+
266
+ 1. Check the screenshot to see what's actually on screen
267
+ 2. Adjust the element description to be more specific
268
+ 3. Wait for page load with timeout: `find({ description: "...", timeout: 10000 })`
269
+ 4. Scroll to find off-screen elements: `scroll({ direction: "down" })`
270
+
271
+ ### Session Expired
272
+
273
+ If the session expires:
274
+
275
+ 1. `session_start` again with the same URL
276
+ 2. Run the test with `verify` to get back to last state
277
+ 3. Continue from where you left off
278
+
279
+ ### Test Verification Fails
280
+
281
+ If `verify` fails:
282
+
283
+ 1. Check the error message and screenshot
284
+ 2. Review the test file to see the generated code
285
+ 3. Start a new session and manually test the failing step
286
+ 4. Adjust element descriptions or add waits as needed
287
+
288
+ ## Dependencies
289
+
290
+ When creating a new test project, use these exact dependencies:
291
+
292
+ **package.json:**
293
+ ```json
294
+ {
295
+ "type": "module",
296
+ "devDependencies": {
297
+ "testdriverai": "beta",
298
+ "vitest": "^4.0.0"
299
+ },
300
+ "scripts": {
301
+ "test": "vitest"
302
+ }
303
+ }
304
+ ```
305
+
306
+ **Important:** The package is `testdriverai` (NOT `@testdriverai/sdk`). Always install from the `beta` tag.
307
+
308
+ ## Test File Format
309
+
310
+ Create test files using this standard format. Append generated code inside the test function:
311
+
312
+ ```javascript
313
+ /**
314
+ * Login Flow test
315
+ */
316
+ import { describe, expect, it } from "vitest";
317
+ import { TestDriver } from "testdriverai/lib/vitest/hooks.mjs";
318
+
319
+ describe("Login Flow", () => {
320
+ it("should complete Login Flow", async (context) => {
321
+ const testdriver = TestDriver(context);
322
+
323
+ // Append generated code from each action here:
324
+ await testdriver.provision.chrome({ url: "https://app.example.com" });
325
+
326
+ await testdriver.find("email input field").click();
327
+ await testdriver.type("user@example.com");
328
+
329
+ await testdriver.find("password field").click();
330
+ await testdriver.type("secret123");
331
+
332
+ await testdriver.find("Sign In button").click();
333
+
334
+ const assertResult = await testdriver.assert("dashboard is visible");
335
+ expect(assertResult).toBeTruthy();
336
+ });
337
+ });
338
+ ```
339
+
340
+ ## Self-Hosted AWS Instances
341
+
342
+ You can use your own AWS-hosted Windows instances instead of TestDriver cloud. This gives you:
343
+
344
+ - **Flat license fee** - No device-second metering
345
+ - **Your own AI keys** - Use your OpenAI/Anthropic keys
346
+ - **Custom configuration** - Install custom software, configure networking
347
+ - **Full debugging access** - RDP into instances
348
+
349
+ ### Quick Setup
350
+
351
+ 1. **Deploy AWS infrastructure** using [CloudFormation](https://docs.testdriver.ai/v7/aws-setup)
352
+
353
+ 2. **Spawn an instance**:
354
+ ```bash
355
+ AWS_REGION=us-east-2 \
356
+ AMI_ID=ami-0504bf50fad62f312 \
357
+ AWS_LAUNCH_TEMPLATE_ID=lt-xxx \
358
+ bash setup/aws/spawn-runner.sh
359
+ ```
360
+ Output: `PUBLIC_IP=1.2.3.4`
361
+
362
+ 3. **Connect via session_start**:
363
+ ```
364
+ session_start({
365
+ type: "chrome",
366
+ url: "https://example.com",
367
+ os: "windows",
368
+ ip: "1.2.3.4"
369
+ })
370
+ ```
371
+
372
+ 4. **Terminate when done**:
373
+ ```bash
374
+ aws ec2 terminate-instances --instance-ids i-xxx --region us-east-2
375
+ ```
376
+
377
+ ### Environment Variable
378
+
379
+ You can also set `TD_IP` environment variable in your MCP config instead of passing `ip` to each session:
380
+
381
+ ```json
382
+ {
383
+ "mcpServers": {
384
+ "testdriver": {
385
+ "env": {
386
+ "TD_API_KEY": "your-key",
387
+ "TD_IP": "1.2.3.4"
388
+ }
389
+ }
390
+ }
391
+ }
392
+ ```
393
+
394
+ ## Tips
395
+
396
+ 1. **Every action returns generated code** - Look for "Add to test file:" in responses and append that code
397
+
398
+ 2. **Use `check` to understand the screen** - This is how you (the AI) see and analyze the current state
399
+
400
+ 3. **Use `screenshot` to show the user** - This displays the screen to the user, but does NOT return analysis to you
401
+
402
+ 4. **Use `check` after every action** - Verify your actions succeeded before moving on
403
+
404
+ 5. **Be specific with element descriptions** - "the blue Sign In button in the header" is better than "button"
405
+
406
+ 6. **Use `check` for verification, `assert` for test files** - `check` gives detailed AI analysis, `assert` gives boolean pass/fail for CI
407
+
408
+ 7. **Write code incrementally** - Append generated code to your test file after each successful action
409
+
410
+ 8. **Extend session proactively** - If you have complex workflows, extend before you run out of time
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "mouseDown"
3
- description: "Press the mouse button without releasing it"
4
- icon: "arrow-pointer"
2
+ name: testdriver:mouse-down
3
+ description: Press the mouse button without releasing it
5
4
  ---
5
+ <!-- Generated from mouse-down.mdx. DO NOT EDIT. -->
6
6
 
7
7
  ## Overview
8
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "mouseUp"
3
- description: "Release the mouse button"
4
- icon: "arrow-pointer"
2
+ name: testdriver:mouse-up
3
+ description: Release the mouse button
5
4
  ---
5
+ <!-- Generated from mouse-up.mdx. DO NOT EDIT. -->
6
6
 
7
7
  ## Overview
8
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "Performing Actions"
3
- description: "Click, type, hover, scroll and more with TestDriver"
4
- icon: "computer-mouse"
2
+ name: testdriver:performing-actions
3
+ description: Click, type, hover, scroll and more with TestDriver
5
4
  ---
5
+ <!-- Generated from performing-actions.mdx. DO NOT EDIT. -->
6
6
 
7
7
  ## Performing Actions
8
8
 
@@ -1,9 +1,8 @@
1
1
  ---
2
- title: "pressKeys()"
3
- sidebarTitle: "pressKeys"
4
- description: "Press keyboard keys and shortcuts"
5
- icon: "keyboard"
2
+ name: testdriver:press-keys
3
+ description: Press keyboard keys and shortcuts
6
4
  ---
5
+ <!-- Generated from press-keys.mdx. DO NOT EDIT. -->
7
6
 
8
7
  ## Overview
9
8
 
@@ -1,9 +1,8 @@
1
1
  ---
2
- title: "Quick Start"
3
- sidebarTitle: "Quickstart"
4
- description: "Run your first computer-use test in minutes."
5
- icon: "rocket"
2
+ name: testdriver:quickstart
3
+ description: Run your first computer-use test in minutes.
6
4
  ---
5
+ <!-- Generated from quickstart.mdx. DO NOT EDIT. -->
7
6
 
8
7
  TestDriver makes it easy to write automated computer-use tests for web browsers, desktop apps, and more. Follow the directions below to run your first TestDriver test.
9
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "Reusable Code Snippets"
3
- description: "Build maintainable test suites with reusable code patterns"
4
- icon: "recycle"
2
+ name: testdriver:reusable-code
3
+ description: Build maintainable test suites with reusable code patterns
5
4
  ---
5
+ <!-- Generated from reusable-code.mdx. DO NOT EDIT. -->
6
6
 
7
7
  As your test suite grows, you'll want to extract common patterns into reusable code. This keeps tests DRY, readable, and easy to maintain.
8
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "rightClick"
3
- description: "Perform a right-click action to open context menus"
4
- icon: "bars"
2
+ name: testdriver:right-click
3
+ description: Perform a right-click action to open context menus
5
4
  ---
5
+ <!-- Generated from right-click.mdx. DO NOT EDIT. -->
6
6
 
7
7
  ## Overview
8
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "Running Tests"
3
- description: "Run TestDriver tests with Vitest test runner"
4
- icon: "play"
2
+ name: testdriver:running-tests
3
+ description: Run TestDriver tests with Vitest test runner
5
4
  ---
5
+ <!-- Generated from running-tests.mdx. DO NOT EDIT. -->
6
6
 
7
7
  Learn how to run TestDriver tests efficiently with Vitest's powerful test runner.
8
8
 
@@ -1,9 +1,8 @@
1
1
  ---
2
- title: "screenshot()"
3
- sidebarTitle: "screenshot"
4
- description: "Capture and save screenshots during test execution"
5
- icon: "camera"
2
+ name: testdriver:screenshot
3
+ description: Capture and save screenshots during test execution
6
4
  ---
5
+ <!-- Generated from screenshot.mdx. DO NOT EDIT. -->
7
6
 
8
7
  ## Overview
9
8
 
@@ -1,9 +1,8 @@
1
1
  ---
2
- title: "scroll()"
3
- sidebarTitle: "scroll"
4
- description: "Scroll pages and elements"
5
- icon: "arrows-up-down"
2
+ name: testdriver:scroll
3
+ description: Scroll pages and elements
6
4
  ---
5
+ <!-- Generated from scroll.mdx. DO NOT EDIT. -->
7
6
 
8
7
  ## Overview
9
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "Using Secrets"
3
- description: "Securely manage passwords and sensitive data in your tests"
4
- icon: "key"
2
+ name: testdriver:secrets
3
+ description: Securely manage passwords and sensitive data in your tests
5
4
  ---
5
+ <!-- Generated from secrets.mdx. DO NOT EDIT. -->
6
6
 
7
7
  Protect sensitive information like passwords, API keys, and tokens in your TestDriver tests.
8
8
 
@@ -1,9 +1,8 @@
1
1
  ---
2
- title: "Self-Hosted"
3
- sidebarTitle: "Self-Hosted"
4
- description: "Unlimited test execution, complete privacy, and the ability to customize everything — all for a predictable flat license fee."
5
- icon: "server"
2
+ name: testdriver:self-hosted
3
+ description: Unlimited test execution, complete privacy, and the ability to customize everything — all for a predictable flat license fee.
6
4
  ---
5
+ <!-- Generated from self-hosted.mdx. DO NOT EDIT. -->
7
6
 
8
7
  Self-hosted pricing is based on **parallel test capacity**: the number of tests you can run simultaneously on **your infrastructure**.
9
8
 
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: testdriver:testdriver
3
+ description: Help the user work with TestDriver tests and query test results via the TestDriver MCP server.
4
+ ---
5
+
6
+ You are an expert TestDriver assistant.
7
+
8
+ When helping the user:
9
+
10
+ 1. **For writing or editing tests**
11
+
12
+ - Follow the guidance in `agents.md` from the `testdriverai` repo:
13
+ - Use Vitest with `.test.mjs`.
14
+ - Use the two-file pattern (`setup.test.mjs` + `experiment.test.mjs`).
15
+ - Prefer explicit steps with `find`, `click`, `type`, `assert`, and `screenshot`.
16
+ - Run the tests yourself using `npx vitest run` to verify functionality.
17
+
18
+ 2. **For inspecting results / failures**
19
+
20
+ - Use the TestDriver MCP server tools:
21
+ - `list_test_runs` to see recent runs (filter by status, branch, file, suite, platform).
22
+ - `get_test_run_detail` to inspect a specific run and its test cases.
23
+ - `list_test_cases` to see individual tests, errors, and replays.
24
+ - `get_filter_options` to discover available branches, files, suites, and test names.
25
+ - Summarize failing tests, group by file/suite, and reference any replay IDs or links.
26
+
27
+ 3. **General behavior**
28
+ - Prefer reading existing tests and docs before suggesting large refactors.
29
+ - When the user mentions "plugin" or "MCP", explain that this plugin uses:
30
+ - The HTTP MCP endpoint at `/api/v1/mcp` (configured in `.mcp.json`),
31
+ - This skill definition plus the `testdriverai/agents.md` guide.
@@ -1,9 +1,8 @@
1
1
  ---
2
- title: "type()"
3
- sidebarTitle: "type"
4
- description: "Type text into focused input fields"
5
- icon: "keyboard"
2
+ name: testdriver:type
3
+ description: Type text into focused input fields
6
4
  ---
5
+ <!-- Generated from type.mdx. DO NOT EDIT. -->
7
6
 
8
7
  ## Overview
9
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "Using Variables"
3
- description: "Use dynamic data and secure secrets in your tests"
4
- icon: "square-root-variable"
2
+ name: testdriver:variables
3
+ description: Use dynamic data and secure secrets in your tests
5
4
  ---
5
+ <!-- Generated from variables.mdx. DO NOT EDIT. -->
6
6
 
7
7
  Scale your testing with dynamic data and secure secrets management. Choose the right approach based on your testing needs.
8
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "Waiting for Elements"
3
- description: "Handle async operations and prevent flaky tests"
4
- icon: "clock"
2
+ name: testdriver:waiting-for-elements
3
+ description: Handle async operations and prevent flaky tests
5
4
  ---
5
+ <!-- Generated from waiting-for-elements.mdx. DO NOT EDIT. -->
6
6
 
7
7
  ## Waiting for Elements
8
8
 
@@ -1,8 +1,8 @@
1
1
  ---
2
- title: "What is TestDriver?"
3
- description: "Reliably test your most difficult user flows"
4
- icon: "circle-info"
2
+ name: testdriver:what-is-testdriver
3
+ description: Reliably test your most difficult user flows
5
4
  ---
5
+ <!-- Generated from what-is-testdriver.mdx. DO NOT EDIT. -->
6
6
 
7
7
  ## The problem with modern testing tools
8
8