testdriverai 5.6.6 → 5.7.1
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 +4 -7
- package/lib/commander.js +5 -3
- package/lib/commands.js +7 -4
- package/lib/outputs.js +2 -0
- package/lib/sdk.js +2 -2
- package/package.json +1 -1
- package/schema.json +2 -2
- package/testdriver/overwrite.yaml +25 -0
- package/testdriver/remember.yaml +16 -0
- package/testdriver/testdriver_2025-05-14T18-59-04-439Z.yaml +7 -0
- package/testdriver/testdriver_2025-05-14T18-59-35-628Z.yaml +7 -0
package/agent.js
CHANGED
|
@@ -849,7 +849,6 @@ const firstPrompt = async () => {
|
|
|
849
849
|
const flags = commands.slice(2);
|
|
850
850
|
let shouldSave = flags.includes("--save") ? true : false;
|
|
851
851
|
let shouldExit = flags.includes("--exit") ? true : false;
|
|
852
|
-
|
|
853
852
|
await run(file, shouldSave, shouldExit);
|
|
854
853
|
} else if (input.indexOf("/generate") == 0) {
|
|
855
854
|
const skipYaml = commands[4] === "--skip-yaml";
|
|
@@ -1092,12 +1091,10 @@ let run = async (file = thisFile, shouldSave = false, shouldExit = true) => {
|
|
|
1092
1091
|
logger.info(``, null);
|
|
1093
1092
|
logger.info(chalk.yellow(`> ${step.prompt || "no prompt"}`), null);
|
|
1094
1093
|
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
});
|
|
1100
|
-
}
|
|
1094
|
+
executionHistory.push({
|
|
1095
|
+
prompt: step.prompt,
|
|
1096
|
+
commands: [], // run will overwrite the commands
|
|
1097
|
+
});
|
|
1101
1098
|
|
|
1102
1099
|
if (!step.commands && !step.prompt) {
|
|
1103
1100
|
logger.info(chalk.red("No commands or prompt found"));
|
package/lib/commander.js
CHANGED
|
@@ -212,10 +212,12 @@ commands:
|
|
|
212
212
|
response = await commands["focus-application"](object.name);
|
|
213
213
|
break;
|
|
214
214
|
case "remember":
|
|
215
|
-
logger.info(generator.jsonToManual(object));
|
|
215
|
+
{ logger.info(generator.jsonToManual(object));
|
|
216
216
|
notify(generator.jsonToManual(object, false));
|
|
217
|
-
|
|
218
|
-
|
|
217
|
+
let value = await commands["remember"](object.description);
|
|
218
|
+
console.log(value);
|
|
219
|
+
outputs.set(object.output, value);
|
|
220
|
+
break; }
|
|
219
221
|
case "assert":
|
|
220
222
|
speak(`asserting ${object.expect}`);
|
|
221
223
|
server.broadcast("status", `asserting ${object.expect}`);
|
package/lib/commands.js
CHANGED
|
@@ -3,6 +3,7 @@ const sdk = require("./sdk");
|
|
|
3
3
|
const vm = require("vm");
|
|
4
4
|
const chalk = require("chalk");
|
|
5
5
|
const server = require("./ipc");
|
|
6
|
+
const outputs = require("./outputs");
|
|
6
7
|
const {
|
|
7
8
|
captureScreenBase64,
|
|
8
9
|
captureScreenPNG,
|
|
@@ -734,10 +735,12 @@ let commands = {
|
|
|
734
735
|
await redraw.wait(1000);
|
|
735
736
|
return "The application was focused.";
|
|
736
737
|
},
|
|
737
|
-
remember: async (description
|
|
738
|
-
await sdk.req("remember", {
|
|
739
|
-
|
|
740
|
-
|
|
738
|
+
remember: async (description) => {
|
|
739
|
+
let result = await sdk.req("remember", {
|
|
740
|
+
image: await captureScreenBase64(),
|
|
741
|
+
description
|
|
742
|
+
});
|
|
743
|
+
return result.data;
|
|
741
744
|
},
|
|
742
745
|
assert: async (assertion, async = false) => {
|
|
743
746
|
return await assert(assertion, true, async);
|
package/lib/outputs.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
let outputs = {};
|
|
2
|
+
const {logger} = require('./logger');
|
|
2
3
|
|
|
3
4
|
module.exports = {
|
|
4
5
|
getAll: () => {
|
|
@@ -10,6 +11,7 @@ module.exports = {
|
|
|
10
11
|
set: (key, value) => {
|
|
11
12
|
if (key && value) {
|
|
12
13
|
outputs[key] = value;
|
|
14
|
+
logger.info(`OUTPUT.${key} = ${value}`);
|
|
13
15
|
}
|
|
14
16
|
},
|
|
15
17
|
};
|
package/lib/sdk.js
CHANGED
|
@@ -102,7 +102,7 @@ const req = async (path, data, onChunk) => {
|
|
|
102
102
|
? [root, path].join("")
|
|
103
103
|
: [root, "api", version, "testdriver", path].join("/");
|
|
104
104
|
|
|
105
|
-
const
|
|
105
|
+
const c = {
|
|
106
106
|
method: "post",
|
|
107
107
|
headers: {
|
|
108
108
|
"Content-Type": "application/json",
|
|
@@ -119,7 +119,7 @@ const req = async (path, data, onChunk) => {
|
|
|
119
119
|
try {
|
|
120
120
|
let response;
|
|
121
121
|
|
|
122
|
-
response = await axios(url,
|
|
122
|
+
response = await axios(url, c);
|
|
123
123
|
|
|
124
124
|
const contentType = response.headers["content-type"]?.toLowerCase();
|
|
125
125
|
const isJsonl = contentType === "application/jsonl";
|
package/package.json
CHANGED
package/schema.json
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
version: 5.7.0
|
|
2
|
+
session: 682a077a1e7bdbd8dadde32f
|
|
3
|
+
steps:
|
|
4
|
+
- prompt: open chrome
|
|
5
|
+
commands:
|
|
6
|
+
- command: press-keys
|
|
7
|
+
keys:
|
|
8
|
+
- command
|
|
9
|
+
- space
|
|
10
|
+
- command: type
|
|
11
|
+
text: Google Chrome
|
|
12
|
+
- command: press-keys
|
|
13
|
+
keys:
|
|
14
|
+
- enter
|
|
15
|
+
- prompt: search for youtube
|
|
16
|
+
commands:
|
|
17
|
+
- command: press-keys
|
|
18
|
+
keys:
|
|
19
|
+
- command
|
|
20
|
+
- space
|
|
21
|
+
- command: type
|
|
22
|
+
text: Google Chrome
|
|
23
|
+
- command: press-keys
|
|
24
|
+
keys:
|
|
25
|
+
- enter
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
version: 5.6.2
|
|
2
|
+
session: 681cdec532fef6c6f161c4a4
|
|
3
|
+
steps:
|
|
4
|
+
- prompt: search for the current track in spotify
|
|
5
|
+
commands:
|
|
6
|
+
- command: focus-application
|
|
7
|
+
name: spotify
|
|
8
|
+
- command: remember
|
|
9
|
+
output: track
|
|
10
|
+
description: the track now playing in spotify
|
|
11
|
+
- command: hover-text
|
|
12
|
+
text: What do you want to play?
|
|
13
|
+
description: the spotify search bar
|
|
14
|
+
action: click
|
|
15
|
+
- command: type
|
|
16
|
+
text: ${OUTPUT.track}
|