testdriverai 7.3.31 → 7.3.33

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 (35) hide show
  1. package/.github/copilot-instructions.md +641 -0
  2. package/.github/skills/testdriver:assert/SKILL.md +31 -0
  3. package/.github/skills/testdriver:aws-setup/SKILL.md +1 -68
  4. package/.github/skills/testdriver:client/SKILL.md +33 -0
  5. package/.github/skills/testdriver:debugging-with-screenshots/SKILL.md +175 -45
  6. package/.github/skills/testdriver:find/SKILL.md +87 -0
  7. package/.github/skills/testdriver:parse/SKILL.md +124 -6
  8. package/.github/skills/testdriver:quickstart/SKILL.md +2 -17
  9. package/.github/skills/testdriver:reusable-code/SKILL.md +9 -0
  10. package/.github/skills/testdriver:running-tests/SKILL.md +4 -0
  11. package/.github/skills/testdriver:screenshot/SKILL.md +84 -3
  12. package/.github/skills/testdriver:scroll/SKILL.md +36 -0
  13. package/.github/skills/testdriver:testdriver/SKILL.md +194 -86
  14. package/CHANGELOG.md +8 -0
  15. package/docs/_data/examples-manifest.json +72 -64
  16. package/docs/v7/examples/ai.mdx +1 -1
  17. package/docs/v7/examples/assert.mdx +1 -1
  18. package/docs/v7/examples/chrome-extension.mdx +1 -1
  19. package/docs/v7/examples/drag-and-drop.mdx +1 -1
  20. package/docs/v7/examples/element-not-found.mdx +1 -1
  21. package/docs/v7/examples/hover-image.mdx +1 -1
  22. package/docs/v7/examples/hover-text.mdx +1 -1
  23. package/docs/v7/examples/installer.mdx +1 -1
  24. package/docs/v7/examples/launch-vscode-linux.mdx +1 -1
  25. package/docs/v7/examples/match-image.mdx +1 -1
  26. package/docs/v7/examples/press-keys.mdx +1 -1
  27. package/docs/v7/examples/scroll-keyboard.mdx +1 -1
  28. package/docs/v7/examples/scroll-until-image.mdx +1 -1
  29. package/docs/v7/examples/scroll-until-text.mdx +1 -1
  30. package/docs/v7/examples/scroll.mdx +1 -1
  31. package/docs/v7/examples/type.mdx +1 -1
  32. package/docs/v7/examples/windows-installer.mdx +1 -1
  33. package/lib/vitest/hooks.mjs +21 -2
  34. package/package.json +1 -2
  35. package/sdk.js +1 -1
@@ -2,104 +2,104 @@
2
2
  "$schema": "./examples-manifest.schema.json",
3
3
  "examples": {
4
4
  "assert.test.mjs": {
5
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f88dd202a57999808e3",
6
- "lastUpdated": "2026-02-13T19:55:05.949Z"
5
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf285bdc9b421c706da17",
6
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
7
7
  },
8
8
  "drag-and-drop.test.mjs": {
9
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965983d4ec641ec13c81ff",
10
- "lastUpdated": "2026-02-19T00:58:04.014Z"
9
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf08fbdc9b421c706d850",
10
+ "lastUpdated": "2026-02-24T00:50:23.961Z"
11
11
  },
12
12
  "exec-pwsh.test.mjs": {
13
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965985d4ec641ec13c8203",
14
- "lastUpdated": "2026-02-19T00:58:04.014Z"
13
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf090bdc9b421c706d857",
14
+ "lastUpdated": "2026-02-24T00:50:23.961Z"
15
15
  },
16
16
  "match-image.test.mjs": {
17
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965986d4ec641ec13c8204",
18
- "lastUpdated": "2026-02-19T00:58:04.014Z"
17
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf092bdc9b421c706d858",
18
+ "lastUpdated": "2026-02-24T00:50:23.961Z"
19
19
  },
20
20
  "scroll-until-text.test.mjs": {
21
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a12d4ec641ec13c8240",
22
- "lastUpdated": "2026-02-19T00:58:04.014Z"
21
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf11ebdc9b421c706d8da",
22
+ "lastUpdated": "2026-02-24T00:50:23.961Z"
23
23
  },
24
24
  "hover-text-with-description.test.mjs": {
25
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a26d4ec641ec13c8252",
26
- "lastUpdated": "2026-02-19T00:58:04.015Z"
25
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf120bdc9b421c706d8e1",
26
+ "lastUpdated": "2026-02-24T00:50:23.962Z"
27
27
  },
28
28
  "windows-installer.test.mjs": {
29
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a28887d56872d5c968f",
30
- "lastUpdated": "2026-02-19T00:58:04.015Z"
29
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf122bdc9b421c706d8e9",
30
+ "lastUpdated": "2026-02-24T00:50:23.962Z"
31
31
  },
32
32
  "exec-output.test.mjs": {
33
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a29887d56872d5c9690",
34
- "lastUpdated": "2026-02-19T00:58:04.015Z"
33
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf123bdc9b421c706d8ea",
34
+ "lastUpdated": "2026-02-24T00:50:23.962Z"
35
35
  },
36
36
  "chrome-extension.test.mjs": {
37
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a95887d56872d5c96bf",
38
- "lastUpdated": "2026-02-19T00:58:04.016Z"
37
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf1a9bdc9b421c706d96c",
38
+ "lastUpdated": "2026-02-24T00:50:23.963Z"
39
39
  },
40
40
  "launch-vscode-linux.test.mjs": {
41
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a87887d56872d5c96b9",
42
- "lastUpdated": "2026-02-19T00:58:04.016Z"
41
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf192bdc9b421c706d950",
42
+ "lastUpdated": "2026-02-24T00:50:23.963Z"
43
43
  },
44
44
  "hover-image.test.mjs": {
45
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a99d4ec641ec13c827c",
46
- "lastUpdated": "2026-02-19T00:58:04.016Z"
45
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf19fbdc9b421c706d95f",
46
+ "lastUpdated": "2026-02-24T00:50:23.963Z"
47
47
  },
48
48
  "installer.test.mjs": {
49
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965af2887d56872d5c96e5",
50
- "lastUpdated": "2026-02-19T00:58:04.017Z"
49
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf1febdc9b421c706d9ae",
50
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
51
51
  },
52
52
  "type.test.mjs": {
53
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965b5c887d56872d5c96fc",
54
- "lastUpdated": "2026-02-19T00:58:04.018Z"
53
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf252bdc9b421c706d9eb",
54
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
55
55
  },
56
56
  "press-keys.test.mjs": {
57
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bee24aebb4a0ca062f3",
58
- "lastUpdated": "2026-02-19T00:58:04.019Z"
57
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf286bdc9b421c706da18",
58
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
59
59
  },
60
60
  "scroll-keyboard.test.mjs": {
61
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965b7124aebb4a0ca062d9",
62
- "lastUpdated": "2026-02-19T00:58:04.018Z"
61
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf273bdc9b421c706da04",
62
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
63
63
  },
64
64
  "scroll.test.mjs": {
65
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965b3a887d56872d5c96f6",
66
- "lastUpdated": "2026-02-19T00:58:04.017Z"
65
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf227bdc9b421c706d9cc",
66
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
67
67
  },
68
68
  "scroll-until-image.test.mjs": {
69
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bd0887d56872d5c9715",
70
- "lastUpdated": "2026-02-19T00:58:04.018Z"
69
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf287bdc9b421c706da19",
70
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
71
71
  },
72
72
  "prompt.test.mjs": {
73
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bd2887d56872d5c9718",
74
- "lastUpdated": "2026-02-19T00:58:04.018Z"
73
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf288bdc9b421c706da1a",
74
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
75
75
  },
76
76
  "focus-window.test.mjs": {
77
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bd3887d56872d5c9719",
78
- "lastUpdated": "2026-02-19T00:58:04.018Z"
77
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf289bdc9b421c706da1b",
78
+ "lastUpdated": "2026-02-24T00:50:23.965Z"
79
79
  },
80
80
  "captcha-api.test.mjs": {
81
81
  "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7fb0d3b320ad547d9d44",
82
82
  "lastUpdated": "2026-02-13T19:55:05.951Z"
83
83
  },
84
84
  "element-not-found.test.mjs": {
85
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965c3724aebb4a0ca0630a",
86
- "lastUpdated": "2026-02-19T00:58:04.019Z"
85
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf2bbbdc9b421c706da37",
86
+ "lastUpdated": "2026-02-24T00:50:23.966Z"
87
87
  },
88
88
  "formatted-logging.test.mjs": {
89
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965c2424aebb4a0ca06301",
90
- "lastUpdated": "2026-02-19T00:58:04.019Z"
89
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf2cfbdc9b421c706da45",
90
+ "lastUpdated": "2026-02-24T00:50:23.966Z"
91
91
  },
92
92
  "hover-text.test.mjs": {
93
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965caa24aebb4a0ca0632a",
94
- "lastUpdated": "2026-02-19T00:58:04.022Z"
93
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf34ebdc9b421c706daa9",
94
+ "lastUpdated": "2026-02-24T00:50:23.968Z"
95
95
  },
96
96
  "no-provision.test.mjs": {
97
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965cc5887d56872d5c9766",
98
- "lastUpdated": "2026-02-19T00:58:04.022Z"
97
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf342bdc9b421c706daa0",
98
+ "lastUpdated": "2026-02-24T00:50:23.967Z"
99
99
  },
100
100
  "ai.test.mjs": {
101
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965caa24aebb4a0ca06329",
102
- "lastUpdated": "2026-02-19T00:58:04.021Z"
101
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf327bdc9b421c706da86",
102
+ "lastUpdated": "2026-02-24T00:50:23.967Z"
103
103
  },
104
104
  "popup-loading.test.mjs": {
105
105
  "url": "https://console.testdriver.ai/runs/698bc89f7140c3fa7daaca8d/698bca7f7140c3fa7daacbf7",
@@ -134,36 +134,44 @@
134
134
  "lastUpdated": "2026-02-13T19:55:05.953Z"
135
135
  },
136
136
  "findall-coffee-icons.test.mjs": {
137
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965c48887d56872d5c973b",
138
- "lastUpdated": "2026-02-19T00:58:04.019Z"
137
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf306bdc9b421c706da70",
138
+ "lastUpdated": "2026-02-24T00:50:23.967Z"
139
139
  },
140
140
  "parse.test.mjs": {
141
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965d0a887d56872d5c977a",
142
- "lastUpdated": "2026-02-19T00:58:04.023Z"
141
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf361bdc9b421c706dab8",
142
+ "lastUpdated": "2026-02-24T00:50:23.968Z"
143
143
  },
144
144
  "flake-diffthreshold-001.test.mjs": {
145
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965e0a24aebb4a0ca0636f",
146
- "lastUpdated": "2026-02-19T00:58:04.025Z"
145
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf496bdc9b421c706db6e",
146
+ "lastUpdated": "2026-02-24T00:50:23.969Z"
147
147
  },
148
148
  "flake-noredraw-cache.test.mjs": {
149
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965f1324aebb4a0ca06389",
150
- "lastUpdated": "2026-02-19T00:58:04.025Z"
149
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf54fbdc9b421c706dbb7",
150
+ "lastUpdated": "2026-02-24T00:50:23.969Z"
151
151
  },
152
152
  "flake-noredraw-nocache.test.mjs": {
153
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965f17887d56872d5c97e0",
154
- "lastUpdated": "2026-02-19T00:58:04.025Z"
153
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf4f7bdc9b421c706db96",
154
+ "lastUpdated": "2026-02-24T00:50:23.969Z"
155
155
  },
156
156
  "flake-diffthreshold-05.test.mjs": {
157
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965f4524aebb4a0ca06393",
158
- "lastUpdated": "2026-02-19T00:58:04.025Z"
157
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf4dcbdc9b421c706db88",
158
+ "lastUpdated": "2026-02-24T00:50:23.969Z"
159
159
  },
160
160
  "flake-redraw-cache.test.mjs": {
161
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/6996600ffca9f9c4cff8040b",
162
- "lastUpdated": "2026-02-19T00:58:04.026Z"
161
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf5c5bdc9b421c706dbd0",
162
+ "lastUpdated": "2026-02-24T00:50:23.969Z"
163
163
  },
164
164
  "flake-redraw-nocache.test.mjs": {
165
- "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/699660116613a14398ff482e",
166
- "lastUpdated": "2026-02-19T00:58:04.026Z"
165
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf5a6bdc9b421c706dbca",
166
+ "lastUpdated": "2026-02-24T00:50:23.969Z"
167
+ },
168
+ "flake-rocket-match.test.mjs": {
169
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf332bdc9b421c706da90",
170
+ "lastUpdated": "2026-02-24T00:50:23.967Z"
171
+ },
172
+ "flake-diffthreshold-01.test.mjs": {
173
+ "url": "https://console.testdriver.ai/runs/699cf08dbdc9b421c706d84f/699cf425bdc9b421c706db43",
174
+ "lastUpdated": "2026-02-24T00:50:23.968Z"
167
175
  }
168
176
  }
169
177
  }
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* ai.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965caa24aebb4a0ca06329/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf327bdc9b421c706da86/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* assert.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698f7f88dd202a57999808e3/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf285bdc9b421c706da17/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* chrome-extension.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a95887d56872d5c96bf/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf1a9bdc9b421c706d96c/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* drag-and-drop.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965983d4ec641ec13c81ff/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf08fbdc9b421c706d850/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* element-not-found.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965c3724aebb4a0ca0630a/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf2bbbdc9b421c706da37/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* hover-image.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a99d4ec641ec13c827c/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf19fbdc9b421c706d95f/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* hover-text.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965caa24aebb4a0ca0632a/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf34ebdc9b421c706daa9/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* installer.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965af2887d56872d5c96e5/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf1febdc9b421c706d9ae/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* launch-vscode-linux.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a87887d56872d5c96b9/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf192bdc9b421c706d950/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* match-image.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965986d4ec641ec13c8204/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf092bdc9b421c706d858/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* press-keys.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965bee24aebb4a0ca062f3/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf286bdc9b421c706da18/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* scroll-keyboard.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965b7124aebb4a0ca062d9/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf273bdc9b421c706da04/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* scroll-until-image.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965bd0887d56872d5c9715/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf287bdc9b421c706da19/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* scroll-until-text.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a12d4ec641ec13c8240/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf11ebdc9b421c706d8da/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* scroll.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965b3a887d56872d5c96f6/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf227bdc9b421c706d9cc/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* type.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965b5c887d56872d5c96fc/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf252bdc9b421c706d9eb/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -12,7 +12,7 @@ Watch this test execute in a real sandbox environment:
12
12
 
13
13
  {/* windows-installer.test.mjs output */}
14
14
  <iframe
15
- src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a28887d56872d5c968f/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/699cf122bdc9b421c706d8e9/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -175,12 +175,31 @@ function setupConsoleSpy(client, taskId) {
175
175
 
176
176
  /**
177
177
  * Unregister a client so its sandbox no longer receives forwarded logs.
178
- * When the last client is removed the spy stays installed (harmless) so we
179
- * never have to worry about restore-order races with concurrent tests.
178
+ * When the last client is removed we restore the original console methods so
179
+ * the Vitest worker fork can exit cleanly (unreleased vi.spyOn mocks prevent
180
+ * the worker from shutting down, producing "Worker exited unexpectedly").
181
+ * If another test starts later (e.g. a retry), installConsoleSpy() will
182
+ * re-install the spy on demand.
180
183
  * @param {import('../../sdk.js').default} client - TestDriver client instance
181
184
  */
182
185
  function cleanupConsoleSpy(client) {
183
186
  _consoleSpy.activeClients.delete(client);
187
+
188
+ // Restore spies when no tests need them — allows clean worker exit
189
+ if (_consoleSpy.activeClients.size === 0 && _consoleSpy.spies) {
190
+ _consoleSpy.spies.log.mockRestore();
191
+ _consoleSpy.spies.error.mockRestore();
192
+ _consoleSpy.spies.warn.mockRestore();
193
+ _consoleSpy.spies.info.mockRestore();
194
+ _consoleSpy.spies = null;
195
+ _consoleSpy.originals = null;
196
+ _consoleSpy.installed = false;
197
+
198
+ if (debugConsoleSpy) {
199
+ process.stdout.write("[DEBUG cleanupConsoleSpy] All spies restored\n");
200
+ }
201
+ }
202
+
184
203
  if (debugConsoleSpy) {
185
204
  process.stdout.write(
186
205
  `[DEBUG cleanupConsoleSpy] clients remaining: ${_consoleSpy.activeClients.size}\n`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testdriverai",
3
- "version": "7.3.31",
3
+ "version": "7.3.33",
4
4
  "description": "Next generation autonomous AI agent for end-to-end testing of web & desktop",
5
5
  "main": "sdk.js",
6
6
  "types": "sdk.d.ts",
@@ -135,7 +135,6 @@
135
135
  "mocha": "^10.8.2",
136
136
  "node-addon-api": "^8.0.0",
137
137
  "prettier": "3.3.3",
138
- "testdriverai": "^7.3.6",
139
138
  "vitest": "^4.0.18"
140
139
  },
141
140
  "optionalDependencies": {
package/sdk.js CHANGED
@@ -1710,7 +1710,7 @@ class TestDriverSDK {
1710
1710
  * @param {number} [timeoutMs=60000] - Maximum time to wait in ms
1711
1711
  * @returns {Promise<void>}
1712
1712
  */
1713
- async _waitForChromeDebuggerReady(timeoutMs = 60000) {
1713
+ async _waitForChromeDebuggerReady(timeoutMs = 300000) {
1714
1714
  const shell = this.os === "windows" ? "pwsh" : "sh";
1715
1715
  const portCheckCmd = this.os === "windows"
1716
1716
  ? `$tcp = New-Object System.Net.Sockets.TcpClient; $tcp.Connect('127.0.0.1', 9222); $tcp.Close(); echo 'open'`