testdriverai 7.4.5 → 7.5.8

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 (142) hide show
  1. package/{ai/skills/testdriver:quickstart → .github/skills/testdriver-quickstart}/SKILL.md +0 -1
  2. package/.github/workflows/acceptance.yaml +2 -1
  3. package/.github/workflows/windows-self-hosted.yaml +3 -2
  4. package/CHANGELOG.md +332 -0
  5. package/agent/events.js +7 -0
  6. package/agent/index.js +46 -32
  7. package/agent/lib/commands.js +1 -1
  8. package/agent/lib/sandbox.js +804 -241
  9. package/agent/lib/sdk.js +2 -1
  10. package/agent/lib/system.js +90 -1
  11. package/{.github/skills/testdriver:quickstart → ai/skills/testdriver-quickstart}/SKILL.md +0 -2
  12. package/debugger/index.html +49 -368
  13. package/docs/_data/examples-manifest.json +68 -68
  14. package/docs/_scripts/generate-skills.js +7 -2
  15. package/docs/v7/examples/ai.mdx +1 -1
  16. package/docs/v7/examples/assert.mdx +1 -1
  17. package/docs/v7/examples/chrome-extension.mdx +1 -1
  18. package/docs/v7/examples/drag-and-drop.mdx +1 -1
  19. package/docs/v7/examples/element-not-found.mdx +1 -1
  20. package/docs/v7/examples/hover-image.mdx +1 -1
  21. package/docs/v7/examples/hover-text.mdx +1 -1
  22. package/docs/v7/examples/installer.mdx +1 -1
  23. package/docs/v7/examples/launch-vscode-linux.mdx +1 -1
  24. package/docs/v7/examples/match-image.mdx +1 -1
  25. package/docs/v7/examples/press-keys.mdx +1 -1
  26. package/docs/v7/examples/scroll-keyboard.mdx +1 -1
  27. package/docs/v7/examples/scroll-until-image.mdx +1 -1
  28. package/docs/v7/examples/scroll-until-text.mdx +1 -1
  29. package/docs/v7/examples/scroll.mdx +1 -1
  30. package/docs/v7/examples/type.mdx +1 -1
  31. package/docs/v7/examples/windows-installer.mdx +1 -1
  32. package/docs/v7/quickstart.mdx +0 -2
  33. package/interfaces/cli/lib/base.js +1 -1
  34. package/interfaces/vitest-plugin.mjs +6 -5
  35. package/lib/core/Dashcam.js +51 -24
  36. package/lib/sentry.js +1 -1
  37. package/lib/vitest/hooks.mjs +9 -0
  38. package/lib/vitest/setup-aws.mjs +1 -0
  39. package/manual/packer-hover-image.test.mjs +176 -0
  40. package/package.json +2 -1
  41. package/sdk.js +31 -28
  42. package/setup/aws/cloudformation.yaml +1 -8
  43. package/setup/aws/spawn-runner.sh +2 -37
  44. package/vitest.config.mjs +4 -4
  45. package/vscode-extension/src/extension.ts +1 -1
  46. package/SKILLs.md +0 -17
  47. package/agent/lib/debugger-server.js +0 -236
  48. package/agent/lib/debugger.js +0 -45
  49. package/test-ide-preview.mjs +0 -17
  50. package/tests/airbnb-booking.test.mjs +0 -39
  51. package/tests/airbnb-search.test.mjs +0 -43
  52. package/tests/example.test.js +0 -33
  53. package/tests/login.js +0 -28
  54. /package/.github/skills/{testdriver:ai → testdriver-ai}/SKILL.md +0 -0
  55. /package/.github/skills/{testdriver:assert → testdriver-assert}/SKILL.md +0 -0
  56. /package/.github/skills/{testdriver:aws-setup → testdriver-aws-setup}/SKILL.md +0 -0
  57. /package/.github/skills/{testdriver:caching → testdriver-caching}/SKILL.md +0 -0
  58. /package/.github/skills/{testdriver:captcha → testdriver-captcha}/SKILL.md +0 -0
  59. /package/.github/skills/{testdriver:ci-cd → testdriver-ci-cd}/SKILL.md +0 -0
  60. /package/.github/skills/{testdriver:click → testdriver-click}/SKILL.md +0 -0
  61. /package/.github/skills/{testdriver:client → testdriver-client}/SKILL.md +0 -0
  62. /package/.github/skills/{testdriver:cloud → testdriver-cloud}/SKILL.md +0 -0
  63. /package/.github/skills/{testdriver:customizing-devices → testdriver-customizing-devices}/SKILL.md +0 -0
  64. /package/.github/skills/{testdriver:dashcam → testdriver-dashcam}/SKILL.md +0 -0
  65. /package/.github/skills/{testdriver:debugging-with-screenshots → testdriver-debugging-with-screenshots}/SKILL.md +0 -0
  66. /package/.github/skills/{testdriver:device-config → testdriver-device-config}/SKILL.md +0 -0
  67. /package/.github/skills/{testdriver:double-click → testdriver-double-click}/SKILL.md +0 -0
  68. /package/.github/skills/{testdriver:elements → testdriver-elements}/SKILL.md +0 -0
  69. /package/.github/skills/{testdriver:enterprise → testdriver-enterprise}/SKILL.md +0 -0
  70. /package/.github/skills/{testdriver:examples → testdriver-examples}/SKILL.md +0 -0
  71. /package/.github/skills/{testdriver:exec → testdriver-exec}/SKILL.md +0 -0
  72. /package/.github/skills/{testdriver:find → testdriver-find}/SKILL.md +0 -0
  73. /package/.github/skills/{testdriver:focus-application → testdriver-focus-application}/SKILL.md +0 -0
  74. /package/.github/skills/{testdriver:generating-tests → testdriver-generating-tests}/SKILL.md +0 -0
  75. /package/.github/skills/{testdriver:hover → testdriver-hover}/SKILL.md +0 -0
  76. /package/.github/skills/{testdriver:locating-elements → testdriver-locating-elements}/SKILL.md +0 -0
  77. /package/.github/skills/{testdriver:making-assertions → testdriver-making-assertions}/SKILL.md +0 -0
  78. /package/.github/skills/{testdriver:mcp-workflow → testdriver-mcp-workflow}/SKILL.md +0 -0
  79. /package/.github/skills/{testdriver:mouse-down → testdriver-mouse-down}/SKILL.md +0 -0
  80. /package/.github/skills/{testdriver:mouse-up → testdriver-mouse-up}/SKILL.md +0 -0
  81. /package/.github/skills/{testdriver:parse → testdriver-parse}/SKILL.md +0 -0
  82. /package/.github/skills/{testdriver:performing-actions → testdriver-performing-actions}/SKILL.md +0 -0
  83. /package/.github/skills/{testdriver:press-keys → testdriver-press-keys}/SKILL.md +0 -0
  84. /package/.github/skills/{testdriver:reusable-code → testdriver-reusable-code}/SKILL.md +0 -0
  85. /package/.github/skills/{testdriver:right-click → testdriver-right-click}/SKILL.md +0 -0
  86. /package/.github/skills/{testdriver:running-tests → testdriver-running-tests}/SKILL.md +0 -0
  87. /package/.github/skills/{testdriver:screenshot → testdriver-screenshot}/SKILL.md +0 -0
  88. /package/.github/skills/{testdriver:scroll → testdriver-scroll}/SKILL.md +0 -0
  89. /package/.github/skills/{testdriver:secrets → testdriver-secrets}/SKILL.md +0 -0
  90. /package/.github/skills/{testdriver:self-hosted → testdriver-self-hosted}/SKILL.md +0 -0
  91. /package/.github/skills/{testdriver:test-writer → testdriver-test-writer}/SKILL.md +0 -0
  92. /package/.github/skills/{testdriver:testdriver → testdriver-testdriver}/SKILL.md +0 -0
  93. /package/.github/skills/{testdriver:testdriver-mechanic → testdriver-testdriver-mechanic}/SKILL.md +0 -0
  94. /package/.github/skills/{testdriver:type → testdriver-type}/SKILL.md +0 -0
  95. /package/.github/skills/{testdriver:variables → testdriver-variables}/SKILL.md +0 -0
  96. /package/.github/skills/{testdriver:waiting-for-elements → testdriver-waiting-for-elements}/SKILL.md +0 -0
  97. /package/.github/skills/{testdriver:what-is-testdriver → testdriver-what-is-testdriver}/SKILL.md +0 -0
  98. /package/ai/skills/{testdriver:ai → testdriver-ai}/SKILL.md +0 -0
  99. /package/ai/skills/{testdriver:assert → testdriver-assert}/SKILL.md +0 -0
  100. /package/ai/skills/{testdriver:aws-setup → testdriver-aws-setup}/SKILL.md +0 -0
  101. /package/ai/skills/{testdriver:caching → testdriver-caching}/SKILL.md +0 -0
  102. /package/ai/skills/{testdriver:captcha → testdriver-captcha}/SKILL.md +0 -0
  103. /package/ai/skills/{testdriver:ci-cd → testdriver-ci-cd}/SKILL.md +0 -0
  104. /package/ai/skills/{testdriver:click → testdriver-click}/SKILL.md +0 -0
  105. /package/ai/skills/{testdriver:client → testdriver-client}/SKILL.md +0 -0
  106. /package/ai/skills/{testdriver:cloud → testdriver-cloud}/SKILL.md +0 -0
  107. /package/ai/skills/{testdriver:customizing-devices → testdriver-customizing-devices}/SKILL.md +0 -0
  108. /package/ai/skills/{testdriver:dashcam → testdriver-dashcam}/SKILL.md +0 -0
  109. /package/ai/skills/{testdriver:debugging-with-screenshots → testdriver-debugging-with-screenshots}/SKILL.md +0 -0
  110. /package/ai/skills/{testdriver:device-config → testdriver-device-config}/SKILL.md +0 -0
  111. /package/ai/skills/{testdriver:double-click → testdriver-double-click}/SKILL.md +0 -0
  112. /package/ai/skills/{testdriver:elements → testdriver-elements}/SKILL.md +0 -0
  113. /package/ai/skills/{testdriver:enterprise → testdriver-enterprise}/SKILL.md +0 -0
  114. /package/ai/skills/{testdriver:examples → testdriver-examples}/SKILL.md +0 -0
  115. /package/ai/skills/{testdriver:exec → testdriver-exec}/SKILL.md +0 -0
  116. /package/ai/skills/{testdriver:find → testdriver-find}/SKILL.md +0 -0
  117. /package/ai/skills/{testdriver:focus-application → testdriver-focus-application}/SKILL.md +0 -0
  118. /package/ai/skills/{testdriver:generating-tests → testdriver-generating-tests}/SKILL.md +0 -0
  119. /package/ai/skills/{testdriver:hover → testdriver-hover}/SKILL.md +0 -0
  120. /package/ai/skills/{testdriver:locating-elements → testdriver-locating-elements}/SKILL.md +0 -0
  121. /package/ai/skills/{testdriver:making-assertions → testdriver-making-assertions}/SKILL.md +0 -0
  122. /package/ai/skills/{testdriver:mcp-workflow → testdriver-mcp-workflow}/SKILL.md +0 -0
  123. /package/ai/skills/{testdriver:mouse-down → testdriver-mouse-down}/SKILL.md +0 -0
  124. /package/ai/skills/{testdriver:mouse-up → testdriver-mouse-up}/SKILL.md +0 -0
  125. /package/ai/skills/{testdriver:parse → testdriver-parse}/SKILL.md +0 -0
  126. /package/ai/skills/{testdriver:performing-actions → testdriver-performing-actions}/SKILL.md +0 -0
  127. /package/ai/skills/{testdriver:press-keys → testdriver-press-keys}/SKILL.md +0 -0
  128. /package/ai/skills/{testdriver:reusable-code → testdriver-reusable-code}/SKILL.md +0 -0
  129. /package/ai/skills/{testdriver:right-click → testdriver-right-click}/SKILL.md +0 -0
  130. /package/ai/skills/{testdriver:running-tests → testdriver-running-tests}/SKILL.md +0 -0
  131. /package/ai/skills/{testdriver:screenshot → testdriver-screenshot}/SKILL.md +0 -0
  132. /package/ai/skills/{testdriver:scroll → testdriver-scroll}/SKILL.md +0 -0
  133. /package/ai/skills/{testdriver:secrets → testdriver-secrets}/SKILL.md +0 -0
  134. /package/ai/skills/{testdriver:self-hosted → testdriver-self-hosted}/SKILL.md +0 -0
  135. /package/ai/skills/{testdriver:test-writer → testdriver-test-writer}/SKILL.md +0 -0
  136. /package/ai/skills/{testdriver:testdriver → testdriver-testdriver}/SKILL.md +0 -0
  137. /package/ai/skills/{testdriver:testdriver-mechanic → testdriver-testdriver-mechanic}/SKILL.md +0 -0
  138. /package/ai/skills/{testdriver:type → testdriver-type}/SKILL.md +0 -0
  139. /package/ai/skills/{testdriver:variables → testdriver-variables}/SKILL.md +0 -0
  140. /package/ai/skills/{testdriver:waiting-for-elements → testdriver-waiting-for-elements}/SKILL.md +0 -0
  141. /package/ai/skills/{testdriver:what-is-testdriver → testdriver-what-is-testdriver}/SKILL.md +0 -0
  142. /package/{test/api-resilience.test.mjs → lib/vitest/gate-server.mjs} +0 -0
@@ -80,7 +80,6 @@ TestDriver makes it easy to write automated computer-use tests for web browsers,
80
80
  test: {
81
81
  testTimeout: 900000,
82
82
  hookTimeout: 900000,
83
- disableConsoleIntercept: true,
84
83
  maxConcurrency: 1, // this should match your plan's concurrency limit
85
84
  reporters: [
86
85
  'default',
@@ -14,7 +14,7 @@ concurrency:
14
14
 
15
15
  jobs:
16
16
  test-linux:
17
- runs-on: testdriver-32
17
+ runs-on: testdriver-16
18
18
 
19
19
  steps:
20
20
  - uses: actions/checkout@v4
@@ -36,6 +36,7 @@ jobs:
36
36
  TD_API_KEY: ${{ secrets.TD_API_KEY }}
37
37
  TWOCAPTCHA_API_KEY: ${{ secrets.TWOCAPTCHA_API_KEY }}
38
38
  TD_OS: linux
39
+ TD_API_ROOT: https://testdriver-api-pr-242.onrender.com
39
40
 
40
41
  - name: Upload test results to Sentry Prevent
41
42
  if: ${{ !cancelled() }}
@@ -22,7 +22,7 @@ on:
22
22
 
23
23
  jobs:
24
24
  test:
25
- runs-on: testdriver-32
25
+ runs-on: testdriver-16
26
26
 
27
27
  steps:
28
28
  - name: Checkout repository
@@ -50,8 +50,9 @@ jobs:
50
50
  AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
51
51
  AWS_REGION: us-east-2
52
52
  AWS_LAUNCH_TEMPLATE_ID: lt-0ef9bf26a945fb442
53
- AMI_ID: ami-0dd5fa241273a7d50
53
+ AMI_ID: ami-0a29a02201634730e
54
54
  RESOLUTION: 1920x1080
55
+ TD_API_ROOT: https://testdriver-api-pr-242.onrender.com
55
56
 
56
57
  - name: Upload test results
57
58
  if: always()
package/CHANGELOG.md CHANGED
@@ -1,3 +1,335 @@
1
+ ## 7.5.8 (2026-03-06)
2
+
3
+ ## 🔧 Maintenance
4
+
5
+ - Remove deprecated SDK publishing workflow and update runner configuration [Runner] (84ec0219)
6
+
7
+ ## 7.5.7 (2026-03-06)
8
+
9
+ ## ✨ Features
10
+
11
+ - Improve Windows compatibility by renaming skill directories to use hyphens instead of colons [SDK] (7f00a912)
12
+ - Add automated release workflow for streamlined version management across packages (227a9f00)
13
+ - Enhance development environment with improved devcontainer setup and service management scripts (d5bf8460)
14
+
15
+ ## 🐛 Bug Fixes
16
+
17
+ - Fix usage limit checking functionality to properly validate account limits [API] (360ce1e9)
18
+ - Resolve cloning issues on Windows systems caused by invalid directory names in skill files [SDK] (a0cbb8db)
19
+
20
+ ## 🔧 Maintenance
21
+
22
+ - Streamline debugger interface with simplified HTML structure [SDK] (d5bf8460)
23
+ - Remove deprecated Vitest gate server and global setup files [SDK] (d5bf8460)
24
+ - Clean up unused debugger assets from web package [Web] (d5bf8460)
25
+ - Update environment configuration and service authentication [API] (19cf8b34)
26
+ - Consolidate GitHub workflows and remove duplicate test configurations [API] (d5bf8460)
27
+ - Add version synchronization and changelog generation scripts for better release management (d5bf8460)
28
+
29
+ ## 7.5.6 (2026-03-05)
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * Ably direct connection provisioning + reconnect resilience ([39e778a](https://github.com/testdriverai/mono/commit/39e778ac73cc51caad076149cf1671b37973ccf6))
35
+ * Ably reconnect resilience - faster retry + suspended state handler ([c228202](https://github.com/testdriverai/mono/commit/c228202a6593b9431d0cc2d3514b0722bf526e8a))
36
+ * direction & amount not correctly sent to VM ([488a0d0](https://github.com/testdriverai/mono/commit/488a0d0921428e7673dddcf27b3238af8d88a7b1))
37
+ * Mouse scrolling in VM ([#291](https://github.com/testdriverai/mono/issues/291)) ([80ca55e](https://github.com/testdriverai/mono/commit/80ca55ec91ce00052bea81ce3033aad7c5216e47))
38
+ * OpenCV throws if needle is larger than the haystack ([#292](https://github.com/testdriverai/mono/issues/292)) ([652b8b1](https://github.com/testdriverai/mono/commit/652b8b109d1c45ee4becbfb923d33a15a1e0d443))
39
+ * provision Ably credentials via SSM for direct IP connections ([6ecdecf](https://github.com/testdriverai/mono/commit/6ecdecf766897a506cd20a3a03814eae48a168f8))
40
+ * reduce Sentry noise from PyAutoGUIClient unhandled data logs ([#122](https://github.com/testdriverai/mono/issues/122)) ([93b6d74](https://github.com/testdriverai/mono/commit/93b6d7485c1f6accc36d9efee10ea8b819c02d72))
41
+ * skip connectToSandboxDirect for E2B sandboxes (url already available from create) ([2a58865](https://github.com/testdriverai/mono/commit/2a58865ebc04b0299f7b92ed912aa78cfc2c8736))
42
+ * use team ID in E2B screenshot S3 path to match download-url access check ([0d1b6ee](https://github.com/testdriverai/mono/commit/0d1b6ee702008b31677c8f4e0858ee3f2acbbbaf))
43
+
44
+
45
+ ### Features
46
+
47
+ * Add elementSimilarity to selector cache ([#121](https://github.com/testdriverai/mono/issues/121)) ([ce39b2e](https://github.com/testdriverai/mono/commit/ce39b2e819e22d72f401e5762e45cef3478752d9))
48
+ * add type and confidence inputs to find endpoint ([#162](https://github.com/testdriverai/mono/issues/162)) ([283e699](https://github.com/testdriverai/mono/commit/283e699523ce362cf1e73086dbb99281336a5a23)), closes [#164](https://github.com/testdriverai/mono/issues/164)
49
+ * add type option to find(), move confidence to API, rename ocr to parse ([#640](https://github.com/testdriverai/mono/issues/640)) ([d98a94b](https://github.com/testdriverai/mono/commit/d98a94bd05c135c74d9fed2ebb72c709fc643337))
50
+ * add windows key ([59b96e8](https://github.com/testdriverai/mono/commit/59b96e8db4d2a29539d9dadc19431c70abe81e3e))
51
+ * **auth:** create team and start Stripe trial on new user signup ([1dcd2b4](https://github.com/testdriverai/mono/commit/1dcd2b408335515b09efdc8415248242c802393b))
52
+ * stream exec stdout in 16KB chunks to avoid Ably 64KB limit ([018f7b5](https://github.com/testdriverai/mono/commit/018f7b5380107818aa415714ee48a3656ebc2d76))
53
+ * Websocket connection health and request timeouts ([#109](https://github.com/testdriverai/mono/issues/109)) ([b7709f5](https://github.com/testdriverai/mono/commit/b7709f5dfaf3b051684f8728708cbc518754cb93))
54
+
55
+
56
+ ### Reverts
57
+
58
+ * Revert "Fix hanging node processes on Ctrl+C (#654)" (#683) ([5e68748](https://github.com/testdriverai/mono/commit/5e6874825c6718e006bbf84e2ba5edae57d173ac)), closes [#654](https://github.com/testdriverai/mono/issues/654) [#683](https://github.com/testdriverai/mono/issues/683)
59
+ * Revert "Ianjennings/fly (#72)" ([09e2417](https://github.com/testdriverai/mono/commit/09e241731537ff094e7096afc1b2e5d804353226)), closes [#72](https://github.com/testdriverai/mono/issues/72)
60
+ * Revert "list dashcam version g" ([5037571](https://github.com/testdriverai/mono/commit/5037571440c33f8966104874c542c6c57a809510))
61
+ * Revert "Disable warm instances by setting pool size to 0 (#49)" (#51) ([c442ec5](https://github.com/testdriverai/mono/commit/c442ec52edab586be3ae8a3eadb34c32338cdea3)), closes [#49](https://github.com/testdriverai/mono/issues/49) [#51](https://github.com/testdriverai/mono/issues/51)
62
+ * Revert "update discord invite" ([b5a9b99](https://github.com/testdriverai/mono/commit/b5a9b9955cf2b0b07fd0ebeb6abf65f89cd3d5a8))
63
+ * Revert "Change MAX_INSTANCES from 50 to 8 (#40)" (#41) ([1d4a3ca](https://github.com/testdriverai/mono/commit/1d4a3cacc5624b478f1e09b953cd56680e160292)), closes [#40](https://github.com/testdriverai/mono/issues/40) [#41](https://github.com/testdriverai/mono/issues/41)
64
+ * Revert "TDT-68 – Show User API Key on Team page" (#349) ([3a594aa](https://github.com/testdriverai/mono/commit/3a594aa73ef36f6b50585c72b9a770708a21c932)), closes [#349](https://github.com/testdriverai/mono/issues/349) [#348](https://github.com/testdriverai/mono/issues/348)
65
+ * Revert "TDT-129 – Always run postrun, even on failure (#368)" (#411) ([1be8c7c](https://github.com/testdriverai/mono/commit/1be8c7c1d22cff39d4a96261c31d8befb8376f47)), closes [#368](https://github.com/testdriverai/mono/issues/368) [#411](https://github.com/testdriverai/mono/issues/411)
66
+ * Revert "TDT-139 – Add hover-text-with-single-characters test" (#407) ([203529a](https://github.com/testdriverai/mono/commit/203529a434e21eb0ccc8037c6ce88f53a4a62f81)), closes [#407](https://github.com/testdriverai/mono/issues/407) [#381](https://github.com/testdriverai/mono/issues/381)
67
+ * Revert "Fix json-schema (#387)" (#389) ([4bddbba](https://github.com/testdriverai/mono/commit/4bddbbad49cd0e491f47e86fb5ecbf945f162bdc)), closes [#387](https://github.com/testdriverai/mono/issues/387) [#389](https://github.com/testdriverai/mono/issues/389)
68
+ * Revert "build with new version of testdriverai client" ([70bdb70](https://github.com/testdriverai/mono/commit/70bdb7033e99f8457205a126261dde295ec1b1f3))
69
+ * Revert "TDT-68-user-apiKey" (#347) ([ecc6057](https://github.com/testdriverai/mono/commit/ecc6057f719d92f8dc7a32e156fdc812f04a0d3b)), closes [#347](https://github.com/testdriverai/mono/issues/347) [#346](https://github.com/testdriverai/mono/issues/346)
70
+ * Revert "TD-2151 – throw if an env variable is missing (#285)" (#288) ([2fcbdf1](https://github.com/testdriverai/mono/commit/2fcbdf1f190b9ced7644f872fd02e64339dbe956)), closes [#285](https://github.com/testdriverai/mono/issues/285) [#288](https://github.com/testdriverai/mono/issues/288)
71
+ * Revert "Match Images Server Side (#268)" ([1a49198](https://github.com/testdriverai/mono/commit/1a49198b34293d8da8972b32d02bac94c1f1519b)), closes [#268](https://github.com/testdriverai/mono/issues/268)
72
+ * Revert "optimal fix for typing repeated chars (#235)" (#254) ([da773b3](https://github.com/testdriverai/mono/commit/da773b34055ccccf38993c23c4a8a86ccc5ccf74)), closes [#235](https://github.com/testdriverai/mono/issues/235) [#254](https://github.com/testdriverai/mono/issues/254)
73
+ * Revert "make sure things get summarized" ([38be3a3](https://github.com/testdriverai/mono/commit/38be3a3da13147760fc4e84b82bb5672343e9493))
74
+ * Revert "reverting to 137" ([07d9d48](https://github.com/testdriverai/mono/commit/07d9d48e2820119eacee6daafcf7dda89182f6d5))
75
+ * Revert "Add Api key support (#127)" ([f0dccb7](https://github.com/testdriverai/mono/commit/f0dccb72bb2ed35a4634f83f0e71b58bfe8516f5)), closes [#127](https://github.com/testdriverai/mono/issues/127)
76
+ * Revert "chrome extension survey page (#269)" ([6fe67d1](https://github.com/testdriverai/mono/commit/6fe67d18fa2e238f173c96f5f24af0d7d277ed0c)), closes [#269](https://github.com/testdriverai/mono/issues/269)
77
+ * Revert "Update "Always by your side" description" ([26893a9](https://github.com/testdriverai/mono/commit/26893a90008a099d51ff6955642e54eb917cf464))
78
+ * Revert "add correct reporting for env in vite" ([3fb0c8f](https://github.com/testdriverai/mono/commit/3fb0c8ff309beffa5f6a99cec645a2693f12030a))
79
+ ## 7.5.5 (2026-03-05)
80
+
81
+
82
+ ### Bug Fixes
83
+
84
+ * Ably direct connection provisioning + reconnect resilience ([39e778a](https://github.com/testdriverai/mono/commit/39e778ac73cc51caad076149cf1671b37973ccf6))
85
+ * Ably reconnect resilience - faster retry + suspended state handler ([c228202](https://github.com/testdriverai/mono/commit/c228202a6593b9431d0cc2d3514b0722bf526e8a))
86
+ * direction & amount not correctly sent to VM ([488a0d0](https://github.com/testdriverai/mono/commit/488a0d0921428e7673dddcf27b3238af8d88a7b1))
87
+ * Mouse scrolling in VM ([#291](https://github.com/testdriverai/mono/issues/291)) ([80ca55e](https://github.com/testdriverai/mono/commit/80ca55ec91ce00052bea81ce3033aad7c5216e47))
88
+ * OpenCV throws if needle is larger than the haystack ([#292](https://github.com/testdriverai/mono/issues/292)) ([652b8b1](https://github.com/testdriverai/mono/commit/652b8b109d1c45ee4becbfb923d33a15a1e0d443))
89
+ * provision Ably credentials via SSM for direct IP connections ([6ecdecf](https://github.com/testdriverai/mono/commit/6ecdecf766897a506cd20a3a03814eae48a168f8))
90
+ * reduce Sentry noise from PyAutoGUIClient unhandled data logs ([#122](https://github.com/testdriverai/mono/issues/122)) ([93b6d74](https://github.com/testdriverai/mono/commit/93b6d7485c1f6accc36d9efee10ea8b819c02d72))
91
+ * skip connectToSandboxDirect for E2B sandboxes (url already available from create) ([2a58865](https://github.com/testdriverai/mono/commit/2a58865ebc04b0299f7b92ed912aa78cfc2c8736))
92
+ * use team ID in E2B screenshot S3 path to match download-url access check ([0d1b6ee](https://github.com/testdriverai/mono/commit/0d1b6ee702008b31677c8f4e0858ee3f2acbbbaf))
93
+
94
+
95
+ ### Features
96
+
97
+ * Add elementSimilarity to selector cache ([#121](https://github.com/testdriverai/mono/issues/121)) ([ce39b2e](https://github.com/testdriverai/mono/commit/ce39b2e819e22d72f401e5762e45cef3478752d9))
98
+ * add type and confidence inputs to find endpoint ([#162](https://github.com/testdriverai/mono/issues/162)) ([283e699](https://github.com/testdriverai/mono/commit/283e699523ce362cf1e73086dbb99281336a5a23)), closes [#164](https://github.com/testdriverai/mono/issues/164)
99
+ * add type option to find(), move confidence to API, rename ocr to parse ([#640](https://github.com/testdriverai/mono/issues/640)) ([d98a94b](https://github.com/testdriverai/mono/commit/d98a94bd05c135c74d9fed2ebb72c709fc643337))
100
+ * add windows key ([59b96e8](https://github.com/testdriverai/mono/commit/59b96e8db4d2a29539d9dadc19431c70abe81e3e))
101
+ * **auth:** create team and start Stripe trial on new user signup ([1dcd2b4](https://github.com/testdriverai/mono/commit/1dcd2b408335515b09efdc8415248242c802393b))
102
+ * stream exec stdout in 16KB chunks to avoid Ably 64KB limit ([018f7b5](https://github.com/testdriverai/mono/commit/018f7b5380107818aa415714ee48a3656ebc2d76))
103
+ * Websocket connection health and request timeouts ([#109](https://github.com/testdriverai/mono/issues/109)) ([b7709f5](https://github.com/testdriverai/mono/commit/b7709f5dfaf3b051684f8728708cbc518754cb93))
104
+
105
+
106
+ ### Reverts
107
+
108
+ * Revert "Fix hanging node processes on Ctrl+C (#654)" (#683) ([5e68748](https://github.com/testdriverai/mono/commit/5e6874825c6718e006bbf84e2ba5edae57d173ac)), closes [#654](https://github.com/testdriverai/mono/issues/654) [#683](https://github.com/testdriverai/mono/issues/683)
109
+ * Revert "Ianjennings/fly (#72)" ([09e2417](https://github.com/testdriverai/mono/commit/09e241731537ff094e7096afc1b2e5d804353226)), closes [#72](https://github.com/testdriverai/mono/issues/72)
110
+ * Revert "list dashcam version g" ([5037571](https://github.com/testdriverai/mono/commit/5037571440c33f8966104874c542c6c57a809510))
111
+ * Revert "Disable warm instances by setting pool size to 0 (#49)" (#51) ([c442ec5](https://github.com/testdriverai/mono/commit/c442ec52edab586be3ae8a3eadb34c32338cdea3)), closes [#49](https://github.com/testdriverai/mono/issues/49) [#51](https://github.com/testdriverai/mono/issues/51)
112
+ * Revert "update discord invite" ([b5a9b99](https://github.com/testdriverai/mono/commit/b5a9b9955cf2b0b07fd0ebeb6abf65f89cd3d5a8))
113
+ * Revert "Change MAX_INSTANCES from 50 to 8 (#40)" (#41) ([1d4a3ca](https://github.com/testdriverai/mono/commit/1d4a3cacc5624b478f1e09b953cd56680e160292)), closes [#40](https://github.com/testdriverai/mono/issues/40) [#41](https://github.com/testdriverai/mono/issues/41)
114
+ * Revert "TDT-68 – Show User API Key on Team page" (#349) ([3a594aa](https://github.com/testdriverai/mono/commit/3a594aa73ef36f6b50585c72b9a770708a21c932)), closes [#349](https://github.com/testdriverai/mono/issues/349) [#348](https://github.com/testdriverai/mono/issues/348)
115
+ * Revert "TDT-129 – Always run postrun, even on failure (#368)" (#411) ([1be8c7c](https://github.com/testdriverai/mono/commit/1be8c7c1d22cff39d4a96261c31d8befb8376f47)), closes [#368](https://github.com/testdriverai/mono/issues/368) [#411](https://github.com/testdriverai/mono/issues/411)
116
+ * Revert "TDT-139 – Add hover-text-with-single-characters test" (#407) ([203529a](https://github.com/testdriverai/mono/commit/203529a434e21eb0ccc8037c6ce88f53a4a62f81)), closes [#407](https://github.com/testdriverai/mono/issues/407) [#381](https://github.com/testdriverai/mono/issues/381)
117
+ * Revert "Fix json-schema (#387)" (#389) ([4bddbba](https://github.com/testdriverai/mono/commit/4bddbbad49cd0e491f47e86fb5ecbf945f162bdc)), closes [#387](https://github.com/testdriverai/mono/issues/387) [#389](https://github.com/testdriverai/mono/issues/389)
118
+ * Revert "build with new version of testdriverai client" ([70bdb70](https://github.com/testdriverai/mono/commit/70bdb7033e99f8457205a126261dde295ec1b1f3))
119
+ * Revert "TDT-68-user-apiKey" (#347) ([ecc6057](https://github.com/testdriverai/mono/commit/ecc6057f719d92f8dc7a32e156fdc812f04a0d3b)), closes [#347](https://github.com/testdriverai/mono/issues/347) [#346](https://github.com/testdriverai/mono/issues/346)
120
+ * Revert "TD-2151 – throw if an env variable is missing (#285)" (#288) ([2fcbdf1](https://github.com/testdriverai/mono/commit/2fcbdf1f190b9ced7644f872fd02e64339dbe956)), closes [#285](https://github.com/testdriverai/mono/issues/285) [#288](https://github.com/testdriverai/mono/issues/288)
121
+ * Revert "Match Images Server Side (#268)" ([1a49198](https://github.com/testdriverai/mono/commit/1a49198b34293d8da8972b32d02bac94c1f1519b)), closes [#268](https://github.com/testdriverai/mono/issues/268)
122
+ * Revert "optimal fix for typing repeated chars (#235)" (#254) ([da773b3](https://github.com/testdriverai/mono/commit/da773b34055ccccf38993c23c4a8a86ccc5ccf74)), closes [#235](https://github.com/testdriverai/mono/issues/235) [#254](https://github.com/testdriverai/mono/issues/254)
123
+ * Revert "make sure things get summarized" ([38be3a3](https://github.com/testdriverai/mono/commit/38be3a3da13147760fc4e84b82bb5672343e9493))
124
+ * Revert "reverting to 137" ([07d9d48](https://github.com/testdriverai/mono/commit/07d9d48e2820119eacee6daafcf7dda89182f6d5))
125
+ * Revert "Add Api key support (#127)" ([f0dccb7](https://github.com/testdriverai/mono/commit/f0dccb72bb2ed35a4634f83f0e71b58bfe8516f5)), closes [#127](https://github.com/testdriverai/mono/issues/127)
126
+ * Revert "chrome extension survey page (#269)" ([6fe67d1](https://github.com/testdriverai/mono/commit/6fe67d18fa2e238f173c96f5f24af0d7d277ed0c)), closes [#269](https://github.com/testdriverai/mono/issues/269)
127
+ * Revert "Update "Always by your side" description" ([26893a9](https://github.com/testdriverai/mono/commit/26893a90008a099d51ff6955642e54eb917cf464))
128
+ * Revert "add correct reporting for env in vite" ([3fb0c8f](https://github.com/testdriverai/mono/commit/3fb0c8ff309beffa5f6a99cec645a2693f12030a))
129
+ ## 7.5.4 (2026-03-05)
130
+
131
+
132
+ ### Bug Fixes
133
+
134
+ * Ably direct connection provisioning + reconnect resilience ([39e778a](https://github.com/testdriverai/mono/commit/39e778ac73cc51caad076149cf1671b37973ccf6))
135
+ * Ably reconnect resilience - faster retry + suspended state handler ([c228202](https://github.com/testdriverai/mono/commit/c228202a6593b9431d0cc2d3514b0722bf526e8a))
136
+ * direction & amount not correctly sent to VM ([488a0d0](https://github.com/testdriverai/mono/commit/488a0d0921428e7673dddcf27b3238af8d88a7b1))
137
+ * Mouse scrolling in VM ([#291](https://github.com/testdriverai/mono/issues/291)) ([80ca55e](https://github.com/testdriverai/mono/commit/80ca55ec91ce00052bea81ce3033aad7c5216e47))
138
+ * OpenCV throws if needle is larger than the haystack ([#292](https://github.com/testdriverai/mono/issues/292)) ([652b8b1](https://github.com/testdriverai/mono/commit/652b8b109d1c45ee4becbfb923d33a15a1e0d443))
139
+ * provision Ably credentials via SSM for direct IP connections ([6ecdecf](https://github.com/testdriverai/mono/commit/6ecdecf766897a506cd20a3a03814eae48a168f8))
140
+ * reduce Sentry noise from PyAutoGUIClient unhandled data logs ([#122](https://github.com/testdriverai/mono/issues/122)) ([93b6d74](https://github.com/testdriverai/mono/commit/93b6d7485c1f6accc36d9efee10ea8b819c02d72))
141
+ * skip connectToSandboxDirect for E2B sandboxes (url already available from create) ([2a58865](https://github.com/testdriverai/mono/commit/2a58865ebc04b0299f7b92ed912aa78cfc2c8736))
142
+ * use team ID in E2B screenshot S3 path to match download-url access check ([0d1b6ee](https://github.com/testdriverai/mono/commit/0d1b6ee702008b31677c8f4e0858ee3f2acbbbaf))
143
+
144
+
145
+ ### Features
146
+
147
+ * Add elementSimilarity to selector cache ([#121](https://github.com/testdriverai/mono/issues/121)) ([ce39b2e](https://github.com/testdriverai/mono/commit/ce39b2e819e22d72f401e5762e45cef3478752d9))
148
+ * add type and confidence inputs to find endpoint ([#162](https://github.com/testdriverai/mono/issues/162)) ([283e699](https://github.com/testdriverai/mono/commit/283e699523ce362cf1e73086dbb99281336a5a23)), closes [#164](https://github.com/testdriverai/mono/issues/164)
149
+ * add type option to find(), move confidence to API, rename ocr to parse ([#640](https://github.com/testdriverai/mono/issues/640)) ([d98a94b](https://github.com/testdriverai/mono/commit/d98a94bd05c135c74d9fed2ebb72c709fc643337))
150
+ * add windows key ([59b96e8](https://github.com/testdriverai/mono/commit/59b96e8db4d2a29539d9dadc19431c70abe81e3e))
151
+ * **auth:** create team and start Stripe trial on new user signup ([1dcd2b4](https://github.com/testdriverai/mono/commit/1dcd2b408335515b09efdc8415248242c802393b))
152
+ * stream exec stdout in 16KB chunks to avoid Ably 64KB limit ([018f7b5](https://github.com/testdriverai/mono/commit/018f7b5380107818aa415714ee48a3656ebc2d76))
153
+ * Websocket connection health and request timeouts ([#109](https://github.com/testdriverai/mono/issues/109)) ([b7709f5](https://github.com/testdriverai/mono/commit/b7709f5dfaf3b051684f8728708cbc518754cb93))
154
+
155
+
156
+ ### Reverts
157
+
158
+ * Revert "Fix hanging node processes on Ctrl+C (#654)" (#683) ([5e68748](https://github.com/testdriverai/mono/commit/5e6874825c6718e006bbf84e2ba5edae57d173ac)), closes [#654](https://github.com/testdriverai/mono/issues/654) [#683](https://github.com/testdriverai/mono/issues/683)
159
+ * Revert "Ianjennings/fly (#72)" ([09e2417](https://github.com/testdriverai/mono/commit/09e241731537ff094e7096afc1b2e5d804353226)), closes [#72](https://github.com/testdriverai/mono/issues/72)
160
+ * Revert "list dashcam version g" ([5037571](https://github.com/testdriverai/mono/commit/5037571440c33f8966104874c542c6c57a809510))
161
+ * Revert "Disable warm instances by setting pool size to 0 (#49)" (#51) ([c442ec5](https://github.com/testdriverai/mono/commit/c442ec52edab586be3ae8a3eadb34c32338cdea3)), closes [#49](https://github.com/testdriverai/mono/issues/49) [#51](https://github.com/testdriverai/mono/issues/51)
162
+ * Revert "update discord invite" ([b5a9b99](https://github.com/testdriverai/mono/commit/b5a9b9955cf2b0b07fd0ebeb6abf65f89cd3d5a8))
163
+ * Revert "Change MAX_INSTANCES from 50 to 8 (#40)" (#41) ([1d4a3ca](https://github.com/testdriverai/mono/commit/1d4a3cacc5624b478f1e09b953cd56680e160292)), closes [#40](https://github.com/testdriverai/mono/issues/40) [#41](https://github.com/testdriverai/mono/issues/41)
164
+ * Revert "TDT-68 – Show User API Key on Team page" (#349) ([3a594aa](https://github.com/testdriverai/mono/commit/3a594aa73ef36f6b50585c72b9a770708a21c932)), closes [#349](https://github.com/testdriverai/mono/issues/349) [#348](https://github.com/testdriverai/mono/issues/348)
165
+ * Revert "TDT-129 – Always run postrun, even on failure (#368)" (#411) ([1be8c7c](https://github.com/testdriverai/mono/commit/1be8c7c1d22cff39d4a96261c31d8befb8376f47)), closes [#368](https://github.com/testdriverai/mono/issues/368) [#411](https://github.com/testdriverai/mono/issues/411)
166
+ * Revert "TDT-139 – Add hover-text-with-single-characters test" (#407) ([203529a](https://github.com/testdriverai/mono/commit/203529a434e21eb0ccc8037c6ce88f53a4a62f81)), closes [#407](https://github.com/testdriverai/mono/issues/407) [#381](https://github.com/testdriverai/mono/issues/381)
167
+ * Revert "Fix json-schema (#387)" (#389) ([4bddbba](https://github.com/testdriverai/mono/commit/4bddbbad49cd0e491f47e86fb5ecbf945f162bdc)), closes [#387](https://github.com/testdriverai/mono/issues/387) [#389](https://github.com/testdriverai/mono/issues/389)
168
+ * Revert "build with new version of testdriverai client" ([70bdb70](https://github.com/testdriverai/mono/commit/70bdb7033e99f8457205a126261dde295ec1b1f3))
169
+ * Revert "TDT-68-user-apiKey" (#347) ([ecc6057](https://github.com/testdriverai/mono/commit/ecc6057f719d92f8dc7a32e156fdc812f04a0d3b)), closes [#347](https://github.com/testdriverai/mono/issues/347) [#346](https://github.com/testdriverai/mono/issues/346)
170
+ * Revert "TD-2151 – throw if an env variable is missing (#285)" (#288) ([2fcbdf1](https://github.com/testdriverai/mono/commit/2fcbdf1f190b9ced7644f872fd02e64339dbe956)), closes [#285](https://github.com/testdriverai/mono/issues/285) [#288](https://github.com/testdriverai/mono/issues/288)
171
+ * Revert "Match Images Server Side (#268)" ([1a49198](https://github.com/testdriverai/mono/commit/1a49198b34293d8da8972b32d02bac94c1f1519b)), closes [#268](https://github.com/testdriverai/mono/issues/268)
172
+ * Revert "optimal fix for typing repeated chars (#235)" (#254) ([da773b3](https://github.com/testdriverai/mono/commit/da773b34055ccccf38993c23c4a8a86ccc5ccf74)), closes [#235](https://github.com/testdriverai/mono/issues/235) [#254](https://github.com/testdriverai/mono/issues/254)
173
+ * Revert "make sure things get summarized" ([38be3a3](https://github.com/testdriverai/mono/commit/38be3a3da13147760fc4e84b82bb5672343e9493))
174
+ * Revert "reverting to 137" ([07d9d48](https://github.com/testdriverai/mono/commit/07d9d48e2820119eacee6daafcf7dda89182f6d5))
175
+ * Revert "Add Api key support (#127)" ([f0dccb7](https://github.com/testdriverai/mono/commit/f0dccb72bb2ed35a4634f83f0e71b58bfe8516f5)), closes [#127](https://github.com/testdriverai/mono/issues/127)
176
+ * Revert "chrome extension survey page (#269)" ([6fe67d1](https://github.com/testdriverai/mono/commit/6fe67d18fa2e238f173c96f5f24af0d7d277ed0c)), closes [#269](https://github.com/testdriverai/mono/issues/269)
177
+ * Revert "Update "Always by your side" description" ([26893a9](https://github.com/testdriverai/mono/commit/26893a90008a099d51ff6955642e54eb917cf464))
178
+ * Revert "add correct reporting for env in vite" ([3fb0c8f](https://github.com/testdriverai/mono/commit/3fb0c8ff309beffa5f6a99cec645a2693f12030a))
179
+ ## 7.5.3 (2026-03-05)
180
+
181
+
182
+ ### Bug Fixes
183
+
184
+ * Ably direct connection provisioning + reconnect resilience ([39e778a](https://github.com/testdriverai/mono/commit/39e778ac73cc51caad076149cf1671b37973ccf6))
185
+ * Ably reconnect resilience - faster retry + suspended state handler ([c228202](https://github.com/testdriverai/mono/commit/c228202a6593b9431d0cc2d3514b0722bf526e8a))
186
+ * direction & amount not correctly sent to VM ([488a0d0](https://github.com/testdriverai/mono/commit/488a0d0921428e7673dddcf27b3238af8d88a7b1))
187
+ * Mouse scrolling in VM ([#291](https://github.com/testdriverai/mono/issues/291)) ([80ca55e](https://github.com/testdriverai/mono/commit/80ca55ec91ce00052bea81ce3033aad7c5216e47))
188
+ * OpenCV throws if needle is larger than the haystack ([#292](https://github.com/testdriverai/mono/issues/292)) ([652b8b1](https://github.com/testdriverai/mono/commit/652b8b109d1c45ee4becbfb923d33a15a1e0d443))
189
+ * provision Ably credentials via SSM for direct IP connections ([6ecdecf](https://github.com/testdriverai/mono/commit/6ecdecf766897a506cd20a3a03814eae48a168f8))
190
+ * reduce Sentry noise from PyAutoGUIClient unhandled data logs ([#122](https://github.com/testdriverai/mono/issues/122)) ([93b6d74](https://github.com/testdriverai/mono/commit/93b6d7485c1f6accc36d9efee10ea8b819c02d72))
191
+ * skip connectToSandboxDirect for E2B sandboxes (url already available from create) ([2a58865](https://github.com/testdriverai/mono/commit/2a58865ebc04b0299f7b92ed912aa78cfc2c8736))
192
+ * use team ID in E2B screenshot S3 path to match download-url access check ([0d1b6ee](https://github.com/testdriverai/mono/commit/0d1b6ee702008b31677c8f4e0858ee3f2acbbbaf))
193
+
194
+
195
+ ### Features
196
+
197
+ * Add elementSimilarity to selector cache ([#121](https://github.com/testdriverai/mono/issues/121)) ([ce39b2e](https://github.com/testdriverai/mono/commit/ce39b2e819e22d72f401e5762e45cef3478752d9))
198
+ * add type and confidence inputs to find endpoint ([#162](https://github.com/testdriverai/mono/issues/162)) ([283e699](https://github.com/testdriverai/mono/commit/283e699523ce362cf1e73086dbb99281336a5a23)), closes [#164](https://github.com/testdriverai/mono/issues/164)
199
+ * add type option to find(), move confidence to API, rename ocr to parse ([#640](https://github.com/testdriverai/mono/issues/640)) ([d98a94b](https://github.com/testdriverai/mono/commit/d98a94bd05c135c74d9fed2ebb72c709fc643337))
200
+ * add windows key ([59b96e8](https://github.com/testdriverai/mono/commit/59b96e8db4d2a29539d9dadc19431c70abe81e3e))
201
+ * **auth:** create team and start Stripe trial on new user signup ([1dcd2b4](https://github.com/testdriverai/mono/commit/1dcd2b408335515b09efdc8415248242c802393b))
202
+ * stream exec stdout in 16KB chunks to avoid Ably 64KB limit ([018f7b5](https://github.com/testdriverai/mono/commit/018f7b5380107818aa415714ee48a3656ebc2d76))
203
+ * Websocket connection health and request timeouts ([#109](https://github.com/testdriverai/mono/issues/109)) ([b7709f5](https://github.com/testdriverai/mono/commit/b7709f5dfaf3b051684f8728708cbc518754cb93))
204
+
205
+
206
+ ### Reverts
207
+
208
+ * Revert "Fix hanging node processes on Ctrl+C (#654)" (#683) ([5e68748](https://github.com/testdriverai/mono/commit/5e6874825c6718e006bbf84e2ba5edae57d173ac)), closes [#654](https://github.com/testdriverai/mono/issues/654) [#683](https://github.com/testdriverai/mono/issues/683)
209
+ * Revert "Ianjennings/fly (#72)" ([09e2417](https://github.com/testdriverai/mono/commit/09e241731537ff094e7096afc1b2e5d804353226)), closes [#72](https://github.com/testdriverai/mono/issues/72)
210
+ * Revert "list dashcam version g" ([5037571](https://github.com/testdriverai/mono/commit/5037571440c33f8966104874c542c6c57a809510))
211
+ * Revert "Disable warm instances by setting pool size to 0 (#49)" (#51) ([c442ec5](https://github.com/testdriverai/mono/commit/c442ec52edab586be3ae8a3eadb34c32338cdea3)), closes [#49](https://github.com/testdriverai/mono/issues/49) [#51](https://github.com/testdriverai/mono/issues/51)
212
+ * Revert "update discord invite" ([b5a9b99](https://github.com/testdriverai/mono/commit/b5a9b9955cf2b0b07fd0ebeb6abf65f89cd3d5a8))
213
+ * Revert "Change MAX_INSTANCES from 50 to 8 (#40)" (#41) ([1d4a3ca](https://github.com/testdriverai/mono/commit/1d4a3cacc5624b478f1e09b953cd56680e160292)), closes [#40](https://github.com/testdriverai/mono/issues/40) [#41](https://github.com/testdriverai/mono/issues/41)
214
+ * Revert "TDT-68 – Show User API Key on Team page" (#349) ([3a594aa](https://github.com/testdriverai/mono/commit/3a594aa73ef36f6b50585c72b9a770708a21c932)), closes [#349](https://github.com/testdriverai/mono/issues/349) [#348](https://github.com/testdriverai/mono/issues/348)
215
+ * Revert "TDT-129 – Always run postrun, even on failure (#368)" (#411) ([1be8c7c](https://github.com/testdriverai/mono/commit/1be8c7c1d22cff39d4a96261c31d8befb8376f47)), closes [#368](https://github.com/testdriverai/mono/issues/368) [#411](https://github.com/testdriverai/mono/issues/411)
216
+ * Revert "TDT-139 – Add hover-text-with-single-characters test" (#407) ([203529a](https://github.com/testdriverai/mono/commit/203529a434e21eb0ccc8037c6ce88f53a4a62f81)), closes [#407](https://github.com/testdriverai/mono/issues/407) [#381](https://github.com/testdriverai/mono/issues/381)
217
+ * Revert "Fix json-schema (#387)" (#389) ([4bddbba](https://github.com/testdriverai/mono/commit/4bddbbad49cd0e491f47e86fb5ecbf945f162bdc)), closes [#387](https://github.com/testdriverai/mono/issues/387) [#389](https://github.com/testdriverai/mono/issues/389)
218
+ * Revert "build with new version of testdriverai client" ([70bdb70](https://github.com/testdriverai/mono/commit/70bdb7033e99f8457205a126261dde295ec1b1f3))
219
+ * Revert "TDT-68-user-apiKey" (#347) ([ecc6057](https://github.com/testdriverai/mono/commit/ecc6057f719d92f8dc7a32e156fdc812f04a0d3b)), closes [#347](https://github.com/testdriverai/mono/issues/347) [#346](https://github.com/testdriverai/mono/issues/346)
220
+ * Revert "TD-2151 – throw if an env variable is missing (#285)" (#288) ([2fcbdf1](https://github.com/testdriverai/mono/commit/2fcbdf1f190b9ced7644f872fd02e64339dbe956)), closes [#285](https://github.com/testdriverai/mono/issues/285) [#288](https://github.com/testdriverai/mono/issues/288)
221
+ * Revert "Match Images Server Side (#268)" ([1a49198](https://github.com/testdriverai/mono/commit/1a49198b34293d8da8972b32d02bac94c1f1519b)), closes [#268](https://github.com/testdriverai/mono/issues/268)
222
+ * Revert "optimal fix for typing repeated chars (#235)" (#254) ([da773b3](https://github.com/testdriverai/mono/commit/da773b34055ccccf38993c23c4a8a86ccc5ccf74)), closes [#235](https://github.com/testdriverai/mono/issues/235) [#254](https://github.com/testdriverai/mono/issues/254)
223
+ * Revert "make sure things get summarized" ([38be3a3](https://github.com/testdriverai/mono/commit/38be3a3da13147760fc4e84b82bb5672343e9493))
224
+ * Revert "reverting to 137" ([07d9d48](https://github.com/testdriverai/mono/commit/07d9d48e2820119eacee6daafcf7dda89182f6d5))
225
+ * Revert "Add Api key support (#127)" ([f0dccb7](https://github.com/testdriverai/mono/commit/f0dccb72bb2ed35a4634f83f0e71b58bfe8516f5)), closes [#127](https://github.com/testdriverai/mono/issues/127)
226
+ * Revert "chrome extension survey page (#269)" ([6fe67d1](https://github.com/testdriverai/mono/commit/6fe67d18fa2e238f173c96f5f24af0d7d277ed0c)), closes [#269](https://github.com/testdriverai/mono/issues/269)
227
+ * Revert "Update "Always by your side" description" ([26893a9](https://github.com/testdriverai/mono/commit/26893a90008a099d51ff6955642e54eb917cf464))
228
+ * Revert "add correct reporting for env in vite" ([3fb0c8f](https://github.com/testdriverai/mono/commit/3fb0c8ff309beffa5f6a99cec645a2693f12030a))
229
+ ## 7.5.2 (2026-03-04)
230
+
231
+
232
+ ### Bug Fixes
233
+
234
+ * Ably direct connection provisioning + reconnect resilience ([39e778a](https://github.com/testdriverai/mono/commit/39e778ac73cc51caad076149cf1671b37973ccf6))
235
+ * Ably reconnect resilience - faster retry + suspended state handler ([c228202](https://github.com/testdriverai/mono/commit/c228202a6593b9431d0cc2d3514b0722bf526e8a))
236
+ * direction & amount not correctly sent to VM ([488a0d0](https://github.com/testdriverai/mono/commit/488a0d0921428e7673dddcf27b3238af8d88a7b1))
237
+ * Mouse scrolling in VM ([#291](https://github.com/testdriverai/mono/issues/291)) ([80ca55e](https://github.com/testdriverai/mono/commit/80ca55ec91ce00052bea81ce3033aad7c5216e47))
238
+ * OpenCV throws if needle is larger than the haystack ([#292](https://github.com/testdriverai/mono/issues/292)) ([652b8b1](https://github.com/testdriverai/mono/commit/652b8b109d1c45ee4becbfb923d33a15a1e0d443))
239
+ * provision Ably credentials via SSM for direct IP connections ([6ecdecf](https://github.com/testdriverai/mono/commit/6ecdecf766897a506cd20a3a03814eae48a168f8))
240
+ * reduce Sentry noise from PyAutoGUIClient unhandled data logs ([#122](https://github.com/testdriverai/mono/issues/122)) ([93b6d74](https://github.com/testdriverai/mono/commit/93b6d7485c1f6accc36d9efee10ea8b819c02d72))
241
+ * skip connectToSandboxDirect for E2B sandboxes (url already available from create) ([2a58865](https://github.com/testdriverai/mono/commit/2a58865ebc04b0299f7b92ed912aa78cfc2c8736))
242
+ * use team ID in E2B screenshot S3 path to match download-url access check ([0d1b6ee](https://github.com/testdriverai/mono/commit/0d1b6ee702008b31677c8f4e0858ee3f2acbbbaf))
243
+
244
+
245
+ ### Features
246
+
247
+ * Add elementSimilarity to selector cache ([#121](https://github.com/testdriverai/mono/issues/121)) ([ce39b2e](https://github.com/testdriverai/mono/commit/ce39b2e819e22d72f401e5762e45cef3478752d9))
248
+ * add type and confidence inputs to find endpoint ([#162](https://github.com/testdriverai/mono/issues/162)) ([283e699](https://github.com/testdriverai/mono/commit/283e699523ce362cf1e73086dbb99281336a5a23)), closes [#164](https://github.com/testdriverai/mono/issues/164)
249
+ * add type option to find(), move confidence to API, rename ocr to parse ([#640](https://github.com/testdriverai/mono/issues/640)) ([d98a94b](https://github.com/testdriverai/mono/commit/d98a94bd05c135c74d9fed2ebb72c709fc643337))
250
+ * add windows key ([59b96e8](https://github.com/testdriverai/mono/commit/59b96e8db4d2a29539d9dadc19431c70abe81e3e))
251
+ * **auth:** create team and start Stripe trial on new user signup ([1dcd2b4](https://github.com/testdriverai/mono/commit/1dcd2b408335515b09efdc8415248242c802393b))
252
+ * stream exec stdout in 16KB chunks to avoid Ably 64KB limit ([018f7b5](https://github.com/testdriverai/mono/commit/018f7b5380107818aa415714ee48a3656ebc2d76))
253
+ * Websocket connection health and request timeouts ([#109](https://github.com/testdriverai/mono/issues/109)) ([b7709f5](https://github.com/testdriverai/mono/commit/b7709f5dfaf3b051684f8728708cbc518754cb93))
254
+
255
+
256
+ ### Reverts
257
+
258
+ * Revert "Fix hanging node processes on Ctrl+C (#654)" (#683) ([5e68748](https://github.com/testdriverai/mono/commit/5e6874825c6718e006bbf84e2ba5edae57d173ac)), closes [#654](https://github.com/testdriverai/mono/issues/654) [#683](https://github.com/testdriverai/mono/issues/683)
259
+ * Revert "Ianjennings/fly (#72)" ([09e2417](https://github.com/testdriverai/mono/commit/09e241731537ff094e7096afc1b2e5d804353226)), closes [#72](https://github.com/testdriverai/mono/issues/72)
260
+ * Revert "list dashcam version g" ([5037571](https://github.com/testdriverai/mono/commit/5037571440c33f8966104874c542c6c57a809510))
261
+ * Revert "Disable warm instances by setting pool size to 0 (#49)" (#51) ([c442ec5](https://github.com/testdriverai/mono/commit/c442ec52edab586be3ae8a3eadb34c32338cdea3)), closes [#49](https://github.com/testdriverai/mono/issues/49) [#51](https://github.com/testdriverai/mono/issues/51)
262
+ * Revert "update discord invite" ([b5a9b99](https://github.com/testdriverai/mono/commit/b5a9b9955cf2b0b07fd0ebeb6abf65f89cd3d5a8))
263
+ * Revert "Change MAX_INSTANCES from 50 to 8 (#40)" (#41) ([1d4a3ca](https://github.com/testdriverai/mono/commit/1d4a3cacc5624b478f1e09b953cd56680e160292)), closes [#40](https://github.com/testdriverai/mono/issues/40) [#41](https://github.com/testdriverai/mono/issues/41)
264
+ * Revert "TDT-68 – Show User API Key on Team page" (#349) ([3a594aa](https://github.com/testdriverai/mono/commit/3a594aa73ef36f6b50585c72b9a770708a21c932)), closes [#349](https://github.com/testdriverai/mono/issues/349) [#348](https://github.com/testdriverai/mono/issues/348)
265
+ * Revert "TDT-129 – Always run postrun, even on failure (#368)" (#411) ([1be8c7c](https://github.com/testdriverai/mono/commit/1be8c7c1d22cff39d4a96261c31d8befb8376f47)), closes [#368](https://github.com/testdriverai/mono/issues/368) [#411](https://github.com/testdriverai/mono/issues/411)
266
+ * Revert "TDT-139 – Add hover-text-with-single-characters test" (#407) ([203529a](https://github.com/testdriverai/mono/commit/203529a434e21eb0ccc8037c6ce88f53a4a62f81)), closes [#407](https://github.com/testdriverai/mono/issues/407) [#381](https://github.com/testdriverai/mono/issues/381)
267
+ * Revert "Fix json-schema (#387)" (#389) ([4bddbba](https://github.com/testdriverai/mono/commit/4bddbbad49cd0e491f47e86fb5ecbf945f162bdc)), closes [#387](https://github.com/testdriverai/mono/issues/387) [#389](https://github.com/testdriverai/mono/issues/389)
268
+ * Revert "build with new version of testdriverai client" ([70bdb70](https://github.com/testdriverai/mono/commit/70bdb7033e99f8457205a126261dde295ec1b1f3))
269
+ * Revert "TDT-68-user-apiKey" (#347) ([ecc6057](https://github.com/testdriverai/mono/commit/ecc6057f719d92f8dc7a32e156fdc812f04a0d3b)), closes [#347](https://github.com/testdriverai/mono/issues/347) [#346](https://github.com/testdriverai/mono/issues/346)
270
+ * Revert "TD-2151 – throw if an env variable is missing (#285)" (#288) ([2fcbdf1](https://github.com/testdriverai/mono/commit/2fcbdf1f190b9ced7644f872fd02e64339dbe956)), closes [#285](https://github.com/testdriverai/mono/issues/285) [#288](https://github.com/testdriverai/mono/issues/288)
271
+ * Revert "Match Images Server Side (#268)" ([1a49198](https://github.com/testdriverai/mono/commit/1a49198b34293d8da8972b32d02bac94c1f1519b)), closes [#268](https://github.com/testdriverai/mono/issues/268)
272
+ * Revert "optimal fix for typing repeated chars (#235)" (#254) ([da773b3](https://github.com/testdriverai/mono/commit/da773b34055ccccf38993c23c4a8a86ccc5ccf74)), closes [#235](https://github.com/testdriverai/mono/issues/235) [#254](https://github.com/testdriverai/mono/issues/254)
273
+ * Revert "make sure things get summarized" ([38be3a3](https://github.com/testdriverai/mono/commit/38be3a3da13147760fc4e84b82bb5672343e9493))
274
+ * Revert "reverting to 137" ([07d9d48](https://github.com/testdriverai/mono/commit/07d9d48e2820119eacee6daafcf7dda89182f6d5))
275
+ * Revert "Add Api key support (#127)" ([f0dccb7](https://github.com/testdriverai/mono/commit/f0dccb72bb2ed35a4634f83f0e71b58bfe8516f5)), closes [#127](https://github.com/testdriverai/mono/issues/127)
276
+ * Revert "chrome extension survey page (#269)" ([6fe67d1](https://github.com/testdriverai/mono/commit/6fe67d18fa2e238f173c96f5f24af0d7d277ed0c)), closes [#269](https://github.com/testdriverai/mono/issues/269)
277
+ * Revert "Update "Always by your side" description" ([26893a9](https://github.com/testdriverai/mono/commit/26893a90008a099d51ff6955642e54eb917cf464))
278
+ * Revert "add correct reporting for env in vite" ([3fb0c8f](https://github.com/testdriverai/mono/commit/3fb0c8ff309beffa5f6a99cec645a2693f12030a))
279
+ ## 7.5.1 (2026-03-04)
280
+
281
+
282
+ ### Bug Fixes
283
+
284
+ * Ably direct connection provisioning + reconnect resilience ([39e778a](https://github.com/testdriverai/mono/commit/39e778ac73cc51caad076149cf1671b37973ccf6))
285
+ * Ably reconnect resilience - faster retry + suspended state handler ([c228202](https://github.com/testdriverai/mono/commit/c228202a6593b9431d0cc2d3514b0722bf526e8a))
286
+ * direction & amount not correctly sent to VM ([488a0d0](https://github.com/testdriverai/mono/commit/488a0d0921428e7673dddcf27b3238af8d88a7b1))
287
+ * Mouse scrolling in VM ([#291](https://github.com/testdriverai/mono/issues/291)) ([80ca55e](https://github.com/testdriverai/mono/commit/80ca55ec91ce00052bea81ce3033aad7c5216e47))
288
+ * OpenCV throws if needle is larger than the haystack ([#292](https://github.com/testdriverai/mono/issues/292)) ([652b8b1](https://github.com/testdriverai/mono/commit/652b8b109d1c45ee4becbfb923d33a15a1e0d443))
289
+ * provision Ably credentials via SSM for direct IP connections ([6ecdecf](https://github.com/testdriverai/mono/commit/6ecdecf766897a506cd20a3a03814eae48a168f8))
290
+ * reduce Sentry noise from PyAutoGUIClient unhandled data logs ([#122](https://github.com/testdriverai/mono/issues/122)) ([93b6d74](https://github.com/testdriverai/mono/commit/93b6d7485c1f6accc36d9efee10ea8b819c02d72))
291
+ * skip connectToSandboxDirect for E2B sandboxes (url already available from create) ([2a58865](https://github.com/testdriverai/mono/commit/2a58865ebc04b0299f7b92ed912aa78cfc2c8736))
292
+ * use team ID in E2B screenshot S3 path to match download-url access check ([0d1b6ee](https://github.com/testdriverai/mono/commit/0d1b6ee702008b31677c8f4e0858ee3f2acbbbaf))
293
+
294
+
295
+ ### Features
296
+
297
+ * Add elementSimilarity to selector cache ([#121](https://github.com/testdriverai/mono/issues/121)) ([ce39b2e](https://github.com/testdriverai/mono/commit/ce39b2e819e22d72f401e5762e45cef3478752d9))
298
+ * add type and confidence inputs to find endpoint ([#162](https://github.com/testdriverai/mono/issues/162)) ([283e699](https://github.com/testdriverai/mono/commit/283e699523ce362cf1e73086dbb99281336a5a23)), closes [#164](https://github.com/testdriverai/mono/issues/164)
299
+ * add type option to find(), move confidence to API, rename ocr to parse ([#640](https://github.com/testdriverai/mono/issues/640)) ([d98a94b](https://github.com/testdriverai/mono/commit/d98a94bd05c135c74d9fed2ebb72c709fc643337))
300
+ * add windows key ([59b96e8](https://github.com/testdriverai/mono/commit/59b96e8db4d2a29539d9dadc19431c70abe81e3e))
301
+ * **auth:** create team and start Stripe trial on new user signup ([1dcd2b4](https://github.com/testdriverai/mono/commit/1dcd2b408335515b09efdc8415248242c802393b))
302
+ * stream exec stdout in 16KB chunks to avoid Ably 64KB limit ([018f7b5](https://github.com/testdriverai/mono/commit/018f7b5380107818aa415714ee48a3656ebc2d76))
303
+ * Websocket connection health and request timeouts ([#109](https://github.com/testdriverai/mono/issues/109)) ([b7709f5](https://github.com/testdriverai/mono/commit/b7709f5dfaf3b051684f8728708cbc518754cb93))
304
+
305
+
306
+ ### Reverts
307
+
308
+ * Revert "Fix hanging node processes on Ctrl+C (#654)" (#683) ([5e68748](https://github.com/testdriverai/mono/commit/5e6874825c6718e006bbf84e2ba5edae57d173ac)), closes [#654](https://github.com/testdriverai/mono/issues/654) [#683](https://github.com/testdriverai/mono/issues/683)
309
+ * Revert "Ianjennings/fly (#72)" ([09e2417](https://github.com/testdriverai/mono/commit/09e241731537ff094e7096afc1b2e5d804353226)), closes [#72](https://github.com/testdriverai/mono/issues/72)
310
+ * Revert "list dashcam version g" ([5037571](https://github.com/testdriverai/mono/commit/5037571440c33f8966104874c542c6c57a809510))
311
+ * Revert "Disable warm instances by setting pool size to 0 (#49)" (#51) ([c442ec5](https://github.com/testdriverai/mono/commit/c442ec52edab586be3ae8a3eadb34c32338cdea3)), closes [#49](https://github.com/testdriverai/mono/issues/49) [#51](https://github.com/testdriverai/mono/issues/51)
312
+ * Revert "update discord invite" ([b5a9b99](https://github.com/testdriverai/mono/commit/b5a9b9955cf2b0b07fd0ebeb6abf65f89cd3d5a8))
313
+ * Revert "Change MAX_INSTANCES from 50 to 8 (#40)" (#41) ([1d4a3ca](https://github.com/testdriverai/mono/commit/1d4a3cacc5624b478f1e09b953cd56680e160292)), closes [#40](https://github.com/testdriverai/mono/issues/40) [#41](https://github.com/testdriverai/mono/issues/41)
314
+ * Revert "TDT-68 – Show User API Key on Team page" (#349) ([3a594aa](https://github.com/testdriverai/mono/commit/3a594aa73ef36f6b50585c72b9a770708a21c932)), closes [#349](https://github.com/testdriverai/mono/issues/349) [#348](https://github.com/testdriverai/mono/issues/348)
315
+ * Revert "TDT-129 – Always run postrun, even on failure (#368)" (#411) ([1be8c7c](https://github.com/testdriverai/mono/commit/1be8c7c1d22cff39d4a96261c31d8befb8376f47)), closes [#368](https://github.com/testdriverai/mono/issues/368) [#411](https://github.com/testdriverai/mono/issues/411)
316
+ * Revert "TDT-139 – Add hover-text-with-single-characters test" (#407) ([203529a](https://github.com/testdriverai/mono/commit/203529a434e21eb0ccc8037c6ce88f53a4a62f81)), closes [#407](https://github.com/testdriverai/mono/issues/407) [#381](https://github.com/testdriverai/mono/issues/381)
317
+ * Revert "Fix json-schema (#387)" (#389) ([4bddbba](https://github.com/testdriverai/mono/commit/4bddbbad49cd0e491f47e86fb5ecbf945f162bdc)), closes [#387](https://github.com/testdriverai/mono/issues/387) [#389](https://github.com/testdriverai/mono/issues/389)
318
+ * Revert "build with new version of testdriverai client" ([70bdb70](https://github.com/testdriverai/mono/commit/70bdb7033e99f8457205a126261dde295ec1b1f3))
319
+ * Revert "TDT-68-user-apiKey" (#347) ([ecc6057](https://github.com/testdriverai/mono/commit/ecc6057f719d92f8dc7a32e156fdc812f04a0d3b)), closes [#347](https://github.com/testdriverai/mono/issues/347) [#346](https://github.com/testdriverai/mono/issues/346)
320
+ * Revert "TD-2151 – throw if an env variable is missing (#285)" (#288) ([2fcbdf1](https://github.com/testdriverai/mono/commit/2fcbdf1f190b9ced7644f872fd02e64339dbe956)), closes [#285](https://github.com/testdriverai/mono/issues/285) [#288](https://github.com/testdriverai/mono/issues/288)
321
+ * Revert "Match Images Server Side (#268)" ([1a49198](https://github.com/testdriverai/mono/commit/1a49198b34293d8da8972b32d02bac94c1f1519b)), closes [#268](https://github.com/testdriverai/mono/issues/268)
322
+ * Revert "optimal fix for typing repeated chars (#235)" (#254) ([da773b3](https://github.com/testdriverai/mono/commit/da773b34055ccccf38993c23c4a8a86ccc5ccf74)), closes [#235](https://github.com/testdriverai/mono/issues/235) [#254](https://github.com/testdriverai/mono/issues/254)
323
+ * Revert "make sure things get summarized" ([38be3a3](https://github.com/testdriverai/mono/commit/38be3a3da13147760fc4e84b82bb5672343e9493))
324
+ * Revert "reverting to 137" ([07d9d48](https://github.com/testdriverai/mono/commit/07d9d48e2820119eacee6daafcf7dda89182f6d5))
325
+ * Revert "Add Api key support (#127)" ([f0dccb7](https://github.com/testdriverai/mono/commit/f0dccb72bb2ed35a4634f83f0e71b58bfe8516f5)), closes [#127](https://github.com/testdriverai/mono/issues/127)
326
+ * Revert "chrome extension survey page (#269)" ([6fe67d1](https://github.com/testdriverai/mono/commit/6fe67d18fa2e238f173c96f5f24af0d7d277ed0c)), closes [#269](https://github.com/testdriverai/mono/issues/269)
327
+ * Revert "Update "Always by your side" description" ([26893a9](https://github.com/testdriverai/mono/commit/26893a90008a099d51ff6955642e54eb917cf464))
328
+ * Revert "add correct reporting for env in vite" ([3fb0c8f](https://github.com/testdriverai/mono/commit/3fb0c8ff309beffa5f6a99cec645a2693f12030a))
329
+ ## [7.4.5](https://github.com/testdriverai/testdriverai/compare/v7.3.43...v7.4.5) (2026-02-27)
330
+
331
+
332
+
1
333
  ## [7.3.44](https://github.com/testdriverai/testdriverai/compare/v7.3.43...v7.3.44) (2026-02-26)
2
334
 
3
335
 
package/agent/events.js CHANGED
@@ -101,11 +101,18 @@ const events = {
101
101
  sent: "sandbox:sent",
102
102
  received: "sandbox:received",
103
103
  progress: "sandbox:progress",
104
+ file: "sandbox:file",
104
105
  },
105
106
  redraw: {
106
107
  status: "redraw:status",
107
108
  complete: "redraw:complete",
108
109
  },
110
+ exec: {
111
+ output: "exec:output",
112
+ },
113
+ runner: {
114
+ log: "runner:log",
115
+ },
109
116
  exit: "exit",
110
117
  };
111
118
 
package/agent/index.js CHANGED
@@ -35,10 +35,7 @@ const { createOutputs } = require("./lib/outputs.js");
35
35
 
36
36
  const isValidVersion = require("./lib/valid-version.js");
37
37
  const { events, createEmitter } = require("./events.js");
38
- const { createDebuggerProcess } = require("./lib/debugger.js");
39
38
  const logger = require("./lib/logger.js");
40
- let debuggerProcess = null; // single debugger process for all instances. otherwise they'll fight over ports. this should be in `web` anyway
41
- let debuggerStarted = false;
42
39
 
43
40
  class TestDriverAgent extends EventEmitter2 {
44
41
  constructor(environment = {}, cliArgs = {}) {
@@ -160,7 +157,6 @@ class TestDriverAgent extends EventEmitter2 {
160
157
 
161
158
  this.lastCommand = new Date().getTime();
162
159
  this.csv = [["command,time"]];
163
- this.debuggerUrl = null; // the debugger server URL
164
160
 
165
161
  // Source mapping for YAML files
166
162
  this.sourceMapper = new SourceMapper();
@@ -1686,6 +1682,7 @@ ${regression}
1686
1682
  resolution: this.config.TD_RESOLUTION,
1687
1683
  ci: this.config.CI,
1688
1684
  ip: this.ip,
1685
+ instanceId: this.instanceId || undefined,
1689
1686
  });
1690
1687
 
1691
1688
  // Store connection params for reconnection
@@ -1748,28 +1745,34 @@ ${regression}
1748
1745
  " " +
1749
1746
  theme.cyan(`new sandbox...`),
1750
1747
  );
1751
- // We don't have resiliency/retries baked in, so let's at least give it 1 attempt
1752
- // to see if that fixes the issue.
1753
- let newSandbox = await this.createNewSandbox().catch(() => {
1754
- this.emitter.emit(
1755
- events.log.narration,
1756
- theme.dim(`double-checking sandbox availability`),
1757
- );
1758
- return this.createNewSandbox();
1759
- });
1748
+ let newSandbox = await this.createNewSandbox();
1760
1749
 
1761
1750
  // Extract the sandbox ID from the newly created sandbox
1762
1751
  this.sandboxId =
1763
1752
  newSandbox?.sandbox?.sandboxId || newSandbox?.sandbox?.instanceId;
1764
1753
 
1765
- let instance = await this.connectToSandboxDirect(
1766
- this.sandboxId,
1767
- true, // always persist by default
1768
- this.keepAlive, // pass keepAlive TTL
1769
- );
1770
- this.instance = instance;
1771
- await this.renderSandbox(instance, headless);
1772
- await this.runLifecycle("provision");
1754
+ // E2B sandboxes return a url directly from create — no separate
1755
+ // connect step needed (the API proxies commands via Ably).
1756
+ if (newSandbox?.sandbox?.url) {
1757
+ this.sandbox.setConnectionParams({
1758
+ sandboxId: this.sandboxId,
1759
+ persist: true,
1760
+ keepAlive: this.keepAlive,
1761
+ });
1762
+ this.emitter.emit(events.sandbox.connected);
1763
+ this.instance = newSandbox.sandbox;
1764
+ await this.renderSandbox(this.instance, headless);
1765
+ await this.runLifecycle("provision");
1766
+ } else {
1767
+ let instance = await this.connectToSandboxDirect(
1768
+ this.sandboxId,
1769
+ true, // always persist by default
1770
+ this.keepAlive, // pass keepAlive TTL
1771
+ );
1772
+ this.instance = instance;
1773
+ await this.renderSandbox(instance, headless);
1774
+ await this.runLifecycle("provision");
1775
+ }
1773
1776
  }
1774
1777
  }
1775
1778
 
@@ -1786,15 +1789,8 @@ ${regression}
1786
1789
  timestamp: Date.now(),
1787
1790
  });
1788
1791
 
1789
- // Start the debugger server as early as possible to ensure event listeners are attached
1790
- if (!debuggerStarted) {
1791
- debuggerStarted = true; // Prevent multiple starts, especially when running test in parallel
1792
- debuggerProcess = await createDebuggerProcess(
1793
- this.config,
1794
- this.emitter,
1795
- );
1796
- }
1797
- this.debuggerUrl = debuggerProcess.url || null; // Store the debugger URL
1792
+ // Debugger UI is hosted on the web app (console.testdriver.ai/debugger/)
1793
+ // No local debugger server needed
1798
1794
  this.emitter.emit(events.log.log, `This is beta software!`);
1799
1795
  this.emitter.emit(events.log.log, ``);
1800
1796
  this.emitter.emit(
@@ -1921,8 +1917,9 @@ ${regression}
1921
1917
  // Base64 encode the data (the debugger expects base64, not URL encoding)
1922
1918
  const encodedData = Buffer.from(JSON.stringify(data)).toString("base64");
1923
1919
 
1924
- // Use the debugger URL instead of the VNC URL
1925
- const urlToOpen = `${this.debuggerUrl}?data=${encodedData}`;
1920
+ // Build debugger URL hosted on S3 (v7-vnc bucket)
1921
+ const debuggerBase = process.env.TD_DEBUGGER_BASE_URL || "https://v7-vnc.s3.us-east-2.amazonaws.com";
1922
+ const urlToOpen = `${debuggerBase}/index.html?data=${encodedData}`;
1926
1923
 
1927
1924
  // Check preview mode from CLI options (SDK passes it directly)
1928
1925
  const previewMode = (this.cliArgs.options && this.cliArgs.options.preview) || this.config.TD_PREVIEW || "browser";
@@ -1939,6 +1936,23 @@ ${regression}
1939
1936
  }
1940
1937
  }
1941
1938
 
1939
+ // Get the console (web app) URL for the given API root
1940
+ _getConsoleUrl(apiRoot) {
1941
+ // Allow explicit override via env (e.g. VITE_DOMAIN from .env)
1942
+ if (process.env.VITE_DOMAIN) return process.env.VITE_DOMAIN;
1943
+
1944
+ const mapping = {
1945
+ "https://testdriver-api.onrender.com": "https://console.testdriver.ai",
1946
+ "https://v6.testdriver.ai": "https://console.testdriver.ai",
1947
+ };
1948
+ if (mapping[apiRoot]) return mapping[apiRoot];
1949
+ // Local dev: API on localhost:1337 -> Web on localhost:3001
1950
+ if (apiRoot.includes("localhost:1337") || apiRoot.includes("127.0.0.1:1337")) {
1951
+ return "http://localhost:3001";
1952
+ }
1953
+ return "https://console.testdriver.ai";
1954
+ }
1955
+
1942
1956
  // Write session file for IDE preview (VSCode extension watches for these)
1943
1957
  writeIdeSessionFile(debuggerUrl, data) {
1944
1958
  const fs = require("fs");
@@ -1572,7 +1572,7 @@ const createCommands = (
1572
1572
  const execActionEndTime = Date.now();
1573
1573
  const execDuration = execActionEndTime - execActionLogStart;
1574
1574
 
1575
- // const debugMode = process.env.VERBOSE || process.env.DEBUG || process.env.TD_DEBUG;
1575
+ // const debugMode = process.env.VERBOSE || process.env.TD_DEBUG;
1576
1576
  // if (debugMode) {
1577
1577
  // console.log(result);
1578
1578
  // }