testdriverai 5.5.4 → 5.5.6
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/agent.js +29 -39
- package/docs/account/dashboard.mdx +16 -0
- package/docs/account/enterprise.mdx +97 -0
- package/docs/account/pricing.mdx +26 -0
- package/docs/account/projects.mdx +27 -0
- package/docs/account/team.mdx +31 -0
- package/docs/action/browser.mdx +1 -1
- package/docs/action/os.mdx +1 -2
- package/docs/action/output.mdx +2 -2
- package/docs/action/performance.mdx +4 -0
- package/docs/action/prerun.mdx +57 -1
- package/docs/action/secrets.mdx +3 -3
- package/docs/action/setup.mdx +6 -6
- package/docs/apps/chrome-extensions.mdx +41 -0
- package/docs/apps/desktop-apps.mdx +87 -0
- package/docs/apps/mobile-apps.mdx +22 -0
- package/docs/apps/static-websites.mdx +54 -0
- package/docs/bugs/jira.mdx +35 -28
- package/docs/cli/overview.mdx +19 -13
- package/docs/commands/assert.mdx +2 -0
- package/docs/commands/exec.mdx +96 -0
- package/docs/commands/focus-application.mdx +2 -0
- package/docs/commands/hover-image.mdx +2 -0
- package/docs/commands/hover-text.mdx +2 -0
- package/docs/commands/if.mdx +3 -2
- package/docs/commands/issues.mdx +27 -0
- package/docs/commands/match-image.mdx +2 -0
- package/docs/commands/press-keys.mdx +9 -5
- package/docs/commands/run.mdx +2 -1
- package/docs/commands/scroll-until-image.mdx +3 -1
- package/docs/commands/scroll-until-text.mdx +2 -0
- package/docs/commands/scroll.mdx +3 -1
- package/docs/commands/type.mdx +3 -1
- package/docs/commands/wait-for-image.mdx +3 -1
- package/docs/commands/wait-for-text.mdx +3 -1
- package/docs/commands/wait.mdx +3 -1
- package/docs/docs.json +260 -146
- package/docs/exporting/playwright.mdx +33 -26
- package/docs/features/auto-healing.mdx +25 -20
- package/docs/features/cross-platform.mdx +9 -8
- package/docs/features/generation.mdx +4 -3
- package/docs/features/github.mdx +22 -18
- package/docs/features/parallel-testing.mdx +15 -11
- package/docs/features/reusable-snippets.mdx +18 -14
- package/docs/features/selectorless.mdx +8 -3
- package/docs/features/visual-assertions.mdx +9 -10
- package/docs/getting-started/ci.mdx +7 -8
- package/docs/getting-started/editing.mdx +2 -0
- package/docs/getting-started/generating.mdx +1 -1
- package/docs/getting-started/running.mdx +2 -2
- package/docs/getting-started/setup.mdx +5 -12
- package/docs/getting-started/vscode.mdx +67 -79
- package/docs/getting-started/writing.mdx +7 -5
- package/docs/guide/assertions.mdx +6 -6
- package/docs/guide/authentication.mdx +18 -14
- package/docs/guide/code.mdx +3 -3
- package/docs/guide/environment-variables.mdx +64 -0
- package/docs/guide/lifecycle.mdx +154 -0
- package/docs/guide/locating.mdx +9 -9
- package/docs/guide/variables.mdx +9 -6
- package/docs/guide/waiting.mdx +9 -8
- package/docs/images/content/account/newprojectsettings.png +0 -0
- package/docs/images/content/account/projectpage.png +0 -0
- package/docs/images/content/account/projectreplays.png +0 -0
- package/docs/images/content/account/team-manage.png +0 -0
- package/docs/images/content/account/teampage.png +0 -0
- package/docs/images/content/side-by-side.png +0 -0
- package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
- package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
- package/docs/images/content/vscode/vscode-file-creation.png +0 -0
- package/docs/images/content/vscode/vscode-install.png +0 -0
- package/docs/images/content/vscode/vscode-overview.png +0 -0
- package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
- package/docs/images/content/vscode/vscode-stopchat.png +0 -0
- package/docs/images/content/vscode/vscode-stoptest.png +0 -0
- package/docs/images/content/vscode/vscode-tdservice.png +0 -0
- package/docs/images/content/vscode/vscode-test-output.png +0 -0
- package/docs/images/content/vscode/vscode-testhistory.png +0 -0
- package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
- package/docs/images/content/vscode/vscode-testpane.png +0 -0
- package/docs/importing/csv.mdx +9 -6
- package/docs/importing/gherkin.mdx +12 -10
- package/docs/importing/jira.mdx +11 -9
- package/docs/importing/testrail.mdx +10 -8
- package/docs/integrations/electron.mdx +26 -19
- package/docs/integrations/netlify.mdx +25 -24
- package/docs/integrations/vercel.mdx +22 -20
- package/docs/interactive/assert.mdx +4 -1
- package/docs/interactive/dry.mdx +51 -0
- package/docs/interactive/explore.mdx +92 -0
- package/docs/interactive/generate.mdx +6 -3
- package/docs/interactive/run.mdx +3 -0
- package/docs/interactive/save.mdx +3 -0
- package/docs/interactive/undo.mdx +3 -0
- package/docs/overview/comparison.mdx +6 -2
- package/docs/overview/faq.mdx +2 -1
- package/docs/overview/quickstart.mdx +123 -65
- package/docs/overview/upgrading.mdx +82 -0
- package/docs/overview/what-is-testdriver.mdx +13 -5
- package/docs/quickstart.mdx +1 -1
- package/docs/scenarios/ai-chatbot.mdx +26 -0
- package/docs/scenarios/cookie-banner.mdx +30 -0
- package/docs/scenarios/file-upload.mdx +30 -0
- package/docs/scenarios/form-filling.mdx +28 -0
- package/docs/scenarios/log-in.mdx +68 -0
- package/docs/scenarios/pdf-generation.mdx +21 -0
- package/docs/scenarios/spell-check.mdx +21 -0
- package/docs/security/action.mdx +7 -3
- package/docs/security/agent.mdx +1 -1
- package/docs/security/platform.mdx +9 -1
- package/docs/snippets/calendar-link.mdx +1 -0
- package/docs/snippets/gitignore-warning.mdx +4 -0
- package/docs/snippets/test-prereqs.mdx +15 -0
- package/docs/tutorials/advanced-test.mdx +2 -0
- package/docs/tutorials/basic-test.mdx +8 -7
- package/lib/commands.js +40 -21
- package/lib/config.js +0 -1
- package/lib/logger.js +2 -2
- package/lib/parser.js +1 -0
- package/lib/sdk.js +32 -26
- package/package.json +2 -1
- package/schema.json +1 -4
- package/styles/config/vocabularies/Docs/accept.txt +15 -2
- package/styles/config/vocabularies/Docs/reject.txt +4 -0
- package/docs/30x30.mdx +0 -84
- package/docs/issues.mdx +0 -9
- package/docs/security/dashboard.mdx +0 -0
- package/testdriver/chrome.yaml +0 -102
package/lib/sdk.js
CHANGED
|
@@ -9,7 +9,7 @@ const axios = require('axios');
|
|
|
9
9
|
|
|
10
10
|
const { logger } = require('./logger');
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
let token = null;
|
|
13
13
|
|
|
14
14
|
const outputError = async (error) => {
|
|
15
15
|
logger.info(chalk.red(error.status), chalk.red(error.statusText));
|
|
@@ -62,29 +62,32 @@ const parseBody = async (response, body) => {
|
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
let auth = async () => {
|
|
65
|
-
// data.apiKey = process.env.DASHCAM_API_KEY; @todo add-auth
|
|
66
65
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
66
|
+
if (config["TD_API_KEY"]) {
|
|
67
|
+
|
|
68
|
+
const url = [root, "auth/exchange-api-key"].join("/");
|
|
69
|
+
const c = {
|
|
70
|
+
method: "post",
|
|
71
|
+
headers: {
|
|
72
|
+
"Content-Type": "application/json",
|
|
73
|
+
},
|
|
74
|
+
data: {
|
|
75
|
+
apiKey: config["TD_API_KEY"],
|
|
76
|
+
version
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
let res = await axios(url, c);
|
|
82
|
+
|
|
83
|
+
token = res.data.token;
|
|
84
|
+
return token;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
await outputError(error);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
87
89
|
}
|
|
90
|
+
|
|
88
91
|
};
|
|
89
92
|
|
|
90
93
|
const req = async (path, data, onChunk) => {
|
|
@@ -101,12 +104,15 @@ const req = async (path, data, onChunk) => {
|
|
|
101
104
|
|
|
102
105
|
const config = {
|
|
103
106
|
method: "post",
|
|
104
|
-
headers: {
|
|
107
|
+
headers: {
|
|
108
|
+
"Content-Type": "application/json",
|
|
109
|
+
...(token && { "Authorization": `Bearer ${token}` }) // Add the authorization bearer token only if token is set
|
|
110
|
+
},
|
|
105
111
|
responseType: typeof onChunk === "function" ? "stream" : "json",
|
|
106
112
|
data: {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
...data,
|
|
114
|
+
session: session.get(),
|
|
115
|
+
stream: typeof onChunk === "function",
|
|
110
116
|
},
|
|
111
117
|
};
|
|
112
118
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testdriverai",
|
|
3
|
-
"version": "5.5.
|
|
3
|
+
"version": "5.5.6",
|
|
4
4
|
"description": "Next generation autonomous AI agent for end-to-end testing of web & desktop",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"debug": "DEV=true VERBOSE=true node index.js",
|
|
13
13
|
"bundle": "node build.mjs",
|
|
14
14
|
"test": "mocha test/*",
|
|
15
|
+
"docs-lint": "cd docs && vale **/*.mdx",
|
|
15
16
|
"runall": "dotenv testdriverai run --config testdriver.config.yaml --path './testdriver/*.testdriver.yaml'"
|
|
16
17
|
},
|
|
17
18
|
"author": "",
|
package/schema.json
CHANGED
package/docs/30x30.mdx
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# 30x30 Promotion: 30 Tests in 30 Days Free!
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
We understand that QA coverage is critical and often needed immediately. That’s why we’re offering our **30x30 Promotion**: our team will build and deploy **30 custom tests in 30 days** for free during your trial! Unlike other QA services that take months and cost hundreds of thousands of dollars, TestDriver gets you up and running in just 30 days.
|
|
5
|
-
|
|
6
|
-
This is a **limited-time offer**, so don’t miss your chance! [**Schedule an onboarding call now**](#).
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Pricing
|
|
11
|
-
We’re confident you’ll love TestDriver, which is why we’re offering this risk-free trial. After the trial, plans start at just **$995/month**, which includes:
|
|
12
|
-
- **12,000 runner minutes per month**: Enough to run your 30 tests **2–5 times per day**.
|
|
13
|
-
- Full access to our enterprise test dashboards.
|
|
14
|
-
- Seamless integration with GitHub Actions.
|
|
15
|
-
|
|
16
|
-
For more details, see the [Promotion Details](#promotion-details) and [Contract Details](#contract-details).
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Why Choose TestDriver?
|
|
21
|
-
|
|
22
|
-
### Quickly Deploy AI QA Tests
|
|
23
|
-
- Safeguard your most important user flows with AI-generated tests.
|
|
24
|
-
- Increase your total coverage with minimal effort.
|
|
25
|
-
|
|
26
|
-
### Test Flows Never Possible Before
|
|
27
|
-
- Our powerful computer-use agent can test desktop apps, Chrome extensions, mobile apps, and websites.
|
|
28
|
-
|
|
29
|
-
### Spend Less Time on Maintenance
|
|
30
|
-
- TestDriver tests automatically repair themselves, reducing the time spent on maintenance.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Promotion Details
|
|
35
|
-
Here’s what’s included in the **30x30 Promotion**:
|
|
36
|
-
|
|
37
|
-
- **Test Coverage**: Test any publicly available desktop app, Chrome extension, mobile app, or website.
|
|
38
|
-
- **AI-Generated Tests**: Choose from **250 AI-generated tests** within the first 7 days.
|
|
39
|
-
- **Daily Test Runs**: Run tests **3–5 times every day**.
|
|
40
|
-
- **AI Quality Reports**: Receive detailed reports delivered directly to your email.
|
|
41
|
-
- **Self-Healing Tests**: AI automatically fixes and maintains your tests.
|
|
42
|
-
- **GitHub Integration**: Seamlessly integrate with GitHub Actions.
|
|
43
|
-
- **Enterprise Dashboards**: Gain full access to our enterprise-grade test dashboards.
|
|
44
|
-
|
|
45
|
-
For more details, see the [Contract Details](#contract-details).
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## How Does It Work?
|
|
50
|
-
|
|
51
|
-
1. **Book an Onboarding Call**: Share the specific flows you want to test.
|
|
52
|
-
2. **Generate a Test Suite**: We’ll explore your app and generate hundreds of tests using our AI.
|
|
53
|
-
3. **Deploy Tests**: Your new tests will be deployed to our GitHub Actions.
|
|
54
|
-
4. **Custom Test Creation**: Our support team will work with you to create tests for any features TestDriver might have missed.
|
|
55
|
-
5. **Engineer Training**: We’ll train your engineers on best practices for creating and maintaining TestDriver tests.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Onboarding Process
|
|
60
|
-
|
|
61
|
-
| Service | Timeline | Description |
|
|
62
|
-
|-----------------------|----------------|-----------------------------------------------------------------------------|
|
|
63
|
-
| **Custom Onboarding** | First 7 Days | Get set up quickly with custom workflows and Prerun Scripts developed by the TestDriver team. |
|
|
64
|
-
| **AI Test Generation**| First 7 Days | Instant coverage: We’ll generate hundreds of tests for you to choose from. |
|
|
65
|
-
| **Custom Test Creation** | First 30 Days | Our team will create tests for any features TestDriver might have missed. |
|
|
66
|
-
| **Training** | First 30 Days | Our support team will train your engineers on best practices. |
|
|
67
|
-
| **Test Execution** | Recurring | Seamless deployment: Tests are executed on a schedule or via GitHub Actions.|
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Contract Details
|
|
72
|
-
|
|
73
|
-
- **Free Trial**: Get 30 custom tests free during a 30-day trial when subscribing to the $995/month "30x30" plan.
|
|
74
|
-
- **Ownership**: The tests are yours! You can modify, duplicate, or distribute them however you wish.
|
|
75
|
-
- **Payment**: A payment method is required to begin the trial.
|
|
76
|
-
- **Renewal**: The contract renews monthly.
|
|
77
|
-
- **Cancellation**: Cancel anytime, for any reason.
|
|
78
|
-
- **Credits**: Unused credits don't roll over and expire at the end of each month.
|
|
79
|
-
- **Additional Usage**: Additional usage is billed at standard rates.
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Ready to Get Started?
|
|
84
|
-
Don’t wait—this is a limited-time offer! [**Schedule your onboarding call now**](#) and let us help you achieve QA coverage in just 30 days.
|
package/docs/issues.mdx
DELETED
|
File without changes
|
package/testdriver/chrome.yaml
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
version: 4.2.29
|
|
2
|
-
session: 680d09c63f8647e0819efd85
|
|
3
|
-
steps:
|
|
4
|
-
- prompt: go to the web address chromewebstore.google.com
|
|
5
|
-
commands:
|
|
6
|
-
- command: focus-application
|
|
7
|
-
name: Google Chrome
|
|
8
|
-
- command: hover-text
|
|
9
|
-
text: Search extensions
|
|
10
|
-
description: address bar in Google Chrome
|
|
11
|
-
action: click
|
|
12
|
-
- command: type
|
|
13
|
-
text: chromewebstore.google.com
|
|
14
|
-
- command: press-keys
|
|
15
|
-
keys:
|
|
16
|
-
- enter
|
|
17
|
-
- prompt: find the extension called "YouTube DJ Effects" and install it
|
|
18
|
-
commands:
|
|
19
|
-
- command: focus-application
|
|
20
|
-
name: Google Chrome
|
|
21
|
-
- command: hover-text
|
|
22
|
-
text: Search extensions and themes
|
|
23
|
-
description: search bar in Chrome Web Store
|
|
24
|
-
action: click
|
|
25
|
-
- command: type
|
|
26
|
-
text: YouTube DJ Effects
|
|
27
|
-
- command: press-keys
|
|
28
|
-
keys:
|
|
29
|
-
- enter
|
|
30
|
-
- command: scroll-until-text
|
|
31
|
-
text: YouTube DJ Effects
|
|
32
|
-
direction: down
|
|
33
|
-
method: keyboard
|
|
34
|
-
- command: hover-text
|
|
35
|
-
text: YouTube DJ Effects
|
|
36
|
-
description: extension name in search results
|
|
37
|
-
action: click
|
|
38
|
-
- command: hover-text
|
|
39
|
-
text: Add to Chrome
|
|
40
|
-
description: install button for the extension
|
|
41
|
-
action: click
|
|
42
|
-
- prompt: find the extension called "YouTube DJ Effects" and install it
|
|
43
|
-
commands:
|
|
44
|
-
- command: hover-text
|
|
45
|
-
text: Add to Chrome
|
|
46
|
-
description: install button for the YouTube DJ Effects extension
|
|
47
|
-
action: click
|
|
48
|
-
- prompt: find the extension called "YouTube DJ Effects" and install it
|
|
49
|
-
commands:
|
|
50
|
-
- command: hover-text
|
|
51
|
-
text: YouTube DJ effects / EQ / Volume Booster / Bass Booster
|
|
52
|
-
description: extension name in search results
|
|
53
|
-
action: click
|
|
54
|
-
- command: hover-text
|
|
55
|
-
text: Add to Chrome
|
|
56
|
-
description: install button for the extension
|
|
57
|
-
action: click
|
|
58
|
-
- prompt: find the extension called "YouTube DJ Effects" and install it
|
|
59
|
-
commands:
|
|
60
|
-
- command: hover-text
|
|
61
|
-
text: Add extension
|
|
62
|
-
description: confirmation button to add the extension
|
|
63
|
-
action: click
|
|
64
|
-
- prompt: focus chrome and open a new tab
|
|
65
|
-
commands:
|
|
66
|
-
- command: focus-application
|
|
67
|
-
name: Google Chrome
|
|
68
|
-
- command: press-keys
|
|
69
|
-
keys:
|
|
70
|
-
- command
|
|
71
|
-
- t
|
|
72
|
-
- prompt: >-
|
|
73
|
-
click the image that looks like a puzzle piece at the top of chrome
|
|
74
|
-
and 'pin' the new extension
|
|
75
|
-
commands:
|
|
76
|
-
- command: focus-application
|
|
77
|
-
name: Google Chrome
|
|
78
|
-
- command: hover-image
|
|
79
|
-
description: puzzle piece icon in the Chrome toolbar
|
|
80
|
-
action: click
|
|
81
|
-
- command: hover-text
|
|
82
|
-
text: YouTube DJ effects / EQ / Volume Booster / Bass Booster
|
|
83
|
-
description: pin option for the YouTube DJ Effects extension
|
|
84
|
-
action: click
|
|
85
|
-
assert: the orange and black record icon appears in the Chrome toolbar
|
|
86
|
-
- prompt: >-
|
|
87
|
-
click the image that looks like a 'pin' the youtube dj effects extension to show in the chrome toolbar
|
|
88
|
-
commands:
|
|
89
|
-
- command: focus-application
|
|
90
|
-
name: Google Chrome
|
|
91
|
-
- command: hover-image
|
|
92
|
-
description: pin icon inside the extension menu
|
|
93
|
-
action: click
|
|
94
|
-
- prompt: >-
|
|
95
|
-
click the icon that looks like a record to open the Youtube DJ
|
|
96
|
-
extension
|
|
97
|
-
commands:
|
|
98
|
-
- command: focus-application
|
|
99
|
-
name: Google Chrome
|
|
100
|
-
- command: hover-image
|
|
101
|
-
description: record icon in the Chrome toolbar
|
|
102
|
-
action: click
|