testdriverai 7.8.0-test.2 → 7.8.0-test.4
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.
- package/CHANGELOG.md +25 -0
- package/agent/index.js +2 -2
- package/ai/skills/testdriver-captcha/SKILL.md +0 -1
- package/ai/skills/testdriver-exec/SKILL.md +13 -24
- package/ai/skills/testdriver-quickstart/SKILL.md +1 -1
- package/docs/changelog.mdx +9 -0
- package/docs/docs.json +12 -1
- package/docs/v7/captcha.mdx +0 -1
- package/interfaces/vitest-plugin.mjs +1 -1
- package/lib/core/Dashcam.js +4 -4
- package/lib/resolve-channel.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
## 7.8.0-test.4 (2026-03-13)
|
|
2
|
+
|
|
3
|
+
## 📝 Documentation
|
|
4
|
+
|
|
5
|
+
- Update and streamline skill documentation for captcha, exec, and quickstart features [SDK] (86d90bbf)
|
|
6
|
+
- Remove outdated Moby integration references from documentation [SDK] (08fa8e18)
|
|
7
|
+
|
|
8
|
+
## 7.8.0-test.3 (2026-03-13)
|
|
9
|
+
|
|
10
|
+
## ✨ Features
|
|
11
|
+
|
|
12
|
+
- Add comprehensive find() cache permutation integration tests to improve test coverage and reliability [API] (6a957f69)
|
|
13
|
+
- Add changelog documentation to SDK package [SDK] (6a957f69)
|
|
14
|
+
|
|
15
|
+
## 🐛 Bug Fixes
|
|
16
|
+
|
|
17
|
+
- Fix dashcam URL parsing issues that could cause recording problems [SDK] (6a957f69)
|
|
18
|
+
|
|
19
|
+
## 🔧 Maintenance
|
|
20
|
+
|
|
21
|
+
- Update subdomain routing configuration for improved service connectivity [API] (6a957f69)
|
|
22
|
+
- Streamline GitHub Actions workflows by consolidating publish processes [CI] (6a957f69)
|
|
23
|
+
- Update environment configuration for test, dev, and canary deployments [Infrastructure] (6a957f69)
|
|
24
|
+
- Improve development container and VS Code task configurations [Development] (6a957f69)
|
|
25
|
+
|
|
1
26
|
## 7.8.0-test.2 (2026-03-13)
|
|
2
27
|
|
|
3
28
|
## ✨ Features
|
package/agent/index.js
CHANGED
|
@@ -1944,8 +1944,8 @@ ${regression}
|
|
|
1944
1944
|
const mapping = {
|
|
1945
1945
|
"https://api.testdriver.ai": "https://console.testdriver.ai",
|
|
1946
1946
|
"https://v6.testdriver.ai": "https://console.testdriver.ai",
|
|
1947
|
-
"https://api
|
|
1948
|
-
"https://api
|
|
1947
|
+
"https://api-canary.testdriver.ai": "https://console-canary.testdriver.ai",
|
|
1948
|
+
"https://api-test.testdriver.ai": "https://console-test.testdriver.ai",
|
|
1949
1949
|
};
|
|
1950
1950
|
if (mapping[apiRoot]) return mapping[apiRoot];
|
|
1951
1951
|
// Local dev: API on localhost:1337 -> Web on localhost:3001
|
|
@@ -198,7 +198,7 @@ await testdriver.exec('pwsh', '.\\setup.ps1', 60000, true);
|
|
|
198
198
|
|
|
199
199
|
```javascript
|
|
200
200
|
// Quick operations: 5000ms
|
|
201
|
-
await testdriver.exec('
|
|
201
|
+
await testdriver.exec('sh', 'ls -la', 5000);
|
|
202
202
|
|
|
203
203
|
// Installations: 30000-60000ms
|
|
204
204
|
await testdriver.exec('pwsh', 'npm install -g package', 30000);
|
|
@@ -271,27 +271,20 @@ describe('Code Execution', () => {
|
|
|
271
271
|
await testdriver.disconnect();
|
|
272
272
|
});
|
|
273
273
|
|
|
274
|
-
it('should execute
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const title = await testdriver.exec('js', 'document.title', 5000);
|
|
279
|
-
console.log('Page title:', title);
|
|
280
|
-
|
|
281
|
-
// Manipulate DOM
|
|
282
|
-
await testdriver.exec('js', `
|
|
283
|
-
document.querySelector('#username').value = 'testuser';
|
|
284
|
-
`, 5000);
|
|
274
|
+
it('should execute shell commands on Linux', async () => {
|
|
275
|
+
// List directory
|
|
276
|
+
const files = await testdriver.exec('sh', 'ls -la', 5000);
|
|
277
|
+
console.log('Files:', files);
|
|
285
278
|
|
|
286
|
-
//
|
|
287
|
-
|
|
288
|
-
document.querySelector('#username').value
|
|
289
|
-
`, 5000);
|
|
279
|
+
// Create a file
|
|
280
|
+
await testdriver.exec('sh', 'echo "Hello World" > test.txt', 5000);
|
|
290
281
|
|
|
291
|
-
|
|
282
|
+
// Read the file
|
|
283
|
+
const content = await testdriver.exec('sh', 'cat test.txt', 5000);
|
|
284
|
+
expect(content).toContain('Hello World');
|
|
292
285
|
});
|
|
293
286
|
|
|
294
|
-
it('should install and use tools', async () => {
|
|
287
|
+
it('should install and use tools on Windows', async () => {
|
|
295
288
|
// Install tool
|
|
296
289
|
await testdriver.exec('pwsh', 'npm install -g http-server', 30000, true);
|
|
297
290
|
|
|
@@ -313,10 +306,6 @@ describe('Code Execution', () => {
|
|
|
313
306
|
`, 5000);
|
|
314
307
|
|
|
315
308
|
await testdriver.focusApplication('Google Chrome');
|
|
316
|
-
|
|
317
|
-
// Verify page loaded
|
|
318
|
-
const content = await testdriver.exec('js', 'document.body.textContent', 5000);
|
|
319
|
-
expect(content).toContain('Test Page');
|
|
320
309
|
});
|
|
321
310
|
});
|
|
322
311
|
```
|
|
@@ -324,5 +313,5 @@ describe('Code Execution', () => {
|
|
|
324
313
|
## Related Methods
|
|
325
314
|
|
|
326
315
|
- [`focusApplication()`](/v7/focus-application) - Focus apps before exec
|
|
327
|
-
- [`find()`](/v7/find) - Locate elements
|
|
328
|
-
- [`type()`](/v7/type) - Type text
|
|
316
|
+
- [`find()`](/v7/find) - Locate elements visually
|
|
317
|
+
- [`type()`](/v7/type) - Type text into inputs
|
|
@@ -22,7 +22,7 @@ TestDriver makes it easy to write automated computer-use tests for web browsers,
|
|
|
22
22
|
npx testdriverai init
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
This will walk you through creating a new project folder, installing dependencies,
|
|
25
|
+
This will walk you through creating a new project folder, installing dependencies, setting up your API key, and configuring MCP for your preferred AI assistant (VS Code, Cursor, Claude Desktop, etc.).
|
|
26
26
|
|
|
27
27
|
</Step>
|
|
28
28
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Changelog"
|
|
3
|
+
description: "Product updates and announcements"
|
|
4
|
+
rss: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
{/* New entries are prepended automatically by the release workflow. */}
|
|
8
|
+
{/* Do not remove the CHANGELOG_MARKER comment below — the CI script inserts new <Update> blocks after it. */}
|
|
9
|
+
{/* CHANGELOG_MARKER */}
|
package/docs/docs.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://mintlify.com/docs.json",
|
|
3
|
-
"theme": "
|
|
3
|
+
"theme": "palm",
|
|
4
4
|
"name": "TestDriver",
|
|
5
5
|
"colors": {
|
|
6
6
|
"primary": "#b3d334",
|
|
@@ -122,6 +122,12 @@
|
|
|
122
122
|
"/v7/client",
|
|
123
123
|
"/v7/dashcam"
|
|
124
124
|
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"group": "",
|
|
128
|
+
"pages": [
|
|
129
|
+
"/changelog"
|
|
130
|
+
]
|
|
125
131
|
}
|
|
126
132
|
]
|
|
127
133
|
},
|
|
@@ -328,6 +334,11 @@
|
|
|
328
334
|
"icon": "gauge-high",
|
|
329
335
|
"label": "Dashboard",
|
|
330
336
|
"href": "https://console.testdriver.ai"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"icon": "megaphone",
|
|
340
|
+
"label": "Changelog",
|
|
341
|
+
"href": "/changelog"
|
|
331
342
|
}
|
|
332
343
|
]
|
|
333
344
|
},
|
package/docs/v7/captcha.mdx
CHANGED
|
@@ -1250,7 +1250,7 @@ function getConsoleUrl(apiRoot) {
|
|
|
1250
1250
|
if (!apiRoot) return "https://console.testdriver.ai";
|
|
1251
1251
|
|
|
1252
1252
|
// Map known channel API URLs to their console equivalents
|
|
1253
|
-
// e.g. https://api
|
|
1253
|
+
// e.g. https://api-canary.testdriver.ai -> https://console-canary.testdriver.ai
|
|
1254
1254
|
for (const url of Object.values(channelConfig.channels)) {
|
|
1255
1255
|
if (url === apiRoot) {
|
|
1256
1256
|
return url.replace("api", "console").replace("1337", "3001");
|
package/lib/core/Dashcam.js
CHANGED
|
@@ -98,10 +98,10 @@ class Dashcam {
|
|
|
98
98
|
|
|
99
99
|
if (!apiRoot) return "https://console.testdriver.ai";
|
|
100
100
|
|
|
101
|
-
//
|
|
102
|
-
const
|
|
103
|
-
if (
|
|
104
|
-
return `https://console
|
|
101
|
+
// Dash-separated environments: api-{env}.testdriver.ai -> console-{env}.testdriver.ai
|
|
102
|
+
const envMatch = apiRoot.match(/^https:\/\/api-(test|canary)\.testdriver\.ai/);
|
|
103
|
+
if (envMatch) {
|
|
104
|
+
return `https://console-${envMatch[1]}.testdriver.ai`;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
// Production: API on render.com or v6 -> Console on testdriver.ai
|
package/lib/resolve-channel.js
CHANGED
|
@@ -12,8 +12,8 @@ const semver = require("semver");
|
|
|
12
12
|
|
|
13
13
|
const CHANNELS = {
|
|
14
14
|
dev: "http://localhost:1337",
|
|
15
|
-
test: "https://api
|
|
16
|
-
canary: "https://api
|
|
15
|
+
test: "https://api-test.testdriver.ai",
|
|
16
|
+
canary: "https://api-canary.testdriver.ai",
|
|
17
17
|
latest: "https://api.testdriver.ai",
|
|
18
18
|
};
|
|
19
19
|
|