testdriverai 7.3.14 → 7.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## [7.3.16](https://github.com/testdriverai/testdriverai/compare/v7.3.14...v7.3.16) (2026-02-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## [7.3.15](https://github.com/testdriverai/testdriverai/compare/v7.3.14...v7.3.15) (2026-02-18)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
1
9
|
## [7.3.14](https://github.com/testdriverai/testdriverai/compare/v7.3.13...v7.3.14) (2026-02-17)
|
|
2
10
|
|
|
3
11
|
|
package/agent/lib/commands.js
CHANGED
|
@@ -936,6 +936,11 @@ const createCommands = (
|
|
|
936
936
|
const { delay = 250, secret = false, redraw: redrawOpts, ...elementData } = options;
|
|
937
937
|
const redrawOptions = extractRedrawOptions({ redraw: redrawOpts, ...options });
|
|
938
938
|
|
|
939
|
+
// Validate that text parameter is provided
|
|
940
|
+
if (text === undefined || text === null) {
|
|
941
|
+
throw new CommandError("type() requires a text parameter. Received: " + text);
|
|
942
|
+
}
|
|
943
|
+
|
|
939
944
|
// Log parent action with text
|
|
940
945
|
if (secret) {
|
|
941
946
|
emitter.emit(events.log.narration, formatter.getPrefix("type") + " " + theme.yellow.bold("Type") + " " + theme.dim(`secret "****"`));
|
|
@@ -11,7 +11,7 @@ const path = require("path");
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
const DOCS_DIR = path.join(__dirname, "../v7");
|
|
14
|
-
const OUTPUT_DIR = path.join(__dirname, "../../skills");
|
|
14
|
+
const OUTPUT_DIR = path.join(__dirname, "../../ai/skills");
|
|
15
15
|
|
|
16
16
|
// Parse YAML frontmatter from mdx content
|
|
17
17
|
function parseFrontmatter(content) {
|
|
@@ -27,6 +27,15 @@ Scale your test suite with reusable code snippets to reduce duplication and main
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
<Warning>
|
|
31
|
+
**Avoid hardcoding dynamic values in element descriptions.** Element selectors should describe the *type* of element, not specific content that might change.
|
|
32
|
+
|
|
33
|
+
**❌ Bad:** `await testdriver.find('profile name TestDriver in the top right')`
|
|
34
|
+
**✅ Good:** `await testdriver.find('user profile name in the top right')`
|
|
35
|
+
|
|
36
|
+
Hardcoded values like usernames, product names, or prices will cause tests to fail when the data changes. Use generic descriptions that work regardless of the specific content displayed.
|
|
37
|
+
</Warning>
|
|
38
|
+
|
|
30
39
|
```javascript test/checkout.test.js
|
|
31
40
|
import { login } from './helpers/auth.js';
|
|
32
41
|
|
|
@@ -36,6 +36,15 @@ export async function logout(testdriver) {
|
|
|
36
36
|
}
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
<Warning>
|
|
40
|
+
**Avoid hardcoding dynamic values in element descriptions.** Element selectors should describe the *type* of element, not specific content that might change.
|
|
41
|
+
|
|
42
|
+
**❌ Bad:** `await testdriver.find('profile name TestDriver in the top right')`
|
|
43
|
+
**✅ Good:** `await testdriver.find('user profile name in the top right')`
|
|
44
|
+
|
|
45
|
+
Hardcoded values like usernames, product names, or prices will cause tests to fail when the data changes. Use generic descriptions that work regardless of the specific content displayed.
|
|
46
|
+
</Warning>
|
|
47
|
+
|
|
39
48
|
Now import and use these helpers in any test:
|
|
40
49
|
|
|
41
50
|
```javascript test/checkout.test.mjs
|
package/package.json
CHANGED
package/vitest.config.mjs
CHANGED