@testdriverai/mcp 7.8.0-canary.13 → 7.8.0-canary.15

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.
@@ -61,8 +61,23 @@ const createSandbox = function (emitter, analytics, sessionInstance) {
61
61
  var self = this;
62
62
 
63
63
  this._ably = new Ably.Realtime({
64
- authCallback: function (tokenParams, callback) {
65
- callback(null, ablyToken);
64
+ authCallback: async function (tokenParams, callback) {
65
+ // On initial connect Ably may supply the token directly; on renewal
66
+ // we must fetch a fresh one from the API (the original token will
67
+ // have expired, causing 40143 token.unrecognized if reused).
68
+ try {
69
+ const response = await axios({
70
+ method: "post",
71
+ url: self.apiRoot + "/api/v7/sandbox/ably-token",
72
+ data: { apiKey: self.apiKey, sandboxId: self._sandboxId },
73
+ headers: { "Content-Type": "application/json" },
74
+ timeout: 15000,
75
+ });
76
+ callback(null, response.data.token);
77
+ } catch (err) {
78
+ logger.warn("[ably] Token renewal failed, falling back to original token: " + (err.message || err));
79
+ callback(null, ablyToken);
80
+ }
66
81
  },
67
82
  clientId: "sdk-" + this._sandboxId,
68
83
  echoMessages: false, // don't receive our own published messages
@@ -310,7 +325,7 @@ const createSandbox = function (emitter, analytics, sessionInstance) {
310
325
  var reason = stateChange.reason;
311
326
  var reasonMsg = reason ? (reason.message || reason.code || String(reason)) : '';
312
327
 
313
- if (current === 'attached' && stateChange.resumed === false && previous) {
328
+ if (current === 'attached' && stateChange.resumed === false && previous === 'attached') {
314
329
  logger.warn('[ably] Channel DISCONTINUITY detected (resumed=false)' + (reasonMsg ? ' — ' + reasonMsg : ''));
315
330
  emitter.emit(events.sandbox.progress, {
316
331
  step: 'discontinuity',
@@ -517,34 +532,31 @@ const createSandbox = function (emitter, analytics, sessionInstance) {
517
532
  }
518
533
 
519
534
  if (message.type === "create") {
520
- // E2B (Linux) sandboxes: the API proxies commands and returns a url directly.
521
- // No runner agent involved skip runner.ready wait.
522
- if (reply.url) {
523
- logger.log(`E2B sandbox ready — url=${reply.url}`);
524
- return {
525
- success: true,
526
- sandbox: {
527
- sandboxId: reply.sandboxId,
528
- instanceId: reply.sandbox?.sandboxId || reply.sandboxId,
529
- os: body.os || 'linux',
530
- url: reply.url,
531
- },
532
- };
533
- }
534
-
535
+ // E2B (Linux) sandboxes return a url directly.
536
+ // We still need to wait for runner.ready since sandbox-agent.js runs inside E2B.
537
+ const isE2B = !!reply.url;
538
+
535
539
  const runnerIp = reply.runner && reply.runner.ip;
536
540
  const noVncPort = reply.runner && reply.runner.noVncPort;
537
541
  const runnerVncUrl = reply.runner && reply.runner.vncUrl;
538
542
 
539
- logger.log(`Runner claimed — ip=${runnerIp || 'none'}, os=${reply.runner?.os || 'unknown'}, noVncPort=${noVncPort || 'not reported'}, vncUrl=${runnerVncUrl || 'not reported'}`);
543
+ if (!isE2B) {
544
+ logger.log(`Runner claimed — ip=${runnerIp || 'none'}, os=${reply.runner?.os || 'unknown'}, noVncPort=${noVncPort || 'not reported'}, vncUrl=${runnerVncUrl || 'not reported'}`);
545
+ }
540
546
 
541
- // For cloud Windows sandboxes (no runner in reply), wait for the
542
- // agent to signal readiness before sending commands. Without this
543
- // gate, commands published before the agent subscribes are lost.
547
+ // Wait for the runner agent to signal readiness before sending commands.
548
+ // Without this gate, commands published before the agent subscribes are lost.
549
+ // This applies to:
550
+ // - E2B Linux sandboxes (native runner agent via sandbox-agent.js)
551
+ // - Windows EC2 sandboxes without presence runners
552
+ // For presence-based Windows runners (reply.runner already set), the runner
553
+ // is already listening so we can skip the wait.
544
554
  var self = this;
545
- if (!reply.runner && this._sessionChannel) {
555
+ const needsReadyWait = this._sessionChannel && (isE2B || !reply.runner);
556
+ if (needsReadyWait) {
546
557
  logger.log('Waiting for runner agent to signal readiness...');
547
- var readyTimeout = 120000; // 120s allows for EC2 boot + agent startup
558
+ // E2B (Linux) sandboxes need extra time: S3 upload + npm install can add 60-120s on top of sandbox boot
559
+ var readyTimeout = isE2B ? 300000 : 120000; // 5 min for E2B (S3+npm), 2 min for EC2
548
560
  await new Promise(function (resolve, reject) {
549
561
  var resolved = false;
550
562
  function finish(data) {
@@ -622,9 +634,13 @@ const createSandbox = function (emitter, analytics, sessionInstance) {
622
634
  });
623
635
  }
624
636
  // Prefer the full vncUrl reported by the runner (infrastructure-agnostic).
637
+ // For E2B sandboxes, use the url from the API reply.
625
638
  // Fall back to constructing from ip + noVncPort for older runners.
626
639
  let url;
627
- if (runnerVncUrl) {
640
+ if (isE2B && reply.url) {
641
+ url = reply.url;
642
+ logger.log(`E2B sandbox ready — url=${url}`);
643
+ } else if (runnerVncUrl) {
628
644
  url = runnerVncUrl;
629
645
  logger.log(`Using runner-provided vncUrl: ${url}`);
630
646
  } else if (runnerIp && noVncPort) {
@@ -2,104 +2,104 @@
2
2
  "$schema": "./examples-manifest.schema.json",
3
3
  "examples": {
4
4
  "assert.test.mjs": {
5
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc951f36864abb362f8584",
6
- "lastUpdated": "2026-03-20T00:46:19.602Z"
5
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a33ec10882051dcb4c6",
6
+ "lastUpdated": "2026-03-23T00:48:07.166Z"
7
7
  },
8
8
  "drag-and-drop.test.mjs": {
9
9
  "url": "https://console.testdriver.ai/runs/69a62b3aaa712ecd3dea730a/69a62b42fc0ac3cc632a918b",
10
10
  "lastUpdated": "2026-03-03T00:32:25.275Z"
11
11
  },
12
12
  "exec-pwsh.test.mjs": {
13
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc95088797a8a13f4cbfa2",
14
- "lastUpdated": "2026-03-20T00:46:19.594Z"
13
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a1d3fc5f4138e1b30b3",
14
+ "lastUpdated": "2026-03-23T00:48:07.155Z"
15
15
  },
16
16
  "match-image.test.mjs": {
17
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc950af14c7f71c46d6b78",
18
- "lastUpdated": "2026-03-20T00:46:19.594Z"
17
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a1fec10882051dcb4ba",
18
+ "lastUpdated": "2026-03-23T00:48:07.155Z"
19
19
  },
20
20
  "scroll-until-text.test.mjs": {
21
21
  "url": "https://console.testdriver.ai/runs/69a62b3aaa712ecd3dea730a/69a62b99dc33133fc0da9440",
22
22
  "lastUpdated": "2026-03-03T00:32:25.282Z"
23
23
  },
24
24
  "hover-text-with-description.test.mjs": {
25
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc950c8797a8a13f4cbfa3",
26
- "lastUpdated": "2026-03-20T00:46:19.594Z"
25
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a213fc5f4138e1b30b5",
26
+ "lastUpdated": "2026-03-23T00:48:07.159Z"
27
27
  },
28
28
  "windows-installer.test.mjs": {
29
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc9510f14c7f71c46d6b7a",
30
- "lastUpdated": "2026-03-20T00:46:19.595Z"
29
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a242ae8c7c745aa101e",
30
+ "lastUpdated": "2026-03-23T00:48:07.159Z"
31
31
  },
32
32
  "exec-output.test.mjs": {
33
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc95118797a8a13f4cbfa5",
34
- "lastUpdated": "2026-03-20T00:46:19.595Z"
33
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a26ec10882051dcb4bc",
34
+ "lastUpdated": "2026-03-23T00:48:07.159Z"
35
35
  },
36
36
  "chrome-extension.test.mjs": {
37
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc9507f14c7f71c46d6b77",
38
- "lastUpdated": "2026-03-20T00:46:19.594Z"
37
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a1c80ef14ab384e09f9",
38
+ "lastUpdated": "2026-03-23T00:48:07.155Z"
39
39
  },
40
40
  "launch-vscode-linux.test.mjs": {
41
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc950e8797a8a13f4cbfa4",
42
- "lastUpdated": "2026-03-20T00:46:19.595Z"
41
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a23c68cc3bf937157e6",
42
+ "lastUpdated": "2026-03-23T00:48:07.159Z"
43
43
  },
44
44
  "hover-image.test.mjs": {
45
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc95138797a8a13f4cbfa6",
46
- "lastUpdated": "2026-03-20T00:46:19.595Z"
45
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a272ae8c7c745aa101f",
46
+ "lastUpdated": "2026-03-23T00:48:07.161Z"
47
47
  },
48
48
  "installer.test.mjs": {
49
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc951636864abb362f857c",
50
- "lastUpdated": "2026-03-20T00:46:19.600Z"
49
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a29c68cc3bf937157e7",
50
+ "lastUpdated": "2026-03-23T00:48:07.161Z"
51
51
  },
52
52
  "type.test.mjs": {
53
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc9517f14c7f71c46d6b7c",
54
- "lastUpdated": "2026-03-20T00:46:19.600Z"
53
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a2cec10882051dcb4c2",
54
+ "lastUpdated": "2026-03-23T00:48:07.165Z"
55
55
  },
56
56
  "press-keys.test.mjs": {
57
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc951df14c7f71c46d6b84",
58
- "lastUpdated": "2026-03-20T00:46:19.602Z"
57
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a312ae8c7c745aa1028",
58
+ "lastUpdated": "2026-03-23T00:48:07.166Z"
59
59
  },
60
60
  "scroll-keyboard.test.mjs": {
61
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc951b8797a8a13f4cbfa7",
62
- "lastUpdated": "2026-03-20T00:46:19.601Z"
61
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a2fec10882051dcb4c4",
62
+ "lastUpdated": "2026-03-23T00:48:07.166Z"
63
63
  },
64
64
  "scroll.test.mjs": {
65
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc9519f14c7f71c46d6b7f",
66
- "lastUpdated": "2026-03-20T00:46:19.600Z"
65
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a2d2ae8c7c745aa1026",
66
+ "lastUpdated": "2026-03-23T00:48:07.165Z"
67
67
  },
68
68
  "scroll-until-image.test.mjs": {
69
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc95238797a8a13f4cbfb3",
70
- "lastUpdated": "2026-03-20T00:46:19.602Z"
69
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a36c68cc3bf937157ec",
70
+ "lastUpdated": "2026-03-23T00:48:07.167Z"
71
71
  },
72
72
  "prompt.test.mjs": {
73
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc952436864abb362f8586",
74
- "lastUpdated": "2026-03-20T00:46:19.602Z"
73
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a382ae8c7c745aa102a",
74
+ "lastUpdated": "2026-03-23T00:48:07.167Z"
75
75
  },
76
76
  "focus-window.test.mjs": {
77
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc9526f14c7f71c46d6b85",
78
- "lastUpdated": "2026-03-20T00:46:19.602Z"
77
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a3980ef14ab384e0a08",
78
+ "lastUpdated": "2026-03-23T00:48:07.167Z"
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-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc952af14c7f71c46d6b89",
86
- "lastUpdated": "2026-03-20T00:46:19.602Z"
85
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a3d2ae8c7c745aa102d",
86
+ "lastUpdated": "2026-03-23T00:48:07.168Z"
87
87
  },
88
88
  "formatted-logging.test.mjs": {
89
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc95288797a8a13f4cbfb7",
90
- "lastUpdated": "2026-03-20T00:46:19.602Z"
89
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a3bec10882051dcb4ca",
90
+ "lastUpdated": "2026-03-23T00:48:07.168Z"
91
91
  },
92
92
  "hover-text.test.mjs": {
93
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc952e8797a8a13f4cbfc1",
94
- "lastUpdated": "2026-03-20T00:46:19.603Z"
93
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a413fc5f4138e1b30c2",
94
+ "lastUpdated": "2026-03-23T00:48:07.170Z"
95
95
  },
96
96
  "no-provision.test.mjs": {
97
97
  "url": "https://console.testdriver.ai/runs/69a62b3aaa712ecd3dea730a/69a62b7706a177a05bccd1cf",
98
98
  "lastUpdated": "2026-03-03T00:32:25.279Z"
99
99
  },
100
100
  "ai.test.mjs": {
101
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc952cf14c7f71c46d6b90",
102
- "lastUpdated": "2026-03-20T00:46:19.603Z"
101
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a3e2ae8c7c745aa102e",
102
+ "lastUpdated": "2026-03-23T00:48:07.169Z"
103
103
  },
104
104
  "popup-loading.test.mjs": {
105
105
  "url": "https://console.testdriver.ai/runs/698bc89f7140c3fa7daaca8d/698bca7f7140c3fa7daacbf7",
@@ -134,12 +134,12 @@
134
134
  "lastUpdated": "2026-02-13T19:55:05.953Z"
135
135
  },
136
136
  "findall-coffee-icons.test.mjs": {
137
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc95218797a8a13f4cbfb2",
138
- "lastUpdated": "2026-03-20T00:46:19.602Z"
137
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a35ec10882051dcb4c7",
138
+ "lastUpdated": "2026-03-23T00:48:07.167Z"
139
139
  },
140
140
  "parse.test.mjs": {
141
- "url": "https://console-test.testdriver.ai/runs/69bc950536864abb362f8579/69bc953036864abb362f858e",
142
- "lastUpdated": "2026-03-20T00:46:19.603Z"
141
+ "url": "https://console-test.testdriver.ai/runs/69c08a1a3fc5f4138e1b30b1/69c08a4280ef14ab384e0a0b",
142
+ "lastUpdated": "2026-03-23T00:48:07.170Z"
143
143
  },
144
144
  "flake-diffthreshold-001.test.mjs": {
145
145
  "url": "https://console.testdriver.ai/runs/69a62b3aaa712ecd3dea730a/69a62bcafc0ac3cc632a91aa",
@@ -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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc952cf14c7f71c46d6b90/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a3e2ae8c7c745aa102e/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc951f36864abb362f8584/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a33ec10882051dcb4c6/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc9507f14c7f71c46d6b77/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a1c80ef14ab384e09f9/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc952af14c7f71c46d6b89/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a3d2ae8c7c745aa102d/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
  {/* exec-output.test.mjs output */}
14
14
  <iframe
15
- src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc95118797a8a13f4cbfa5/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a26ec10882051dcb4bc/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
  {/* exec-pwsh.test.mjs output */}
14
14
  <iframe
15
- src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc95088797a8a13f4cbfa2/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a1d3fc5f4138e1b30b3/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
  {/* focus-window.test.mjs output */}
14
14
  <iframe
15
- src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc9526f14c7f71c46d6b85/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a3980ef14ab384e0a08/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc95138797a8a13f4cbfa6/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a272ae8c7c745aa101f/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc952e8797a8a13f4cbfc1/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a413fc5f4138e1b30c2/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc951636864abb362f857c/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a29c68cc3bf937157e7/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc950e8797a8a13f4cbfa4/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a23c68cc3bf937157e6/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc950af14c7f71c46d6b78/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a1fec10882051dcb4ba/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc951df14c7f71c46d6b84/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a312ae8c7c745aa1028/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc951b8797a8a13f4cbfa7/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a2fec10882051dcb4c4/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc95238797a8a13f4cbfb3/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a36c68cc3bf937157ec/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc9519f14c7f71c46d6b7f/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a2d2ae8c7c745aa1026/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc9517f14c7f71c46d6b7c/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a2cec10882051dcb4c2/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://api-test.testdriver.ai/api/v1/testdriver/testcase/69bc9510f14c7f71c46d6b7a/replay"
15
+ src="https://api-test.testdriver.ai/api/v1/testdriver/testcase/69c08a242ae8c7c745aa101e/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testdriverai/mcp",
3
- "version": "7.8.0-canary.13",
3
+ "version": "7.8.0-canary.15",
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",
package/vitest.config.mjs CHANGED
@@ -14,8 +14,8 @@ const setupFiles = [
14
14
 
15
15
  const sharedTestConfig = {
16
16
  retry: 0,
17
- testTimeout: 900000,
18
- hookTimeout: 900000,
17
+ testTimeout: 480000,
18
+ hookTimeout: 480000,
19
19
  maxConcurrency: 100,
20
20
  disableConsoleIntercept: false,
21
21
  silent: false,