testdriverai 7.3.5 → 7.3.7
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/.github/agents/testdriver.agent.md +641 -0
- package/.github/workflows/acceptance.yaml +1 -1
- package/.github/workflows/windows-self-hosted.yaml +1 -1
- package/CHANGELOG.md +8 -0
- package/docs/_data/examples-manifest.json +82 -50
- package/docs/v7/examples/ai.mdx +1 -1
- package/docs/v7/examples/assert.mdx +1 -1
- package/docs/v7/examples/captcha-api.mdx +1 -1
- package/docs/v7/examples/chrome-extension.mdx +1 -1
- package/docs/v7/examples/drag-and-drop.mdx +1 -1
- package/docs/v7/examples/element-not-found.mdx +1 -1
- package/docs/v7/examples/hover-image.mdx +1 -1
- package/docs/v7/examples/hover-text.mdx +1 -1
- package/docs/v7/examples/installer.mdx +1 -1
- package/docs/v7/examples/launch-vscode-linux.mdx +1 -1
- package/docs/v7/examples/match-image.mdx +1 -1
- package/docs/v7/examples/press-keys.mdx +1 -1
- package/docs/v7/examples/scroll-keyboard.mdx +1 -1
- package/docs/v7/examples/scroll-until-image.mdx +1 -1
- package/docs/v7/examples/scroll-until-text.mdx +1 -1
- package/docs/v7/examples/scroll.mdx +1 -1
- package/docs/v7/examples/type.mdx +1 -1
- package/docs/v7/examples/windows-installer.mdx +1 -1
- package/examples/ai.test.mjs +2 -1
- package/examples/assert.test.mjs +2 -2
- package/examples/captcha-api.test.mjs +3 -2
- package/examples/chrome-extension.test.mjs +3 -2
- package/examples/config.mjs +5 -0
- package/examples/drag-and-drop.test.mjs +2 -1
- package/examples/element-not-found.test.mjs +2 -1
- package/examples/exec-output.test.mjs +2 -1
- package/examples/exec-pwsh.test.mjs +2 -1
- package/examples/focus-window.test.mjs +2 -1
- package/examples/formatted-logging.test.mjs +2 -1
- package/examples/hover-image.test.mjs +2 -1
- package/examples/hover-text-with-description.test.mjs +2 -1
- package/examples/hover-text.test.mjs +2 -1
- package/examples/installer.test.mjs +3 -2
- package/examples/launch-vscode-linux.test.mjs +3 -2
- package/examples/match-image.test.mjs +2 -1
- package/examples/no-provision.test.mjs +2 -3
- package/examples/press-keys.test.mjs +7 -13
- package/examples/prompt.test.mjs +2 -1
- package/examples/scroll-keyboard.test.mjs +2 -1
- package/examples/scroll-until-image.test.mjs +2 -1
- package/examples/scroll-until-text.test.mjs +2 -1
- package/examples/scroll.test.mjs +2 -1
- package/examples/type.test.mjs +3 -2
- package/examples/windows-installer.test.mjs +2 -1
- package/examples/z_flake-diffthreshold-001.test.mjs +9 -0
- package/examples/z_flake-diffthreshold-01.test.mjs +9 -0
- package/examples/z_flake-diffthreshold-05.test.mjs +9 -0
- package/examples/z_flake-noredraw-cache.test.mjs +9 -0
- package/examples/z_flake-noredraw-nocache.test.mjs +9 -0
- package/examples/z_flake-redraw-cache.test.mjs +9 -0
- package/examples/z_flake-redraw-nocache.test.mjs +9 -0
- package/examples/z_flake-shared.mjs +50 -0
- package/package.json +2 -2
- package/sdk-log-formatter.js +6 -0
- package/sdk.js +66 -40
- package/vitest.config.mjs +1 -1
|
@@ -2,104 +2,136 @@
|
|
|
2
2
|
"$schema": "./examples-manifest.schema.json",
|
|
3
3
|
"examples": {
|
|
4
4
|
"assert.test.mjs": {
|
|
5
|
-
"url": "https://console.testdriver.ai/runs/
|
|
6
|
-
"lastUpdated": "2026-02-
|
|
5
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5fd7140c3fa7daacf27",
|
|
6
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
7
7
|
},
|
|
8
8
|
"drag-and-drop.test.mjs": {
|
|
9
|
-
"url": "https://console.testdriver.ai/runs/
|
|
10
|
-
"lastUpdated": "2026-02-
|
|
9
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd4a77140c3fa7daacde3",
|
|
10
|
+
"lastUpdated": "2026-02-11T01:13:44.450Z"
|
|
11
11
|
},
|
|
12
12
|
"exec-pwsh.test.mjs": {
|
|
13
|
-
"url": "https://console.testdriver.ai/runs/
|
|
14
|
-
"lastUpdated": "2026-02-
|
|
13
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd4a97140c3fa7daacdea",
|
|
14
|
+
"lastUpdated": "2026-02-11T01:13:44.450Z"
|
|
15
15
|
},
|
|
16
16
|
"match-image.test.mjs": {
|
|
17
|
-
"url": "https://console.testdriver.ai/runs/
|
|
18
|
-
"lastUpdated": "2026-02-
|
|
17
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd4aa7140c3fa7daacdeb",
|
|
18
|
+
"lastUpdated": "2026-02-11T01:13:44.450Z"
|
|
19
19
|
},
|
|
20
20
|
"scroll-until-text.test.mjs": {
|
|
21
|
-
"url": "https://console.testdriver.ai/runs/
|
|
22
|
-
"lastUpdated": "2026-02-
|
|
21
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd4f37140c3fa7daace38",
|
|
22
|
+
"lastUpdated": "2026-02-11T01:13:44.451Z"
|
|
23
23
|
},
|
|
24
24
|
"hover-text-with-description.test.mjs": {
|
|
25
|
-
"url": "https://console.testdriver.ai/runs/
|
|
26
|
-
"lastUpdated": "2026-02-
|
|
25
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd4f17140c3fa7daace31",
|
|
26
|
+
"lastUpdated": "2026-02-11T01:13:44.451Z"
|
|
27
27
|
},
|
|
28
28
|
"windows-installer.test.mjs": {
|
|
29
|
-
"url": "https://console.testdriver.ai/runs/
|
|
30
|
-
"lastUpdated": "2026-02-
|
|
29
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd4f47140c3fa7daace3b",
|
|
30
|
+
"lastUpdated": "2026-02-11T01:13:44.451Z"
|
|
31
31
|
},
|
|
32
32
|
"exec-output.test.mjs": {
|
|
33
|
-
"url": "https://console.testdriver.ai/runs/
|
|
34
|
-
"lastUpdated": "2026-02-
|
|
33
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd4f67140c3fa7daace3d",
|
|
34
|
+
"lastUpdated": "2026-02-11T01:13:44.451Z"
|
|
35
35
|
},
|
|
36
36
|
"chrome-extension.test.mjs": {
|
|
37
|
-
"url": "https://console.testdriver.ai/runs/
|
|
38
|
-
"lastUpdated": "2026-02-
|
|
37
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5507140c3fa7daacea9",
|
|
38
|
+
"lastUpdated": "2026-02-11T01:13:44.452Z"
|
|
39
39
|
},
|
|
40
40
|
"launch-vscode-linux.test.mjs": {
|
|
41
|
-
"url": "https://console.testdriver.ai/runs/
|
|
42
|
-
"lastUpdated": "2026-02-
|
|
41
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd54e7140c3fa7daacea2",
|
|
42
|
+
"lastUpdated": "2026-02-11T01:13:44.452Z"
|
|
43
43
|
},
|
|
44
44
|
"hover-image.test.mjs": {
|
|
45
|
-
"url": "https://console.testdriver.ai/runs/
|
|
46
|
-
"lastUpdated": "2026-02-
|
|
45
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5387140c3fa7daace8e",
|
|
46
|
+
"lastUpdated": "2026-02-11T01:13:44.452Z"
|
|
47
47
|
},
|
|
48
48
|
"installer.test.mjs": {
|
|
49
|
-
"url": "https://console.testdriver.ai/runs/
|
|
50
|
-
"lastUpdated": "2026-02-
|
|
49
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd58f7140c3fa7daaced9",
|
|
50
|
+
"lastUpdated": "2026-02-11T01:13:44.454Z"
|
|
51
51
|
},
|
|
52
52
|
"type.test.mjs": {
|
|
53
|
-
"url": "https://console.testdriver.ai/runs/
|
|
54
|
-
"lastUpdated": "2026-02-
|
|
53
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5ae7140c3fa7daaceea",
|
|
54
|
+
"lastUpdated": "2026-02-11T01:13:44.454Z"
|
|
55
55
|
},
|
|
56
56
|
"press-keys.test.mjs": {
|
|
57
|
-
"url": "https://console.testdriver.ai/runs/
|
|
58
|
-
"lastUpdated": "2026-02-
|
|
57
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5e87140c3fa7daacf12",
|
|
58
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
59
59
|
},
|
|
60
60
|
"scroll-keyboard.test.mjs": {
|
|
61
|
-
"url": "https://console.testdriver.ai/runs/
|
|
62
|
-
"lastUpdated": "2026-02-
|
|
61
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5d47140c3fa7daacf06",
|
|
62
|
+
"lastUpdated": "2026-02-11T01:13:44.454Z"
|
|
63
63
|
},
|
|
64
64
|
"scroll.test.mjs": {
|
|
65
|
-
"url": "https://console.testdriver.ai/runs/
|
|
66
|
-
"lastUpdated": "2026-02-
|
|
65
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd58f7140c3fa7daaced8",
|
|
66
|
+
"lastUpdated": "2026-02-11T01:13:44.454Z"
|
|
67
67
|
},
|
|
68
68
|
"scroll-until-image.test.mjs": {
|
|
69
|
-
"url": "https://console.testdriver.ai/runs/
|
|
70
|
-
"lastUpdated": "2026-02-
|
|
69
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5ea7140c3fa7daacf13",
|
|
70
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
71
71
|
},
|
|
72
72
|
"prompt.test.mjs": {
|
|
73
|
-
"url": "https://console.testdriver.ai/runs/
|
|
74
|
-
"lastUpdated": "2026-02-
|
|
73
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5eb7140c3fa7daacf14",
|
|
74
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
75
75
|
},
|
|
76
76
|
"focus-window.test.mjs": {
|
|
77
|
-
"url": "https://console.testdriver.ai/runs/
|
|
78
|
-
"lastUpdated": "2026-02-
|
|
77
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5ec7140c3fa7daacf1b",
|
|
78
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
79
79
|
},
|
|
80
80
|
"captcha-api.test.mjs": {
|
|
81
|
-
"url": "https://console.testdriver.ai/runs/
|
|
82
|
-
"lastUpdated": "2026-02-
|
|
81
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd5fc7140c3fa7daacf26",
|
|
82
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
83
83
|
},
|
|
84
84
|
"element-not-found.test.mjs": {
|
|
85
|
-
"url": "https://console.testdriver.ai/runs/
|
|
86
|
-
"lastUpdated": "2026-02-
|
|
85
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd6297140c3fa7daacf3f",
|
|
86
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
87
87
|
},
|
|
88
88
|
"formatted-logging.test.mjs": {
|
|
89
|
-
"url": "https://console.testdriver.ai/runs/
|
|
90
|
-
"lastUpdated": "2026-02-
|
|
89
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd6187140c3fa7daacf35",
|
|
90
|
+
"lastUpdated": "2026-02-11T01:13:44.455Z"
|
|
91
91
|
},
|
|
92
92
|
"hover-text.test.mjs": {
|
|
93
|
-
"url": "https://console.testdriver.ai/runs/
|
|
94
|
-
"lastUpdated": "2026-02-
|
|
93
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd6477140c3fa7daacf5a",
|
|
94
|
+
"lastUpdated": "2026-02-11T01:13:44.457Z"
|
|
95
95
|
},
|
|
96
96
|
"no-provision.test.mjs": {
|
|
97
|
-
"url": "https://console.testdriver.ai/runs/
|
|
98
|
-
"lastUpdated": "2026-02-
|
|
97
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd64a7140c3fa7daacf63",
|
|
98
|
+
"lastUpdated": "2026-02-11T01:13:44.457Z"
|
|
99
99
|
},
|
|
100
100
|
"ai.test.mjs": {
|
|
101
|
-
"url": "https://console.testdriver.ai/runs/
|
|
102
|
-
"lastUpdated": "2026-02-
|
|
101
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd6477140c3fa7daacf59",
|
|
102
|
+
"lastUpdated": "2026-02-11T01:13:44.456Z"
|
|
103
|
+
},
|
|
104
|
+
"popup-loading.test.mjs": {
|
|
105
|
+
"url": "https://console.testdriver.ai/runs/698bc89f7140c3fa7daaca8d/698bca7f7140c3fa7daacbf7",
|
|
106
|
+
"lastUpdated": "2026-02-11T00:20:33.687Z"
|
|
107
|
+
},
|
|
108
|
+
"z_flake-diffthreshold-001.test.mjs": {
|
|
109
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd6d47140c3fa7daacfbc",
|
|
110
|
+
"lastUpdated": "2026-02-11T01:13:44.457Z"
|
|
111
|
+
},
|
|
112
|
+
"z_flake-diffthreshold-01.test.mjs": {
|
|
113
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd6d17140c3fa7daacfb5",
|
|
114
|
+
"lastUpdated": "2026-02-11T01:13:44.457Z"
|
|
115
|
+
},
|
|
116
|
+
"z_flake-diffthreshold-05.test.mjs": {
|
|
117
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd71b7140c3fa7daacfe9",
|
|
118
|
+
"lastUpdated": "2026-02-11T01:13:44.457Z"
|
|
119
|
+
},
|
|
120
|
+
"z_flake-noredraw-cache.test.mjs": {
|
|
121
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd71b7140c3fa7daacfe8",
|
|
122
|
+
"lastUpdated": "2026-02-11T01:13:44.457Z"
|
|
123
|
+
},
|
|
124
|
+
"z_flake-redraw-nocache.test.mjs": {
|
|
125
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd7be7140c3fa7daad047",
|
|
126
|
+
"lastUpdated": "2026-02-11T01:13:44.459Z"
|
|
127
|
+
},
|
|
128
|
+
"z_flake-redraw-cache.test.mjs": {
|
|
129
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd7627140c3fa7daad013",
|
|
130
|
+
"lastUpdated": "2026-02-11T01:13:44.458Z"
|
|
131
|
+
},
|
|
132
|
+
"z_flake-noredraw-nocache.test.mjs": {
|
|
133
|
+
"url": "https://console.testdriver.ai/runs/698bd4a67140c3fa7daacde2/698bd77d7140c3fa7daad027",
|
|
134
|
+
"lastUpdated": "2026-02-11T01:13:44.458Z"
|
|
103
135
|
}
|
|
104
136
|
}
|
|
105
137
|
}
|
package/docs/v7/examples/ai.mdx
CHANGED
|
@@ -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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd6477140c3fa7daacf59/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5fd7140c3fa7daacf27/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
|
{/* captcha-api.test.mjs output */}
|
|
14
14
|
<iframe
|
|
15
|
-
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5fc7140c3fa7daacf26/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5507140c3fa7daacea9/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
|
{/* drag-and-drop.test.mjs output */}
|
|
14
14
|
<iframe
|
|
15
|
-
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd4a77140c3fa7daacde3/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd6297140c3fa7daacf3f/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5387140c3fa7daace8e/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd6477140c3fa7daacf5a/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd58f7140c3fa7daaced9/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd54e7140c3fa7daacea2/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd4aa7140c3fa7daacdeb/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5e87140c3fa7daacf12/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5d47140c3fa7daacf06/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5ea7140c3fa7daacf13/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-text.test.mjs output */}
|
|
14
14
|
<iframe
|
|
15
|
-
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd4f37140c3fa7daace38/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd58f7140c3fa7daaced8/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd5ae7140c3fa7daaceea/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://testdriver-api.onrender.com/api/v1/testdriver/testcase/
|
|
15
|
+
src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/698bd4f47140c3fa7daace3b/replay"
|
|
16
16
|
width="100%"
|
|
17
17
|
height="390"
|
|
18
18
|
style={{ border: "1px solid #333", borderRadius: "8px" }}
|
package/examples/ai.test.mjs
CHANGED
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe("AI Test", () => {
|
|
10
11
|
it("should use ai to search for testdriver on Google", async (context) => {
|
|
11
|
-
const testdriver = TestDriver(context, {
|
|
12
|
+
const testdriver = TestDriver(context, { ...getDefaults(context) });
|
|
12
13
|
|
|
13
14
|
// provision.chrome() automatically calls ready() and starts dashcam
|
|
14
15
|
await testdriver.provision.chrome({
|
package/examples/assert.test.mjs
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe("Assert Test", () => {
|
|
10
11
|
it("should assert the testdriver login page shows", async (context) => {
|
|
11
12
|
const testdriver = TestDriver(context, {
|
|
12
|
-
|
|
13
|
-
ip: context.ip || process.env.TD_IP,
|
|
13
|
+
...getDefaults(context),
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
// provision.chrome() automatically calls ready() and starts dashcam
|
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { describe, expect, it } from "vitest";
|
|
6
6
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
7
|
+
import { getDefaults } from "./config.mjs";
|
|
7
8
|
|
|
8
9
|
console.log("DEBUG: process.env.TD_OS:", process.env.TD_OS);
|
|
9
10
|
|
|
10
11
|
describe("testdriver.captcha() API", () => {
|
|
11
12
|
it("should solve reCAPTCHA v3 with auto-detect", async (context) => {
|
|
12
|
-
const testdriver = TestDriver(context);
|
|
13
|
+
const testdriver = TestDriver(context, { ...getDefaults(context) });
|
|
13
14
|
|
|
14
15
|
// Launch Chrome (remote debugging is enabled automatically on Linux)
|
|
15
16
|
await testdriver.provision.chrome({
|
|
@@ -30,7 +31,7 @@ describe("testdriver.captcha() API", () => {
|
|
|
30
31
|
}, 180000);
|
|
31
32
|
|
|
32
33
|
it("should solve Cloudflare Turnstile", async (context) => {
|
|
33
|
-
const testdriver = TestDriver(context);
|
|
34
|
+
const testdriver = TestDriver(context, { ...getDefaults(context) });
|
|
34
35
|
|
|
35
36
|
await testdriver.provision.chrome({
|
|
36
37
|
url: "https://2captcha.com/demo/cloudflare-turnstile",
|
|
@@ -9,13 +9,14 @@
|
|
|
9
9
|
|
|
10
10
|
import { describe, expect, it } from "vitest";
|
|
11
11
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
12
|
+
import { getDefaults } from "./config.mjs";
|
|
12
13
|
|
|
13
14
|
describe("Chrome Extension Test", () => {
|
|
14
15
|
it("should load hello-world Chrome extension from local path", async (context) => {
|
|
15
16
|
|
|
16
17
|
console.log('connecting to', process.env.TD_IP)
|
|
17
18
|
|
|
18
|
-
const testdriver = TestDriver(context, {
|
|
19
|
+
const testdriver = TestDriver(context, { ...getDefaults(context), cacheKey: new Date().getTime().toString() });
|
|
19
20
|
|
|
20
21
|
// Determine OS-specific paths and commands
|
|
21
22
|
const shell = testdriver.os === 'windows' ? 'pwsh' : 'sh';
|
|
@@ -65,7 +66,7 @@ describe("Chrome Extension Test", () => {
|
|
|
65
66
|
});
|
|
66
67
|
|
|
67
68
|
it("should load Loom from Chrome Web Store by extensionId", async (context) => {
|
|
68
|
-
const testdriver = TestDriver(context, {
|
|
69
|
+
const testdriver = TestDriver(context, { ...getDefaults(context) });
|
|
69
70
|
|
|
70
71
|
// Launch Chrome with Loom loaded by its Chrome Web Store ID
|
|
71
72
|
// Loom ID: liecbddmkiiihnedobmlmillhodjkdmb
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
const isLinux = (process.env.TD_OS || "linux") === "linux";
|
|
10
11
|
|
|
@@ -12,7 +13,7 @@ describe("Drag and Drop Test", () => {
|
|
|
12
13
|
it.skipIf(isLinux)(
|
|
13
14
|
'should drag "New Text Document" to "Recycle Bin"',
|
|
14
15
|
async (context) => {
|
|
15
|
-
const testdriver = TestDriver(context, {
|
|
16
|
+
const testdriver = TestDriver(context, { ...getDefaults(context), headless: true });
|
|
16
17
|
await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });
|
|
17
18
|
|
|
18
19
|
//
|
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe("Element Not Found Test", () => {
|
|
10
11
|
it("should handle non-existent element gracefully without timing out", async (context) => {
|
|
11
|
-
const testdriver = TestDriver(context, {
|
|
12
|
+
const testdriver = TestDriver(context, { ...getDefaults(context), headless: true });
|
|
12
13
|
await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });
|
|
13
14
|
|
|
14
15
|
//
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe.skip("Exec Output Test", () => {
|
|
10
11
|
it(
|
|
11
12
|
"should set date using PowerShell and navigate to calendar",
|
|
12
13
|
async (context) => {
|
|
13
|
-
const testdriver = TestDriver(context, {
|
|
14
|
+
const testdriver = TestDriver(context, { ...getDefaults(context), headless: true });
|
|
14
15
|
await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });
|
|
15
16
|
|
|
16
17
|
//
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe.skip("Exec PowerShell Test", () => {
|
|
10
11
|
it(
|
|
11
12
|
"should generate random email using PowerShell and enter it",
|
|
12
13
|
async (context) => {
|
|
13
|
-
const testdriver = TestDriver(context, {
|
|
14
|
+
const testdriver = TestDriver(context, { ...getDefaults(context), headless: true });
|
|
14
15
|
await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });
|
|
15
16
|
|
|
16
17
|
//
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe("Focus Window Test", () => {
|
|
10
11
|
it.skip(
|
|
11
12
|
"should click Microsoft Edge icon and focus Google Chrome",
|
|
12
13
|
async (context) => {
|
|
13
|
-
const testdriver = TestDriver(context, {
|
|
14
|
+
const testdriver = TestDriver(context, { ...getDefaults(context), headless: true });
|
|
14
15
|
await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });
|
|
15
16
|
|
|
16
17
|
//
|
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe("Formatted Logging Test", () => {
|
|
10
11
|
it("should demonstrate formatted logs in dashcam replay", async (context) => {
|
|
11
|
-
const testdriver = TestDriver(context, {
|
|
12
|
+
const testdriver = TestDriver(context, { ...getDefaults(context), headless: true });
|
|
12
13
|
await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });
|
|
13
14
|
|
|
14
15
|
// Find and click - logs will be nicely formatted
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Perform login flow for SauceLabs demo app
|
|
@@ -27,7 +28,7 @@ async function performLogin(client, username = "standard_user") {
|
|
|
27
28
|
|
|
28
29
|
describe("Hover Image Test", () => {
|
|
29
30
|
it("should click on shopping cart icon and verify empty cart", async (context) => {
|
|
30
|
-
const testdriver = TestDriver(context, {
|
|
31
|
+
const testdriver = TestDriver(context, { ...getDefaults(context) });
|
|
31
32
|
|
|
32
33
|
// provision.chrome() automatically calls ready() and starts dashcam
|
|
33
34
|
await testdriver.provision.chrome({
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Perform login flow for SauceLabs demo app
|
|
@@ -26,7 +27,7 @@ async function performLogin(client, username = "standard_user") {
|
|
|
26
27
|
describe("Hover Text With Description Test", () => {
|
|
27
28
|
it("should add TestDriver Hat to cart and verify", async (context) => {
|
|
28
29
|
const testdriver = TestDriver(context, {
|
|
29
|
-
|
|
30
|
+
...getDefaults(context),
|
|
30
31
|
headless: true,
|
|
31
32
|
});
|
|
32
33
|
await testdriver.provision.chrome({
|
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
import { describe, expect, it } from "vitest";
|
|
7
7
|
import { TestDriver } from "../lib/vitest/hooks.mjs";
|
|
8
|
+
import { getDefaults } from "./config.mjs";
|
|
8
9
|
|
|
9
10
|
describe("Hover Text Test", () => {
|
|
10
11
|
it("should click Sign In and verify error message", async (context) => {
|
|
11
|
-
const testdriver = TestDriver(context, {
|
|
12
|
+
const testdriver = TestDriver(context, { ...getDefaults(context) });
|
|
12
13
|
await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });
|
|
13
14
|
|
|
14
15
|
// Click on Sign In button using new find() API
|