testdriverai 5.4.2 → 5.5.0

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
@@ -30,7 +30,7 @@ const yaml = require("js-yaml");
30
30
  const sanitizeFilename = require("sanitize-filename");
31
31
 
32
32
  // local modules
33
- const { server } = require("./lib/ipc.js");
33
+ const server = require("./lib/ipc.js");
34
34
  const speak = require("./lib/speak.js");
35
35
  const analytics = require("./lib/analytics.js");
36
36
  const log = require("./lib/logger.js");
@@ -753,8 +753,10 @@ const actOnMarkdown = async (
753
753
  };
754
754
 
755
755
  const ensureMacScreenPerms = async () => {
756
+
756
757
  // if os is mac, check for screen capture permissions
757
758
  if (
759
+ !config.TD_OVERLAY_ID &&
758
760
  !config.TD_VM &&
759
761
  process.platform === "darwin"
760
762
  ) {
@@ -889,7 +891,7 @@ const firstPrompt = async () => {
889
891
  };
890
892
 
891
893
  rl.on("line", handleInput);
892
- server.on("input", handleInput);
894
+ server.emitter.on("input", handleInput);
893
895
 
894
896
  // if file exists, load it
895
897
  if (fs.existsSync(thisFile)) {
@@ -1054,6 +1056,7 @@ let runRawYML = async (yml) => {
1054
1056
  // add the root key steps: with array of commands:
1055
1057
  if (ymlObj && !ymlObj.steps) {
1056
1058
  ymlObj = {
1059
+ version: package.version,
1057
1060
  steps: [ymlObj],
1058
1061
  };
1059
1062
  }
@@ -1062,7 +1065,7 @@ let runRawYML = async (yml) => {
1062
1065
  fs.writeFileSync(tmpobj.name, yaml.dump(ymlObj));
1063
1066
 
1064
1067
  // and run it with run()
1065
- await run(tmpobj.name, false, true);
1068
+ await run(tmpobj.name, false, false);
1066
1069
  };
1067
1070
 
1068
1071
  // this will load a regression test from a file location
@@ -1223,8 +1226,6 @@ const start = async () => {
1223
1226
  let testdriverFolder = path.join(workingDir, "testdriver");
1224
1227
  if (!fs.existsSync(testdriverFolder)) {
1225
1228
 
1226
- console.log('does not exist')
1227
-
1228
1229
  fs.mkdirSync(testdriverFolder);
1229
1230
  // log
1230
1231
  logger.info(chalk.dim(`Created testdriver directory`));
package/index.js CHANGED
@@ -9,7 +9,9 @@ if (process.argv[2] === "--help" || process.argv[2] === "-h") {
9
9
  console.log("Command: testdriverai [init, run, edit] [yaml filepath]");
10
10
  process.exit(0);
11
11
  }
12
+
12
13
  if (process.argv[2] === "--renderer") {
14
+
13
15
  const {
14
16
  // connectToOverlay,
15
17
  createOverlayProcess,
@@ -38,6 +40,7 @@ if (process.argv[2] === "--renderer") {
38
40
  })();
39
41
  } else {
40
42
  (async () => {
43
+
41
44
  if (!config.TD_OVERLAY) {
42
45
  let agent = require("./agent.js");
43
46
  await agent.start();
package/lib/commander.js CHANGED
@@ -9,7 +9,7 @@ const analytics = require("./analytics");
9
9
  const marky = require("marky");
10
10
  const sdk = require("./sdk");
11
11
  const outputs = require("./outputs");
12
- const {server} = require("./ipc");
12
+ const server = require("./ipc");
13
13
 
14
14
  // replace all occurances of ${OUTPUT.ls} with outputs.get("ls") in every possible property of the `object`
15
15
  // this is a recursive function that will go through all the properties of the object
package/lib/commands.js CHANGED
@@ -2,7 +2,7 @@
2
2
  const sdk = require("./sdk");
3
3
  const vm = require("vm");
4
4
  const chalk = require("chalk");
5
- const server = require("./ipc").server;
5
+ const server = require("./ipc");
6
6
  const {
7
7
  captureScreenBase64,
8
8
  captureScreenPNG,
package/lib/config.js CHANGED
@@ -34,7 +34,8 @@ const config = {
34
34
  TD_SECRET: null,
35
35
  TD_VM: false,
36
36
  TD_OVERLAY_ID: null,
37
- TD_VM_RESOLUTION: [1024, 768]
37
+ TD_VM_RESOLUTION: [1024, 768],
38
+ TD_IPC_ID: `testdriverai_${process.pid}`,
38
39
  };
39
40
 
40
41
  // Find all env vars starting with TD_
package/lib/ipc.js CHANGED
@@ -1,50 +1,17 @@
1
- const { EventEmitter } = require("events");
2
- const { default: nodeIPC } = require("node-ipc");
3
- const { IPC } = nodeIPC;
1
+ let { emitter } = require("./events");
4
2
 
5
- class IPCServerSingleton extends EventEmitter {
6
- ipc = new IPC();
7
- interactive = false;
3
+ process.on("connect", () => {
4
+ broadcast("connect", {});
5
+ });
8
6
 
9
- /**
10
- * @type {Map<string, Function[]>}
11
- */
12
- eventListeners;
7
+ process.on("message", (raw) => {
8
+ let { event, data } = JSON.parse(raw);
9
+ emitter.emit(event, data);
10
+ });
13
11
 
14
- constructor() {
15
- if (!IPCServerSingleton.instance) {
16
- super();
17
- this.ipc = new IPC();
18
- this.eventListeners = new Map();
19
-
20
- this.ipc.config.id = `testdriverai_${process.pid}`;
21
- this.ipc.config.retry = 50;
22
- this.ipc.config.silent = true;
23
-
24
- this.ipc.serve(() => {
25
- this.ipc.server.on("connect", (socket) => {
26
- this.ipc.server.emit(socket, "interactive", this.interactive);
27
- });
28
-
29
- this.ipc.server.on("message", ({ event, data }) => {
30
- this.emit(event, data);
31
- });
32
- });
33
-
34
- this.ipc.server.start();
35
-
36
- IPCServerSingleton.instance = this;
37
- }
38
- return IPCServerSingleton.instance;
39
- }
40
-
41
- broadcast(event, data) {
42
- if (event === "interactive") {
43
- this.interactive = data;
44
- }
45
- this.ipc.server.broadcast("message", { event, data });
46
- }
12
+ let broadcast = (event, data) => {
13
+ let d = {event, data};
14
+ process.send(d);
47
15
  }
48
16
 
49
- const server = new IPCServerSingleton();
50
- module.exports = { server };
17
+ module.exports = { broadcast, emitter };
package/lib/logger.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // central logger for the bot
2
2
  const winston = require("winston");
3
3
  const os = require("os");
4
- const { server } = require("./ipc");
4
+ const server = require("./ipc");
5
5
 
6
6
  // simple match for aws instance i-*
7
7
  const shouldLog =
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testdriverai",
3
- "version": "5.4.2",
3
+ "version": "5.5.0",
4
4
  "description": "Next generation autonomous AI agent for end-to-end testing of web & desktop",
5
5
  "main": "index.js",
6
6
  "bin": {