testdriverai 6.0.22 → 6.0.23
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/docs/account/enterprise.mdx +1 -1
- package/docs/action/setup.mdx +3 -3
- package/docs/cli/overview.mdx +3 -3
- package/docs/docs.json +104 -130
- package/docs/features/auto-healing.mdx +21 -21
- package/docs/features/selectorless.mdx +1 -1
- package/docs/getting-started/cli.mdx +97 -0
- package/docs/guide/lifecycle.mdx +1 -1
- package/docs/guide/protips.mdx +10 -10
- package/docs/images/content/extension/cursor.svg +1 -0
- package/docs/images/content/extension/vscode.svg +57 -0
- package/docs/images/content/extension/windsurf.svg +3 -0
- package/docs/images/content/vscode/vscode-2-assert.png +0 -0
- package/docs/overview/performance.mdx +1 -0
- package/docs/overview/quickstart.mdx +59 -84
- package/docs/overview/what-is-testdriver.mdx +8 -8
- package/docs/styles.css +4 -0
- package/package.json +1 -1
- package/docs/getting-started/setup.mdx +0 -125
package/docs/action/setup.mdx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "CI
|
|
3
|
-
sidebarTitle: "Setup
|
|
4
|
-
description: "Learn how to set up and configure TestDriver CLI for automated cloud-based testing in your CI
|
|
2
|
+
title: "CI Setup Guide"
|
|
3
|
+
sidebarTitle: "CI Setup"
|
|
4
|
+
description: "Learn how to set up and configure TestDriver CLI for automated cloud-based testing in your CI workflows."
|
|
5
5
|
icon: "square-terminal"
|
|
6
6
|
---
|
|
7
7
|
|
package/docs/cli/overview.mdx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
sidebarTitle: "
|
|
2
|
+
title: "TestDriver CLI Flags"
|
|
3
|
+
sidebarTitle: "Flags"
|
|
4
4
|
description: "Learn about the TestDriver CLI, its commands, and how to use it effectively."
|
|
5
|
-
icon: "
|
|
5
|
+
icon: "flag"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
The `testdriverai` CLI is the primary interface for running, managing, and debugging TestDriver scripts. It provides commands to execute tests, validate configurations, and interact with the TestDriver framework.
|
package/docs/docs.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://mintlify.com/docs.json",
|
|
3
|
-
"theme": "
|
|
3
|
+
"theme": "willow",
|
|
4
4
|
"name": "TestDriver",
|
|
5
5
|
"colors": {
|
|
6
6
|
"primary": "#b3d334",
|
|
@@ -12,92 +12,67 @@
|
|
|
12
12
|
},
|
|
13
13
|
"favicon": "/images/template/icon.png",
|
|
14
14
|
"navigation": {
|
|
15
|
-
"
|
|
15
|
+
"groups": [
|
|
16
16
|
{
|
|
17
|
-
"
|
|
18
|
-
"
|
|
17
|
+
"group": "Overview",
|
|
18
|
+
"pages": [
|
|
19
|
+
"/overview/what-is-testdriver",
|
|
19
20
|
{
|
|
20
|
-
"group": "
|
|
21
|
+
"group": "Concepts",
|
|
22
|
+
"icon": "book",
|
|
21
23
|
"pages": [
|
|
22
|
-
"/
|
|
23
|
-
"/overview/what-is-testdriver",
|
|
24
|
-
"/overview/faq",
|
|
24
|
+
"/features/selectorless",
|
|
25
25
|
"/overview/comparison",
|
|
26
26
|
"/overview/performance",
|
|
27
|
-
"/
|
|
28
|
-
]
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"group": "Features",
|
|
32
|
-
"pages": [
|
|
33
|
-
"/features/selectorless",
|
|
34
|
-
"/features/generation",
|
|
35
|
-
"/features/visual-assertions",
|
|
36
|
-
"/features/auto-healing",
|
|
37
|
-
"/features/reusable-snippets",
|
|
38
|
-
"/features/parallel-testing"
|
|
39
|
-
]
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"group": "Security & Privacy",
|
|
43
|
-
"pages": [
|
|
44
|
-
"/security/agent",
|
|
45
|
-
"/security/action",
|
|
46
|
-
"/security/platform"
|
|
27
|
+
"/overview/faq"
|
|
47
28
|
]
|
|
48
29
|
},
|
|
30
|
+
"/account/enterprise"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"group": "Get Started",
|
|
35
|
+
"pages": [
|
|
36
|
+
"/overview/quickstart",
|
|
49
37
|
{
|
|
50
|
-
"group": "
|
|
38
|
+
"group": "CLI",
|
|
39
|
+
"icon": "terminal",
|
|
51
40
|
"pages": [
|
|
52
|
-
"/
|
|
53
|
-
"/
|
|
54
|
-
|
|
41
|
+
"/getting-started/cli",
|
|
42
|
+
"/cli/overview",
|
|
43
|
+
{
|
|
44
|
+
"group": "Commands",
|
|
45
|
+
"icon": "command",
|
|
46
|
+
"pages": [
|
|
47
|
+
"/interactive/assert",
|
|
48
|
+
"/interactive/dry",
|
|
49
|
+
"/interactive/explore",
|
|
50
|
+
"/interactive/generate",
|
|
51
|
+
"/interactive/run",
|
|
52
|
+
"/interactive/save",
|
|
53
|
+
"/interactive/undo"
|
|
54
|
+
]
|
|
55
|
+
}
|
|
55
56
|
]
|
|
56
57
|
}
|
|
57
58
|
]
|
|
58
59
|
},
|
|
59
60
|
{
|
|
60
|
-
"
|
|
61
|
-
"
|
|
61
|
+
"group": "Examples",
|
|
62
|
+
"pages": [
|
|
62
63
|
{
|
|
63
|
-
"group": "
|
|
64
|
-
"
|
|
65
|
-
"/getting-started/vscode",
|
|
66
|
-
"/getting-started/running",
|
|
67
|
-
"/getting-started/ci",
|
|
68
|
-
"/getting-started/editing"
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"group": "Writing Tests",
|
|
64
|
+
"group": "Apps",
|
|
65
|
+
"icon": "laptop",
|
|
73
66
|
"pages": [
|
|
74
|
-
"/
|
|
75
|
-
"/
|
|
76
|
-
"/
|
|
77
|
-
"/
|
|
78
|
-
"/guide/authentication",
|
|
79
|
-
"/guide/lifecycle",
|
|
80
|
-
"/guide/code",
|
|
81
|
-
"/guide/environment-variables",
|
|
82
|
-
"/guide/protips"
|
|
67
|
+
"apps/static-websites",
|
|
68
|
+
"apps/desktop-apps",
|
|
69
|
+
"apps/chrome-extensions",
|
|
70
|
+
"apps/mobile-apps"
|
|
83
71
|
]
|
|
84
72
|
},
|
|
85
|
-
{
|
|
86
|
-
"group": "Running in CI",
|
|
87
|
-
"pages": [
|
|
88
|
-
"/action/setup",
|
|
89
|
-
"/action/performance",
|
|
90
|
-
"/action/secrets",
|
|
91
|
-
"/action/ami"
|
|
92
|
-
]
|
|
93
|
-
}
|
|
94
|
-
]
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"tab": "Examples",
|
|
98
|
-
"groups": [
|
|
99
73
|
{
|
|
100
74
|
"group": "Scenarios",
|
|
75
|
+
"icon": "computer-mouse",
|
|
101
76
|
"pages": [
|
|
102
77
|
"scenarios/ai-chatbot",
|
|
103
78
|
"scenarios/cookie-banner",
|
|
@@ -109,29 +84,45 @@
|
|
|
109
84
|
]
|
|
110
85
|
},
|
|
111
86
|
{
|
|
112
|
-
"group": "
|
|
87
|
+
"group": "Build Systems",
|
|
88
|
+
"icon": "helmet-safety",
|
|
113
89
|
"pages": [
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"apps/static-websites"
|
|
90
|
+
"/integrations/electron",
|
|
91
|
+
"/integrations/netlify",
|
|
92
|
+
"/integrations/vercel"
|
|
118
93
|
]
|
|
119
94
|
}
|
|
120
95
|
]
|
|
121
96
|
},
|
|
122
97
|
{
|
|
123
|
-
"
|
|
124
|
-
"
|
|
98
|
+
"group": "Guide",
|
|
99
|
+
"pages": [
|
|
125
100
|
{
|
|
126
|
-
"group": "
|
|
101
|
+
"group": "Configuration",
|
|
102
|
+
"icon": "desktop",
|
|
127
103
|
"pages": [
|
|
128
|
-
"/
|
|
129
|
-
"/
|
|
130
|
-
"/
|
|
104
|
+
"/guide/variables",
|
|
105
|
+
"/guide/lifecycle",
|
|
106
|
+
"/guide/environment-variables",
|
|
107
|
+
"/action/ami"
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"group": "Writing",
|
|
112
|
+
"icon": "pencil",
|
|
113
|
+
"pages": [
|
|
114
|
+
"/features/generation",
|
|
115
|
+
"/guide/locating",
|
|
116
|
+
"/guide/waiting",
|
|
117
|
+
"/guide/assertions",
|
|
118
|
+
"/guide/code",
|
|
119
|
+
"/features/reusable-snippets",
|
|
120
|
+
"/guide/protips"
|
|
131
121
|
]
|
|
132
122
|
},
|
|
133
123
|
{
|
|
134
124
|
"group": "Importing",
|
|
125
|
+
"icon": "file-import",
|
|
135
126
|
"pages": [
|
|
136
127
|
"/importing/csv",
|
|
137
128
|
"/importing/gherkin",
|
|
@@ -140,58 +131,49 @@
|
|
|
140
131
|
]
|
|
141
132
|
},
|
|
142
133
|
{
|
|
143
|
-
"group": "
|
|
144
|
-
"
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"group": "Test Reporting",
|
|
148
|
-
"pages": ["exporting/junit", "/bugs/jira"]
|
|
149
|
-
}
|
|
150
|
-
]
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
"tab": "Reference",
|
|
154
|
-
"groups": [
|
|
155
|
-
{
|
|
156
|
-
"group": "Commands",
|
|
134
|
+
"group": "Running",
|
|
135
|
+
"icon": "play",
|
|
157
136
|
"pages": [
|
|
158
|
-
"/
|
|
159
|
-
"/
|
|
160
|
-
"/
|
|
161
|
-
"/
|
|
162
|
-
"/
|
|
163
|
-
"/commands/if",
|
|
164
|
-
"/commands/match-image",
|
|
165
|
-
"/commands/press-keys",
|
|
166
|
-
"/commands/remember",
|
|
167
|
-
"/commands/run",
|
|
168
|
-
"/commands/scroll",
|
|
169
|
-
"/commands/scroll-until-image",
|
|
170
|
-
"/commands/scroll-until-text",
|
|
171
|
-
"/commands/type",
|
|
172
|
-
"/commands/wait",
|
|
173
|
-
"/commands/wait-for-image",
|
|
174
|
-
"/commands/wait-for-text",
|
|
175
|
-
"/commands/issues"
|
|
137
|
+
"/getting-started/running",
|
|
138
|
+
"/action/setup",
|
|
139
|
+
"/features/parallel-testing",
|
|
140
|
+
"/action/performance",
|
|
141
|
+
"/action/secrets"
|
|
176
142
|
]
|
|
177
143
|
},
|
|
178
144
|
{
|
|
179
|
-
"group": "
|
|
180
|
-
"
|
|
181
|
-
|
|
182
|
-
"/interactive/dry",
|
|
183
|
-
"/interactive/explore",
|
|
184
|
-
"/interactive/generate",
|
|
185
|
-
"/interactive/run",
|
|
186
|
-
"/interactive/save",
|
|
187
|
-
"/interactive/undo"
|
|
188
|
-
]
|
|
145
|
+
"group": "Maintaining",
|
|
146
|
+
"icon": "wrench",
|
|
147
|
+
"pages": ["/getting-started/editing", "/features/auto-healing"]
|
|
189
148
|
},
|
|
190
149
|
{
|
|
191
|
-
"group": "
|
|
192
|
-
"
|
|
150
|
+
"group": "Reporting",
|
|
151
|
+
"icon": "chart-simple",
|
|
152
|
+
"pages": ["exporting/junit", "/bugs/jira"]
|
|
193
153
|
}
|
|
194
154
|
]
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"group": "Reference",
|
|
158
|
+
"pages": [
|
|
159
|
+
"/commands/assert",
|
|
160
|
+
"/commands/exec",
|
|
161
|
+
"/commands/focus-application",
|
|
162
|
+
"/commands/hover-image",
|
|
163
|
+
"/commands/hover-text",
|
|
164
|
+
"/commands/if",
|
|
165
|
+
"/commands/match-image",
|
|
166
|
+
"/commands/press-keys",
|
|
167
|
+
"/commands/remember",
|
|
168
|
+
"/commands/run",
|
|
169
|
+
"/commands/scroll",
|
|
170
|
+
"/commands/scroll-until-image",
|
|
171
|
+
"/commands/scroll-until-text",
|
|
172
|
+
"/commands/type",
|
|
173
|
+
"/commands/wait",
|
|
174
|
+
"/commands/wait-for-image",
|
|
175
|
+
"/commands/wait-for-text"
|
|
176
|
+
]
|
|
195
177
|
}
|
|
196
178
|
],
|
|
197
179
|
"global": {
|
|
@@ -215,17 +197,9 @@
|
|
|
215
197
|
},
|
|
216
198
|
"navbar": {
|
|
217
199
|
"links": [
|
|
218
|
-
{
|
|
219
|
-
"label": "GitHub",
|
|
220
|
-
"href": "https://github.com/testdriverai/testdriverai"
|
|
221
|
-
},
|
|
222
200
|
{
|
|
223
201
|
"label": "Discord",
|
|
224
202
|
"href": "https://discord.com/invite/cWDFW8DzPm"
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
"label": "Report an Issue",
|
|
228
|
-
"href": "https://forums.testdriver.ai/new-topic?category=help"
|
|
229
203
|
}
|
|
230
204
|
],
|
|
231
205
|
"primary": {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
sidebarTitle: "
|
|
4
|
-
description: "Learn how TestDriver's
|
|
2
|
+
title: "Self-Healing in TestDriver"
|
|
3
|
+
sidebarTitle: "Self-Healing"
|
|
4
|
+
description: "Learn how TestDriver's self-healing feature keeps your tests resilient and up-to-date with minimal manual effort."
|
|
5
5
|
icon: "bandage"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Self-healing is a powerful feature in TestDriver that ensures your tests remain resilient even when the application under test changes.
|
|
9
9
|
|
|
10
|
-
Use `--heal` to enable
|
|
10
|
+
Use `--heal` to enable self-healing in your test runs. This feature allows TestDriver to automatically recover when minor changes occur, such as text updates or small UI adjustments, without requiring manual intervention.
|
|
11
11
|
|
|
12
|
-
## Why use
|
|
12
|
+
## Why use self-healing?
|
|
13
13
|
|
|
14
14
|
In modern software development, applications frequently undergo changes, whether it's UI updates, text modifications, or layout adjustments. These changes can lead to test failures, requiring developers to manually update test scripts to reflect the new state of the application.
|
|
15
15
|
|
|
@@ -17,28 +17,28 @@ This means that if a test fails due to a change in the application, TestDriver w
|
|
|
17
17
|
|
|
18
18
|
This feature is particularly useful in continuous integration (CI) environments, where tests need to adapt to frequent changes in the application.
|
|
19
19
|
|
|
20
|
-
## How to enable
|
|
20
|
+
## How to enable self-healing
|
|
21
21
|
|
|
22
|
-
To enable
|
|
22
|
+
To enable self-healing in TestDriver, simply add the `--heal` and `--write` flags when running your tests. The `--heal` flag instructs TestDriver to recover when test fail due to minor changes in the application, while `--write` saves newly generated steps to the test file.
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
npx testdriverai@latest run my-tests.yaml --heal --write
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
## How
|
|
28
|
+
## How self-healing works
|
|
29
29
|
|
|
30
30
|
When TestDriver steps fail, the AI will progressively fall back to attempt to complete the test.
|
|
31
31
|
|
|
32
|
-
When running with `--heal` and `--write`, TestDriver will update the test files locally with any changes made during
|
|
32
|
+
When running with `--heal` and `--write`, TestDriver will update the test files locally with any changes made during self-healing. You can then use GitHub Actions to commit these changes and create a pull request for review.
|
|
33
33
|
|
|
34
|
-
## Benefits of
|
|
34
|
+
## Benefits of self-healing
|
|
35
35
|
|
|
36
36
|
- **Reduced Maintenance**: Eliminates the need for manual updates to tests when minor UI changes occur.
|
|
37
37
|
- **Increased Test Resilience**: Ensures tests adapt to changes without breaking.
|
|
38
38
|
- **Continuous Integration**: Keeps your test suite aligned with the latest application changes.
|
|
39
39
|
- **Developer Collaboration**: Automatically opens a PR, allowing developers to review and approve updates.
|
|
40
40
|
|
|
41
|
-
## How
|
|
41
|
+
## How self-healing works
|
|
42
42
|
|
|
43
43
|
1. **Test Execution**: TestDriver runs your test suite as usual.
|
|
44
44
|
2. **Failure Detection**: If a test fails due to a change in the application (for example, text or UI updates), the AI identifies the failure point.
|
|
@@ -67,7 +67,7 @@ When running with `--heal` and `--write`, TestDriver will update the test files
|
|
|
67
67
|
- TestDriver runs the test and fails to find the "Submit" button.
|
|
68
68
|
</Step>
|
|
69
69
|
|
|
70
|
-
<Step title="
|
|
70
|
+
<Step title="Self-Healing">
|
|
71
71
|
- The AI detects the failure and searches for a similar element.
|
|
72
72
|
- It identifies the "Send" button as the updated element and retries the action.
|
|
73
73
|
</Step>
|
|
@@ -88,12 +88,12 @@ When running with `--heal` and `--write`, TestDriver will update the test files
|
|
|
88
88
|
|
|
89
89
|
</Step>
|
|
90
90
|
</Steps>
|
|
91
|
-
## Example GitHub Action for
|
|
91
|
+
## Example GitHub Action for self-healing
|
|
92
92
|
|
|
93
|
-
Here's how you can configure a GitHub Action to enable
|
|
93
|
+
Here's how you can configure a GitHub Action to enable self-healing and automatically create PRs for any test updates:
|
|
94
94
|
|
|
95
95
|
```yaml
|
|
96
|
-
name: TestDriver
|
|
96
|
+
name: TestDriver Self-Healing
|
|
97
97
|
|
|
98
98
|
on:
|
|
99
99
|
push:
|
|
@@ -104,12 +104,12 @@ on:
|
|
|
104
104
|
|
|
105
105
|
jobs:
|
|
106
106
|
test:
|
|
107
|
-
name: "Run Tests with
|
|
107
|
+
name: "Run Tests with Self-Healing"
|
|
108
108
|
steps:
|
|
109
109
|
- name: Check out repository
|
|
110
110
|
uses: actions/checkout@v4
|
|
111
111
|
|
|
112
|
-
- name: Run TestDriver with
|
|
112
|
+
- name: Run TestDriver with Self-Healing
|
|
113
113
|
run: npx testdriverai@latest run testdriver/onboarding.yaml --heal --write --headless
|
|
114
114
|
env:
|
|
115
115
|
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
@@ -126,7 +126,7 @@ jobs:
|
|
|
126
126
|
with:
|
|
127
127
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
128
128
|
commit-message: "Auto-healed test updates"
|
|
129
|
-
title: "
|
|
129
|
+
title: "Self-Healed Test Updates"
|
|
130
130
|
branch: auto-heal-updates
|
|
131
131
|
base: main
|
|
132
132
|
body: |
|
|
@@ -137,8 +137,8 @@ jobs:
|
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
|
|
140
|
-
## Limitations of
|
|
140
|
+
## Limitations of Self-Healing
|
|
141
141
|
|
|
142
|
-
- **Major UI Overhauls**:
|
|
142
|
+
- **Major UI Overhauls**: Self-healing is best suited for minor changes (for example, text updates, small layout adjustments). Significant UI changes may still require manual intervention.
|
|
143
143
|
- **Ambiguous Changes**: If multiple elements match the updated criteria, the AI may require additional context to make the correct decision.
|
|
144
144
|
- **Step Deletion**: If UI or wizard pages are removed, the AI may not be able to recover. In such cases, manual updates are necessary.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Setup"
|
|
3
|
+
sidebarTitle: "Setup"
|
|
4
|
+
description: "Get started with TestDriver in minutes."
|
|
5
|
+
icon: "download"
|
|
6
|
+
mode: "wide"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
import Comments from "/snippets/comments.mdx";
|
|
10
|
+
|
|
11
|
+
<Steps>
|
|
12
|
+
<Step title="Set up your environment">
|
|
13
|
+
|
|
14
|
+
Copy your API key from [the TestDriver dashboard](https://app.testdriver.ai/team), and set it as an environment variable.
|
|
15
|
+
|
|
16
|
+
<Tabs>
|
|
17
|
+
<Tab title="macOS / Linux">
|
|
18
|
+
```bash Export an environment variable on macOS or Linux systems
|
|
19
|
+
export TD_API_KEY="your_api_key_here"
|
|
20
|
+
```
|
|
21
|
+
</Tab>
|
|
22
|
+
<Tab title="Windows">
|
|
23
|
+
```powershell Export an environment variable in PowerShell
|
|
24
|
+
setx TD_API_KEY "your_api_key_here"
|
|
25
|
+
```
|
|
26
|
+
</Tab>
|
|
27
|
+
</Tabs>
|
|
28
|
+
|
|
29
|
+
</Step>
|
|
30
|
+
<Step title="Try an example test">
|
|
31
|
+
|
|
32
|
+
Download the TestDriver GitHub repository and run the web example test.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git clone https://github.com/testdriverai/cli testdriverai
|
|
36
|
+
cd testdriverai/testdriver/examples/web
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
TestDriver tests are written in YAML, a human-readable data format. The `example.yaml` file contains a series of steps that the agent will execute.
|
|
40
|
+
|
|
41
|
+
```yaml testdriver/test.yaml
|
|
42
|
+
steps:
|
|
43
|
+
- prompt: log in
|
|
44
|
+
- prompt: add an item to the cart
|
|
45
|
+
- prompt: click on the cart icon
|
|
46
|
+
- prompt: complete checkout
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Each step has a `prompt` that describes what the agent should do. The agent will use the prompt to generate [commands](/commands) that make the tests faster and more reliable the next time you run the test.
|
|
50
|
+
|
|
51
|
+
</Step>
|
|
52
|
+
<Step title="Generate test steps from prompts">
|
|
53
|
+
|
|
54
|
+
Run the following command to run the test file. TestDriver will spawn a virtual machine, launch the sandbox test page, and execute the steps defined in the `example.yaml` file.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npx testdriverai@beta run example.yaml --write --heal
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The `--write` flag tells TestDriver to save any generated commands to the test file, and the `--heal` flag allows TestDriver to recover from unexpected issues during the test run.
|
|
61
|
+
|
|
62
|
+
</Step>
|
|
63
|
+
<Step title="Run a regression test">
|
|
64
|
+
|
|
65
|
+
```yaml
|
|
66
|
+
version: 5.7.7
|
|
67
|
+
session: 682f6071811bd5a322c0e6dd
|
|
68
|
+
steps:
|
|
69
|
+
- prompt: focus chrome
|
|
70
|
+
commands:
|
|
71
|
+
- command: focus-application
|
|
72
|
+
name: Google Chrome
|
|
73
|
+
- prompt: enter a username
|
|
74
|
+
commands:
|
|
75
|
+
- command: hover-text
|
|
76
|
+
text: Username
|
|
77
|
+
description: username input field
|
|
78
|
+
action: click
|
|
79
|
+
- command: type
|
|
80
|
+
text: standard_user
|
|
81
|
+
- prompt: enter a password
|
|
82
|
+
commands:
|
|
83
|
+
- command: hover-text
|
|
84
|
+
text: Password
|
|
85
|
+
description: password input field
|
|
86
|
+
action: click
|
|
87
|
+
- command: type
|
|
88
|
+
text: secret_password
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The `--write` command tells the agent to save the generated commands to the test file, and the `--heal` command gives the agent permission to recover if something goes wrong.
|
|
92
|
+
|
|
93
|
+
</Step>
|
|
94
|
+
</Steps>
|
|
95
|
+
|
|
96
|
+
<Comments />
|
|
97
|
+
```
|
package/docs/guide/lifecycle.mdx
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: "Lifecycle Files"
|
|
3
3
|
sidebarTitle: "Lifecycle Files"
|
|
4
4
|
description: "Learn how to customize TestDriver execution with lifecycle files for setup, provisioning, and cleanup."
|
|
5
|
-
icon: "
|
|
5
|
+
icon: "wrench"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
Lifecycle files are YAML files placed in your repository's `lifecycle/` directory. TestDriver automatically executes these files during the appropriate phases:
|
package/docs/guide/protips.mdx
CHANGED
|
@@ -7,26 +7,26 @@ icon: "star"
|
|
|
7
7
|
|
|
8
8
|
TestDriver is a vision-based testing tool and is not aware of the underlying HTML structure of the page. Pay attention to the following tips to improve your testing experience and reduce test flake.
|
|
9
9
|
|
|
10
|
-
### Use unique descriptions for `hover-image` and `hover-text`
|
|
10
|
+
### Use unique descriptions for [`hover-image`](/commands/hover-image) and [`hover-text`](/commands/hover-text)
|
|
11
11
|
|
|
12
|
-
When executing the `hover-image` and `hover-text` command, TestDriver may use the description to identify the image, especially if multiple images are visible. If multiple images on the screen match the description, TestDriver may not be able to determine which one to interact with. To improve accuracy, use specific and unique descriptions for images.
|
|
12
|
+
When executing the [`hover-image`](/commands/hover-image) and [`hover-text`](/commands/hover-text) command, TestDriver may use the description to identify the image, especially if multiple images are visible. If multiple images on the screen match the description, TestDriver may not be able to determine which one to interact with. To improve accuracy, use specific and unique descriptions for images.
|
|
13
13
|
|
|
14
|
-
TestDriver may not accurately locate matches in certain cases. This can lead to unexpected behavior when using the `hover-image` or `hover-text` command. For example, if you specify a description that's too generic or similar to other images on the screen, TestDriver may not be able to identify the correct image to interact with. To improve accuracy, use specific and unique descriptions for images and text.
|
|
15
|
-
When executing the `hover-image` and `hover-text` commands, TestDriver uses the provided description to identify the target image or text. If the description is too generic or matches multiple elements on the screen, TestDriver may not be able to determine which one to interact with, leading to unexpected behavior. To improve accuracy, always use specific and unique descriptions for both images and text.
|
|
14
|
+
TestDriver may not accurately locate matches in certain cases. This can lead to unexpected behavior when using the [`hover-image`](/commands/hover-image) or [`hover-text`](/commands/hover-text) command. For example, if you specify a description that's too generic or similar to other images on the screen, TestDriver may not be able to identify the correct image to interact with. To improve accuracy, use specific and unique descriptions for images and text.
|
|
15
|
+
When executing the [`hover-image`](/commands/hover-image) and [`hover-text`](/commands/hover-text) commands, TestDriver uses the provided description to identify the target image or text. If the description is too generic or matches multiple elements on the screen, TestDriver may not be able to determine which one to interact with, leading to unexpected behavior. To improve accuracy, always use specific and unique descriptions for both images and text.
|
|
16
16
|
|
|
17
|
-
### Avoid using `hover-text` for single characters (ex: `1`, `>`, `|`)
|
|
17
|
+
### Avoid using [`hover-text`](/commands/hover-text) for single characters (ex: `1`, `>`, `|`)
|
|
18
18
|
|
|
19
|
-
To improve accuracy of our model, we do not include single characters or symbols in the matching data. This means that `hover-text` may not work as expected for these cases. If you need to interact with single characters or symbols, consider using the `match-image` command with a screenshot of the target element instead.
|
|
19
|
+
To improve accuracy of our model, we do not include single characters or symbols in the matching data. This means that [`hover-text`](/commands/hover-text) may not work as expected for these cases. If you need to interact with single characters or symbols, consider using the [`match-image`](/commands/match-image) command with a screenshot of the target element instead.
|
|
20
20
|
|
|
21
21
|
### Use `<label>`s to match empty text inputs.
|
|
22
22
|
|
|
23
|
-
To focus empty text inputs, prefer to `hover-text` on the label associated with the input. This [should](https://www.w3.org/WAI/tutorials/forms/labels/) focus the input field.
|
|
23
|
+
To focus empty text inputs, prefer to [`hover-text`](/commands/hover-text) on the label associated with the input. This [should](https://www.w3.org/WAI/tutorials/forms/labels/) focus the input field.
|
|
24
24
|
|
|
25
|
-
This is more reliable than trying to match the empty input itself, which may not have any visible text. You can always use `match-image` to match the input field if needed.
|
|
25
|
+
This is more reliable than trying to match the empty input itself, which may not have any visible text. You can always use [`match-image`](/commands/match-image) to match the input field if needed.
|
|
26
26
|
|
|
27
|
-
### Provide strict criteria for `assert`
|
|
27
|
+
### Provide strict criteria for [`assert`](/commands/assert)
|
|
28
28
|
|
|
29
|
-
Assertions use the current state of the page to determine if the step passes or fails. `assert` is not aware of the past, so avoid writing "assert" steps that rely on previous state. Instead, use `assert` to check the current state of the page against strict criteria.
|
|
29
|
+
Assertions use the current state of the page to determine if the step passes or fails. [`assert`](/commands/assert) is not aware of the past, so avoid writing "assert" steps that rely on previous state. Instead, use [`assert`](/commands/assert) to check the current state of the page against strict criteria.
|
|
30
30
|
|
|
31
31
|
## Reporting issues
|
|
32
32
|
|