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 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.canary.testdriver.ai": "https://console.canary.testdriver.ai",
1948
- "https://api.test.testdriver.ai": "https://console.test.testdriver.ai",
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
@@ -105,7 +105,6 @@ export TWOCAPTCHA_API_KEY=your_api_key_here
105
105
 
106
106
  Then use it in your tests:
107
107
 
108
- ```javascript
109
108
  ```javascript
110
109
  const result = await testdriver.captcha({
111
110
  apiKey: process.env.TWOCAPTCHA_API_KEY,
@@ -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('js', 'document.title', 5000);
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 JavaScript in browser', async () => {
275
- await testdriver.focusApplication('Google Chrome');
276
-
277
- // Get page info via JavaScript
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
- // Verify
287
- const value = await testdriver.exec('js', `
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
- expect(value).toBe('testuser');
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 (alternative to DOM manipulation)
328
- - [`type()`](/v7/type) - Type text (alternative to JS form filling)
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, and setting up your API key.
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": "willow",
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
  },
@@ -106,7 +106,6 @@ export TWOCAPTCHA_API_KEY=your_api_key_here
106
106
 
107
107
  Then use it in your tests:
108
108
 
109
- ```javascript
110
109
  ```javascript
111
110
  const result = await testdriver.captcha({
112
111
  apiKey: process.env.TWOCAPTCHA_API_KEY,
@@ -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.canary.testdriver.ai -> https://console.canary.testdriver.ai
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");
@@ -98,10 +98,10 @@ class Dashcam {
98
98
 
99
99
  if (!apiRoot) return "https://console.testdriver.ai";
100
100
 
101
- // Subdomain-based environments: api.{env}.testdriver.ai -> console.{env}.testdriver.ai
102
- const subdomainMatch = apiRoot.match(/^https:\/\/api\.(test|canary)\.testdriver\.ai/);
103
- if (subdomainMatch) {
104
- return `https://console.${subdomainMatch[1]}.testdriver.ai`;
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
@@ -12,8 +12,8 @@ const semver = require("semver");
12
12
 
13
13
  const CHANNELS = {
14
14
  dev: "http://localhost:1337",
15
- test: "https://api.test.testdriver.ai",
16
- canary: "https://api.canary.testdriver.ai",
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testdriverai",
3
- "version": "7.8.0-test.2",
3
+ "version": "7.8.0-test.4",
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",