@empiricalrun/test-gen 0.11.0 → 0.12.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 67a4921: feat: drop support for yaml config support
8
+
9
+ ## 0.11.1
10
+
11
+ ### Patch Changes
12
+
13
+ - e8244a1: fix: specify project for browsing agent
14
+
3
15
  ## 0.11.0
4
16
 
5
17
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAU,YAAY,EAAE,MAAM,UAAU,CAAC;AAQhD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,eAAe,CAAmC;gBAC9C,IAAI,EAAE,IAAI;IAYhB,aAAa,CAAC,IAAI,oBAAa,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAiBhE,gBAAgB,IAAI,YAAY,EAAE;IAIlC,YAAY;IAIZ,UAAU;CAMX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAU,YAAY,EAAE,MAAM,UAAU,CAAC;AAQhD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,eAAe,CAAmC;gBAC9C,IAAI,EAAE,IAAI;IAYhB,aAAa,CAAC,IAAI,EAAE,MAAM,YAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAiBhE,gBAAgB,IAAI,YAAY,EAAE;IAIlC,YAAY;IAIZ,UAAU;CAMX"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPlaywrightLocatorUsingCssSelector = void 0;
3
+ exports.getPlaywrightLocatorUsingCssSelector = getPlaywrightLocatorUsingCssSelector;
4
4
  async function getPlaywrightLocatorUsingCssSelector(cssSelector, page, filter) {
5
5
  return await page.evaluate((locator) => {
6
6
  const elements = document.querySelectorAll(locator.css);
@@ -15,4 +15,3 @@ async function getPlaywrightLocatorUsingCssSelector(cssSelector, page, filter) {
15
15
  return window.playwright.generateLocator(element);
16
16
  }, { css: cssSelector, filter });
17
17
  }
18
- exports.getPlaywrightLocatorUsingCssSelector = getPlaywrightLocatorUsingCssSelector;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.browsingAgent = void 0;
6
+ exports.browsingAgent = browsingAgent;
7
7
  const actions_1 = require("../../actions");
8
8
  const ai_1 = require("../../bin/ai");
9
9
  const provider_1 = require("../../bin/ai/prompts/provider");
@@ -86,4 +86,3 @@ async function browsingAgent(task, page, options = {}) {
86
86
  logger.log("Trace:", trace.url);
87
87
  return code;
88
88
  }
89
- exports.browsingAgent = browsingAgent;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/run.ts"],"names":[],"mappings":"AAOA,wBAAsB,+BAA+B,CAAC,YAAY,EAAE,MAAM,iBAsBzE"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/run.ts"],"names":[],"mappings":"AAOA,wBAAsB,+BAA+B,CAAC,YAAY,EAAE,MAAM,iBAqBzE"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateTestsUsingBrowsingAgent = void 0;
6
+ exports.generateTestsUsingBrowsingAgent = generateTestsUsingBrowsingAgent;
7
7
  const detect_port_1 = __importDefault(require("detect-port"));
8
8
  const web_1 = require("../../bin/utils/platform/web");
9
9
  const server_1 = require("../../file/server");
@@ -16,8 +16,7 @@ async function generateTestsUsingBrowsingAgent(testFilePath) {
16
16
  await fileService.startFileService();
17
17
  fileService.setFilePath(testFilePath);
18
18
  //TODO: change this to per test
19
- //TODO: support multiple projects (browsers)
20
- let command = `npx playwright test ${testFilePath} --retries 0`;
19
+ let command = `npx playwright test ${testFilePath} --retries 0 --project chromium`;
21
20
  if (!process.env.CI) {
22
21
  command = command.concat(` --headed`);
23
22
  }
@@ -32,4 +31,3 @@ async function generateTestsUsingBrowsingAgent(testFilePath) {
32
31
  }
33
32
  await (0, web_1.removeTestOnly)(testFilePath);
34
33
  }
35
- exports.generateTestsUsingBrowsingAgent = generateTestsUsingBrowsingAgent;
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.canRunBrowsingAgent = exports.injectPwLocatorGenerator = exports.prepareFileForBrowsingAgent = exports.prepareBrowsingAgentTask = void 0;
6
+ exports.prepareBrowsingAgentTask = prepareBrowsingAgentTask;
7
+ exports.prepareFileForBrowsingAgent = prepareFileForBrowsingAgent;
8
+ exports.injectPwLocatorGenerator = injectPwLocatorGenerator;
9
+ exports.canRunBrowsingAgent = canRunBrowsingAgent;
7
10
  const child_process_1 = require("child_process");
8
11
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
12
  const logger_1 = require("../../bin/logger");
@@ -13,7 +16,6 @@ function prepareBrowsingAgentTask(steps, assert) {
13
16
  const task = `${sanitizedSteps.join("\n")}\n${assert || ""}`;
14
17
  return task;
15
18
  }
16
- exports.prepareBrowsingAgentTask = prepareBrowsingAgentTask;
17
19
  async function prepareFileForBrowsingAgent(genConfig) {
18
20
  const { specPath, scenarios } = genConfig;
19
21
  const { name, steps, assert } = scenarios[0];
@@ -27,7 +29,6 @@ async function prepareFileForBrowsingAgent(genConfig) {
27
29
  const newContents = `${existingContents}\n\n${createTestGenBlock(name, mergedSteps)}`;
28
30
  await fs_extra_1.default.writeFile(specPath, (0, web_1.addNewImport)(newContents, ["createTest"], "@empiricalrun/test-gen"));
29
31
  }
30
- exports.prepareFileForBrowsingAgent = prepareFileForBrowsingAgent;
31
32
  function createTestGenBlock(name, steps) {
32
33
  return `
33
34
  test.only("${name}", async ({page}) => {
@@ -43,7 +44,6 @@ async function injectPwLocatorGenerator(page) {
43
44
  content: script,
44
45
  });
45
46
  }
46
- exports.injectPwLocatorGenerator = injectPwLocatorGenerator;
47
47
  function canRunBrowsingAgent(filePath) {
48
48
  if (!fs_extra_1.default.existsSync(filePath)) {
49
49
  throw new Error(`File for browsing agent to run not found: ${filePath}`);
@@ -64,4 +64,3 @@ function canRunBrowsingAgent(filePath) {
64
64
  logger.warn(`Outdated @empiricalrun/test-gen package: expected ${latestTestGenVersion}, got ${testGenVersion}`);
65
65
  }
66
66
  }
67
- exports.canRunBrowsingAgent = canRunBrowsingAgent;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateTest = void 0;
6
+ exports.generateTest = generateTest;
7
7
  const fs_extra_1 = __importDefault(require("fs-extra"));
8
8
  const ai_1 = require("../../bin/ai");
9
9
  const provider_1 = require("../../bin/ai/prompts/provider");
@@ -124,4 +124,3 @@ async function generateTest(scenarios, file, isUpdate) {
124
124
  }
125
125
  return generatedScenarios;
126
126
  }
127
- exports.generateTest = generateTest;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getLLMResult = void 0;
6
+ exports.getLLMResult = getLLMResult;
7
7
  const openai_1 = __importDefault(require("openai"));
8
8
  async function getLLMResult({ messages, trace, tools, tool_choice, }) {
9
9
  const openai = new openai_1.default();
@@ -28,4 +28,3 @@ async function getLLMResult({ messages, trace, tools, tool_choice, }) {
28
28
  generation?.end({ output });
29
29
  return output;
30
30
  }
31
- exports.getLLMResult = getLLMResult;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPromptForNextAction = exports.getPrompt = void 0;
3
+ exports.getPrompt = getPrompt;
4
+ exports.getPromptForNextAction = getPromptForNextAction;
4
5
  const langfuse_1 = require("langfuse");
5
6
  const langfuse = new langfuse_1.Langfuse({
6
7
  secretKey: "sk-lf-30eee545-9c2c-4646-bfd9-8f38acf2fa8f",
@@ -13,7 +14,6 @@ async function getPrompt(name, vars) {
13
14
  const compiledPrompt = prompt.compile(vars);
14
15
  return compiledPrompt;
15
16
  }
16
- exports.getPrompt = getPrompt;
17
17
  // TODO: move this prompt to langfuse
18
18
  async function getPromptForNextAction({ pageSnapshot = "", task = "", previousActions = [], lastActionErrors = [], }) {
19
19
  const previousActionsStr = previousActions.join("\n\n ---- \n\n");
@@ -25,4 +25,3 @@ async function getPromptForNextAction({ pageSnapshot = "", task = "", previousAc
25
25
  });
26
26
  return prompt;
27
27
  }
28
- exports.getPromptForNextAction = getPromptForNextAction;
@@ -30,7 +30,7 @@ export default class LLMTracing {
30
30
  }): {
31
31
  end: ({ output, usage, }: {
32
32
  output: any;
33
- usage?: OpenAI.Completions.CompletionUsage | undefined;
33
+ usage?: OpenAI.CompletionUsage;
34
34
  }) => void;
35
35
  };
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bin/ai/trace/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAe5B,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,KAAK,CAAsB;gBACvB,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAStC,IAAI,EAAE,WAEL;IAED,IAAI,GAAG,WAEN;IAED,KAAK,CAAC,EACJ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;QACf,MAAM,CAAC,EAAE,GAAG,CAAC;KACd;IAID,MAAM,CAAC,EACL,KAAU,EACV,MAAW,EACX,QAAa,GACd,EAAE;QACD,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB;IAID,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC/B,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;;oBAIJ,OAAO,MAAM,EAAE,GAAG,CAAC;;;IAMnD,eAAe,CAAC,EACd,IAAS,EACT,KAAU,EACV,UAAe,EACf,KAAU,GACX,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,KAAK,EAAE,GAAG,CAAC;KACZ;;oBAYa,GAAG;;cAET,IAAI;;CAcb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bin/ai/trace/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAe5B,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,KAAK,CAAsB;gBACvB,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAStC,IAAI,EAAE,WAEL;IAED,IAAI,GAAG,WAEN;IAED,KAAK,CAAC,EACJ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;QACf,MAAM,CAAC,EAAE,GAAG,CAAC;KACd;IAID,MAAM,CAAC,EACL,KAAU,EACV,MAAW,EACX,QAAa,GACd,EAAE;QACD,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB;IAID,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC/B,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;0BAId;YAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAE;;IAMrD,eAAe,CAAC,EACd,IAAS,EACT,KAAU,EACV,UAAe,EACf,KAAU,GACX,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,KAAK,EAAE,GAAG,CAAC;KACZ;kCAWM;YACD,MAAM,EAAE,GAAG,CAAC;YACZ,KAAK,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;SAChC,KAAG,IAAI;;CAcb"}
package/dist/bin/index.js CHANGED
@@ -49,27 +49,10 @@ async function runAgent(sourceFile, isUpdate, testGenConfigs) {
49
49
  }
50
50
  return generatedTestScenarios;
51
51
  }
52
- function filterConfigsByScenarioName(testGenConfigs, scenarioName) {
53
- if (!scenarioName) {
54
- return testGenConfigs;
55
- }
56
- const filteredConfigs = testGenConfigs.filter((t) => t.scenarios.some((s) => s.name === scenarioName));
57
- // if no config available then throw error
58
- if (testGenConfigs.length == 0) {
59
- logger.error("No scenarios found for the given scenario name", scenarioName);
60
- process.exit(1);
61
- }
62
- filteredConfigs.map((config) => {
63
- config.scenarios = config.scenarios.filter((s) => s.name === scenarioName);
64
- return config;
65
- });
66
- return filteredConfigs;
67
- }
68
52
  async function parseArgs() {
69
53
  const scenarioOrScenariosPath = process.argv[2];
70
54
  const isUpdate = process.argv.includes("-u");
71
- const scenarioToFilter = process.argv[3] === "-u" ? "" : process.argv[3];
72
- const testGenConfigs = filterConfigsByScenarioName(await (0, scenarios_1.loadScenarios)(scenarioOrScenariosPath), scenarioToFilter);
55
+ const testGenConfigs = await (0, scenarios_1.loadScenarios)(scenarioOrScenariosPath);
73
56
  return {
74
57
  sourceFile: scenarioOrScenariosPath,
75
58
  testGenConfigs,
@@ -78,7 +61,7 @@ async function parseArgs() {
78
61
  }
79
62
  (async function main() {
80
63
  if (process.argv.length < 3) {
81
- logger.error("Please provide path to scenarios using command:", "npx @empiricalrun/test-gen <SCENARIOS_FILE_PATH> <SCENARIO_NAME> -u");
64
+ logger.error("Please provide path to scenarios using command:", "npx @empiricalrun/test-gen <SCENARIOS_FILE_PATH> -u");
82
65
  process.exit(1);
83
66
  }
84
67
  const { sourceFile, testGenConfigs, isUpdate } = await parseArgs();
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.reportOnCI = void 0;
6
+ exports.reportOnCI = reportOnCI;
7
7
  const fs_extra_1 = __importDefault(require("fs-extra"));
8
8
  async function reportOnCI(scenarios) {
9
9
  if (process.env.CI && process.env.GITHUB_OUTPUT) {
@@ -21,4 +21,3 @@ async function reportOnCI(scenarios) {
21
21
  }
22
22
  return scenarios;
23
23
  }
24
- exports.reportOnCI = reportOnCI;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/scenarios/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiGvC,iBAAe,aAAa,CAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;CAAE,EAAE,CAAC,CA8BxD;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/scenarios/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmFvC,iBAAe,aAAa,CAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;CAAE,EAAE,CAAC,CA4BxD;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -3,12 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadScenarios = void 0;
7
- const fs_extra_1 = __importDefault(require("fs-extra"));
6
+ exports.loadScenarios = loadScenarios;
8
7
  const google_auth_library_1 = require("google-auth-library");
9
- const path_1 = __importDefault(require("path"));
10
8
  const slugify_1 = __importDefault(require("slugify"));
11
- const yaml_1 = require("yaml");
12
9
  function isValidJSON(str) {
13
10
  try {
14
11
  JSON.parse(str);
@@ -76,21 +73,10 @@ async function loadScenariosFromGsheet(path) {
76
73
  }
77
74
  return results;
78
75
  }
79
- async function loadScenariosFromYAML(scenariosPath) {
80
- const file = await fs_extra_1.default.readFile(path_1.default.resolve(process.cwd(), scenariosPath), "utf8");
81
- const fileName = scenariosPath.split("/").pop()?.split(".")[0];
82
- const config = (0, yaml_1.parse)(file);
83
- const fileDir = config.dir || "./tests";
84
- config.specPath = `${fileDir}/${fileName}.spec.ts`;
85
- return [config];
86
- }
87
76
  async function loadScenarios(scenariosPath) {
88
77
  if (scenariosPath.startsWith("https://docs.google.com/spreadsheets")) {
89
78
  return await loadScenariosFromGsheet(scenariosPath);
90
79
  }
91
- else if (scenariosPath.endsWith(".yaml")) {
92
- return await loadScenariosFromYAML(scenariosPath);
93
- }
94
80
  else if (scenariosPath.endsWith(".ts")) {
95
81
  return [
96
82
  {
@@ -118,4 +104,3 @@ async function loadScenarios(scenariosPath) {
118
104
  }
119
105
  throw Error("Invalid path for test scenarios");
120
106
  }
121
- exports.loadScenarios = loadScenarios;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getSessionDetails = void 0;
6
+ exports.getSessionDetails = getSessionDetails;
7
7
  const crypto_1 = __importDefault(require("crypto"));
8
8
  const package_json_1 = __importDefault(require("./../../../package.json"));
9
9
  const sessionId = crypto_1.default.randomUUID();
@@ -13,4 +13,3 @@ function getSessionDetails() {
13
13
  version: package_json_1.default.version,
14
14
  };
15
15
  }
16
- exports.getSessionDetails = getSessionDetails;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.contextForGeneration = void 0;
6
+ exports.contextForGeneration = contextForGeneration;
7
7
  const fs_extra_1 = __importDefault(require("fs-extra"));
8
8
  const ignore_1 = __importDefault(require("ignore"));
9
9
  const fs_1 = require("./fs");
@@ -21,4 +21,3 @@ async function contextForGeneration(file) {
21
21
  testFileContent: fs_extra_1.default.readFileSync(file, "utf-8"),
22
22
  };
23
23
  }
24
- exports.contextForGeneration = contextForGeneration;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bin/utils/fs/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,wBAAsB,oBAAoB,CACxC,GAAG,oBAAa,EAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,0BAgBtC;AAED,wBAAgB,2BAA2B,CAAC,KAAK,GAAE,WAAW,EAAO,UAQpE;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,oBAAK,EACR,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,+BAStC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bin/utils/fs/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,YAAK,EAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,0BAgBtC;AAED,wBAAgB,2BAA2B,CAAC,KAAK,GAAE,WAAW,EAAO,UAQpE;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,oBAAK,EACR,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,+BAStC"}
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generatePromptFromDirectory = exports.convertFileContentsToString = exports.readFilesInDirectory = void 0;
6
+ exports.readFilesInDirectory = readFilesInDirectory;
7
+ exports.convertFileContentsToString = convertFileContentsToString;
8
+ exports.generatePromptFromDirectory = generatePromptFromDirectory;
7
9
  const fs_extra_1 = __importDefault(require("fs-extra"));
8
10
  const path_1 = __importDefault(require("path"));
9
11
  async function readFilesInDirectory(dir = "", filterFunc) {
@@ -22,7 +24,6 @@ async function readFilesInDirectory(dir = "", filterFunc) {
22
24
  }
23
25
  return files;
24
26
  }
25
- exports.readFilesInDirectory = readFilesInDirectory;
26
27
  function convertFileContentsToString(files = []) {
27
28
  let prompt = "";
28
29
  files.forEach((file) => {
@@ -32,7 +33,6 @@ function convertFileContentsToString(files = []) {
32
33
  });
33
34
  return prompt;
34
35
  }
35
- exports.convertFileContentsToString = convertFileContentsToString;
36
36
  async function generatePromptFromDirectory(dir = "", filterFunc) {
37
37
  try {
38
38
  const files = await readFilesInDirectory(dir, filterFunc);
@@ -43,4 +43,3 @@ async function generatePromptFromDirectory(dir = "", filterFunc) {
43
43
  console.error("Error reading directory:", error);
44
44
  }
45
45
  }
46
- exports.generatePromptFromDirectory = generatePromptFromDirectory;
@@ -3,7 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.removeTestOnly = exports.addNewImport = exports.formatCode = exports.lintErrors = exports.stripAndPrependImports = exports.validateTypescript = exports.getTypescriptTestBlock = void 0;
6
+ exports.getTypescriptTestBlock = getTypescriptTestBlock;
7
+ exports.validateTypescript = validateTypescript;
8
+ exports.stripAndPrependImports = stripAndPrependImports;
9
+ exports.lintErrors = lintErrors;
10
+ exports.formatCode = formatCode;
11
+ exports.addNewImport = addNewImport;
12
+ exports.removeTestOnly = removeTestOnly;
7
13
  const eslint_1 = require("eslint");
8
14
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
15
  const prettier_1 = __importDefault(require("prettier"));
@@ -12,7 +18,6 @@ function getTypescriptTestBlock(scenarioName, content) {
12
18
  const regex = new RegExp(`test\\("${scenarioName}"[^]*?\\}\\);`, "g");
13
19
  return regex.exec(content);
14
20
  }
15
- exports.getTypescriptTestBlock = getTypescriptTestBlock;
16
21
  function validateTypescript(filePath) {
17
22
  // Create a compiler host to read files
18
23
  const compilerHost = typescript_1.default.createCompilerHost({});
@@ -50,7 +55,6 @@ function validateTypescript(filePath) {
50
55
  }
51
56
  return errors;
52
57
  }
53
- exports.validateTypescript = validateTypescript;
54
58
  async function stripAndPrependImports(content) {
55
59
  const importRegexp = /import\s+\{[^}]*\}\s+from\s+["'][^"']+["'];?/g;
56
60
  const imports = content.match(importRegexp);
@@ -58,7 +62,6 @@ async function stripAndPrependImports(content) {
58
62
  const prependContent = (imports?.join("\n") || "") + "\n\n";
59
63
  return [prependContent, strippedContent];
60
64
  }
61
- exports.stripAndPrependImports = stripAndPrependImports;
62
65
  async function lintErrors(filePath) {
63
66
  const eslint = new eslint_1.ESLint({
64
67
  fix: true,
@@ -67,7 +70,6 @@ async function lintErrors(filePath) {
67
70
  const [result] = await eslint.lintFiles(filePath);
68
71
  fs_extra_1.default.writeFileSync(filePath, result?.output || "");
69
72
  }
70
- exports.lintErrors = lintErrors;
71
73
  async function formatCode(filePath) {
72
74
  const fileContent = fs_extra_1.default.readFileSync(filePath, "utf8");
73
75
  const prettierConfig = {};
@@ -77,14 +79,11 @@ async function formatCode(filePath) {
77
79
  });
78
80
  fs_extra_1.default.writeFileSync(filePath, formattedContent);
79
81
  }
80
- exports.formatCode = formatCode;
81
82
  function addNewImport(contents, modules, pkg) {
82
83
  return `import { ${modules.join(", ")} } from "${pkg}";\n${contents}`;
83
84
  }
84
- exports.addNewImport = addNewImport;
85
85
  async function removeTestOnly(filePath) {
86
86
  const contents = await fs_extra_1.default.readFile(filePath, "utf8");
87
87
  const updatedContent = contents.replace(/test\.only/, "test");
88
88
  return fs_extra_1.default.writeFile(filePath, updatedContent);
89
89
  }
90
- exports.removeTestOnly = removeTestOnly;
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.startFileService = exports.FileService = void 0;
6
+ exports.FileService = void 0;
7
+ exports.startFileService = startFileService;
7
8
  const express_1 = __importDefault(require("express"));
8
9
  const fs_1 = __importDefault(require("fs"));
9
10
  const path_1 = __importDefault(require("path"));
@@ -47,4 +48,3 @@ class FileService {
47
48
  }
48
49
  exports.FileService = FileService;
49
50
  async function startFileService() { }
50
- exports.startFileService = startFileService;
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createTest = void 0;
6
+ exports.createTest = createTest;
7
7
  const browsing_1 = require("./agent/browsing");
8
8
  const client_1 = __importDefault(require("./file/client"));
9
9
  async function createTest(task, page, test) {
@@ -20,4 +20,3 @@ async function createTest(task, page, test) {
20
20
  generatedCode: code,
21
21
  });
22
22
  }
23
- exports.createTest = createTest;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.cmd = void 0;
6
+ exports.cmd = cmd;
7
7
  const child_process_1 = require("child_process");
8
8
  const process_1 = __importDefault(require("process"));
9
9
  function cmd(command, options) {
@@ -22,4 +22,3 @@ function cmd(command, options) {
22
22
  });
23
23
  });
24
24
  }
25
- exports.cmd = cmd;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.findFileRecursively = void 0;
6
+ exports.findFileRecursively = findFileRecursively;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  function findFileRecursively(directory, fileName) {
@@ -22,4 +22,3 @@ function findFileRecursively(directory, fileName) {
22
22
  }
23
23
  }
24
24
  }
25
- exports.findFileRecursively = findFileRecursively;
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertTextToJsComments = void 0;
3
+ exports.convertTextToJsComments = convertTextToJsComments;
4
4
  function convertTextToJsComments(text) {
5
5
  const lines = text.split("\n");
6
6
  const commentedLines = lines.map((line) => `// ${line}`);
7
7
  return commentedLines.join("\n");
8
8
  }
9
- exports.convertTextToJsComments = convertTextToJsComments;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-gen",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -33,8 +33,7 @@
33
33
  "prettier": "^3.2.5",
34
34
  "sanitize-html": "^2.13.0",
35
35
  "slugify": "^1.6.6",
36
- "typescript": "^5.3.3",
37
- "yaml": "^2.4.2"
36
+ "typescript": "^5.3.3"
38
37
  },
39
38
  "devDependencies": {
40
39
  "@types/detect-port": "^1.3.5",