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 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
- if (shouldSave) {
1096
- executionHistory.push({
1097
- prompt: step.prompt,
1098
- commands: [], // run will overwrite the commands
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
- response = await commands["remember"](object.description, object.value);
218
- break;
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, value) => {
738
- await sdk.req("remember", { description, value });
739
-
740
- return `${description} will be remembered as ${value}`; // important, otherwise we get in a loop of membering
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 config = {
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, config);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testdriverai",
3
- "version": "5.6.6",
3
+ "version": "5.7.1",
4
4
  "description": "Next generation autonomous AI agent for end-to-end testing of web & desktop",
5
5
  "main": "index.js",
6
6
  "bin": {
package/schema.json CHANGED
@@ -488,13 +488,13 @@
488
488
  "description": {
489
489
  "type": "string"
490
490
  },
491
- "value": {
491
+ "output": {
492
492
  "type": "string"
493
493
  }
494
494
  },
495
495
  "required": [
496
496
  "description",
497
- "value"
497
+ "output"
498
498
  ]
499
499
  }
500
500
  },
@@ -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}
@@ -0,0 +1,7 @@
1
+ version: 5.6.6
2
+ session: 6824e7ff58a65c2836a75af3
3
+ steps:
4
+ - prompt: log in
5
+ commands:
6
+ - command: focus-application
7
+ name: Google Chrome
@@ -0,0 +1,7 @@
1
+ version: 5.6.6
2
+ session: 6824e81ca8c2f5886f8c8eb8
3
+ steps:
4
+ - prompt: log in
5
+ commands:
6
+ - command: focus-application
7
+ name: Google Chrome