testdriverai 7.2.64 → 7.2.65

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 (360) 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/package.json +29 -9
  54. package/sdk.d.ts +29 -2
  55. package/sdk.js +1 -0
  56. package/.env.example +0 -4
  57. package/.github/workflows/acceptance-linux-scheduled.yaml +0 -45
  58. package/.github/workflows/acceptance-windows-scheduled.yaml +0 -54
  59. package/.github/workflows/acceptance.yaml +0 -87
  60. package/.github/workflows/publish.yaml +0 -68
  61. package/.github/workflows/test-init.yml +0 -145
  62. package/.github/workflows/testdriver.yml +0 -170
  63. package/.github/workflows/windows-self-hosted.yaml +0 -82
  64. package/.prettierignore +0 -4
  65. package/.prettierrc +0 -1
  66. package/CHANGELOG.md +0 -34
  67. package/agents.md +0 -455
  68. package/debugger/bg.png +0 -0
  69. package/debugger/icon.png +0 -0
  70. package/debugger/index.html +0 -797
  71. package/debugger/td.png +0 -0
  72. package/debugger/tray-buffered.png +0 -0
  73. package/debugger/tray.png +0 -0
  74. package/docs/GITHUB_COMMENTS.md +0 -330
  75. package/docs/GITHUB_COMMENTS_ANNOUNCEMENT.md +0 -167
  76. package/docs/QUICK-START-GITHUB-COMMENTS.md +0 -84
  77. package/docs/TEST-GITHUB-COMMENTS.md +0 -129
  78. package/docs/_scripts/link-replacer.js +0 -164
  79. package/docs/_scripts/upload-docs-to-openai.js +0 -284
  80. package/docs/docs.json +0 -393
  81. package/docs/github-integration-setup.md +0 -266
  82. package/docs/guide/best-practices-polling.mdx +0 -154
  83. package/docs/images/content/account/newprojectsettings.png +0 -0
  84. package/docs/images/content/account/projectpage.png +0 -0
  85. package/docs/images/content/account/projectreplays.png +0 -0
  86. package/docs/images/content/account/team-manage.png +0 -0
  87. package/docs/images/content/account/teampage.png +0 -0
  88. package/docs/images/content/extension/cursor.svg +0 -1
  89. package/docs/images/content/extension/vscode.svg +0 -57
  90. package/docs/images/content/extension/windsurf.svg +0 -3
  91. package/docs/images/content/self-hosted/launchtemplateid.png +0 -0
  92. package/docs/images/content/side-by-side.png +0 -0
  93. package/docs/images/content/vscode/ide-full.png +0 -0
  94. package/docs/images/content/vscode/running.png +0 -0
  95. package/docs/images/content/vscode/vscode-2-assert.png +0 -0
  96. package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
  97. package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
  98. package/docs/images/content/vscode/vscode-file-creation.png +0 -0
  99. package/docs/images/content/vscode/vscode-install.png +0 -0
  100. package/docs/images/content/vscode/vscode-overview.png +0 -0
  101. package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
  102. package/docs/images/content/vscode/vscode-stopchat.png +0 -0
  103. package/docs/images/content/vscode/vscode-stoptest.png +0 -0
  104. package/docs/images/content/vscode/vscode-tdservice.png +0 -0
  105. package/docs/images/content/vscode/vscode-test-output.png +0 -0
  106. package/docs/images/content/vscode/vscode-testhistory.png +0 -0
  107. package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
  108. package/docs/images/content/vscode/vscode-testpane.png +0 -0
  109. package/docs/images/template/dark.png +0 -0
  110. package/docs/images/template/icon.png +0 -0
  111. package/docs/images/template/light.png +0 -0
  112. package/docs/snippets/calendar-link.mdx +0 -4
  113. package/docs/snippets/gitignore-warning.mdx +0 -7
  114. package/docs/snippets/lifecycle-warning.mdx +0 -6
  115. package/docs/snippets/test-prereqs.mdx +0 -12
  116. package/docs/snippets/tests/assert-replay.mdx +0 -7
  117. package/docs/snippets/tests/assert-yaml.mdx +0 -8
  118. package/docs/snippets/tests/exec-js-replay.mdx +0 -7
  119. package/docs/snippets/tests/exec-js-yaml.mdx +0 -32
  120. package/docs/snippets/tests/exec-shell-replay.mdx +0 -7
  121. package/docs/snippets/tests/exec-shell-yaml.mdx +0 -15
  122. package/docs/snippets/tests/hover-image-replay.mdx +0 -7
  123. package/docs/snippets/tests/hover-image-yaml.mdx +0 -17
  124. package/docs/snippets/tests/hover-text-replay.mdx +0 -7
  125. package/docs/snippets/tests/hover-text-with-description-replay.mdx +0 -7
  126. package/docs/snippets/tests/hover-text-with-description-yaml.mdx +0 -24
  127. package/docs/snippets/tests/hover-text-yaml.mdx +0 -14
  128. package/docs/snippets/tests/match-image-replay.mdx +0 -7
  129. package/docs/snippets/tests/match-image-yaml.mdx +0 -17
  130. package/docs/snippets/tests/press-keys-replay.mdx +0 -7
  131. package/docs/snippets/tests/press-keys-yaml.mdx +0 -36
  132. package/docs/snippets/tests/remember-replay.mdx +0 -7
  133. package/docs/snippets/tests/remember-yaml.mdx +0 -28
  134. package/docs/snippets/tests/scroll-replay.mdx +0 -7
  135. package/docs/snippets/tests/scroll-until-image-replay.mdx +0 -7
  136. package/docs/snippets/tests/scroll-until-image-yaml.mdx +0 -14
  137. package/docs/snippets/tests/scroll-until-text-replay.mdx +0 -7
  138. package/docs/snippets/tests/scroll-until-text-yaml.mdx +0 -17
  139. package/docs/snippets/tests/scroll-yaml.mdx +0 -30
  140. package/docs/snippets/tests/type-repeated-replay.mdx +0 -7
  141. package/docs/snippets/tests/type-repeated-yaml.mdx +0 -22
  142. package/docs/snippets/tests/type-replay.mdx +0 -7
  143. package/docs/snippets/tests/type-yaml.mdx +0 -28
  144. package/docs/snippets/tests/wait-for-image-replay.mdx +0 -7
  145. package/docs/snippets/tests/wait-for-image-yaml.mdx +0 -18
  146. package/docs/snippets/tests/wait-for-text-replay.mdx +0 -7
  147. package/docs/snippets/tests/wait-for-text-yaml.mdx +0 -18
  148. package/docs/snippets/tests/wait-replay.mdx +0 -7
  149. package/docs/snippets/tests/wait-yaml.mdx +0 -13
  150. package/docs/styles.css +0 -65
  151. package/docs/v6/account/dashboard.mdx +0 -16
  152. package/docs/v6/account/enterprise.mdx +0 -110
  153. package/docs/v6/account/pricing.mdx +0 -33
  154. package/docs/v6/account/projects.mdx +0 -33
  155. package/docs/v6/account/team.mdx +0 -35
  156. package/docs/v6/action/ami.mdx +0 -109
  157. package/docs/v6/action/performance.mdx +0 -105
  158. package/docs/v6/action/secrets.mdx +0 -93
  159. package/docs/v6/apps/chrome-extensions.mdx +0 -48
  160. package/docs/v6/apps/desktop-apps.mdx +0 -93
  161. package/docs/v6/apps/mobile-apps.mdx +0 -26
  162. package/docs/v6/apps/static-websites.mdx +0 -54
  163. package/docs/v6/apps/tauri-apps.mdx +0 -361
  164. package/docs/v6/bugs/jira.mdx +0 -232
  165. package/docs/v6/cli/overview.mdx +0 -66
  166. package/docs/v6/commands/assert.mdx +0 -45
  167. package/docs/v6/commands/exec.mdx +0 -282
  168. package/docs/v6/commands/focus-application.mdx +0 -44
  169. package/docs/v6/commands/hover-image.mdx +0 -69
  170. package/docs/v6/commands/hover-text.mdx +0 -47
  171. package/docs/v6/commands/if.mdx +0 -53
  172. package/docs/v6/commands/match-image.mdx +0 -67
  173. package/docs/v6/commands/press-keys.mdx +0 -87
  174. package/docs/v6/commands/remember.mdx +0 -49
  175. package/docs/v6/commands/run.mdx +0 -44
  176. package/docs/v6/commands/scroll-until-image.mdx +0 -66
  177. package/docs/v6/commands/scroll-until-text.mdx +0 -60
  178. package/docs/v6/commands/scroll.mdx +0 -69
  179. package/docs/v6/commands/type.mdx +0 -45
  180. package/docs/v6/commands/wait-for-image.mdx +0 -54
  181. package/docs/v6/commands/wait-for-text.mdx +0 -48
  182. package/docs/v6/commands/wait.mdx +0 -45
  183. package/docs/v6/exporting/junit.mdx +0 -218
  184. package/docs/v6/exporting/playwright.mdx +0 -197
  185. package/docs/v6/features/auto-healing.mdx +0 -144
  186. package/docs/v6/features/generation.mdx +0 -116
  187. package/docs/v6/features/parallel-testing.mdx +0 -151
  188. package/docs/v6/features/reusable-snippets.mdx +0 -131
  189. package/docs/v6/features/selectorless.mdx +0 -80
  190. package/docs/v6/features/visual-assertions.mdx +0 -139
  191. package/docs/v6/getting-started/ci.mdx +0 -146
  192. package/docs/v6/getting-started/cli.mdx +0 -91
  193. package/docs/v6/getting-started/editing.mdx +0 -100
  194. package/docs/v6/getting-started/playwright.mdx +0 -342
  195. package/docs/v6/getting-started/running.mdx +0 -48
  196. package/docs/v6/getting-started/self-hosting.mdx +0 -408
  197. package/docs/v6/getting-started/vscode.mdx +0 -89
  198. package/docs/v6/guide/assertions.mdx +0 -189
  199. package/docs/v6/guide/authentication.mdx +0 -136
  200. package/docs/v6/guide/code.mdx +0 -65
  201. package/docs/v6/guide/dashcam.mdx +0 -118
  202. package/docs/v6/guide/environment-variables.mdx +0 -26
  203. package/docs/v6/guide/lifecycle.mdx +0 -242
  204. package/docs/v6/guide/locating.mdx +0 -141
  205. package/docs/v6/guide/protips.mdx +0 -43
  206. package/docs/v6/guide/variables.mdx +0 -143
  207. package/docs/v6/guide/waiting.mdx +0 -130
  208. package/docs/v6/importing/csv.mdx +0 -196
  209. package/docs/v6/importing/gherkin.mdx +0 -143
  210. package/docs/v6/importing/jira.mdx +0 -164
  211. package/docs/v6/importing/testrail.mdx +0 -162
  212. package/docs/v6/integrations/electron.mdx +0 -146
  213. package/docs/v6/integrations/netlify.mdx +0 -100
  214. package/docs/v6/integrations/vercel.mdx +0 -125
  215. package/docs/v6/interactive/explore.mdx +0 -99
  216. package/docs/v6/interactive/run.mdx +0 -52
  217. package/docs/v6/interactive/save.mdx +0 -63
  218. package/docs/v6/overview/comparison.mdx +0 -101
  219. package/docs/v6/overview/faq.mdx +0 -162
  220. package/docs/v6/overview/performance.mdx +0 -52
  221. package/docs/v6/overview/quickstart.mdx +0 -137
  222. package/docs/v6/overview/what-is-testdriver.mdx +0 -85
  223. package/docs/v6/scenarios/ai-chatbot.mdx +0 -28
  224. package/docs/v6/scenarios/cookie-banner.mdx +0 -32
  225. package/docs/v6/scenarios/file-upload.mdx +0 -33
  226. package/docs/v6/scenarios/form-filling.mdx +0 -32
  227. package/docs/v6/scenarios/log-in.mdx +0 -75
  228. package/docs/v6/scenarios/pdf-generation.mdx +0 -25
  229. package/docs/v6/scenarios/spell-check.mdx +0 -22
  230. package/docs/v6/security/action.mdx +0 -84
  231. package/docs/v6/security/agent.mdx +0 -73
  232. package/docs/v6/security/platform.mdx +0 -77
  233. package/docs/v6/tutorials/advanced-test.mdx +0 -81
  234. package/docs/v6/tutorials/basic-test.mdx +0 -45
  235. package/docs/v7/_drafts/agents.mdx +0 -852
  236. package/docs/v7/_drafts/architecture.mdx +0 -399
  237. package/docs/v7/_drafts/auto-cache-key.mdx +0 -167
  238. package/docs/v7/_drafts/awesome-logs-quick-ref.mdx +0 -100
  239. package/docs/v7/_drafts/best-practices.mdx +0 -486
  240. package/docs/v7/_drafts/caching-ai.mdx +0 -215
  241. package/docs/v7/_drafts/caching-selectors.mdx +0 -424
  242. package/docs/v7/_drafts/caching.mdx +0 -366
  243. package/docs/v7/_drafts/cli-to-sdk-migration.mdx +0 -425
  244. package/docs/v7/_drafts/commands/assert.mdx +0 -45
  245. package/docs/v7/_drafts/commands/exec.mdx +0 -282
  246. package/docs/v7/_drafts/commands/focus-application.mdx +0 -44
  247. package/docs/v7/_drafts/commands/hover-image.mdx +0 -69
  248. package/docs/v7/_drafts/commands/hover-text.mdx +0 -47
  249. package/docs/v7/_drafts/commands/if.mdx +0 -53
  250. package/docs/v7/_drafts/commands/match-image.mdx +0 -67
  251. package/docs/v7/_drafts/commands/press-keys.mdx +0 -87
  252. package/docs/v7/_drafts/commands/remember.mdx +0 -49
  253. package/docs/v7/_drafts/commands/run.mdx +0 -44
  254. package/docs/v7/_drafts/commands/scroll-until-image.mdx +0 -66
  255. package/docs/v7/_drafts/commands/scroll-until-text.mdx +0 -60
  256. package/docs/v7/_drafts/commands/scroll.mdx +0 -69
  257. package/docs/v7/_drafts/commands/type.mdx +0 -45
  258. package/docs/v7/_drafts/commands/wait-for-image.mdx +0 -54
  259. package/docs/v7/_drafts/commands/wait-for-text.mdx +0 -48
  260. package/docs/v7/_drafts/commands/wait.mdx +0 -45
  261. package/docs/v7/_drafts/configuration.mdx +0 -378
  262. package/docs/v7/_drafts/contributing.mdx +0 -174
  263. package/docs/v7/_drafts/core.mdx +0 -458
  264. package/docs/v7/_drafts/dashcam-title-feature.mdx +0 -89
  265. package/docs/v7/_drafts/debugging.mdx +0 -349
  266. package/docs/v7/_drafts/error-handling.mdx +0 -501
  267. package/docs/v7/_drafts/faq.mdx +0 -393
  268. package/docs/v7/_drafts/hooks.mdx +0 -360
  269. package/docs/v7/_drafts/init-command.mdx +0 -95
  270. package/docs/v7/_drafts/installation.mdx +0 -420
  271. package/docs/v7/_drafts/migration.mdx +0 -562
  272. package/docs/v7/_drafts/observable.mdx +0 -604
  273. package/docs/v7/_drafts/playwright.mdx +0 -342
  274. package/docs/v7/_drafts/plugin-migration.mdx +0 -220
  275. package/docs/v7/_drafts/powerful.mdx +0 -419
  276. package/docs/v7/_drafts/presets.mdx +0 -210
  277. package/docs/v7/_drafts/progressive-disclosure.mdx +0 -230
  278. package/docs/v7/_drafts/prompt-cache.mdx +0 -200
  279. package/docs/v7/_drafts/provision.mdx +0 -390
  280. package/docs/v7/_drafts/quick-start-test-recording.mdx +0 -214
  281. package/docs/v7/_drafts/readme.mdx +0 -135
  282. package/docs/v7/_drafts/reports.mdx +0 -414
  283. package/docs/v7/_drafts/scalable.mdx +0 -754
  284. package/docs/v7/_drafts/screenshot.mdx +0 -155
  285. package/docs/v7/_drafts/sdk-awesome-logs.mdx +0 -468
  286. package/docs/v7/_drafts/sdk-browser-rendering.mdx +0 -167
  287. package/docs/v7/_drafts/sdk-migration.mdx +0 -474
  288. package/docs/v7/_drafts/sdk-v7-complete.mdx +0 -345
  289. package/docs/v7/_drafts/self-hosting.mdx +0 -369
  290. package/docs/v7/_drafts/test-recording.mdx +0 -382
  291. package/docs/v7/_drafts/troubleshooting.mdx +0 -526
  292. package/docs/v7/_drafts/vitest-plugin.mdx +0 -477
  293. package/docs/v7/_drafts/vitest.mdx +0 -535
  294. package/docs/v7/_drafts/writing-tests.mdx +0 -25
  295. package/docs/v7/examples.mdx +0 -5
  296. package/eslint.config.js +0 -67
  297. package/examples/ai.test.mjs +0 -30
  298. package/examples/assert.test.mjs +0 -46
  299. package/examples/captcha-api.test.mjs +0 -50
  300. package/examples/chrome-extension.test.mjs +0 -94
  301. package/examples/drag-and-drop.test.mjs +0 -58
  302. package/examples/element-not-found.test.mjs +0 -26
  303. package/examples/exec-output.test.mjs +0 -59
  304. package/examples/exec-pwsh.test.mjs +0 -57
  305. package/examples/focus-window.test.mjs +0 -36
  306. package/examples/formatted-logging.test.mjs +0 -26
  307. package/examples/hover-image.test.mjs +0 -52
  308. package/examples/hover-text-with-description.test.mjs +0 -56
  309. package/examples/hover-text.test.mjs +0 -27
  310. package/examples/installer.test.mjs +0 -49
  311. package/examples/launch-vscode-linux.test.mjs +0 -54
  312. package/examples/match-image.test.mjs +0 -54
  313. package/examples/no-provision.test.mjs +0 -23
  314. package/examples/press-keys.test.mjs +0 -50
  315. package/examples/prompt.test.mjs +0 -33
  316. package/examples/scroll-keyboard.test.mjs +0 -37
  317. package/examples/scroll-until-image.test.mjs +0 -39
  318. package/examples/scroll-until-text.test.mjs +0 -67
  319. package/examples/scroll.test.mjs +0 -41
  320. package/examples/type.test.mjs +0 -45
  321. package/examples/windows-installer.test.mjs +0 -53
  322. package/interfaces/cli/commands/edit.js +0 -3
  323. package/interfaces/cli/commands/generate.js +0 -3
  324. package/interfaces/cli/commands/run.js +0 -3
  325. package/interfaces/cli/utils/factory.js +0 -71
  326. package/jsconfig.json +0 -26
  327. package/manual/test-init-command.js +0 -223
  328. package/sdk-log-formatter.js +0 -930
  329. package/setup/aws/cloudformation.yaml +0 -470
  330. package/setup/aws/spawn-runner.sh +0 -190
  331. package/test/api-resilience.test.mjs +0 -0
  332. package/test/captcha-solver.test.mjs +0 -70
  333. package/test/chrome-remote-debugging.test.mjs +0 -66
  334. package/test/manual/debug-locate-response.js +0 -82
  335. package/test/manual/reconnect-provision.test.mjs +0 -49
  336. package/test/manual/test-console-logs.test.mjs +0 -42
  337. package/test/manual/test-find-api.js +0 -73
  338. package/test/manual/test-init.sh +0 -54
  339. package/test/manual/test-prompt-cache.js +0 -96
  340. package/test/manual/test-provision-auth.mjs +0 -22
  341. package/test/manual/test-sandbox-render.js +0 -28
  342. package/test/manual/test-sdk-methods.js +0 -15
  343. package/test/manual/test-sdk-refactor.js +0 -53
  344. package/test/manual/test-stack-trace.mjs +0 -57
  345. package/test/manual/verify-element-api.js +0 -89
  346. package/test/manual/verify-types.js +0 -0
  347. package/test/manual-unawaited-promise.test.mjs +0 -31
  348. package/testdriver-plugin/skills/actions/SKILL.md +0 -93
  349. package/testdriver-plugin/skills/assertions/SKILL.md +0 -77
  350. package/testdriver-plugin/skills/caching/SKILL.md +0 -66
  351. package/testdriver-plugin/skills/creating-tests/SKILL.md +0 -104
  352. package/testdriver-plugin/skills/finding-elements/SKILL.md +0 -77
  353. package/testdriver-plugin/skills/github-actions/SKILL.md +0 -100
  354. package/testdriver-plugin/skills/running-tests/SKILL.md +0 -77
  355. package/testdriver-plugin/skills/secrets/SKILL.md +0 -87
  356. package/testdriver-plugin/skills/self-hosting/SKILL.md +0 -89
  357. package/testdriver-plugin/skills/setup/SKILL.md +0 -76
  358. package/testdriver-plugin/skills/variables/SKILL.md +0 -88
  359. package/testdriver-plugin/skills/waiting/SKILL.md +0 -72
  360. package/vitest.config.mjs +0 -29
@@ -1,526 +0,0 @@
1
- ---
2
- title: "Troubleshooting"
3
- description: "Common issues and solutions"
4
- icon: "circle-question"
5
- ---
6
-
7
- ## Installation Issues
8
-
9
- ### Module Not Found
10
-
11
- **Error:** `Cannot find module 'testdriverai'`
12
-
13
- **Solution:**
14
- ```bash
15
- # Verify installation
16
- npm list testdriverai
17
-
18
- # Reinstall
19
- npm install testdriverai --save-dev
20
-
21
- # Clear cache and reinstall
22
- rm -rf node_modules package-lock.json
23
- npm install
24
- ```
25
-
26
- ### Version Mismatch
27
-
28
- **Error:** `TestDriver requires Node 16+`
29
-
30
- **Solution:**
31
- ```bash
32
- # Check Node version
33
- node --version
34
-
35
- # Update Node
36
- nvm install 18
37
- nvm use 18
38
- ```
39
-
40
- ## Authentication Issues
41
-
42
- ### API Key Not Found
43
-
44
- **Error:** `API key required`
45
-
46
- **Solution:**
47
- ```bash
48
- # Create .env file
49
- echo "TD_API_KEY=your_api_key_here" > .env
50
-
51
- # Verify it loads
52
- node -e "require('dotenv').config(); console.log(process.env.TD_API_KEY)"
53
- ```
54
-
55
- ### Invalid API Key
56
-
57
- **Error:** `Authentication failed: Invalid API key`
58
-
59
- **Solution:**
60
- 1. Verify key at [console.testdriver.ai/team](https://console.testdriver.ai/team)
61
- 2. Check for typos or extra spaces
62
- 3. Regenerate key if needed
63
-
64
- ```javascript
65
- // Remove quotes, spaces, newlines
66
- const apiKey = process.env.TD_API_KEY.trim();
67
- ```
68
-
69
- ## Connection Issues
70
-
71
- ### Sandbox Connection Timeout
72
-
73
- **Error:** `Connection timeout after 60000ms`
74
-
75
- **Solution:**
76
- ```javascript
77
- // Increase connection timeout
78
- const client = await TestDriver.create({
79
- apiKey: process.env.TD_API_KEY,
80
- connectionTimeout: 120000 // 2 minutes
81
- });
82
-
83
- // Or retry connection
84
- let attempts = 0;
85
- while (attempts < 3) {
86
- try {
87
- await client.connect();
88
- break;
89
- } catch (error) {
90
- attempts++;
91
- if (attempts === 3) throw error;
92
- await new Promise(r => setTimeout(r, 5000));
93
- }
94
- }
95
- ```
96
-
97
- ### Sandbox Quota Exceeded
98
-
99
- **Error:** `Sandbox limit reached`
100
-
101
- **Solution:**
102
- 1. Check your [quota](https://console.testdriver.ai/team)
103
- 2. Disconnect old sandboxes
104
- 3. Upgrade plan if needed
105
-
106
- ```javascript
107
- // Ensure cleanup in all tests
108
- afterAll(async () => {
109
- await testdriver?.disconnect();
110
- });
111
- ```
112
-
113
- ## Element Finding Issues
114
-
115
- ### Element Not Found
116
-
117
- **Error:** Element returns `found() === false`
118
-
119
- **Solutions:**
120
-
121
- **1. Be more specific:**
122
- ```javascript
123
- // ❌ Too vague
124
- await testdriver.find('button');
125
-
126
- // ✅ Specific
127
- await testdriver.find('blue submit button at bottom right of login form');
128
- ```
129
-
130
- **2. Wait for element to appear:**
131
- ```javascript
132
- async function waitFor(testdriver, description, timeout = 30000) {
133
- const start = Date.now();
134
- while (Date.now() - start < timeout) {
135
- const element = await testdriver.find(description);
136
- if (element.found()) return element;
137
- await new Promise(r => setTimeout(r, 1000));
138
- }
139
- throw new Error(`Timeout waiting for: ${description}`);
140
- }
141
-
142
- const button = await waitFor(testdriver, 'submit button');
143
- ```
144
-
145
- **3. Check if page loaded:**
146
- ```javascript
147
- // Verify page is ready
148
- await testdriver.assert('page fully loaded');
149
- await testdriver.find('submit button');
150
- ```
151
-
152
- **4. Try alternative descriptions:**
153
- ```javascript
154
- const descriptions = [
155
- 'submit button',
156
- 'blue button at bottom',
157
- 'button with text Submit',
158
- 'primary button in form'
159
- ];
160
-
161
- let button;
162
- for (const desc of descriptions) {
163
- button = await testdriver.find(desc);
164
- if (button.found()) break;
165
- }
166
- ```
167
-
168
- ### Wrong Element Found
169
-
170
- **Issue:** Finds wrong element or multiple matches
171
-
172
- **Solutions:**
173
-
174
- **1. Add more context:**
175
- ```javascript
176
- // ❌ Ambiguous
177
- await testdriver.find('delete button');
178
-
179
- // ✅ Specific location
180
- await testdriver.find('delete button in the row for user John Doe');
181
- await testdriver.find('red delete button next to email field');
182
- ```
183
-
184
- **2. Check confidence:**
185
- ```javascript
186
- const element = await testdriver.find('button');
187
- console.log('Confidence:', element.confidence);
188
-
189
- if (element.confidence < 0.8) {
190
- console.warn('Low confidence, trying alternative');
191
- element = await testdriver.find('more specific button description');
192
- }
193
- ```
194
-
195
- ## Cache Issues
196
-
197
- ### Stale Cache
198
-
199
- **Issue:** Using outdated cached element
200
-
201
- **Solutions:**
202
-
203
- **1. Bypass cache:**
204
- ```javascript
205
- // Force fresh lookup
206
- const element = await testdriver.find('button', { threshold: -1 });
207
- ```
208
-
209
- **2. Clear cache:**
210
- ```bash
211
- # Clear prompt cache
212
- rm -rf .testdriver/.cache/*.yaml
213
-
214
- # Clear selector cache via console
215
- # Visit https://console.testdriver.ai
216
- ```
217
-
218
- **3. Adjust threshold:**
219
- ```javascript
220
- // More lenient (90% similarity)
221
- await testdriver.find('button', { threshold: 0.10 });
222
-
223
- // Stricter (99% similarity)
224
- await testdriver.find('button', { threshold: 0.01 });
225
- ```
226
-
227
- ### Cache Not Working
228
-
229
- **Issue:** No cache hits despite repeated calls
230
-
231
- **Solutions:**
232
-
233
- **1. Use consistent prompts:**
234
- ```javascript
235
- // ❌ Different prompts
236
- await testdriver.find('submit button');
237
- await testdriver.find('the submit button');
238
-
239
- // ✅ Consistent
240
- const desc = 'submit button';
241
- await testdriver.find(desc);
242
- await testdriver.find(desc); // Cache hit
243
- ```
244
-
245
- **2. Check cache is enabled:**
246
- ```javascript
247
- // Verify cache not disabled
248
- console.log('Prompt cache:', !process.env.TD_NO_PROMPT_CACHE);
249
- console.log('Selector cache:', !process.env.TD_NO_SELECTOR_CACHE);
250
- ```
251
-
252
- ## Command Execution Issues
253
-
254
- ### exec() Timeout
255
-
256
- **Error:** `Command timeout after 30000ms`
257
-
258
- **Solutions:**
259
-
260
- **1. Increase timeout:**
261
- ```javascript
262
- await testdriver.exec('sh', 'slow-command', 120000); // 2 minutes
263
- ```
264
-
265
- **2. Run in background:**
266
- ```javascript
267
- // Add & for background execution
268
- await testdriver.exec('sh', 'long-running-process &', 5000);
269
- ```
270
-
271
- **3. Check command exists:**
272
- ```javascript
273
- // Verify command available
274
- const result = await testdriver.exec('sh', 'which google-chrome', 5000, true);
275
- console.log('Chrome path:', result);
276
- ```
277
-
278
- ### Command Failed
279
-
280
- **Error:** Command returns non-zero exit code
281
-
282
- **Solutions:**
283
-
284
- **1. Ignore errors:**
285
- ```javascript
286
- // Last parameter ignores errors
287
- await testdriver.exec('sh', 'risky-command', 30000, true);
288
- ```
289
-
290
- **2. Check output:**
291
- ```javascript
292
- try {
293
- const output = await testdriver.exec('sh', 'command', 30000, false);
294
- console.log('Output:', output);
295
- } catch (error) {
296
- console.error('Command failed:', error.message);
297
- }
298
- ```
299
-
300
- **3. Use correct shell:**
301
- ```javascript
302
- // Linux/Mac
303
- await testdriver.exec('sh', 'echo "test"', 5000);
304
-
305
- // Windows
306
- await testdriver.exec('pwsh', 'Write-Output "test"', 5000);
307
- ```
308
-
309
- ## Test Execution Issues
310
-
311
- ### Test Timeout
312
-
313
- **Error:** `Test timed out after 60000ms`
314
-
315
- **Solutions:**
316
-
317
- **1. Increase test timeout:**
318
- ```javascript
319
- // vitest.config.mjs
320
- export default defineConfig({
321
- test: {
322
- testTimeout: 300000 // 5 minutes
323
- }
324
- });
325
-
326
- // Or per test
327
- test('slow test', async () => {
328
- // ...
329
- }, 300000); // 5 minutes
330
- ```
331
-
332
- **2. Optimize test:**
333
- ```javascript
334
- // Use faster actions
335
- await testdriver.find('button').then(el => el.click());
336
-
337
- // Instead of
338
- await testdriver.ai('click the button');
339
- ```
340
-
341
- ### Tests Fail in CI
342
-
343
- **Issue:** Tests pass locally but fail in CI
344
-
345
- **Solutions:**
346
-
347
- **1. Check environment variables:**
348
- ```yaml
349
- # .github/workflows/test.yml
350
- env:
351
- TD_API_KEY: ${{ secrets.TD_API_KEY }}
352
- TD_DEFAULT_OS: linux
353
- ```
354
-
355
- **2. Increase timeouts for CI:**
356
- ```javascript
357
- const timeout = process.env.CI ? 600000 : 300000;
358
-
359
- export default defineConfig({
360
- test: {
361
- testTimeout: timeout
362
- }
363
- });
364
- ```
365
-
366
- **3. Reduce concurrency:**
367
- ```javascript
368
- // CI might have resource limits
369
- export default defineConfig({
370
- test: {
371
- maxConcurrency: process.env.CI ? 2 : 5
372
- }
373
- });
374
- ```
375
-
376
- ## Dashcam Issues
377
-
378
- ### No Replay URL
379
-
380
- **Issue:** `dashcam.url` is `null`
381
-
382
- **Solutions:**
383
-
384
- **1. Ensure dashcam started:**
385
- ```javascript
386
- const dashcam = new Dashcam(client);
387
- await dashcam.auth();
388
- await dashcam.start(); // Must call start!
389
-
390
- // Run test
391
-
392
- const url = await dashcam.stop();
393
- console.log('Replay:', url);
394
- ```
395
-
396
- **2. Check dashcam installed:**
397
- ```javascript
398
- // Verify dashcam CLI available
399
- await testdriver.exec('sh', 'dashcam version', 5000);
400
- ```
401
-
402
- **3. Use preset:**
403
- ```javascript
404
- // Presets handle dashcam automatically
405
- const { testdriver, dashcam } = await chrome(context, {
406
- dashcam: true
407
- });
408
- ```
409
-
410
- ### Recording Not Started
411
-
412
- **Issue:** Dashcam doesn't record
413
-
414
- **Solutions:**
415
-
416
- **1. Check authentication:**
417
- ```javascript
418
- await dashcam.auth(process.env.TD_API_KEY);
419
- const recording = await dashcam.isRecording();
420
- console.log('Recording:', recording);
421
- ```
422
-
423
- **2. Wait after start:**
424
- ```javascript
425
- await dashcam.start();
426
- await new Promise(r => setTimeout(r, 2000)); // Wait 2s
427
- ```
428
-
429
- ## Performance Issues
430
-
431
- ### Slow Test Execution
432
-
433
- **Solutions:**
434
-
435
- **1. Reuse sandboxes:**
436
- ```javascript
437
- // ✅ One sandbox per suite
438
- beforeAll(async () => {
439
- testdriver = await TestDriver.create(...);
440
- });
441
-
442
- // ❌ One per test (slow!)
443
- beforeEach(async () => {
444
- testdriver = await TestDriver.create(...);
445
- });
446
- ```
447
-
448
- **2. Use caching:**
449
- ```javascript
450
- // Enable caching for repeated elements
451
- await testdriver.find('button'); // First call
452
- await testdriver.find('button'); // Cached (faster!)
453
- ```
454
-
455
- **3. Run in parallel:**
456
- ```javascript
457
- // vitest.config.mjs
458
- export default defineConfig({
459
- test: {
460
- maxConcurrency: 5,
461
- fileParallelism: true
462
- }
463
- });
464
- ```
465
-
466
- ### High Memory Usage
467
-
468
- **Solutions:**
469
-
470
- **1. Reduce concurrency:**
471
- ```javascript
472
- maxConcurrency: 2 // Lower for resource-constrained environments
473
- ```
474
-
475
- **2. Cleanup sandboxes:**
476
- ```javascript
477
- afterAll(async () => {
478
- await testdriver?.disconnect();
479
- });
480
- ```
481
-
482
- **3. Monitor resources:**
483
- ```javascript
484
- console.log('Memory:', process.memoryUsage());
485
- ```
486
-
487
- ## Getting Help
488
-
489
- If issues persist:
490
-
491
- 1. **Check Dashcam recording** - See what actually happened
492
- 2. **Enable debug logging** - `verbosity: 2`
493
- 3. **Search Discord** - [discord.com/invite/cWDFW8DzPm](https://discord.com/invite/cWDFW8DzPm)
494
- 4. **Check docs** - [docs.testdriver.ai](https://docs.testdriver.ai)
495
- 5. **Report bug** - [github.com/testdriverai/testdriverai/issues](https://github.com/testdriverai/testdriverai/issues)
496
-
497
- ### Information to Include
498
-
499
- When reporting issues:
500
-
501
- - TestDriver version: `npm list testdriverai`
502
- - Node version: `node --version`
503
- - OS: `uname -a` or `$PSVersionTable.OS`
504
- - Error message (full stack trace)
505
- - Dashcam URL
506
- - Minimal reproduction code
507
-
508
- ## See Also
509
-
510
- <CardGroup cols={2}>
511
- <Card title="Debugging" icon="bug" href="/v7/guides/debugging">
512
- Debug failing tests
513
- </Card>
514
-
515
- <Card title="Best Practices" icon="star" href="/v7/guides/best-practices">
516
- Testing patterns
517
- </Card>
518
-
519
- <Card title="Configuration" icon="gear" href="/v7/getting-started/configuration">
520
- Configure TestDriver
521
- </Card>
522
-
523
- <Card title="FAQ" icon="question" href="/v7/guides/faq">
524
- Frequently asked questions
525
- </Card>
526
- </CardGroup>