testdriverai 7.3.17 → 7.3.18

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.
@@ -14,7 +14,7 @@ concurrency:
14
14
 
15
15
  jobs:
16
16
  test-linux:
17
- runs-on: ubuntu-latest
17
+ runs-on: testdriver-32
18
18
 
19
19
  steps:
20
20
  - uses: actions/checkout@v4
@@ -31,7 +31,7 @@ jobs:
31
31
  run: npm ci
32
32
 
33
33
  - name: Run Linux tests
34
- run: set -o pipefail && npx vitest run examples/*.test.mjs 2>&1 | tee test-output.log
34
+ run: set -o pipefail && npx vitest run examples/*.test.mjs --maxWorkers 32 2>&1 | tee test-output.log
35
35
  env:
36
36
  TD_API_KEY: ${{ secrets.TD_API_KEY }}
37
37
  TWOCAPTCHA_API_KEY: ${{ secrets.TWOCAPTCHA_API_KEY }}
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [7.3.18](https://github.com/testdriverai/testdriverai/compare/v7.3.17...v7.3.18) (2026-02-19)
2
+
3
+
4
+
1
5
  ## [7.3.17](https://github.com/testdriverai/testdriverai/compare/v7.3.16...v7.3.17) (2026-02-18)
2
6
 
3
7
 
@@ -6,100 +6,100 @@
6
6
  "lastUpdated": "2026-02-13T19:55:05.949Z"
7
7
  },
8
8
  "drag-and-drop.test.mjs": {
9
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7df8d3b320ad547d9cdc",
10
- "lastUpdated": "2026-02-13T19:55:05.944Z"
9
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965983d4ec641ec13c81ff",
10
+ "lastUpdated": "2026-02-19T00:58:04.014Z"
11
11
  },
12
12
  "exec-pwsh.test.mjs": {
13
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7df9d3b320ad547d9cdf",
14
- "lastUpdated": "2026-02-13T19:55:05.944Z"
13
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965985d4ec641ec13c8203",
14
+ "lastUpdated": "2026-02-19T00:58:04.014Z"
15
15
  },
16
16
  "match-image.test.mjs": {
17
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7dfad3b320ad547d9ce0",
18
- "lastUpdated": "2026-02-13T19:55:05.944Z"
17
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965986d4ec641ec13c8204",
18
+ "lastUpdated": "2026-02-19T00:58:04.014Z"
19
19
  },
20
20
  "scroll-until-text.test.mjs": {
21
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7e5cd3b320ad547d9d03",
22
- "lastUpdated": "2026-02-13T19:55:05.945Z"
21
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a12d4ec641ec13c8240",
22
+ "lastUpdated": "2026-02-19T00:58:04.014Z"
23
23
  },
24
24
  "hover-text-with-description.test.mjs": {
25
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7e4e9e27ce1528d7d0a0",
26
- "lastUpdated": "2026-02-13T19:55:05.944Z"
25
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a26d4ec641ec13c8252",
26
+ "lastUpdated": "2026-02-19T00:58:04.015Z"
27
27
  },
28
28
  "windows-installer.test.mjs": {
29
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7e5ddd202a57999808ae",
30
- "lastUpdated": "2026-02-13T19:55:05.945Z"
29
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a28887d56872d5c968f",
30
+ "lastUpdated": "2026-02-19T00:58:04.015Z"
31
31
  },
32
32
  "exec-output.test.mjs": {
33
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7e5edd202a57999808af",
34
- "lastUpdated": "2026-02-13T19:55:05.945Z"
33
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a29887d56872d5c9690",
34
+ "lastUpdated": "2026-02-19T00:58:04.015Z"
35
35
  },
36
36
  "chrome-extension.test.mjs": {
37
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7eb69e27ce1528d7d0bc",
38
- "lastUpdated": "2026-02-13T19:55:05.946Z"
37
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a95887d56872d5c96bf",
38
+ "lastUpdated": "2026-02-19T00:58:04.016Z"
39
39
  },
40
40
  "launch-vscode-linux.test.mjs": {
41
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7eb6d3b320ad547d9d16",
42
- "lastUpdated": "2026-02-13T19:55:05.946Z"
41
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a87887d56872d5c96b9",
42
+ "lastUpdated": "2026-02-19T00:58:04.016Z"
43
43
  },
44
44
  "hover-image.test.mjs": {
45
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7ea7dd202a57999808bc",
46
- "lastUpdated": "2026-02-13T19:55:05.946Z"
45
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965a99d4ec641ec13c827c",
46
+ "lastUpdated": "2026-02-19T00:58:04.016Z"
47
47
  },
48
48
  "installer.test.mjs": {
49
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f069e27ce1528d7d0cd",
50
- "lastUpdated": "2026-02-13T19:55:05.948Z"
49
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965af2887d56872d5c96e5",
50
+ "lastUpdated": "2026-02-19T00:58:04.017Z"
51
51
  },
52
52
  "type.test.mjs": {
53
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f2a9e27ce1528d7d0d2",
54
- "lastUpdated": "2026-02-13T19:55:05.948Z"
53
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965b5c887d56872d5c96fc",
54
+ "lastUpdated": "2026-02-19T00:58:04.018Z"
55
55
  },
56
56
  "press-keys.test.mjs": {
57
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f739e27ce1528d7d0d9",
58
- "lastUpdated": "2026-02-13T19:55:05.949Z"
57
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bee24aebb4a0ca062f3",
58
+ "lastUpdated": "2026-02-19T00:58:04.019Z"
59
59
  },
60
60
  "scroll-keyboard.test.mjs": {
61
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f55dd202a57999808d6",
62
- "lastUpdated": "2026-02-13T19:55:05.949Z"
61
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965b7124aebb4a0ca062d9",
62
+ "lastUpdated": "2026-02-19T00:58:04.018Z"
63
63
  },
64
64
  "scroll.test.mjs": {
65
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f0add202a57999808c8",
66
- "lastUpdated": "2026-02-13T19:55:05.948Z"
65
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965b3a887d56872d5c96f6",
66
+ "lastUpdated": "2026-02-19T00:58:04.017Z"
67
67
  },
68
68
  "scroll-until-image.test.mjs": {
69
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f749e27ce1528d7d0da",
70
- "lastUpdated": "2026-02-13T19:55:05.949Z"
69
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bd0887d56872d5c9715",
70
+ "lastUpdated": "2026-02-19T00:58:04.018Z"
71
71
  },
72
72
  "prompt.test.mjs": {
73
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f75d3b320ad547d9d39",
74
- "lastUpdated": "2026-02-13T19:55:05.949Z"
73
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bd2887d56872d5c9718",
74
+ "lastUpdated": "2026-02-19T00:58:04.018Z"
75
75
  },
76
76
  "focus-window.test.mjs": {
77
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7f76d3b320ad547d9d3a",
78
- "lastUpdated": "2026-02-13T19:55:05.949Z"
77
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965bd3887d56872d5c9719",
78
+ "lastUpdated": "2026-02-19T00:58:04.018Z"
79
79
  },
80
80
  "captcha-api.test.mjs": {
81
81
  "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7fb0d3b320ad547d9d44",
82
82
  "lastUpdated": "2026-02-13T19:55:05.951Z"
83
83
  },
84
84
  "element-not-found.test.mjs": {
85
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7fbcdd202a57999808f0",
86
- "lastUpdated": "2026-02-13T19:55:05.951Z"
85
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965c3724aebb4a0ca0630a",
86
+ "lastUpdated": "2026-02-19T00:58:04.019Z"
87
87
  },
88
88
  "formatted-logging.test.mjs": {
89
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7fb1dd202a57999808e9",
90
- "lastUpdated": "2026-02-13T19:55:05.951Z"
89
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965c2424aebb4a0ca06301",
90
+ "lastUpdated": "2026-02-19T00:58:04.019Z"
91
91
  },
92
92
  "hover-text.test.mjs": {
93
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7fe69e27ce1528d7d0ed",
94
- "lastUpdated": "2026-02-13T19:55:05.951Z"
93
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965caa24aebb4a0ca0632a",
94
+ "lastUpdated": "2026-02-19T00:58:04.022Z"
95
95
  },
96
96
  "no-provision.test.mjs": {
97
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f7fdf9e27ce1528d7d0ec",
98
- "lastUpdated": "2026-02-13T19:55:05.951Z"
97
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965cc5887d56872d5c9766",
98
+ "lastUpdated": "2026-02-19T00:58:04.022Z"
99
99
  },
100
100
  "ai.test.mjs": {
101
- "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f8010d3b320ad547d9d52",
102
- "lastUpdated": "2026-02-13T19:55:05.952Z"
101
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965caa24aebb4a0ca06329",
102
+ "lastUpdated": "2026-02-19T00:58:04.021Z"
103
103
  },
104
104
  "popup-loading.test.mjs": {
105
105
  "url": "https://console.testdriver.ai/runs/698bc89f7140c3fa7daaca8d/698bca7f7140c3fa7daacbf7",
@@ -132,6 +132,38 @@
132
132
  "z_flake-noredraw-nocache.test.mjs": {
133
133
  "url": "https://console.testdriver.ai/runs/698f7df69e27ce1528d7d087/698f816ed3b320ad547d9d8c",
134
134
  "lastUpdated": "2026-02-13T19:55:05.953Z"
135
+ },
136
+ "findall-coffee-icons.test.mjs": {
137
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965c48887d56872d5c973b",
138
+ "lastUpdated": "2026-02-19T00:58:04.019Z"
139
+ },
140
+ "parse.test.mjs": {
141
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965d0a887d56872d5c977a",
142
+ "lastUpdated": "2026-02-19T00:58:04.023Z"
143
+ },
144
+ "flake-diffthreshold-001.test.mjs": {
145
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965e0a24aebb4a0ca0636f",
146
+ "lastUpdated": "2026-02-19T00:58:04.025Z"
147
+ },
148
+ "flake-noredraw-cache.test.mjs": {
149
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965f1324aebb4a0ca06389",
150
+ "lastUpdated": "2026-02-19T00:58:04.025Z"
151
+ },
152
+ "flake-noredraw-nocache.test.mjs": {
153
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965f17887d56872d5c97e0",
154
+ "lastUpdated": "2026-02-19T00:58:04.025Z"
155
+ },
156
+ "flake-diffthreshold-05.test.mjs": {
157
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/69965f4524aebb4a0ca06393",
158
+ "lastUpdated": "2026-02-19T00:58:04.025Z"
159
+ },
160
+ "flake-redraw-cache.test.mjs": {
161
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/6996600ffca9f9c4cff8040b",
162
+ "lastUpdated": "2026-02-19T00:58:04.026Z"
163
+ },
164
+ "flake-redraw-nocache.test.mjs": {
165
+ "url": "https://console.testdriver.ai/runs/69965981887d56872d5c9640/699660116613a14398ff482e",
166
+ "lastUpdated": "2026-02-19T00:58:04.026Z"
135
167
  }
136
168
  }
137
169
  }
@@ -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/698f8010d3b320ad547d9d52/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965caa24aebb4a0ca06329/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/698f7eb69e27ce1528d7d0bc/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a95887d56872d5c96bf/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/698f7df8d3b320ad547d9cdc/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965983d4ec641ec13c81ff/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/698f7fbcdd202a57999808f0/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965c3724aebb4a0ca0630a/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/698f7ea7dd202a57999808bc/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a99d4ec641ec13c827c/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/698f7fe69e27ce1528d7d0ed/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965caa24aebb4a0ca0632a/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/698f7f069e27ce1528d7d0cd/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965af2887d56872d5c96e5/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/698f7eb6d3b320ad547d9d16/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a87887d56872d5c96b9/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/698f7dfad3b320ad547d9ce0/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965986d4ec641ec13c8204/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/698f7f739e27ce1528d7d0d9/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965bee24aebb4a0ca062f3/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/698f7f55dd202a57999808d6/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965b7124aebb4a0ca062d9/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/698f7f749e27ce1528d7d0da/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965bd0887d56872d5c9715/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/698f7e5cd3b320ad547d9d03/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a12d4ec641ec13c8240/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/698f7f0add202a57999808c8/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965b3a887d56872d5c96f6/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/698f7f2a9e27ce1528d7d0d2/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965b5c887d56872d5c96fc/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/698f7e5ddd202a57999808ae/replay"
15
+ src="https://testdriver-api.onrender.com/api/v1/testdriver/testcase/69965a28887d56872d5c968f/replay"
16
16
  width="100%"
17
17
  height="390"
18
18
  style={{ border: "1px solid #333", borderRadius: "8px" }}
@@ -68,52 +68,19 @@ function initializeSentry() {
68
68
  }
69
69
 
70
70
  /**
71
- * Capture a test failure in Sentry
72
- * @param {Object} params - Test failure parameters
73
- * @param {string} params.testName - Name of the test
74
- * @param {string} params.testFile - File path of the test
75
- * @param {string} params.errorMessage - Error message
76
- * @param {string} [params.errorStack] - Error stack trace
77
- * @param {string} [params.sessionId] - Session ID if available
78
- * @param {string} [params.platform] - Platform (windows, mac, linux)
79
- * @param {number} [params.duration] - Test duration in ms
71
+ * Previously captured test failures in Sentry.
72
+ * Now disabled - test failures are expected behavior, not crashes.
73
+ * We only want to report actual exceptions and crashes to Sentry.
74
+ *
75
+ * @param {Object} _params - Test failure parameters (ignored)
76
+ * @deprecated This function no longer sends data to Sentry.
80
77
  */
81
- function captureTestFailure({ testName, testFile, errorMessage, errorStack, sessionId, platform, duration }) {
82
- if (!sentryInitialized || process.env.TD_TELEMETRY === "false") return;
83
-
84
- try {
85
- // Create an error object with the test failure details
86
- const error = new Error(errorMessage);
87
- error.name = "TestFailure";
88
- if (errorStack) {
89
- error.stack = errorStack;
90
- }
91
-
92
- Sentry.withScope((scope) => {
93
- scope.setTag("test.name", testName);
94
- scope.setTag("test.file", testFile);
95
- scope.setTag("test.status", "failed");
96
-
97
- if (sessionId) {
98
- scope.setTag("session", sessionId);
99
- }
100
- if (platform) {
101
- scope.setTag("platform", platform);
102
- }
103
-
104
- scope.setContext("test", {
105
- name: testName,
106
- file: testFile,
107
- duration: duration,
108
- sessionId: sessionId,
109
- platform: platform,
110
- });
111
-
112
- Sentry.captureException(error);
113
- });
114
- } catch (err) {
115
- logger.debug("Failed to capture test failure in Sentry:", err.message);
116
- }
78
+ // eslint-disable-next-line no-unused-vars
79
+ function captureTestFailure(_params) {
80
+ // Test failures are expected behavior - they indicate a test found a bug.
81
+ // We should only report actual exceptions and crashes to Sentry, not every failed test.
82
+ // This function is now a no-op to prevent flooding Sentry with test failures.
83
+ return;
117
84
  }
118
85
 
119
86
  /**
package/lib/sentry.js CHANGED
@@ -51,12 +51,33 @@ if (isEnabled()) {
51
51
  nodeVersion: process.version,
52
52
  },
53
53
  },
54
- // Filter out common non-errors
54
+ // Filter out common non-errors and expected test failures
55
+ // Only report actual exceptions and crashes, not failed tests or element lookups
55
56
  beforeSend(event, hint) {
56
57
  const error = hint.originalException;
57
58
 
58
- // Don't send user-initiated exits
59
- if (error && error.message && error.message.includes("User cancelled")) {
59
+ if (error && error.message) {
60
+ const message = error.message;
61
+
62
+ // Don't send user-initiated exits
63
+ if (message.includes("User cancelled")) {
64
+ return null;
65
+ }
66
+
67
+ // Don't send expected test/element failures - these are normal test outcomes, not crashes
68
+ if (
69
+ message.includes("Element not found") ||
70
+ message.includes("No elements found") ||
71
+ message.includes("No element found") ||
72
+ message.includes("Assertion failed") ||
73
+ message.includes("assertion failed")
74
+ ) {
75
+ return null;
76
+ }
77
+ }
78
+
79
+ // Filter out TestFailure errors (test failures, not crashes)
80
+ if (error && error.name === "TestFailure") {
60
81
  return null;
61
82
  }
62
83
 
@@ -50,14 +50,27 @@ if (isSentryEnabled()) {
50
50
  nodeVersion: process.version,
51
51
  },
52
52
  },
53
+ // Filter out expected test/element failures - only report actual exceptions and crashes
53
54
  beforeSend(event, hint) {
54
55
  const error = hint.originalException;
55
- // Don't send user-initiated exits
56
56
  if (error && typeof error === "object" && "message" in error) {
57
57
  const msg = error.message;
58
+ // Don't send user-initiated exits
58
59
  if (msg.includes("User cancelled")) {
59
60
  return null;
60
61
  }
62
+ // Don't send expected test/element failures - these are normal test outcomes, not crashes
63
+ if (msg.includes("Element not found") ||
64
+ msg.includes("No elements found") ||
65
+ msg.includes("No element found") ||
66
+ msg.includes("Assertion failed") ||
67
+ msg.includes("assertion failed")) {
68
+ return null;
69
+ }
70
+ }
71
+ // Filter out TestFailure errors (test failures, not crashes)
72
+ if (error && typeof error === "object" && "name" in error && error.name === "TestFailure") {
73
+ return null;
61
74
  }
62
75
  return event;
63
76
  },
@@ -60,15 +60,35 @@ if (isSentryEnabled()) {
60
60
  nodeVersion: process.version,
61
61
  },
62
62
  },
63
+ // Filter out expected test/element failures - only report actual exceptions and crashes
63
64
  beforeSend(event, hint) {
64
65
  const error = hint.originalException;
65
- // Don't send user-initiated exits
66
+
66
67
  if (error && typeof error === "object" && "message" in error) {
67
68
  const msg = (error as { message: string }).message;
69
+
70
+ // Don't send user-initiated exits
68
71
  if (msg.includes("User cancelled")) {
69
72
  return null;
70
73
  }
74
+
75
+ // Don't send expected test/element failures - these are normal test outcomes, not crashes
76
+ if (
77
+ msg.includes("Element not found") ||
78
+ msg.includes("No elements found") ||
79
+ msg.includes("No element found") ||
80
+ msg.includes("Assertion failed") ||
81
+ msg.includes("assertion failed")
82
+ ) {
83
+ return null;
84
+ }
85
+ }
86
+
87
+ // Filter out TestFailure errors (test failures, not crashes)
88
+ if (error && typeof error === "object" && "name" in error && (error as { name: string }).name === "TestFailure") {
89
+ return null;
71
90
  }
91
+
72
92
  return event;
73
93
  },
74
94
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testdriverai",
3
- "version": "7.3.17",
3
+ "version": "7.3.18",
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",