@empiricalrun/test-gen 0.47.3 → 0.47.4

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/agent/browsing/run.d.ts +4 -1
  3. package/dist/agent/browsing/run.d.ts.map +1 -1
  4. package/dist/agent/browsing/run.js +8 -3
  5. package/dist/agent/browsing/utils.d.ts +6 -13
  6. package/dist/agent/browsing/utils.d.ts.map +1 -1
  7. package/dist/agent/browsing/utils.js +9 -38
  8. package/dist/agent/chat.d.ts +7 -0
  9. package/dist/agent/chat.d.ts.map +1 -0
  10. package/dist/agent/chat.js +89 -0
  11. package/dist/agent/codegen/create-test-block.d.ts +2 -3
  12. package/dist/agent/codegen/create-test-block.d.ts.map +1 -1
  13. package/dist/agent/codegen/create-test-block.js +4 -9
  14. package/dist/agent/codegen/fix-ts-errors.d.ts +2 -3
  15. package/dist/agent/codegen/fix-ts-errors.d.ts.map +1 -1
  16. package/dist/agent/codegen/fix-ts-errors.js +4 -5
  17. package/dist/agent/codegen/run.d.ts +6 -4
  18. package/dist/agent/codegen/run.d.ts.map +1 -1
  19. package/dist/agent/codegen/run.js +8 -6
  20. package/dist/agent/codegen/update-flow.d.ts +7 -5
  21. package/dist/agent/codegen/update-flow.d.ts.map +1 -1
  22. package/dist/agent/codegen/update-flow.js +9 -49
  23. package/dist/agent/codegen/utils.d.ts +2 -4
  24. package/dist/agent/codegen/utils.d.ts.map +1 -1
  25. package/dist/agent/codegen/utils.js +1 -2
  26. package/dist/agent/diagnosis-agent/index.d.ts +2 -9
  27. package/dist/agent/diagnosis-agent/index.d.ts.map +1 -1
  28. package/dist/agent/diagnosis-agent/index.js +1 -8
  29. package/dist/agent/enrich-prompt/index.d.ts.map +1 -1
  30. package/dist/agent/enrich-prompt/index.js +0 -1
  31. package/dist/agent/infer-agent/index.d.ts.map +1 -1
  32. package/dist/agent/infer-agent/index.js +0 -9
  33. package/dist/bin/index.js +49 -34
  34. package/dist/bin/utils/index.d.ts +1 -0
  35. package/dist/bin/utils/index.d.ts.map +1 -1
  36. package/dist/bin/utils/index.js +9 -3
  37. package/dist/file/server.d.ts +2 -0
  38. package/dist/file/server.d.ts.map +1 -1
  39. package/dist/file/server.js +18 -1
  40. package/dist/tools/browser-agent.d.ts +16 -0
  41. package/dist/tools/browser-agent.d.ts.map +1 -0
  42. package/dist/tools/browser-agent.js +76 -0
  43. package/dist/tools/codegen-agent.d.ts +9 -0
  44. package/dist/tools/codegen-agent.d.ts.map +1 -0
  45. package/dist/tools/codegen-agent.js +44 -0
  46. package/dist/tools/test-run.d.ts +10 -0
  47. package/dist/tools/test-run.d.ts.map +1 -0
  48. package/dist/tools/test-run.js +35 -0
  49. package/dist/utils/git.d.ts +2 -0
  50. package/dist/utils/git.d.ts.map +1 -0
  51. package/dist/utils/git.js +11 -0
  52. package/package.json +3 -2
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateTestWithBrowserAgentTool = exports.schema = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const run_1 = require("../agent/browsing/run");
9
+ const utils_1 = require("../agent/browsing/utils");
10
+ const scenarios_1 = require("../bin/utils/scenarios");
11
+ const git_1 = require("../utils/git");
12
+ exports.schema = {
13
+ type: "function",
14
+ function: {
15
+ name: "generateTestWithBrowserAgent",
16
+ description: "Create or modify a test case with browser agent. This is useful when the modifications involve changing a selector or executing browser interactions (like click, fill, etc)",
17
+ parameters: {
18
+ type: "object",
19
+ properties: {
20
+ testName: {
21
+ type: "string",
22
+ description: "The name of the test to create or modify",
23
+ },
24
+ fileName: {
25
+ type: "string",
26
+ description: "The name of the file where the test is located. File name must end with .spec.ts",
27
+ },
28
+ changeToMake: {
29
+ type: "string",
30
+ description: "The change to make to the test",
31
+ },
32
+ },
33
+ required: ["testName", "fileName", "changeToMake"],
34
+ },
35
+ },
36
+ };
37
+ const generateTestWithBrowserAgentTool = async ({ testName, fileName, changeToMake, }) => {
38
+ const testCase = {
39
+ id: 0,
40
+ name: testName,
41
+ filePath: fileName,
42
+ suites: [], // TODO: Support suites
43
+ steps: [changeToMake],
44
+ };
45
+ const filePathFromCwd = path_1.default.join("tests", fileName);
46
+ const filePathToUpdate = await (0, utils_1.prepareFileForMasterAgent)({
47
+ testCase,
48
+ specPath: filePathFromCwd,
49
+ });
50
+ const { isError, error } = await (0, run_1.generateTestsUsingMasterAgent)({
51
+ testFilePath: filePathFromCwd,
52
+ filePathToUpdate,
53
+ // TODO: Remove this hardcoded project name
54
+ pwProjectsFilter: ["chromium"],
55
+ testGenToken: (0, scenarios_1.buildTokenFromOptions)({
56
+ name: testName,
57
+ file: fileName,
58
+ prompt: changeToMake,
59
+ }),
60
+ repoDir: process.cwd(),
61
+ });
62
+ if (!isError) {
63
+ const gitPatch = (0, git_1.getGitDiff)(filePathFromCwd);
64
+ return {
65
+ result: "Test was generated successfully",
66
+ gitPatch,
67
+ };
68
+ }
69
+ else {
70
+ return {
71
+ result: "Test was not generated successfully",
72
+ error,
73
+ };
74
+ }
75
+ };
76
+ exports.generateTestWithBrowserAgentTool = generateTestWithBrowserAgentTool;
@@ -0,0 +1,9 @@
1
+ import { TestCase } from "@empiricalrun/shared-types";
2
+ import { OpenAI } from "openai";
3
+ export declare const schema: OpenAI.Chat.Completions.ChatCompletionTool;
4
+ export declare const generateTestWithCodegenTool: ({ testName, fileName, changeToMake, }: {
5
+ testName: string;
6
+ fileName: string;
7
+ changeToMake: string;
8
+ }) => Promise<void | TestCase[]>;
9
+ //# sourceMappingURL=codegen-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-agent.d.ts","sourceRoot":"","sources":["../../src/tools/codegen-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kBA0B5C,CAAC;AAEF,eAAO,MAAM,2BAA2B;cAK5B,MAAM;cACN,MAAM;kBACF,MAAM;gCAcrB,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTestWithCodegenTool = exports.schema = void 0;
4
+ const run_1 = require("../agent/codegen/run");
5
+ exports.schema = {
6
+ type: "function",
7
+ function: {
8
+ name: "generateTestWithCodegen",
9
+ description: "Create or modify a test case with code generation. This is useful when modifications can be done with TypeScript only, and don't require any browser interactions or element selectors.",
10
+ parameters: {
11
+ type: "object",
12
+ properties: {
13
+ testName: {
14
+ type: "string",
15
+ description: "The name of the test to create or modify",
16
+ },
17
+ fileName: {
18
+ type: "string",
19
+ description: "The name of the file where the test is located. File name must end with .spec.ts",
20
+ },
21
+ changeToMake: {
22
+ type: "string",
23
+ description: "The change to make to the test",
24
+ },
25
+ },
26
+ required: ["testName", "fileName", "changeToMake"],
27
+ },
28
+ },
29
+ };
30
+ const generateTestWithCodegenTool = async ({ testName, fileName, changeToMake, }) => {
31
+ const testCase = {
32
+ id: 0,
33
+ name: testName,
34
+ filePath: fileName,
35
+ suites: [], // TODO: Support suites
36
+ steps: [changeToMake],
37
+ };
38
+ const result = await (0, run_1.generateTestWithCodegen)({
39
+ testCase,
40
+ file: fileName,
41
+ });
42
+ return result;
43
+ };
44
+ exports.generateTestWithCodegenTool = generateTestWithCodegenTool;
@@ -0,0 +1,10 @@
1
+ import { OpenAI } from "openai";
2
+ export declare const schema: OpenAI.Chat.Completions.ChatCompletionTool;
3
+ export declare const runTestTool: ({ testName, fileName, }: {
4
+ testName: string;
5
+ fileName: string;
6
+ }) => Promise<{
7
+ hasTestPassed: boolean;
8
+ summaryJson: any;
9
+ }>;
10
+ //# sourceMappingURL=test-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run.d.ts","sourceRoot":"","sources":["../../src/tools/test-run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kBAqB5C,CAAC;AAEF,eAAO,MAAM,WAAW;cAIZ,MAAM;cACN,MAAM;;;;EASjB,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runTestTool = exports.schema = void 0;
4
+ const test_run_1 = require("@empiricalrun/test-run");
5
+ exports.schema = {
6
+ type: "function",
7
+ function: {
8
+ name: "runTest",
9
+ description: "Run a test",
10
+ parameters: {
11
+ type: "object",
12
+ properties: {
13
+ testName: {
14
+ type: "string",
15
+ description: "The name of the test to run",
16
+ },
17
+ fileName: {
18
+ type: "string",
19
+ description: "The name of the file where the test is located. File name must end with .spec.ts",
20
+ },
21
+ },
22
+ required: ["testName", "fileName"],
23
+ },
24
+ },
25
+ };
26
+ const runTestTool = async ({ testName, fileName, }) => {
27
+ // TODO: Remove this hardcoded project name
28
+ const result = await (0, test_run_1.runSingleTest)({
29
+ testName,
30
+ fileName,
31
+ projects: ["chromium"],
32
+ });
33
+ return result;
34
+ };
35
+ exports.runTestTool = runTestTool;
@@ -0,0 +1,2 @@
1
+ export declare function getGitDiff(filepath: string): string;
2
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGitDiff = void 0;
4
+ const child_process_1 = require("child_process");
5
+ function getGitDiff(filepath) {
6
+ const diff = (0, child_process_1.execSync)(`git diff ${filepath}`, {
7
+ encoding: "utf-8",
8
+ });
9
+ return diff;
10
+ }
11
+ exports.getGitDiff = getGitDiff;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-gen",
3
- "version": "0.47.3",
3
+ "version": "0.47.4",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -75,7 +75,8 @@
75
75
  "typescript": "^5.3.3",
76
76
  "@empiricalrun/llm": "^0.9.36",
77
77
  "@empiricalrun/r2-uploader": "^0.3.8",
78
- "@empiricalrun/reporter": "^0.23.1"
78
+ "@empiricalrun/reporter": "^0.23.1",
79
+ "@empiricalrun/test-run": "^0.7.1"
79
80
  },
80
81
  "devDependencies": {
81
82
  "@playwright/test": "1.47.1",