@testdriverai/agent 7.8.0-canary.10

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 (528) hide show
  1. package/.claude/settings.local.json +7 -0
  2. package/.env.example +4 -0
  3. package/.prettierignore +4 -0
  4. package/.prettierrc +1 -0
  5. package/CHANGELOG.md +953 -0
  6. package/README.md +81 -0
  7. package/agent/events.js +135 -0
  8. package/agent/index.js +2450 -0
  9. package/agent/interface.js +35 -0
  10. package/agent/lib/analytics.js +22 -0
  11. package/agent/lib/censorship.js +75 -0
  12. package/agent/lib/commander.js +246 -0
  13. package/agent/lib/commands.js +1684 -0
  14. package/agent/lib/config.js +60 -0
  15. package/agent/lib/generator.js +91 -0
  16. package/agent/lib/http.js +144 -0
  17. package/agent/lib/logger.js +56 -0
  18. package/agent/lib/outputs.js +29 -0
  19. package/agent/lib/parser.js +209 -0
  20. package/agent/lib/redraw.js +386 -0
  21. package/agent/lib/resources/cursor-2.png +0 -0
  22. package/agent/lib/sandbox.js +1104 -0
  23. package/agent/lib/sdk.js +633 -0
  24. package/agent/lib/session.js +25 -0
  25. package/agent/lib/source-mapper.js +342 -0
  26. package/agent/lib/subimage/index.js +77 -0
  27. package/agent/lib/subimage/opencv.js +69 -0
  28. package/agent/lib/system.js +204 -0
  29. package/agent/lib/theme.js +14 -0
  30. package/agent/lib/valid-version.js +21 -0
  31. package/agent/lib/validation.js +169 -0
  32. package/ai/.claude-plugin/plugin.json +9 -0
  33. package/ai/agents/testdriver.md +638 -0
  34. package/ai/skills/testdriver-ai/SKILL.md +204 -0
  35. package/ai/skills/testdriver-assert/SKILL.md +315 -0
  36. package/ai/skills/testdriver-aws-setup/SKILL.md +448 -0
  37. package/ai/skills/testdriver-cache/SKILL.md +221 -0
  38. package/ai/skills/testdriver-caching/SKILL.md +124 -0
  39. package/ai/skills/testdriver-captcha/SKILL.md +158 -0
  40. package/ai/skills/testdriver-ci-cd/SKILL.md +602 -0
  41. package/ai/skills/testdriver-click/SKILL.md +286 -0
  42. package/ai/skills/testdriver-client/SKILL.md +477 -0
  43. package/ai/skills/testdriver-cloud/SKILL.md +119 -0
  44. package/ai/skills/testdriver-customizing-devices/SKILL.md +319 -0
  45. package/ai/skills/testdriver-dashcam/SKILL.md +418 -0
  46. package/ai/skills/testdriver-debugging-with-screenshots/SKILL.md +401 -0
  47. package/ai/skills/testdriver-device-config/SKILL.md +317 -0
  48. package/ai/skills/testdriver-double-click/SKILL.md +102 -0
  49. package/ai/skills/testdriver-elements/SKILL.md +605 -0
  50. package/ai/skills/testdriver-enterprise/SKILL.md +114 -0
  51. package/ai/skills/testdriver-errors/SKILL.md +246 -0
  52. package/ai/skills/testdriver-events/SKILL.md +356 -0
  53. package/ai/skills/testdriver-examples/SKILL.md +7 -0
  54. package/ai/skills/testdriver-exec/SKILL.md +317 -0
  55. package/ai/skills/testdriver-find/SKILL.md +829 -0
  56. package/ai/skills/testdriver-focus-application/SKILL.md +293 -0
  57. package/ai/skills/testdriver-generating-tests/SKILL.md +36 -0
  58. package/ai/skills/testdriver-hover/SKILL.md +278 -0
  59. package/ai/skills/testdriver-locating-elements/SKILL.md +71 -0
  60. package/ai/skills/testdriver-making-assertions/SKILL.md +32 -0
  61. package/ai/skills/testdriver-mcp/SKILL.md +7 -0
  62. package/ai/skills/testdriver-mcp-workflow/SKILL.md +410 -0
  63. package/ai/skills/testdriver-mouse-down/SKILL.md +161 -0
  64. package/ai/skills/testdriver-mouse-up/SKILL.md +164 -0
  65. package/ai/skills/testdriver-parse/SKILL.md +236 -0
  66. package/ai/skills/testdriver-performing-actions/SKILL.md +54 -0
  67. package/ai/skills/testdriver-press-keys/SKILL.md +348 -0
  68. package/ai/skills/testdriver-provision/SKILL.md +331 -0
  69. package/ai/skills/testdriver-quickstart/SKILL.md +144 -0
  70. package/ai/skills/testdriver-redraw/SKILL.md +214 -0
  71. package/ai/skills/testdriver-reusable-code/SKILL.md +249 -0
  72. package/ai/skills/testdriver-right-click/SKILL.md +123 -0
  73. package/ai/skills/testdriver-running-tests/SKILL.md +185 -0
  74. package/ai/skills/testdriver-screenshot/SKILL.md +248 -0
  75. package/ai/skills/testdriver-screenshots/SKILL.md +184 -0
  76. package/ai/skills/testdriver-scroll/SKILL.md +335 -0
  77. package/ai/skills/testdriver-secrets/SKILL.md +115 -0
  78. package/ai/skills/testdriver-self-hosted/SKILL.md +65 -0
  79. package/ai/skills/testdriver-test-writer/SKILL.md +448 -0
  80. package/ai/skills/testdriver-testdriver/SKILL.md +628 -0
  81. package/ai/skills/testdriver-testdriver-mechanic/SKILL.md +165 -0
  82. package/ai/skills/testdriver-type/SKILL.md +357 -0
  83. package/ai/skills/testdriver-variables/SKILL.md +111 -0
  84. package/ai/skills/testdriver-wait/SKILL.md +50 -0
  85. package/ai/skills/testdriver-waiting-for-elements/SKILL.md +90 -0
  86. package/ai/skills/testdriver-what-is-testdriver/SKILL.md +54 -0
  87. package/bin/testdriverai.js +22 -0
  88. package/debugger/bg.png +0 -0
  89. package/debugger/icon.png +0 -0
  90. package/debugger/index.html +469 -0
  91. package/debugger/td.png +0 -0
  92. package/debugger/tray-buffered.png +0 -0
  93. package/debugger/tray.png +0 -0
  94. package/docs/GITHUB_COMMENTS.md +330 -0
  95. package/docs/GITHUB_COMMENTS_ANNOUNCEMENT.md +167 -0
  96. package/docs/QUICK-START-GITHUB-COMMENTS.md +84 -0
  97. package/docs/TEST-GITHUB-COMMENTS.md +129 -0
  98. package/docs/_data/examples-manifest.json +177 -0
  99. package/docs/_data/examples-manifest.schema.json +41 -0
  100. package/docs/_scripts/extract-example-urls.js +165 -0
  101. package/docs/_scripts/generate-examples.js +560 -0
  102. package/docs/_scripts/generate-skills.js +154 -0
  103. package/docs/_scripts/link-replacer.js +164 -0
  104. package/docs/_scripts/upload-docs-to-openai.js +284 -0
  105. package/docs/changelog.mdx +161 -0
  106. package/docs/claude-mcp-plugin.mdx +160 -0
  107. package/docs/docs.json +442 -0
  108. package/docs/github-integration-setup.md +266 -0
  109. package/docs/guide/best-practices-polling.mdx +174 -0
  110. package/docs/images/content/account/newprojectsettings.png +0 -0
  111. package/docs/images/content/account/projectpage.png +0 -0
  112. package/docs/images/content/account/projectreplays.png +0 -0
  113. package/docs/images/content/account/team-manage.png +0 -0
  114. package/docs/images/content/account/teampage.png +0 -0
  115. package/docs/images/content/extension/cursor.svg +1 -0
  116. package/docs/images/content/extension/vscode.svg +57 -0
  117. package/docs/images/content/extension/windsurf.svg +3 -0
  118. package/docs/images/content/parse/output.png +0 -0
  119. package/docs/images/content/self-hosted/launchtemplateid.png +0 -0
  120. package/docs/images/content/side-by-side.png +0 -0
  121. package/docs/images/content/vscode/ide-full.png +0 -0
  122. package/docs/images/content/vscode/running.png +0 -0
  123. package/docs/images/content/vscode/v7-chat.png +0 -0
  124. package/docs/images/content/vscode/v7-choose-agent.png +0 -0
  125. package/docs/images/content/vscode/v7-full.png +0 -0
  126. package/docs/images/content/vscode/v7-onboarding.png +0 -0
  127. package/docs/images/content/vscode/vscode-2-assert.png +0 -0
  128. package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
  129. package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
  130. package/docs/images/content/vscode/vscode-file-creation.png +0 -0
  131. package/docs/images/content/vscode/vscode-install.png +0 -0
  132. package/docs/images/content/vscode/vscode-overview.png +0 -0
  133. package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
  134. package/docs/images/content/vscode/vscode-stopchat.png +0 -0
  135. package/docs/images/content/vscode/vscode-stoptest.png +0 -0
  136. package/docs/images/content/vscode/vscode-tdservice.png +0 -0
  137. package/docs/images/content/vscode/vscode-test-output.png +0 -0
  138. package/docs/images/content/vscode/vscode-testhistory.png +0 -0
  139. package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
  140. package/docs/images/content/vscode/vscode-testpane.png +0 -0
  141. package/docs/images/template/dark.png +0 -0
  142. package/docs/images/template/icon.png +0 -0
  143. package/docs/images/template/light.png +0 -0
  144. package/docs/snippets/calendar-link.mdx +4 -0
  145. package/docs/snippets/gitignore-warning.mdx +7 -0
  146. package/docs/snippets/lifecycle-warning.mdx +6 -0
  147. package/docs/snippets/test-prereqs.mdx +12 -0
  148. package/docs/snippets/tests/assert-replay.mdx +7 -0
  149. package/docs/snippets/tests/assert-yaml.mdx +8 -0
  150. package/docs/snippets/tests/exec-js-replay.mdx +7 -0
  151. package/docs/snippets/tests/exec-js-yaml.mdx +32 -0
  152. package/docs/snippets/tests/exec-shell-replay.mdx +7 -0
  153. package/docs/snippets/tests/exec-shell-yaml.mdx +15 -0
  154. package/docs/snippets/tests/hover-image-replay.mdx +7 -0
  155. package/docs/snippets/tests/hover-image-yaml.mdx +17 -0
  156. package/docs/snippets/tests/hover-text-replay.mdx +7 -0
  157. package/docs/snippets/tests/hover-text-with-description-replay.mdx +7 -0
  158. package/docs/snippets/tests/hover-text-with-description-yaml.mdx +24 -0
  159. package/docs/snippets/tests/hover-text-yaml.mdx +14 -0
  160. package/docs/snippets/tests/match-image-replay.mdx +7 -0
  161. package/docs/snippets/tests/match-image-yaml.mdx +17 -0
  162. package/docs/snippets/tests/press-keys-replay.mdx +7 -0
  163. package/docs/snippets/tests/press-keys-yaml.mdx +36 -0
  164. package/docs/snippets/tests/remember-replay.mdx +7 -0
  165. package/docs/snippets/tests/remember-yaml.mdx +28 -0
  166. package/docs/snippets/tests/scroll-replay.mdx +7 -0
  167. package/docs/snippets/tests/scroll-until-image-replay.mdx +7 -0
  168. package/docs/snippets/tests/scroll-until-image-yaml.mdx +14 -0
  169. package/docs/snippets/tests/scroll-until-text-replay.mdx +7 -0
  170. package/docs/snippets/tests/scroll-until-text-yaml.mdx +17 -0
  171. package/docs/snippets/tests/scroll-yaml.mdx +30 -0
  172. package/docs/snippets/tests/type-repeated-replay.mdx +7 -0
  173. package/docs/snippets/tests/type-repeated-yaml.mdx +22 -0
  174. package/docs/snippets/tests/type-replay.mdx +7 -0
  175. package/docs/snippets/tests/type-yaml.mdx +28 -0
  176. package/docs/snippets/tests/wait-for-image-replay.mdx +7 -0
  177. package/docs/snippets/tests/wait-for-image-yaml.mdx +18 -0
  178. package/docs/snippets/tests/wait-for-text-replay.mdx +7 -0
  179. package/docs/snippets/tests/wait-for-text-yaml.mdx +18 -0
  180. package/docs/snippets/tests/wait-replay.mdx +7 -0
  181. package/docs/snippets/tests/wait-yaml.mdx +13 -0
  182. package/docs/styles.css +65 -0
  183. package/docs/v6/account/dashboard.mdx +16 -0
  184. package/docs/v6/account/enterprise.mdx +110 -0
  185. package/docs/v6/account/pricing.mdx +33 -0
  186. package/docs/v6/account/projects.mdx +33 -0
  187. package/docs/v6/account/team.mdx +35 -0
  188. package/docs/v6/action/ami.mdx +109 -0
  189. package/docs/v6/action/performance.mdx +105 -0
  190. package/docs/v6/action/secrets.mdx +93 -0
  191. package/docs/v6/apps/chrome-extensions.mdx +48 -0
  192. package/docs/v6/apps/desktop-apps.mdx +93 -0
  193. package/docs/v6/apps/mobile-apps.mdx +26 -0
  194. package/docs/v6/apps/static-websites.mdx +54 -0
  195. package/docs/v6/apps/tauri-apps.mdx +361 -0
  196. package/docs/v6/bugs/jira.mdx +232 -0
  197. package/docs/v6/cli/overview.mdx +66 -0
  198. package/docs/v6/commands/assert.mdx +45 -0
  199. package/docs/v6/commands/exec.mdx +276 -0
  200. package/docs/v6/commands/focus-application.mdx +44 -0
  201. package/docs/v6/commands/hover-image.mdx +69 -0
  202. package/docs/v6/commands/hover-text.mdx +47 -0
  203. package/docs/v6/commands/if.mdx +53 -0
  204. package/docs/v6/commands/match-image.mdx +67 -0
  205. package/docs/v6/commands/press-keys.mdx +87 -0
  206. package/docs/v6/commands/remember.mdx +49 -0
  207. package/docs/v6/commands/run.mdx +44 -0
  208. package/docs/v6/commands/scroll-until-image.mdx +66 -0
  209. package/docs/v6/commands/scroll-until-text.mdx +60 -0
  210. package/docs/v6/commands/scroll.mdx +69 -0
  211. package/docs/v6/commands/type.mdx +45 -0
  212. package/docs/v6/commands/wait-for-image.mdx +54 -0
  213. package/docs/v6/commands/wait-for-text.mdx +48 -0
  214. package/docs/v6/commands/wait.mdx +45 -0
  215. package/docs/v6/exporting/junit.mdx +218 -0
  216. package/docs/v6/exporting/playwright.mdx +197 -0
  217. package/docs/v6/features/auto-healing.mdx +144 -0
  218. package/docs/v6/features/generation.mdx +116 -0
  219. package/docs/v6/features/parallel-testing.mdx +151 -0
  220. package/docs/v6/features/reusable-snippets.mdx +131 -0
  221. package/docs/v6/features/selectorless.mdx +80 -0
  222. package/docs/v6/features/visual-assertions.mdx +139 -0
  223. package/docs/v6/getting-started/ci.mdx +146 -0
  224. package/docs/v6/getting-started/cli.mdx +91 -0
  225. package/docs/v6/getting-started/editing.mdx +100 -0
  226. package/docs/v6/getting-started/playwright.mdx +342 -0
  227. package/docs/v6/getting-started/running.mdx +48 -0
  228. package/docs/v6/getting-started/self-hosting.mdx +408 -0
  229. package/docs/v6/getting-started/vscode.mdx +88 -0
  230. package/docs/v6/guide/assertions.mdx +189 -0
  231. package/docs/v6/guide/authentication.mdx +136 -0
  232. package/docs/v6/guide/code.mdx +65 -0
  233. package/docs/v6/guide/dashcam.mdx +118 -0
  234. package/docs/v6/guide/environment-variables.mdx +26 -0
  235. package/docs/v6/guide/lifecycle.mdx +242 -0
  236. package/docs/v6/guide/locating.mdx +141 -0
  237. package/docs/v6/guide/protips.mdx +43 -0
  238. package/docs/v6/guide/variables.mdx +143 -0
  239. package/docs/v6/guide/waiting.mdx +130 -0
  240. package/docs/v6/importing/csv.mdx +196 -0
  241. package/docs/v6/importing/gherkin.mdx +143 -0
  242. package/docs/v6/importing/jira.mdx +164 -0
  243. package/docs/v6/importing/testrail.mdx +162 -0
  244. package/docs/v6/integrations/electron.mdx +146 -0
  245. package/docs/v6/integrations/netlify.mdx +100 -0
  246. package/docs/v6/integrations/vercel.mdx +125 -0
  247. package/docs/v6/interactive/explore.mdx +99 -0
  248. package/docs/v6/interactive/run.mdx +52 -0
  249. package/docs/v6/interactive/save.mdx +63 -0
  250. package/docs/v6/overview/comparison.mdx +101 -0
  251. package/docs/v6/overview/faq.mdx +162 -0
  252. package/docs/v6/overview/performance.mdx +52 -0
  253. package/docs/v6/overview/quickstart.mdx +137 -0
  254. package/docs/v6/overview/what-is-testdriver.mdx +85 -0
  255. package/docs/v6/scenarios/ai-chatbot.mdx +28 -0
  256. package/docs/v6/scenarios/cookie-banner.mdx +32 -0
  257. package/docs/v6/scenarios/file-upload.mdx +33 -0
  258. package/docs/v6/scenarios/form-filling.mdx +32 -0
  259. package/docs/v6/scenarios/log-in.mdx +75 -0
  260. package/docs/v6/scenarios/pdf-generation.mdx +25 -0
  261. package/docs/v6/scenarios/spell-check.mdx +22 -0
  262. package/docs/v6/security/action.mdx +84 -0
  263. package/docs/v6/security/agent.mdx +73 -0
  264. package/docs/v6/security/platform.mdx +77 -0
  265. package/docs/v6/tutorials/advanced-test.mdx +81 -0
  266. package/docs/v6/tutorials/basic-test.mdx +45 -0
  267. package/docs/v7/_drafts/agents.mdx +843 -0
  268. package/docs/v7/_drafts/architecture.mdx +399 -0
  269. package/docs/v7/_drafts/auto-cache-key.mdx +167 -0
  270. package/docs/v7/_drafts/awesome-logs-quick-ref.mdx +100 -0
  271. package/docs/v7/_drafts/best-practices.mdx +486 -0
  272. package/docs/v7/_drafts/caching-ai.mdx +215 -0
  273. package/docs/v7/_drafts/caching-selectors.mdx +424 -0
  274. package/docs/v7/_drafts/caching.mdx +366 -0
  275. package/docs/v7/_drafts/cli-to-sdk-migration.mdx +425 -0
  276. package/docs/v7/_drafts/commands/assert.mdx +45 -0
  277. package/docs/v7/_drafts/commands/exec.mdx +276 -0
  278. package/docs/v7/_drafts/commands/focus-application.mdx +44 -0
  279. package/docs/v7/_drafts/commands/hover-image.mdx +69 -0
  280. package/docs/v7/_drafts/commands/hover-text.mdx +47 -0
  281. package/docs/v7/_drafts/commands/if.mdx +53 -0
  282. package/docs/v7/_drafts/commands/match-image.mdx +67 -0
  283. package/docs/v7/_drafts/commands/press-keys.mdx +87 -0
  284. package/docs/v7/_drafts/commands/remember.mdx +49 -0
  285. package/docs/v7/_drafts/commands/run.mdx +44 -0
  286. package/docs/v7/_drafts/commands/scroll-until-image.mdx +66 -0
  287. package/docs/v7/_drafts/commands/scroll-until-text.mdx +60 -0
  288. package/docs/v7/_drafts/commands/scroll.mdx +69 -0
  289. package/docs/v7/_drafts/commands/type.mdx +45 -0
  290. package/docs/v7/_drafts/commands/wait-for-image.mdx +54 -0
  291. package/docs/v7/_drafts/commands/wait-for-text.mdx +48 -0
  292. package/docs/v7/_drafts/commands/wait.mdx +45 -0
  293. package/docs/v7/_drafts/configuration.mdx +378 -0
  294. package/docs/v7/_drafts/contributing.mdx +174 -0
  295. package/docs/v7/_drafts/core.mdx +458 -0
  296. package/docs/v7/_drafts/dashcam-title-feature.mdx +89 -0
  297. package/docs/v7/_drafts/debugging.mdx +349 -0
  298. package/docs/v7/_drafts/error-handling.mdx +501 -0
  299. package/docs/v7/_drafts/faq.mdx +393 -0
  300. package/docs/v7/_drafts/hooks.mdx +360 -0
  301. package/docs/v7/_drafts/init-command.mdx +95 -0
  302. package/docs/v7/_drafts/installation.mdx +420 -0
  303. package/docs/v7/_drafts/migration.mdx +562 -0
  304. package/docs/v7/_drafts/observable.mdx +604 -0
  305. package/docs/v7/_drafts/playwright.mdx +342 -0
  306. package/docs/v7/_drafts/plugin-migration.mdx +220 -0
  307. package/docs/v7/_drafts/powerful.mdx +419 -0
  308. package/docs/v7/_drafts/presets.mdx +210 -0
  309. package/docs/v7/_drafts/progressive-disclosure.mdx +230 -0
  310. package/docs/v7/_drafts/prompt-cache.mdx +200 -0
  311. package/docs/v7/_drafts/provision.mdx +390 -0
  312. package/docs/v7/_drafts/quick-start-test-recording.mdx +214 -0
  313. package/docs/v7/_drafts/readme.mdx +135 -0
  314. package/docs/v7/_drafts/reports.mdx +414 -0
  315. package/docs/v7/_drafts/scalable.mdx +763 -0
  316. package/docs/v7/_drafts/screenshot.mdx +155 -0
  317. package/docs/v7/_drafts/sdk-awesome-logs.mdx +468 -0
  318. package/docs/v7/_drafts/sdk-browser-rendering.mdx +167 -0
  319. package/docs/v7/_drafts/sdk-migration.mdx +474 -0
  320. package/docs/v7/_drafts/sdk-v7-complete.mdx +345 -0
  321. package/docs/v7/_drafts/self-hosting.mdx +369 -0
  322. package/docs/v7/_drafts/test-recording.mdx +382 -0
  323. package/docs/v7/_drafts/troubleshooting.mdx +526 -0
  324. package/docs/v7/_drafts/vitest-plugin.mdx +477 -0
  325. package/docs/v7/_drafts/vitest.mdx +535 -0
  326. package/docs/v7/_drafts/writing-tests.mdx +25 -0
  327. package/docs/v7/ai.mdx +205 -0
  328. package/docs/v7/assert.mdx +316 -0
  329. package/docs/v7/aws-setup.mdx +449 -0
  330. package/docs/v7/cache.mdx +223 -0
  331. package/docs/v7/caching.mdx +128 -0
  332. package/docs/v7/captcha.mdx +159 -0
  333. package/docs/v7/ci-cd.mdx +603 -0
  334. package/docs/v7/click.mdx +287 -0
  335. package/docs/v7/client.mdx +478 -0
  336. package/docs/v7/copilot/auto-healing.mdx +265 -0
  337. package/docs/v7/copilot/creating-tests.mdx +156 -0
  338. package/docs/v7/copilot/github.mdx +143 -0
  339. package/docs/v7/copilot/running-tests.mdx +149 -0
  340. package/docs/v7/copilot/setup.mdx +143 -0
  341. package/docs/v7/customizing-devices.mdx +319 -0
  342. package/docs/v7/dashcam.mdx +419 -0
  343. package/docs/v7/debugging-with-screenshots.mdx +402 -0
  344. package/docs/v7/device-config.mdx +317 -0
  345. package/docs/v7/double-click.mdx +102 -0
  346. package/docs/v7/elements.mdx +606 -0
  347. package/docs/v7/enterprise.mdx +9 -0
  348. package/docs/v7/errors.mdx +248 -0
  349. package/docs/v7/events.mdx +358 -0
  350. package/docs/v7/examples/ai.mdx +72 -0
  351. package/docs/v7/examples/assert.mdx +72 -0
  352. package/docs/v7/examples/captcha-api.mdx +92 -0
  353. package/docs/v7/examples/chrome-extension.mdx +132 -0
  354. package/docs/v7/examples/drag-and-drop.mdx +100 -0
  355. package/docs/v7/examples/element-not-found.mdx +67 -0
  356. package/docs/v7/examples/exec-output.mdx +85 -0
  357. package/docs/v7/examples/exec-pwsh.mdx +83 -0
  358. package/docs/v7/examples/focus-window.mdx +62 -0
  359. package/docs/v7/examples/hover-image.mdx +94 -0
  360. package/docs/v7/examples/hover-text.mdx +69 -0
  361. package/docs/v7/examples/installer.mdx +91 -0
  362. package/docs/v7/examples/launch-vscode-linux.mdx +101 -0
  363. package/docs/v7/examples/match-image.mdx +96 -0
  364. package/docs/v7/examples/press-keys.mdx +92 -0
  365. package/docs/v7/examples/scroll-keyboard.mdx +79 -0
  366. package/docs/v7/examples/scroll-until-image.mdx +81 -0
  367. package/docs/v7/examples/scroll-until-text.mdx +109 -0
  368. package/docs/v7/examples/scroll.mdx +81 -0
  369. package/docs/v7/examples/type.mdx +92 -0
  370. package/docs/v7/examples/windows-installer.mdx +89 -0
  371. package/docs/v7/exec.mdx +318 -0
  372. package/docs/v7/find.mdx +830 -0
  373. package/docs/v7/focus-application.mdx +294 -0
  374. package/docs/v7/generating-tests.mdx +36 -0
  375. package/docs/v7/hosted.mdx +158 -0
  376. package/docs/v7/hover.mdx +279 -0
  377. package/docs/v7/locating-elements.mdx +71 -0
  378. package/docs/v7/making-assertions.mdx +32 -0
  379. package/docs/v7/mcp.mdx +9 -0
  380. package/docs/v7/mouse-down.mdx +161 -0
  381. package/docs/v7/mouse-up.mdx +164 -0
  382. package/docs/v7/parse.mdx +237 -0
  383. package/docs/v7/performing-actions.mdx +54 -0
  384. package/docs/v7/press-keys.mdx +349 -0
  385. package/docs/v7/provision.mdx +333 -0
  386. package/docs/v7/quickstart.mdx +173 -0
  387. package/docs/v7/redraw.mdx +216 -0
  388. package/docs/v7/reusable-code.mdx +249 -0
  389. package/docs/v7/right-click.mdx +123 -0
  390. package/docs/v7/running-tests.mdx +185 -0
  391. package/docs/v7/screenshot.mdx +249 -0
  392. package/docs/v7/screenshots.mdx +186 -0
  393. package/docs/v7/scroll.mdx +336 -0
  394. package/docs/v7/secrets.mdx +115 -0
  395. package/docs/v7/self-hosted.mdx +149 -0
  396. package/docs/v7/type.mdx +358 -0
  397. package/docs/v7/variables.mdx +111 -0
  398. package/docs/v7/wait.mdx +52 -0
  399. package/docs/v7/waiting-for-elements.mdx +90 -0
  400. package/docs/v7/what-is-testdriver.mdx +54 -0
  401. package/eslint.config.js +67 -0
  402. package/examples/ai.test.mjs +31 -0
  403. package/examples/assert.test.mjs +47 -0
  404. package/examples/chrome-extension.test.mjs +97 -0
  405. package/examples/config.mjs +5 -0
  406. package/examples/element-not-found.test.mjs +27 -0
  407. package/examples/exec-output.test.mjs +60 -0
  408. package/examples/exec-pwsh.test.mjs +58 -0
  409. package/examples/findall-coffee-icons.test.mjs +42 -0
  410. package/examples/focus-window.test.mjs +37 -0
  411. package/examples/formatted-logging.test.mjs +27 -0
  412. package/examples/hover-image.test.mjs +53 -0
  413. package/examples/hover-text-with-description.test.mjs +57 -0
  414. package/examples/hover-text.test.mjs +28 -0
  415. package/examples/installer.test.mjs +50 -0
  416. package/examples/launch-vscode-linux.test.mjs +55 -0
  417. package/examples/match-image.test.mjs +55 -0
  418. package/examples/parse.test.mjs +19 -0
  419. package/examples/press-keys.test.mjs +44 -0
  420. package/examples/prompt.test.mjs +34 -0
  421. package/examples/scroll-keyboard.test.mjs +38 -0
  422. package/examples/scroll-until-image.test.mjs +40 -0
  423. package/examples/scroll.test.mjs +42 -0
  424. package/examples/type.test.mjs +46 -0
  425. package/examples/windows-installer.test.mjs +54 -0
  426. package/index.js +2 -0
  427. package/interfaces/cli/commands/init.js +438 -0
  428. package/interfaces/cli/commands/setup.js +382 -0
  429. package/interfaces/cli/lib/base.js +285 -0
  430. package/interfaces/cli.js +20 -0
  431. package/interfaces/junit-reporter.js +290 -0
  432. package/interfaces/logger.js +388 -0
  433. package/interfaces/readline.js +234 -0
  434. package/interfaces/shared-test-state.mjs +64 -0
  435. package/interfaces/vitest-plugin.d.ts +115 -0
  436. package/interfaces/vitest-plugin.mjs +1698 -0
  437. package/lib/captcha/solver.js +358 -0
  438. package/lib/core/Dashcam.js +533 -0
  439. package/lib/core/index.d.ts +172 -0
  440. package/lib/core/index.js +12 -0
  441. package/lib/environments.json +18 -0
  442. package/lib/github-comment-formatter.js +263 -0
  443. package/lib/github-comment.mjs +452 -0
  444. package/lib/init-project.js +575 -0
  445. package/lib/presets/index.mjs +331 -0
  446. package/lib/resolve-channel.js +46 -0
  447. package/lib/sentry.js +417 -0
  448. package/lib/vitest/hooks.d.ts +57 -0
  449. package/lib/vitest/hooks.mjs +674 -0
  450. package/lib/vitest/setup-aws.mjs +247 -0
  451. package/lib/vitest/setup-self-hosted.mjs +151 -0
  452. package/lib/vitest/setup.mjs +46 -0
  453. package/manual/captcha-api.test.mjs +51 -0
  454. package/manual/drag-and-drop.test.mjs +59 -0
  455. package/manual/flake-diffthreshold-001.test.mjs +9 -0
  456. package/manual/flake-diffthreshold-01.test.mjs +9 -0
  457. package/manual/flake-diffthreshold-05.test.mjs +9 -0
  458. package/manual/flake-noredraw-cache.test.mjs +9 -0
  459. package/manual/flake-noredraw-nocache.test.mjs +9 -0
  460. package/manual/flake-redraw-cache.test.mjs +9 -0
  461. package/manual/flake-redraw-nocache.test.mjs +9 -0
  462. package/manual/flake-rocket-match.test.mjs +30 -0
  463. package/manual/flake-shared.mjs +51 -0
  464. package/manual/no-provision.test.mjs +31 -0
  465. package/manual/packer-hover-image.test.mjs +176 -0
  466. package/manual/scroll-until-text.test.mjs +68 -0
  467. package/manual/test-init-command.js +223 -0
  468. package/mcp-server/README.md +322 -0
  469. package/mcp-server/dist/codegen.d.ts +9 -0
  470. package/mcp-server/dist/codegen.js +165 -0
  471. package/mcp-server/dist/mcp-app.html +114 -0
  472. package/mcp-server/dist/package.json +1 -0
  473. package/mcp-server/dist/provision-types.d.ts +290 -0
  474. package/mcp-server/dist/provision-types.js +174 -0
  475. package/mcp-server/dist/server.d.ts +6 -0
  476. package/mcp-server/dist/server.mjs +1925 -0
  477. package/mcp-server/dist/session.d.ts +85 -0
  478. package/mcp-server/dist/session.js +152 -0
  479. package/mcp-server/mcp-app.html +28 -0
  480. package/mcp-server/mcp-config.example.json +19 -0
  481. package/mcp-server/package-lock.json +4027 -0
  482. package/mcp-server/package.json +31 -0
  483. package/mcp-server/src/codegen.ts +189 -0
  484. package/mcp-server/src/mcp-app.css +360 -0
  485. package/mcp-server/src/mcp-app.ts +547 -0
  486. package/mcp-server/src/provision-types.ts +209 -0
  487. package/mcp-server/src/server.ts +2391 -0
  488. package/mcp-server/src/session.ts +194 -0
  489. package/mcp-server/tsconfig.json +16 -0
  490. package/mcp-server/vite.config.ts +23 -0
  491. package/package.json +158 -0
  492. package/schema.json +1046 -0
  493. package/scripts/generate-skills.js +94 -0
  494. package/sdk-log-formatter.js +1157 -0
  495. package/sdk.d.ts +1486 -0
  496. package/sdk.js +4336 -0
  497. package/setup/aws/cloudformation.yaml +463 -0
  498. package/setup/aws/disable-defender.sh +42 -0
  499. package/setup/aws/install-dev-runner.sh +79 -0
  500. package/setup/aws/spawn-runner.sh +289 -0
  501. package/test/captcha-solver.test.mjs +152 -0
  502. package/test/chrome-remote-debugging.test.mjs +66 -0
  503. package/test/duckduckgo/experiment.test.mjs +28 -0
  504. package/test/duckduckgo/setup.test.mjs +29 -0
  505. package/test/manual/debug-locate-response.js +82 -0
  506. package/test/manual/reconnect-provision.test.mjs +49 -0
  507. package/test/manual/test-console-logs.test.mjs +42 -0
  508. package/test/manual/test-find-api.js +73 -0
  509. package/test/manual/test-init.sh +54 -0
  510. package/test/manual/test-prompt-cache.js +97 -0
  511. package/test/manual/test-provision-auth.mjs +22 -0
  512. package/test/manual/test-sandbox-render.js +29 -0
  513. package/test/manual/test-sdk-methods.js +15 -0
  514. package/test/manual/test-sdk-refactor.js +53 -0
  515. package/test/manual/test-stack-trace.mjs +57 -0
  516. package/test/manual/verify-element-api.js +89 -0
  517. package/test/manual/verify-types.js +0 -0
  518. package/test/manual-unawaited-promise.test.mjs +31 -0
  519. package/vitest.config.mjs +58 -0
  520. package/vitest.runner.config.mjs +33 -0
  521. package/vscode-extension/.vscodeignore +12 -0
  522. package/vscode-extension/README.md +94 -0
  523. package/vscode-extension/media/icon.png +0 -0
  524. package/vscode-extension/package-lock.json +4126 -0
  525. package/vscode-extension/package.json +86 -0
  526. package/vscode-extension/src/extension.ts +829 -0
  527. package/vscode-extension/testdriverai-0.1.0.vsix +0 -0
  528. package/vscode-extension/tsconfig.json +16 -0
@@ -0,0 +1,18 @@
1
+ ```yaml highlight={14-17}
2
+ version: 6.0.0
3
+ steps:
4
+ - prompt: go to testdriver.ai and wait for the hero image to load
5
+ commands:
6
+ - command: press-keys
7
+ keys:
8
+ - ctrl
9
+ - l
10
+ - command: type
11
+ text: testdriver.ai
12
+ - command: press-keys
13
+ keys:
14
+ - enter
15
+ - command: wait-for-image
16
+ description: the hero section image
17
+ timeout: 10000 # 10 seconds
18
+ ```
@@ -0,0 +1,7 @@
1
+ <div className="replay-block">
2
+ <iframe
3
+ src="https://app.testdriver.ai/replay/68a594f73f4291f46c418d42?share=TMvd5NhizKhNsWnnuyl5A&embed=true&timestamp=90000&playbackRate=5"
4
+ width="1000"
5
+ height="350"
6
+ />
7
+ </div>
@@ -0,0 +1,18 @@
1
+ ```yaml highlight={14-17}
2
+ version: 6.0.0
3
+ steps:
4
+ - prompt: go to testdriver.ai and verify the page loads
5
+ commands:
6
+ - command: press-keys
7
+ keys:
8
+ - ctrl
9
+ - l
10
+ - command: type
11
+ text: testdriver.ai
12
+ - command: press-keys
13
+ keys:
14
+ - enter
15
+ - command: wait-for-text
16
+ text: Book a Demo
17
+ timeout: 10000 # 10 seconds
18
+ ```
@@ -0,0 +1,7 @@
1
+ <div className="replay-block">
2
+ <iframe
3
+ src="https://app.testdriver.ai/replay/68a592bd3f4291f46c418d40?share=OxDLtTuEFduInsKp8Nlqfg&embed=true&timestamp=90000&playbackRate=5"
4
+ width="1000"
5
+ height="350"
6
+ />
7
+ </div>
@@ -0,0 +1,13 @@
1
+ ```yaml highlight={5, 6}
2
+ version: 6.0.0
3
+ steps:
4
+ - prompt: wait for 5 seconds and type testdriver
5
+ commands:
6
+ - command: wait
7
+ timeout: 5000 # 5 seconds
8
+ - command: type
9
+ text: testdriver
10
+ - command: press-keys
11
+ keys:
12
+ - enter
13
+ ```
@@ -0,0 +1,65 @@
1
+ .comparison-table th {
2
+ font-size: 18px;
3
+ padding: 12px 30px;
4
+ }
5
+
6
+ .comparison-table td {
7
+ padding: 12px 30px;
8
+ font-size: 16px;
9
+ line-height: 1.2;
10
+ text-align: start;
11
+ }
12
+
13
+ .comparison-table code {
14
+ font-size: 1em;
15
+ }
16
+
17
+ .env-vars-table table {
18
+ width: 120%;
19
+ }
20
+
21
+ .env-vars-table th {
22
+ font-size: 18px;
23
+ padding: 12px 30px;
24
+ border: 1.5px solid #05f1d9;
25
+ }
26
+
27
+ .env-vars-table td {
28
+ padding: 12px 30px;
29
+ font-size: 16px;
30
+ line-height: 1.5;
31
+ border: 1.5px solid #05f1d9;
32
+ vertical-align: middle;
33
+ }
34
+
35
+ .env-vars-table code {
36
+ font-size: 0.9em;
37
+ }
38
+
39
+ .prose
40
+ :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
41
+ border-bottom: none !important;
42
+ padding-bottom: 0 !important;
43
+ text-decoration: none !important;
44
+ }
45
+
46
+ .card img {
47
+ background-color: transparent !important;
48
+ }
49
+
50
+ .replay-block {
51
+ width: 100vw;
52
+ margin-left: 50%;
53
+ transform: translateX(-50%);
54
+ justify-content: center;
55
+ display: flex;
56
+ }
57
+
58
+ img[src$=".svg"] {
59
+ background: transparent !important;
60
+ }
61
+
62
+ img[src$="https://tauri.app/favicon.svg"]
63
+ {
64
+ opacity: 0.3;
65
+ }
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: "Dashboard"
3
+ sidebarTitle: "Dashboard"
4
+ description: "Explore your TestDriver dashboard and its features."
5
+ icon: "gauge"
6
+ ---
7
+
8
+ ## Welcome to your TestDriver dashboard
9
+
10
+ Your dashboard is your command center for managing your TestDriver experience. Here, you can view your projects, monitor usage, and access various features to enhance your testing workflow.
11
+
12
+ ## Key features
13
+
14
+ - **Projects**: Get a quick snapshot of your projects, with all Dashcam replays.
15
+ - **Team**: Manage your API key, and add/remove team members.
16
+ - **Usage & Billing**: Monitor your usage and credits in real-time.
@@ -0,0 +1,110 @@
1
+ ---
2
+ title: "Enterprise"
3
+ sidebarTitle: "For Enterprise"
4
+ description: "The TestDriver 4x4 Guarantee!"
5
+ icon: gem
6
+ ---
7
+
8
+ import { calendar } from "/snippets/calendar-link.mdx";
9
+
10
+ TestDriver Enterprise is designed for fast-moving teams that need comprehensive QA coverage for complex applications. Our **4x4 Guarantee** ensures you get 4 custom tests created specifically for your application within your first 4 weeks.
11
+
12
+ We specialize in testing scenarios that other tools can't handle - desktop applications, browser extensions, multi-platform workflows, and complex integrations that require custom infrastructure and expert support.
13
+
14
+ <Card
15
+ title="Schedule a Consultation"
16
+ icon="calendar"
17
+ href="https://calendly.com/d/cq23-qyn-3v6/testdriver-ai-demo"
18
+ link
19
+ >
20
+ Discuss your testing requirements and custom infrastructure needs.
21
+ </Card>
22
+
23
+ ---
24
+
25
+ ## Enterprise Plans
26
+
27
+ TestDriver Enterprise plans start at **$2,000/month** and include:
28
+
29
+ - A pilot program with our expert team to create 4 custom tests within your first 4 weeks (4x4 Guarantee).
30
+ - 4 parallel tests
31
+ - **12,500 runner minutes per month**: Sufficient capacity for continuous testing of your custom test suite.
32
+ - Full CI/CD pipeline integration with custom configurations.
33
+ - Dedicated infrastructure and ongoing support for complex testing scenarios.
34
+
35
+ For detailed pricing and contract information our [Pricing](/account/pricing) page. Want unlimited minutes or enhanced security? We also support self-hosted options with 16 parallel tests starting at $2,000/month. See our [Self Hosting](/getting-started/self-hosting) docs for more info.
36
+
37
+ <CardGroup cols={3}>
38
+ <Card title="Custom Desktop & Extension Testing">
39
+ Test complex desktop applications and browser extensions that other tools
40
+ can't handle.
41
+ </Card>
42
+ <Card title="Multi-App Workflow Testing">
43
+ Test sophisticated workflows that span multiple applications and platforms.
44
+ </Card>
45
+ <Card title="Enterprise Infrastructure & Support">
46
+ Get dedicated infrastructure and expert support for your unique testing
47
+ challenges.
48
+ </Card>
49
+ </CardGroup>
50
+
51
+ ## Enterprise Features
52
+
53
+ TestDriver Enterprise provides comprehensive support for fast-moving teams with complex testing requirements:
54
+
55
+ - **Complex Application Support**: Full testing capabilities for desktop applications, Chrome extensions, mobile apps, and web applications that require specialized infrastructure.
56
+ - **4x4 Custom Test Creation**: Our expert team creates 4 fully customized tests tailored to your specific application and workflows within the first 4 weeks.
57
+ - **Multi-Platform Workflows**: Test complex scenarios spanning multiple applications, browsers, and operating systems.
58
+ - **Unlimited Parallel Testing**: Scale your testing across custom infrastructure without limitations.
59
+ - **Continuous Test Execution**: Automated test runs integrated with your development and deployment cycles.
60
+ - **Intelligent Reporting**: Detailed analytics and quality reports delivered to your team.
61
+ - **Self-Healing Test Maintenance**: AI-powered test maintenance that adapts to application changes.
62
+ - **Custom CI/CD Integration**: Tailored integration with your existing development pipeline.
63
+ - **Enterprise Dashboards**: Advanced analytics and monitoring with custom metrics and insights.
64
+ - **Dedicated Infrastructure**: Specialized testing environments configured for your application stack.
65
+ - **Expert Support**: Ongoing technical support and consultation from our testing specialists.
66
+
67
+ Testing complex applications requires more than standard automation tools. Desktop applications, browser extensions, and multi-platform workflows demand specialized infrastructure, custom integrations, and deep technical expertise. TestDriver Enterprise provides the complete solution - from initial setup through ongoing maintenance and support.
68
+
69
+ ---
70
+
71
+ ## Implementation Process
72
+
73
+ 1. **Initial Consultation**: Discuss your specific testing challenges, application architecture, and infrastructure requirements.
74
+ 2. **Expert Test Development**: Our team develops 4 custom tests designed specifically for your application's critical user flows and business logic.
75
+ 3. **Integration & Deployment**: Implement tests within your CI/CD pipeline with custom monitoring and reporting configurations.
76
+ 4. **Team Training & Ongoing Support**: Comprehensive training for your team plus ongoing technical support and consultation.
77
+
78
+ Complex applications - particularly desktop software, browser extensions, and multi-platform workflows - present unique testing challenges that require specialized infrastructure and deep technical expertise. TestDriver Enterprise addresses these challenges with custom solutions designed specifically for your application and development process.
79
+
80
+ ---
81
+
82
+ ## Implementation Timeline
83
+
84
+ | Service | Timeline | Description |
85
+ | --------------------------------- | ------------- | ------------------------------------------------------------------------------------------------ |
86
+ | **Requirements Analysis** | First 7 Days | Comprehensive review of testing requirements and technical specifications. |
87
+ | **Custom Test Development** | First 4 Weeks | Expert creation of 4 fully customized tests (4x4 Guarantee) tailored to your critical workflows. |
88
+ | **Training & Knowledge Transfer** | First 30 Days | Technical training for your team and establishment of ongoing support processes. |
89
+ | **Continuous Execution** | Ongoing | Automated test execution with specialized monitoring, reporting, and maintenance. |
90
+
91
+ ---
92
+
93
+ ## Contract Information
94
+
95
+ - **4x4 Guarantee**: 4 custom tests delivered within your first 4 weeks of service.
96
+ - **Test Ownership**: Complete ownership of all tests - modify, duplicate, or distribute as needed.
97
+ - **Payment Terms**: Monthly or annual billing options available.
98
+ - **Contract Term**: Annual contracts with flexible payment schedules.
99
+ - **Service Level**: Dedicated support team and technical consultation included.
100
+ - **Usage Tracking**: Monthly runner minute allocation with standard overage rates.
101
+ - **Custom Infrastructure**: Specialized testing environments included for complex applications.
102
+ - **Enterprise Options**: [Self hosting](/getting-started/self-hosting) configurations available.
103
+
104
+ ---
105
+
106
+ ## Get Started
107
+
108
+ <a href={calendar}>**Schedule a consultation**</a> to discuss your testing
109
+ requirements and learn how TestDriver Enterprise can support your team's
110
+ development process.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "Pricing"
3
+ sidebarTitle: "Pricing"
4
+ description: "Explore TestDriver's pricing plans and features."
5
+ icon: "dollar-sign"
6
+ ---
7
+
8
+ ## TestDriver pricing plans
9
+
10
+ TestDriver offers a range of pricing plans to suit different needs, from individual developers to large enterprises. Our plans are designed to provide flexibility and scalability, ensuring you can choose the right option for your testing requirements.
11
+
12
+ <CardGroup cols={3}>
13
+ <Card title="Hobby" icon="check">
14
+ Local agent testing. Always free.
15
+ </Card>
16
+ <Card title="Pro" icon="briefcase">
17
+ Use local or hosted runners on demand or integrated with CI for as low as
18
+ $0.05/minute.
19
+ </Card>
20
+ <Card title="Enterprise" icon="shield">
21
+ Need advanced features? Contact us for tailored solutions. Starting at
22
+ $2,000/month.
23
+ </Card>
24
+ </CardGroup>
25
+
26
+ <Tip>
27
+ Every plan comes with access to the Playwright SDK to get you off the starting
28
+ line!
29
+ </Tip>
30
+
31
+ ## Compare plans
32
+
33
+ To view the latest pricing and features, please visit our [Pricing Page](https://testdriver.ai/pricing).
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "TestDriver Projects"
3
+ sidebarTitle: "Projects"
4
+ description: "Manage your projects and workflows with TestDriver."
5
+ icon: "folder"
6
+ ---
7
+
8
+ ## Dashboard project view
9
+
10
+ In the Project tab, select a Project to see the replays for that project.
11
+
12
+ <Frame caption="Click a Project to view its replays">
13
+ <img src="/images/content/account/projectpage.png" />
14
+ </Frame>
15
+
16
+ From the Project view, you can see all the replays (Dashes) stored for that project. Click one to see it. These will also be linked in CI for any pull requests or branches that have been tested with TestDriver.
17
+
18
+ <Frame caption="Click a Replay to view, comment or share ">
19
+ <img src="/images/content/account/projectreplays.png" />
20
+ </Frame>
21
+
22
+ ## New project
23
+
24
+ When you create a new Project, you can also enable the <Icon icon="jira" /> Jira integration to create issues automatically each time a replay (Dash) is created.
25
+
26
+ <Info>
27
+ The project ID can be used in conjunction with your `lifecycle/postrun.yaml`
28
+ script to automatically assign a replay to a project. For more info see the
29
+ (Dashcam section)[/guide/dashcam].
30
+ </Info>
31
+ <Frame caption="Click a Project to view its replays">
32
+ <img src="/images/content/account/newprojectsettings.png" />
33
+ </Frame>
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: "Team"
3
+ sidebarTitle: "Team"
4
+ description: "Manage your team and collaborate with TestDriver."
5
+ icon: "users"
6
+ ---
7
+
8
+ ## Important settings in one place
9
+
10
+ In the Team tab, you can manage your team name, team members, API key, and subscription.
11
+
12
+ ### Let's take a look at the team settings.
13
+
14
+ <Frame caption="Team Settings">
15
+ <img src="/images/content/account/teampage.png" />
16
+ </Frame>
17
+
18
+ 1. **Team Name**: The name of your team. This is used to identify your team in TestDriver.
19
+ 2. **API Key**: Your API key is used to authenticate your requests to the TestDriver API. You can regenerate it if you suspect it has been compromised.
20
+ 3. **Usage & Billing**: Monitor your usage and billing information. This includes your current plan, usage limits, and billing history.
21
+ <Tip>
22
+ Note: this button is where you 'Upgrade to Pro' to start your free trial.
23
+ </Tip>
24
+ 4. **Replay Visibility**: Toggle whether your replays are public or private by default. This defaults to **private**.
25
+ 5. **Don't forget to save your changes!**: After making any changes, be sure to click the **Update** button to apply them.
26
+
27
+ ### Team members
28
+
29
+ <Frame caption="Team Members">
30
+ <img src="/images/content/account/team-manage.png" />
31
+ </Frame>
32
+
33
+ 1. **Email Invite**: Invite new team members by entering their email address and clicking the **Invite** button. They will receive an email invitation to join your team. You can also copy the link above this option to send to everyone at once.
34
+ 2. **Removing Team Members**: To remove a team member, click the **Remove** button next to their name. This will revoke their access to your TestDriver account.
35
+ 3. **Invite Status**: The status of the invite will be shown here. If it says **Invited**, the invite hasn't been accepted yet. To resend it, click here.
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: "Customizing the VM Image"
3
+ sidebarTitle: "Custom VM Image"
4
+ description: "How customize the TestDriver VM Image for robust test execution."
5
+ icon: "image"
6
+ ---
7
+
8
+ <Tip>
9
+ This guide is specifically for [Enterprise Plan
10
+ customers](/account/enterprise) who have access to the shared TestDriver AMI.
11
+ If you are on a different plan, please contact your account manager for more
12
+ information.
13
+ </Tip>
14
+
15
+ <Steps>
16
+ <Step title="Send Us Your AWS Account ID">
17
+ To begin, send your **12-digit AWS account ID** to your **TestDriver account manager**. We'll share the AMI directly with your AWS account using [Amazon's explicit AMI sharing process](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html).
18
+ </Step>
19
+ <Step title="Wait for Confirmation">
20
+ Your account manager will notify you when the AMI has been shared with your
21
+ account. You will receive the **AMI ID** (e.g., `ami-0abcd1234efgh5678`) and your **RDP Username \+ Password**.
22
+ </Step>
23
+ <Step title="Launch and Connect with RDP">
24
+ Once you have the AMI ID & RDP credentials from the previous step, launch an EC2 instance and connect via RDP:
25
+
26
+ 1. Ensure your **security group allows RDP (TCP port 3389)**.
27
+ 2. In the EC2 Console, select your instance → **Connect \> RDP Client**.
28
+ 3. Download the `.rdp` file and launch it with the [Windows App](https://adoption.microsoft.com/en-us/windows-app/)\
29
+ Alternatively, copy the public IP and paste it into your RDP client.
30
+ 4. Login using your **RDP Username \+ Password** (e.g. `testdriver` \+ `•••••••••`) provided by your account manager.
31
+
32
+ <Note>
33
+ You will access a full Windows desktop where TestDriver is pre-installed and ready for customization.
34
+ </Note>
35
+
36
+ </Step>
37
+
38
+ <Step title="Change the Windows password">
39
+ Inside the Windows desktop environment:
40
+
41
+ 1. Open up Powershell
42
+ 2. Run `C:\testdriver\RotateLocalPasswords.ps1`
43
+ 3. Copy the password presented in the output to a safe place. This is the only chance to copy the password.
44
+ 4. Restart the instance and double check you can log in before continuing.
45
+
46
+ Note that this will change the password for the testdriver and rdp_local accounts, but Administrator will remain as a password you can only retreive through the AWS EC2 UI ((Instructions Here)[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-rdp.html#retrieve-initial-admin-password]).
47
+
48
+ </Step>
49
+
50
+ <Step title="Customize the Instance">
51
+ Inside the Windows desktop environment:
52
+
53
+ 1. **Download and install your application** using a browser, Git, PowerShell, or other tools.
54
+ 2. Add any required system configuration, environment variables, or startup scripts.
55
+ 3. Verify the full setup works correctly in the sandbox.
56
+
57
+ Common use cases:
58
+ - Pull from GitHub or your artifact store
59
+ - Configure your app with test credentials or environment variables
60
+ - Enable logging or install monitoring tools
61
+
62
+ </Step>
63
+
64
+ <Step title="Create Your Custom AMI">
65
+ Once your customizations are complete, create an AMI from your instance:
66
+
67
+ 1. In the EC2 Console, select your customized instance.
68
+ 2. Go to **Actions** → **Image and templates** → **Create image**.
69
+ 3. Provide a descriptive **Image name** and **Description**.
70
+ 4. Click **Create image** to start the AMI creation process.
71
+ 5. Wait for the AMI status to change from "pending" to "available".
72
+
73
+ <Note>The AMI creation process may take several minutes depending on the instance size and customizations.</Note>
74
+
75
+ </Step>
76
+
77
+ <Step title="Share Your AMI and Use with TestDriver CLI">
78
+ After creating your custom AMI:
79
+
80
+ 1. **Share the AMI ID** with your **TestDriver account manager** so we can launch it in our infrastructure. Follow [Amazon's explicit AMI sharing process](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) if needed.
81
+ 2. Once confirmed, you can reference the AMI directly from your machine using the TestDriver CLI:
82
+
83
+ ```bash
84
+ testdriverai --sandbox-ami=ami-0abcd1234efgh5678
85
+ ```
86
+
87
+ This instructs the CLI to launch a sandbox using **your customized AMI**, enabling test execution in your environment.
88
+
89
+ </Step>
90
+ </Steps>
91
+
92
+ ---
93
+
94
+ ## 🔐 Best Practices & Security
95
+
96
+ - Always use **strong RDP passwords** and keep your key pairs secure.
97
+ - Apply **Windows Updates** to stay current with patches.
98
+ - Use **IAM roles with least privilege** to access other AWS resources.
99
+ - Consider **encrypting your volumes and AMI** if handling sensitive data.
100
+
101
+ ---
102
+
103
+ ### 🤝 Need Help?
104
+
105
+ Your TestDriver account manager is available to support you with:
106
+
107
+ - AMI access and customization
108
+ - CLI configuration
109
+ - Troubleshooting sandbox execution
@@ -0,0 +1,105 @@
1
+ ---
2
+ title: "Optimizing Performance in TestDriver"
3
+ sidebarTitle: "Performance Optimization"
4
+ description: "Optimizing Performance in TestDriver"
5
+ icon: "rabbit-running"
6
+ ---
7
+
8
+ ## Overview
9
+
10
+ Optimizing your TestDriver tests can significantly reduce execution time, ensuring faster feedback for developers and smoother CI/CD workflows. While TestDriver's AI-powered capabilities are robust, using them efficiently is key to achieving the best performance.
11
+
12
+ ---
13
+
14
+ ## Tips for improving performance
15
+
16
+ ### 1. Use parallel testing
17
+
18
+ Parallel testing allows you to split your test actions into multiple files and run them simultaneously. This can drastically reduce the total runtime of your test suite.
19
+
20
+ #### How to implement parallel testing
21
+
22
+ - Divide your test steps into smaller, independent YAML files.
23
+ - Use a test matrix strategy to execute these files in parallel.
24
+
25
+ <Warning>
26
+ The [`run`](/commands/run) command is used in your test files to run other
27
+ test files. This is useful for breaking down large tests into smaller, more
28
+ manageable pieces. To run multiple separate tests, use a test matrix strategy.
29
+ </Warning>
30
+
31
+ #### Example
32
+
33
+ ```yaml .github/workflows/testdriver.yaml focus={3-9, 14}
34
+ run tests:
35
+ name: Run tests in parallel
36
+ strategy:
37
+ matrix:
38
+ test_file:
39
+ - tests/login.yaml
40
+ - tests/search.yaml
41
+ - tests/cart.yaml
42
+ steps:
43
+ - name: Checkout repository
44
+ uses: actions/checkout@v4
45
+
46
+ - name: Run the tests
47
+ run: npx testdriverai@latest run testdriver/${{ matrix.test_file }}
48
+ env:
49
+ FORCE_COLOR: 3
50
+ TD_API_KEY: ${{ secrets.TD_API_KEY }}
51
+ TD_WEBSITE: https://testdriver-sandbox.vercel.app
52
+ TD_THIS_FILE: ${{ matrix.test }}
53
+ ```
54
+
55
+ ---
56
+
57
+ ### 2. Use optimized matching methods
58
+
59
+ For actions like [`hover-text`](/commands/hover-text), [`wait-for-text`](/commands/wait-for-text), and [`scroll-until-text`](/commands/scroll-until-text), use the `turbo` matching method instead of `ai`. The `turbo` method uses text similarity to quickly compute the most relevant match, making it about 40% faster than the `ai` method.
60
+
61
+ #### Example
62
+
63
+ ```yaml
64
+ command: [`hover-text`](/commands/hover-text)
65
+ text: Sign In
66
+ description: login button
67
+ action: click
68
+ method: turbo
69
+ ```
70
+
71
+ <Note>
72
+ `turbo` is the default method that is currently implemented. The other method
73
+ being `ai`
74
+ </Note>
75
+
76
+ ---
77
+
78
+ ### 3. Use `async` asserts
79
+
80
+ The [`assert`](/commands/assert) command supports the `async: true` property, allowing you to create non-blocking assertions. This means your tests can continue running while the assertion is being validated, saving valuable time.
81
+
82
+ #### Example
83
+
84
+ ```yaml
85
+ command: [`assert`](/commands/assert)
86
+ expect: The user is logged in
87
+ async: true
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Best practices
93
+
94
+ - **Minimize AI Matching**: Use AI-powered matching methods only when necessary. For common actions, rely on optimized methods like `turbo`.
95
+ - **Break Down Tests**: Split large, monolithic test files into smaller, focused tests to enable parallel execution.
96
+ - **Leverage Asynchronous Features**: Use `async` properties wherever possible to avoid blocking test execution.
97
+ - **Monitor Performance**: Regularly review test execution times and identify bottlenecks.
98
+
99
+ ---
100
+
101
+ ## Notes
102
+
103
+ - Optimizing performance not only saves time but also reduces resource usage, making your CI/CD pipelines more efficient.
104
+ - For large test suites, combining parallel testing with optimized matching methods can lead to significant time savings.
105
+ - Always balance performance optimizations with test reliability to ensure accurate results.
@@ -0,0 +1,93 @@
1
+ ---
2
+ title: "Managing Secrets"
3
+ sidebarTitle: "Secrets Management"
4
+ description: "Discover how to securely configure and optimize your TestDriver CLI environment for seamless CI/CD workflows."
5
+ icon: "asterisk"
6
+ ---
7
+
8
+ ## Overview
9
+
10
+ When using TestDriver to test your application, you may need to securely store and use sensitive information such as usernames, passwords, API keys, or other secrets. Every DevOps platform provides a secure way to manage these secrets, ensuring they aren't exposed in your test files or logs.
11
+
12
+ ---
13
+
14
+ ## Why use secrets?
15
+
16
+ - **Security**: Secrets are encrypted and stored securely in your DevOps platform.
17
+ - **Masking**: TestDriver automatically masks secrets in all test output, including debugging logs.
18
+ - **Reusability**: Secrets can be reused across multiple workflows and test files.
19
+
20
+ ---
21
+
22
+ ## Step 1: Replace hardcoded secrets in test files
23
+
24
+ To securely use secrets in your TestDriver test files, replace hardcoded values with placeholders in the format `${TD_YOUR_SECRET}`. TestDriver will parse and mask any secrets that begin with `TD_`.
25
+
26
+ ### Example test file
27
+
28
+ ```yaml login.yaml highlight={11, 12, 21, 22}
29
+ version: 6.0.0
30
+ steps:
31
+ - prompt: sign in with username and password
32
+ commands:
33
+ - command: focus-application
34
+ name: Google Chrome
35
+ - command: hover-text
36
+ text: Email or phone
37
+ description: email input field
38
+ action: click
39
+ - command: type
40
+ text: ${TD_USERNAME}
41
+ - command: hover-text
42
+ text: Next
43
+ description: next button after entering email
44
+ action: click
45
+ - command: hover-text
46
+ text: Password
47
+ description: password input field
48
+ action: click
49
+ - command: type
50
+ text: ${TD_PASSWORD}
51
+ - command: hover-text
52
+ text: Log In
53
+ description: log in button
54
+ action: click
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Step 2: Add secrets to DevOps platform
60
+
61
+ In this example we'll use GitHub Actions, but the process is similar for other platforms like GitLab CI/CD, CircleCI, or Jenkins.
62
+
63
+ 1. Navigate to your GitHub repository.
64
+ 2. Go to **Settings** > **Secrets and variables** > **Actions**.
65
+ 3. Click **New repository secret**.
66
+ 4. Add your secrets (for example, `TD_USERNAME`, `TD_PASSWORD`, `TD_API_KEY`).
67
+
68
+ For detailed instructions, refer to the [GitHub Docs on using secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets).
69
+
70
+ ---
71
+
72
+ ## Step 3: Supply secrets to TestDriver CLI
73
+
74
+ When running TestDriver tests via the CLI in GitHub Actions, supply your secrets in the `env` section of the workflow step.
75
+
76
+ <Card title="Adding secrets to CI" icon="link" href="/guide/authentication">
77
+ Check out our authentication page to see how to add secrets in your CI
78
+ workflow.
79
+ </Card>
80
+
81
+ ## Best practices
82
+
83
+ - **Use Descriptive Names**: Name your secrets clearly (for example, `TD_USERNAME`, `TD_PASSWORD`) to make them easy to identify.
84
+ - **Rotate Secrets Regularly**: Update your secrets periodically to enhance security.
85
+ - **Limit Access**: Only provide access to secrets for workflows and team members that require them.
86
+
87
+ ## <Note>To ensure all secrets are masked in logs, use the `TD_` prefix.</Note>
88
+
89
+ ## Notes
90
+
91
+ - Secrets are encrypted and only accessible during the workflow run.
92
+ - TestDriver automatically masks secrets in test output to prevent accidental exposure.
93
+ - For additional security, avoid hardcoding sensitive information in your test files or workflows.