@empiricalrun/playwright-utils 0.22.7 → 0.23.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 +11 -0
- package/bundled/test-gen/actions/assert.d.ts +4 -0
- package/bundled/test-gen/actions/assert.d.ts.map +1 -0
- package/bundled/test-gen/actions/assert.js +50 -0
- package/bundled/test-gen/actions/click.d.ts +4 -0
- package/bundled/test-gen/actions/click.d.ts.map +1 -0
- package/bundled/test-gen/actions/click.js +51 -0
- package/bundled/test-gen/actions/constants/index.d.ts +2 -0
- package/bundled/test-gen/actions/constants/index.d.ts.map +1 -0
- package/bundled/test-gen/actions/constants/index.js +4 -0
- package/bundled/test-gen/actions/done.d.ts +4 -0
- package/bundled/test-gen/actions/done.d.ts.map +1 -0
- package/bundled/test-gen/actions/done.js +30 -0
- package/bundled/test-gen/actions/fill.d.ts +4 -0
- package/bundled/test-gen/actions/fill.d.ts.map +1 -0
- package/bundled/test-gen/actions/fill.js +82 -0
- package/bundled/test-gen/actions/goto.d.ts +4 -0
- package/bundled/test-gen/actions/goto.d.ts.map +1 -0
- package/bundled/test-gen/actions/goto.js +47 -0
- package/bundled/test-gen/actions/hover.d.ts +4 -0
- package/bundled/test-gen/actions/hover.d.ts.map +1 -0
- package/bundled/test-gen/actions/hover.js +51 -0
- package/bundled/test-gen/actions/index.d.ts +30 -0
- package/bundled/test-gen/actions/index.d.ts.map +1 -0
- package/bundled/test-gen/actions/index.js +159 -0
- package/bundled/test-gen/actions/next-task.d.ts +53 -0
- package/bundled/test-gen/actions/next-task.d.ts.map +1 -0
- package/bundled/test-gen/actions/next-task.js +58 -0
- package/bundled/test-gen/actions/press.d.ts +4 -0
- package/bundled/test-gen/actions/press.d.ts.map +1 -0
- package/bundled/test-gen/actions/press.js +56 -0
- package/bundled/test-gen/actions/skill.d.ts +21 -0
- package/bundled/test-gen/actions/skill.d.ts.map +1 -0
- package/bundled/test-gen/actions/skill.js +127 -0
- package/bundled/test-gen/actions/text-content.d.ts +4 -0
- package/bundled/test-gen/actions/text-content.d.ts.map +1 -0
- package/bundled/test-gen/actions/text-content.js +58 -0
- package/bundled/test-gen/actions/utils/index.d.ts +10 -0
- package/bundled/test-gen/actions/utils/index.d.ts.map +1 -0
- package/bundled/test-gen/actions/utils/index.js +109 -0
- package/bundled/test-gen/agent/browsing/index.d.ts +15 -0
- package/bundled/test-gen/agent/browsing/index.d.ts.map +1 -0
- package/bundled/test-gen/agent/browsing/index.js +68 -0
- package/bundled/test-gen/agent/browsing/run.d.ts +19 -0
- package/bundled/test-gen/agent/browsing/run.d.ts.map +1 -0
- package/bundled/test-gen/agent/browsing/run.js +88 -0
- package/bundled/test-gen/agent/browsing/utils.d.ts +41 -0
- package/bundled/test-gen/agent/browsing/utils.d.ts.map +1 -0
- package/bundled/test-gen/agent/browsing/utils.js +406 -0
- package/bundled/test-gen/agent/codegen/create-test-block.d.ts +9 -0
- package/bundled/test-gen/agent/codegen/create-test-block.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/create-test-block.js +63 -0
- package/bundled/test-gen/agent/codegen/fix-ts-errors.d.ts +13 -0
- package/bundled/test-gen/agent/codegen/fix-ts-errors.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/fix-ts-errors.js +80 -0
- package/bundled/test-gen/agent/codegen/generate-code-apply-changes.d.ts +13 -0
- package/bundled/test-gen/agent/codegen/generate-code-apply-changes.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/generate-code-apply-changes.js +381 -0
- package/bundled/test-gen/agent/codegen/lexical-scoped-vars.d.ts +9 -0
- package/bundled/test-gen/agent/codegen/lexical-scoped-vars.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/lexical-scoped-vars.js +56 -0
- package/bundled/test-gen/agent/codegen/repo-edit.d.ts +23 -0
- package/bundled/test-gen/agent/codegen/repo-edit.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/repo-edit.js +86 -0
- package/bundled/test-gen/agent/codegen/run.d.ts +16 -0
- package/bundled/test-gen/agent/codegen/run.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/run.js +119 -0
- package/bundled/test-gen/agent/codegen/skills-retriever.d.ts +26 -0
- package/bundled/test-gen/agent/codegen/skills-retriever.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/skills-retriever.js +93 -0
- package/bundled/test-gen/agent/codegen/test-update-feedback.d.ts +12 -0
- package/bundled/test-gen/agent/codegen/test-update-feedback.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/test-update-feedback.js +50 -0
- package/bundled/test-gen/agent/codegen/types.d.ts +25 -0
- package/bundled/test-gen/agent/codegen/types.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/types.js +8 -0
- package/bundled/test-gen/agent/codegen/update-flow.d.ts +34 -0
- package/bundled/test-gen/agent/codegen/update-flow.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/update-flow.js +300 -0
- package/bundled/test-gen/agent/codegen/use-skill.d.ts +11 -0
- package/bundled/test-gen/agent/codegen/use-skill.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/use-skill.js +54 -0
- package/bundled/test-gen/agent/codegen/utils.d.ts +126 -0
- package/bundled/test-gen/agent/codegen/utils.d.ts.map +1 -0
- package/bundled/test-gen/agent/codegen/utils.js +416 -0
- package/bundled/test-gen/agent/diagnosis-agent/index.d.ts +18 -0
- package/bundled/test-gen/agent/diagnosis-agent/index.d.ts.map +1 -0
- package/bundled/test-gen/agent/diagnosis-agent/index.js +105 -0
- package/bundled/test-gen/agent/diagnosis-agent/strict-mode-violation.d.ts +9 -0
- package/bundled/test-gen/agent/diagnosis-agent/strict-mode-violation.d.ts.map +1 -0
- package/bundled/test-gen/agent/diagnosis-agent/strict-mode-violation.js +31 -0
- package/bundled/test-gen/agent/enrich-prompt/index.d.ts +12 -0
- package/bundled/test-gen/agent/enrich-prompt/index.d.ts.map +1 -0
- package/bundled/test-gen/agent/enrich-prompt/index.js +81 -0
- package/bundled/test-gen/agent/enrich-prompt/utils.d.ts +6 -0
- package/bundled/test-gen/agent/enrich-prompt/utils.d.ts.map +1 -0
- package/bundled/test-gen/agent/enrich-prompt/utils.js +12 -0
- package/bundled/test-gen/agent/infer-agent/index.d.ts +10 -0
- package/bundled/test-gen/agent/infer-agent/index.d.ts.map +1 -0
- package/bundled/test-gen/agent/infer-agent/index.js +70 -0
- package/bundled/test-gen/agent/master/action-tool-calls.d.ts +42 -0
- package/bundled/test-gen/agent/master/action-tool-calls.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/action-tool-calls.js +87 -0
- package/bundled/test-gen/agent/master/browser-tests/fixtures.d.ts +9 -0
- package/bundled/test-gen/agent/master/browser-tests/fixtures.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/browser-tests/fixtures.js +33 -0
- package/bundled/test-gen/agent/master/browser-tests/index.spec.d.ts +2 -0
- package/bundled/test-gen/agent/master/browser-tests/index.spec.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/browser-tests/index.spec.js +113 -0
- package/bundled/test-gen/agent/master/browser-tests/skills.spec.d.ts +2 -0
- package/bundled/test-gen/agent/master/browser-tests/skills.spec.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/browser-tests/skills.spec.js +109 -0
- package/bundled/test-gen/agent/master/element-annotation.d.ts +30 -0
- package/bundled/test-gen/agent/master/element-annotation.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/element-annotation.js +195 -0
- package/bundled/test-gen/agent/master/execute-browser-action.d.ts +24 -0
- package/bundled/test-gen/agent/master/execute-browser-action.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/execute-browser-action.js +124 -0
- package/bundled/test-gen/agent/master/execute-skill-action.d.ts +11 -0
- package/bundled/test-gen/agent/master/execute-skill-action.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/execute-skill-action.js +25 -0
- package/bundled/test-gen/agent/master/icon-descriptor/index.d.ts +22 -0
- package/bundled/test-gen/agent/master/icon-descriptor/index.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/icon-descriptor/index.js +250 -0
- package/bundled/test-gen/agent/master/icon-descriptor/normalize-svg.d.ts +2 -0
- package/bundled/test-gen/agent/master/icon-descriptor/normalize-svg.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/icon-descriptor/normalize-svg.js +248 -0
- package/bundled/test-gen/agent/master/next-action.d.ts +22 -0
- package/bundled/test-gen/agent/master/next-action.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/next-action.js +104 -0
- package/bundled/test-gen/agent/master/planner.d.ts +15 -0
- package/bundled/test-gen/agent/master/planner.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/planner.js +144 -0
- package/bundled/test-gen/agent/master/run.d.ts +15 -0
- package/bundled/test-gen/agent/master/run.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/run.js +274 -0
- package/bundled/test-gen/agent/master/scroller.d.ts +15 -0
- package/bundled/test-gen/agent/master/scroller.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/scroller.js +375 -0
- package/bundled/test-gen/agent/master/with-hints.d.ts +17 -0
- package/bundled/test-gen/agent/master/with-hints.d.ts.map +1 -0
- package/bundled/test-gen/agent/master/with-hints.js +102 -0
- package/bundled/test-gen/agent/planner/run-time-planner.d.ts +15 -0
- package/bundled/test-gen/agent/planner/run-time-planner.d.ts.map +1 -0
- package/bundled/test-gen/agent/planner/run-time-planner.js +100 -0
- package/bundled/test-gen/agent/planner/run.d.ts +7 -0
- package/bundled/test-gen/agent/planner/run.d.ts.map +1 -0
- package/bundled/test-gen/agent/planner/run.js +127 -0
- package/bundled/test-gen/agent/utils.d.ts +2 -0
- package/bundled/test-gen/agent/utils.d.ts.map +1 -0
- package/bundled/test-gen/agent/utils.js +12 -0
- package/bundled/test-gen/bin/index.d.ts +3 -0
- package/bundled/test-gen/bin/index.d.ts.map +1 -0
- package/bundled/test-gen/bin/index.js +212 -0
- package/bundled/test-gen/bin/logger/index.d.ts +14 -0
- package/bundled/test-gen/bin/logger/index.d.ts.map +1 -0
- package/bundled/test-gen/bin/logger/index.js +57 -0
- package/bundled/test-gen/bin/utils/context.d.ts +13 -0
- package/bundled/test-gen/bin/utils/context.d.ts.map +1 -0
- package/bundled/test-gen/bin/utils/context.js +67 -0
- package/bundled/test-gen/bin/utils/fs/index.d.ts +6 -0
- package/bundled/test-gen/bin/utils/fs/index.d.ts.map +1 -0
- package/bundled/test-gen/bin/utils/fs/index.js +63 -0
- package/bundled/test-gen/bin/utils/index.d.ts +9 -0
- package/bundled/test-gen/bin/utils/index.d.ts.map +1 -0
- package/bundled/test-gen/bin/utils/index.js +64 -0
- package/bundled/test-gen/bin/utils/platform/web/index.d.ts +78 -0
- package/bundled/test-gen/bin/utils/platform/web/index.d.ts.map +1 -0
- package/bundled/test-gen/bin/utils/platform/web/index.js +544 -0
- package/bundled/test-gen/bin/utils/platform/web/test-files/ts-path-import-validate.d.ts +2 -0
- package/bundled/test-gen/bin/utils/platform/web/test-files/ts-path-import-validate.d.ts.map +1 -0
- package/bundled/test-gen/bin/utils/platform/web/test-files/ts-path-import-validate.js +7 -0
- package/bundled/test-gen/bin/utils/scenarios/index.d.ts +6 -0
- package/bundled/test-gen/bin/utils/scenarios/index.d.ts.map +1 -0
- package/bundled/test-gen/bin/utils/scenarios/index.js +57 -0
- package/bundled/test-gen/browser-injected-scripts/annotate-elements.js +615 -0
- package/bundled/test-gen/browser-injected-scripts/annotate-elements.spec.d.ts +2 -0
- package/bundled/test-gen/browser-injected-scripts/annotate-elements.spec.d.ts.map +1 -0
- package/bundled/test-gen/browser-injected-scripts/annotate-elements.spec.js +207 -0
- package/bundled/test-gen/browser-injected-scripts/annotate-elements.spec.ts +332 -0
- package/bundled/test-gen/constants/index.d.ts +7 -0
- package/bundled/test-gen/constants/index.d.ts.map +1 -0
- package/bundled/test-gen/constants/index.js +18 -0
- package/bundled/test-gen/errors/index.d.ts +5 -0
- package/bundled/test-gen/errors/index.d.ts.map +1 -0
- package/bundled/test-gen/errors/index.js +9 -0
- package/bundled/test-gen/evals/add-scenario-agent.evals.d.ts +4 -0
- package/bundled/test-gen/evals/add-scenario-agent.evals.d.ts.map +1 -0
- package/bundled/test-gen/evals/add-scenario-agent.evals.js +44 -0
- package/bundled/test-gen/evals/append-create-test-agent.evals.d.ts +4 -0
- package/bundled/test-gen/evals/append-create-test-agent.evals.d.ts.map +1 -0
- package/bundled/test-gen/evals/append-create-test-agent.evals.js +117 -0
- package/bundled/test-gen/evals/fetch-pom-skills-agent.evals.d.ts +4 -0
- package/bundled/test-gen/evals/fetch-pom-skills-agent.evals.d.ts.map +1 -0
- package/bundled/test-gen/evals/fetch-pom-skills-agent.evals.js +36 -0
- package/bundled/test-gen/evals/infer-master-or-code-agent.evals.d.ts +4 -0
- package/bundled/test-gen/evals/infer-master-or-code-agent.evals.d.ts.map +1 -0
- package/bundled/test-gen/evals/infer-master-or-code-agent.evals.js +22 -0
- package/bundled/test-gen/evals/master-agent.evals.d.ts +4 -0
- package/bundled/test-gen/evals/master-agent.evals.d.ts.map +1 -0
- package/bundled/test-gen/evals/master-agent.evals.js +35 -0
- package/bundled/test-gen/evals/type.d.ts +12 -0
- package/bundled/test-gen/evals/type.d.ts.map +1 -0
- package/bundled/test-gen/evals/type.js +2 -0
- package/bundled/test-gen/evals/update-scenario-agent.evals.d.ts +4 -0
- package/bundled/test-gen/evals/update-scenario-agent.evals.d.ts.map +1 -0
- package/bundled/test-gen/evals/update-scenario-agent.evals.js +47 -0
- package/bundled/test-gen/file/client.d.ts +14 -0
- package/bundled/test-gen/file/client.d.ts.map +1 -0
- package/bundled/test-gen/file/client.js +48 -0
- package/bundled/test-gen/file/server.d.ts +13 -0
- package/bundled/test-gen/file/server.d.ts.map +1 -0
- package/bundled/test-gen/file/server.js +52 -0
- package/bundled/test-gen/human-in-the-loop/cli.d.ts +2 -0
- package/bundled/test-gen/human-in-the-loop/cli.d.ts.map +1 -0
- package/bundled/test-gen/human-in-the-loop/cli.js +24 -0
- package/bundled/test-gen/human-in-the-loop/index.d.ts +12 -0
- package/bundled/test-gen/human-in-the-loop/index.d.ts.map +1 -0
- package/bundled/test-gen/human-in-the-loop/index.js +30 -0
- package/bundled/test-gen/human-in-the-loop/ipc.d.ts +4 -0
- package/bundled/test-gen/human-in-the-loop/ipc.d.ts.map +1 -0
- package/bundled/test-gen/human-in-the-loop/ipc.js +47 -0
- package/bundled/test-gen/index.d.ts +4 -0
- package/bundled/test-gen/index.d.ts.map +1 -0
- package/bundled/test-gen/index.js +55 -0
- package/bundled/test-gen/package.json +106 -0
- package/bundled/test-gen/page/index.d.ts +11 -0
- package/bundled/test-gen/page/index.d.ts.map +1 -0
- package/bundled/test-gen/page/index.js +16 -0
- package/bundled/test-gen/prompts/lib/ts-transformer.d.ts +4 -0
- package/bundled/test-gen/prompts/lib/ts-transformer.d.ts.map +1 -0
- package/bundled/test-gen/prompts/lib/ts-transformer.js +92 -0
- package/bundled/test-gen/reporter/index.d.ts +33 -0
- package/bundled/test-gen/reporter/index.d.ts.map +1 -0
- package/bundled/test-gen/reporter/index.js +161 -0
- package/bundled/test-gen/session/index.d.ts +20 -0
- package/bundled/test-gen/session/index.d.ts.map +1 -0
- package/bundled/test-gen/session/index.js +105 -0
- package/bundled/test-gen/test-build/index.d.ts +10 -0
- package/bundled/test-gen/test-build/index.d.ts.map +1 -0
- package/bundled/test-gen/test-build/index.js +30 -0
- package/bundled/test-gen/types/index.d.ts +69 -0
- package/bundled/test-gen/types/index.d.ts.map +1 -0
- package/bundled/test-gen/types/index.js +2 -0
- package/bundled/test-gen/uploader/index.d.ts +26 -0
- package/bundled/test-gen/uploader/index.d.ts.map +1 -0
- package/bundled/test-gen/uploader/index.js +102 -0
- package/bundled/test-gen/utils/env.d.ts +2 -0
- package/bundled/test-gen/utils/env.d.ts.map +1 -0
- package/bundled/test-gen/utils/env.js +9 -0
- package/bundled/test-gen/utils/exec.d.ts +4 -0
- package/bundled/test-gen/utils/exec.d.ts.map +1 -0
- package/bundled/test-gen/utils/exec.js +45 -0
- package/bundled/test-gen/utils/file.d.ts +2 -0
- package/bundled/test-gen/utils/file.d.ts.map +1 -0
- package/bundled/test-gen/utils/file.js +25 -0
- package/bundled/test-gen/utils/html.d.ts +4 -0
- package/bundled/test-gen/utils/html.d.ts.map +1 -0
- package/bundled/test-gen/utils/html.js +46 -0
- package/bundled/test-gen/utils/index.d.ts +2 -0
- package/bundled/test-gen/utils/index.d.ts.map +1 -0
- package/bundled/test-gen/utils/index.js +5 -0
- package/bundled/test-gen/utils/pw-test.d.ts +3 -0
- package/bundled/test-gen/utils/pw-test.d.ts.map +1 -0
- package/bundled/test-gen/utils/pw-test.js +26 -0
- package/bundled/test-gen/utils/slug.d.ts +2 -0
- package/bundled/test-gen/utils/slug.d.ts.map +1 -0
- package/bundled/test-gen/utils/slug.js +18 -0
- package/bundled/test-gen/utils/string.d.ts +2 -0
- package/bundled/test-gen/utils/string.d.ts.map +1 -0
- package/bundled/test-gen/utils/string.js +9 -0
- package/dist/overlay-tests/click.spec.js +1 -1
- package/package.json +3 -3
- package/scripts/prepare-publish.js +42 -0
|
@@ -0,0 +1,55 @@
|
|
|
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.createTest = void 0;
|
|
7
|
+
const llm_1 = require("@empiricalrun/llm");
|
|
8
|
+
const run_1 = require("./agent/master/run");
|
|
9
|
+
const scenarios_1 = require("./bin/utils/scenarios");
|
|
10
|
+
const client_1 = __importDefault(require("./file/client"));
|
|
11
|
+
const reporter_1 = require("./reporter");
|
|
12
|
+
const session_1 = require("./session");
|
|
13
|
+
const pw_test_1 = require("./utils/pw-test");
|
|
14
|
+
const flushEvents = async () => {
|
|
15
|
+
await (0, llm_1.flushAllTraces)();
|
|
16
|
+
};
|
|
17
|
+
process.on("beforeExit", async () => await flushEvents());
|
|
18
|
+
process.on("exit", async () => await flushEvents());
|
|
19
|
+
process.on("SIGINT", async () => await flushEvents());
|
|
20
|
+
process.on("SIGTERM", async () => await flushEvents());
|
|
21
|
+
async function createTest(task, page, scope) {
|
|
22
|
+
const testConfigArg = process.env.TEST_GEN_TOKEN;
|
|
23
|
+
const testGenConfig = (0, scenarios_1.loadTestConfigs)(testConfigArg);
|
|
24
|
+
(0, reporter_1.setReporterConfig)({
|
|
25
|
+
projectRepoName: testGenConfig.options?.metadata.projectRepoName,
|
|
26
|
+
testSessionId: testGenConfig.options?.metadata.testSessionId,
|
|
27
|
+
generationId: testGenConfig.options?.metadata.generationId,
|
|
28
|
+
});
|
|
29
|
+
(0, session_1.setSessionDetails)({
|
|
30
|
+
sessionId: testGenConfig.options?.metadata.testSessionId,
|
|
31
|
+
generationId: testGenConfig.options?.metadata.generationId,
|
|
32
|
+
testCaseId: testGenConfig.testCase.id,
|
|
33
|
+
projectRepoName: testGenConfig.options?.metadata.projectRepoName,
|
|
34
|
+
});
|
|
35
|
+
const fileService = new client_1.default();
|
|
36
|
+
const { testCase, specPath } = testGenConfig;
|
|
37
|
+
const { code, importPaths } = await (0, run_1.createTestUsingMasterAgent)({
|
|
38
|
+
testCase,
|
|
39
|
+
specPath,
|
|
40
|
+
page,
|
|
41
|
+
task,
|
|
42
|
+
options: {
|
|
43
|
+
...testGenConfig.options,
|
|
44
|
+
},
|
|
45
|
+
scopeVars: scope,
|
|
46
|
+
});
|
|
47
|
+
await fileService.updateTest({
|
|
48
|
+
task,
|
|
49
|
+
generatedCode: code,
|
|
50
|
+
importPaths,
|
|
51
|
+
});
|
|
52
|
+
// skip the rest of the test once generation is over
|
|
53
|
+
await (0, pw_test_1.skipTest)();
|
|
54
|
+
}
|
|
55
|
+
exports.createTest = createTest;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@empiricalrun/test-gen",
|
|
3
|
+
"version": "0.46.11",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"registry": "https://registry.npmjs.org/",
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"bin": {
|
|
9
|
+
"@empiricalrun/test-gen": "dist/bin/index.js"
|
|
10
|
+
},
|
|
11
|
+
"main": "dist/index.js",
|
|
12
|
+
"exports": {
|
|
13
|
+
"./agent/infer-agent": {
|
|
14
|
+
"types": "./dist/agent/infer-agent/index.d.ts",
|
|
15
|
+
"default": "./dist/agent/infer-agent/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./agent/master/run": {
|
|
18
|
+
"types": "./dist/agent/master/run.d.ts",
|
|
19
|
+
"default": "./dist/agent/master/run.js"
|
|
20
|
+
},
|
|
21
|
+
"./agent/master/planner": {
|
|
22
|
+
"types": "./dist/agent/master/planner.d.ts",
|
|
23
|
+
"default": "./dist/agent/master/planner.js"
|
|
24
|
+
},
|
|
25
|
+
"./agent/enrich-prompt": {
|
|
26
|
+
"types": "./dist/agent/enrich-prompt/index.d.ts",
|
|
27
|
+
"default": "./dist/agent/enrich-prompt/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./types": {
|
|
30
|
+
"types": "./dist/types/index.d.ts",
|
|
31
|
+
"default": "./dist/types/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./utils": {
|
|
34
|
+
"types": "./dist/utils/index.d.ts",
|
|
35
|
+
"default": "./dist/utils/index.js"
|
|
36
|
+
},
|
|
37
|
+
".": {
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"default": "./dist/index.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/empirical-run/empirical.git"
|
|
45
|
+
},
|
|
46
|
+
"author": "Empirical Team <hey@empirical.run>",
|
|
47
|
+
"scripts": {
|
|
48
|
+
"dev": "tspc --build --watch",
|
|
49
|
+
"build": "tspc --build && cp -r src/browser-injected-scripts dist",
|
|
50
|
+
"clean": "tspc --build --clean",
|
|
51
|
+
"lint": "eslint .",
|
|
52
|
+
"test": "vitest run",
|
|
53
|
+
"test-browser": "pnpm build && RUNNING_BROWSER_TESTS_FOR_TEST_GEN=1 npx playwright test",
|
|
54
|
+
"test:watch": "vitest",
|
|
55
|
+
"test:watch-files": "vitest $0 --watch"
|
|
56
|
+
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@actions/core": "^1.10.1",
|
|
59
|
+
"@babel/parser": "^7.26.3",
|
|
60
|
+
"@empiricalrun/llm": "workspace:^",
|
|
61
|
+
"@empiricalrun/r2-uploader": "workspace:^",
|
|
62
|
+
"@empiricalrun/reporter": "workspace:^",
|
|
63
|
+
"@types/sanitize-html": "^2.11.0",
|
|
64
|
+
"commander": "^12.1.0",
|
|
65
|
+
"detect-port": "^1.6.1",
|
|
66
|
+
"dotenv": "^16.4.5",
|
|
67
|
+
"eslint": "^8.57.0",
|
|
68
|
+
"express": "^4.19.2",
|
|
69
|
+
"fs-extra": "^11.2.0",
|
|
70
|
+
"google-auth-library": "^9.10.0",
|
|
71
|
+
"google-spreadsheet": "^4.1.2",
|
|
72
|
+
"ignore": "^5.3.1",
|
|
73
|
+
"inquirer": "^12.4.2",
|
|
74
|
+
"jsdom": "^26.0.0",
|
|
75
|
+
"lodash.isequal": "^4.5.0",
|
|
76
|
+
"md5": "^2.3.0",
|
|
77
|
+
"mime": "^4.0.4",
|
|
78
|
+
"minimatch": "^10.0.1",
|
|
79
|
+
"nanoid": "^5.0.7",
|
|
80
|
+
"openai": "4.67.0",
|
|
81
|
+
"picocolors": "^1.0.1",
|
|
82
|
+
"prettier": "^3.2.5",
|
|
83
|
+
"remove-markdown": "^0.5.5",
|
|
84
|
+
"sanitize-html": "^2.13.0",
|
|
85
|
+
"slugify": "^1.6.6",
|
|
86
|
+
"ts-morph": "^23.0.0",
|
|
87
|
+
"tsx": "^4.16.2",
|
|
88
|
+
"typescript": "^5.3.3"
|
|
89
|
+
},
|
|
90
|
+
"devDependencies": {
|
|
91
|
+
"@empiricalrun/shared-types": "workspace:*",
|
|
92
|
+
"@playwright/test": "1.47.1",
|
|
93
|
+
"@types/detect-port": "^1.3.5",
|
|
94
|
+
"@types/express": "^4.17.21",
|
|
95
|
+
"@types/fs-extra": "^11.0.4",
|
|
96
|
+
"@types/http-server": "^0.12.4",
|
|
97
|
+
"@types/js-levenshtein": "^1.1.3",
|
|
98
|
+
"@types/jsdom": "^21.1.7",
|
|
99
|
+
"@types/lodash.isequal": "^4.5.8",
|
|
100
|
+
"@types/md5": "^2.3.5",
|
|
101
|
+
"http-server": "^14.1.1",
|
|
102
|
+
"js-levenshtein": "^1.1.6",
|
|
103
|
+
"playwright": "1.47.1",
|
|
104
|
+
"ts-patch": "^3.3.0"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Page } from "playwright";
|
|
2
|
+
export declare class TestGenPage {
|
|
3
|
+
pwPageInstance: Page;
|
|
4
|
+
name: string;
|
|
5
|
+
constructor(pwPageInstance: Page, name: string);
|
|
6
|
+
updatePage({ page, name }: {
|
|
7
|
+
page: Page;
|
|
8
|
+
name: string;
|
|
9
|
+
}): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/page/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,qBAAa,WAAW;IAEb,cAAc,EAAE,IAAI;IACpB,IAAI,EAAE,MAAM;gBADZ,cAAc,EAAE,IAAI,EACpB,IAAI,EAAE,MAAM;IAGrB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAIxD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestGenPage = void 0;
|
|
4
|
+
class TestGenPage {
|
|
5
|
+
pwPageInstance;
|
|
6
|
+
name;
|
|
7
|
+
constructor(pwPageInstance, name) {
|
|
8
|
+
this.pwPageInstance = pwPageInstance;
|
|
9
|
+
this.name = name;
|
|
10
|
+
}
|
|
11
|
+
updatePage({ page, name }) {
|
|
12
|
+
this.pwPageInstance = page;
|
|
13
|
+
this.name = name;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.TestGenPage = TestGenPage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-transformer.d.ts","sourceRoot":"","sources":["../../../src/prompts/lib/ts-transformer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,iBAAS,2BAA2B,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAsG3E;AAED,eAAe,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const fs = __importStar(require("fs"));
|
|
27
|
+
const path = __importStar(require("path"));
|
|
28
|
+
const ts = __importStar(require("typescript"));
|
|
29
|
+
function createHandlebarsTransformer() {
|
|
30
|
+
return (context) => {
|
|
31
|
+
// Map to store the mapping between original import identifiers and generated variable names
|
|
32
|
+
const importToVarMap = new Map();
|
|
33
|
+
const visitor = (node) => {
|
|
34
|
+
// Handle references to the imported identifiers
|
|
35
|
+
if (ts.isIdentifier(node) &&
|
|
36
|
+
importToVarMap.has(node.text) &&
|
|
37
|
+
!ts.isPropertyAccessExpression(node.parent)) {
|
|
38
|
+
return ts.factory.createIdentifier(importToVarMap.get(node.text));
|
|
39
|
+
}
|
|
40
|
+
return ts.visitEachChild(node, visitor, context);
|
|
41
|
+
};
|
|
42
|
+
return (sourceFile) => {
|
|
43
|
+
// Reset the import map for each source file
|
|
44
|
+
importToVarMap.clear();
|
|
45
|
+
// Keep track of generated variable names to avoid duplicates
|
|
46
|
+
let templateCounter = 0;
|
|
47
|
+
// Create a new statements array by iterating over the existing ones
|
|
48
|
+
const newStatements = sourceFile.statements.flatMap((stmt) => {
|
|
49
|
+
// Check if the statement is an import declaration for a .handlebars file
|
|
50
|
+
if (ts.isImportDeclaration(stmt) &&
|
|
51
|
+
ts.isStringLiteral(stmt.moduleSpecifier) &&
|
|
52
|
+
stmt.moduleSpecifier.text.endsWith(".handlebars")) {
|
|
53
|
+
// Ensure we have a default import (an identifier)
|
|
54
|
+
if (stmt.importClause &&
|
|
55
|
+
stmt.importClause.name &&
|
|
56
|
+
ts.isIdentifier(stmt.importClause.name)) {
|
|
57
|
+
const localIdentifier = stmt.importClause.name;
|
|
58
|
+
// Generate a unique variable name
|
|
59
|
+
const generatedVarName = `promptTemplate_${templateCounter++}`;
|
|
60
|
+
// Store the mapping between import identifier and generated variable name
|
|
61
|
+
importToVarMap.set(localIdentifier.text, generatedVarName);
|
|
62
|
+
// Resolve the path to the handlebars file
|
|
63
|
+
const containingDir = path.dirname(sourceFile.fileName);
|
|
64
|
+
const templatePath = path.resolve(containingDir, stmt.moduleSpecifier.text);
|
|
65
|
+
try {
|
|
66
|
+
// Read the handlebars file content
|
|
67
|
+
const content = fs.readFileSync(templatePath, "utf-8");
|
|
68
|
+
// Create a variable declaration that binds the generated name to the content
|
|
69
|
+
const variableStmt = ts.factory.createVariableStatement(undefined, ts.factory.createVariableDeclarationList([
|
|
70
|
+
ts.factory.createVariableDeclaration(ts.factory.createIdentifier(generatedVarName), undefined, undefined, ts.factory.createStringLiteral(content)),
|
|
71
|
+
], ts.NodeFlags.Const));
|
|
72
|
+
// Replace the import declaration with the variable statement
|
|
73
|
+
return [variableStmt];
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.error(`Error reading handlebars file ${templatePath}:`, error);
|
|
77
|
+
// If reading the file fails, keep the original import
|
|
78
|
+
return [stmt];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// For all other statements, keep them as is
|
|
83
|
+
return [stmt];
|
|
84
|
+
});
|
|
85
|
+
// Create updated source file with the new statements
|
|
86
|
+
const updatedSourceFile = ts.factory.updateSourceFile(sourceFile, newStatements);
|
|
87
|
+
// Visit the entire source file to transform references
|
|
88
|
+
return ts.visitNode(updatedSourceFile, visitor);
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
exports.default = createHandlebarsTransformer;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Reporter } from "@empiricalrun/reporter";
|
|
2
|
+
type ReporterConfigType = {
|
|
3
|
+
testSessionId: number;
|
|
4
|
+
generationId: number;
|
|
5
|
+
projectRepoName: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function getReporter(): Reporter | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* function will upload videos and json summary of test results to r2 and report them to reporter.
|
|
10
|
+
* method won't throw error if it fails to report
|
|
11
|
+
* @param {{
|
|
12
|
+
* projectRepoName: string;
|
|
13
|
+
* }} {
|
|
14
|
+
* projectRepoName
|
|
15
|
+
* }
|
|
16
|
+
* @returns Promise<void> returns void
|
|
17
|
+
*/
|
|
18
|
+
export declare function setReporterConfig(config: ReporterConfigType): void;
|
|
19
|
+
export declare class TestGenUpdatesReporter {
|
|
20
|
+
private repoDir;
|
|
21
|
+
constructor();
|
|
22
|
+
sendGenTrace(trace: string): Promise<void>;
|
|
23
|
+
reportGenAssets({ projectRepoName, testName, }: {
|
|
24
|
+
projectRepoName: string;
|
|
25
|
+
testName: string;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
sendCurrentView(buffer: Buffer): Promise<void>;
|
|
28
|
+
sendMessage(message: string): Promise<void>;
|
|
29
|
+
sendLogUrl(message: string): Promise<void>;
|
|
30
|
+
sendAgentTraceUrl(message: string): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporter/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAa5E,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAKF,wBAAgB,WAAW,IAAI,QAAQ,GAAG,SAAS,CAUlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAGlE;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAS;;IAKlB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,eAAe,CAAC,EACpB,eAAe,EACf,QAAQ,GACT,EAAE;QACD,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAiDK,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8C9C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWxD"}
|
|
@@ -0,0 +1,161 @@
|
|
|
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.TestGenUpdatesReporter = exports.setReporterConfig = exports.getReporter = void 0;
|
|
7
|
+
const r2_uploader_1 = require("@empiricalrun/r2-uploader");
|
|
8
|
+
const reporter_1 = require("@empiricalrun/reporter");
|
|
9
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const logger_1 = require("../bin/logger");
|
|
12
|
+
const uploader_1 = require("../uploader");
|
|
13
|
+
let reporterInstance = undefined;
|
|
14
|
+
let reporterConfig = undefined;
|
|
15
|
+
function getReporter() {
|
|
16
|
+
// if no config is set, return undefined
|
|
17
|
+
if (!reporterConfig) {
|
|
18
|
+
console.warn("initialising reporter without any config");
|
|
19
|
+
}
|
|
20
|
+
// initialise once config is set
|
|
21
|
+
if (!reporterInstance && reporterConfig) {
|
|
22
|
+
reporterInstance = new reporter_1.Reporter(reporterConfig);
|
|
23
|
+
}
|
|
24
|
+
return reporterInstance;
|
|
25
|
+
}
|
|
26
|
+
exports.getReporter = getReporter;
|
|
27
|
+
/**
|
|
28
|
+
* function will upload videos and json summary of test results to r2 and report them to reporter.
|
|
29
|
+
* method won't throw error if it fails to report
|
|
30
|
+
* @param {{
|
|
31
|
+
* projectRepoName: string;
|
|
32
|
+
* }} {
|
|
33
|
+
* projectRepoName
|
|
34
|
+
* }
|
|
35
|
+
* @returns Promise<void> returns void
|
|
36
|
+
*/
|
|
37
|
+
function setReporterConfig(config) {
|
|
38
|
+
console.info("initialised reporter config");
|
|
39
|
+
reporterConfig = config;
|
|
40
|
+
}
|
|
41
|
+
exports.setReporterConfig = setReporterConfig;
|
|
42
|
+
class TestGenUpdatesReporter {
|
|
43
|
+
repoDir;
|
|
44
|
+
constructor() {
|
|
45
|
+
this.repoDir = process.cwd();
|
|
46
|
+
}
|
|
47
|
+
async sendGenTrace(trace) {
|
|
48
|
+
console.log("trace", trace);
|
|
49
|
+
// upload trace to r2 and report it to reporter
|
|
50
|
+
}
|
|
51
|
+
async reportGenAssets({ projectRepoName, testName, }) {
|
|
52
|
+
const logger = new logger_1.CustomLogger();
|
|
53
|
+
try {
|
|
54
|
+
if (!(0, uploader_1.checkIfResultsUploadAllowed)()) {
|
|
55
|
+
logger.log("Skipped uploading generated test video");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.log("Uploading assets for the test genearation");
|
|
59
|
+
const { videoUrls, traceFiles } = await (0, uploader_1.uploadTestResultsUsingPrjRepo)({
|
|
60
|
+
projectRepoName,
|
|
61
|
+
testName,
|
|
62
|
+
repoDir: this.repoDir,
|
|
63
|
+
});
|
|
64
|
+
const reporter = getReporter();
|
|
65
|
+
const message = {
|
|
66
|
+
type: "video",
|
|
67
|
+
videoUrls,
|
|
68
|
+
};
|
|
69
|
+
await Promise.allSettled([
|
|
70
|
+
...(videoUrls.length
|
|
71
|
+
? [
|
|
72
|
+
reporter?.report(new reporter_1.ProcessLogMessageBuilder({
|
|
73
|
+
type: "video",
|
|
74
|
+
message: JSON.stringify(message),
|
|
75
|
+
})),
|
|
76
|
+
]
|
|
77
|
+
: []),
|
|
78
|
+
...(traceFiles.length
|
|
79
|
+
? [
|
|
80
|
+
reporter?.report(new reporter_1.ProcessLogMessageBuilder({
|
|
81
|
+
type: "pw-trace",
|
|
82
|
+
message: JSON.stringify({
|
|
83
|
+
type: "trace",
|
|
84
|
+
traceFiles,
|
|
85
|
+
}),
|
|
86
|
+
})),
|
|
87
|
+
]
|
|
88
|
+
: []),
|
|
89
|
+
]);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
logger.error("Failed to report test results");
|
|
93
|
+
console.error(err);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async sendCurrentView(buffer) {
|
|
97
|
+
const logger = new logger_1.CustomLogger();
|
|
98
|
+
if (!(0, uploader_1.checkIfResultsUploadAllowed)()) {
|
|
99
|
+
logger.log("Skipped uploading current view screenshot");
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (!reporterConfig?.projectRepoName) {
|
|
103
|
+
logger.log("Reporter config is not set skipping screenshot uploads.");
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
// upload current screenshot to r2 and report it to reporter
|
|
108
|
+
if (!fs_extra_1.default.existsSync(path_1.default.join(this.repoDir, "gen-assets"))) {
|
|
109
|
+
await fs_extra_1.default.mkdir(this.repoDir, "gen-assets");
|
|
110
|
+
}
|
|
111
|
+
await fs_extra_1.default.writeFile(path_1.default.join(this.repoDir, "gen-assets", `current-view-${Date.now()}.png`), buffer);
|
|
112
|
+
const uploadDir = (0, uploader_1.getUploadPathForRun)(reporterConfig?.projectRepoName);
|
|
113
|
+
const files = await (0, r2_uploader_1.uploadDirectory)({
|
|
114
|
+
sourceDir: path_1.default.join(this.repoDir, "gen-assets"),
|
|
115
|
+
destinationDir: uploadDir,
|
|
116
|
+
uploadBucket: uploader_1.UPLOAD_BUCKET,
|
|
117
|
+
});
|
|
118
|
+
const filePath = Object.keys(files)[0];
|
|
119
|
+
const relativeFilePath = filePath.replace(path_1.default.join(this.repoDir, "gen-assets"), "");
|
|
120
|
+
const url = `${uploader_1.UPLOAD_DOMAIN}/${uploadDir}${relativeFilePath}`;
|
|
121
|
+
await getReporter()?.report(new reporter_1.ProcessLogMessageBuilder({
|
|
122
|
+
type: "current-snapshot",
|
|
123
|
+
message: JSON.stringify({ type: "current-view", url }),
|
|
124
|
+
}));
|
|
125
|
+
await fs_extra_1.default.rmdir(path_1.default.join(this.repoDir, "gen-assets"), {
|
|
126
|
+
recursive: true,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
console.warn("Failed to upload current view screenshot", e);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async sendMessage(message) {
|
|
134
|
+
const reporter = getReporter();
|
|
135
|
+
if (reporter) {
|
|
136
|
+
await reporter.report(new reporter_1.ProcessLogMessageBuilder({
|
|
137
|
+
type: "message",
|
|
138
|
+
message,
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async sendLogUrl(message) {
|
|
143
|
+
const reporter = getReporter();
|
|
144
|
+
if (reporter) {
|
|
145
|
+
await reporter.report(new reporter_1.ProcessLogMessageBuilder({
|
|
146
|
+
type: "log-url",
|
|
147
|
+
message,
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async sendAgentTraceUrl(message) {
|
|
152
|
+
const reporter = getReporter();
|
|
153
|
+
if (reporter) {
|
|
154
|
+
await reporter.report(new reporter_1.ProcessLogMessageBuilder({
|
|
155
|
+
type: "agent-trace",
|
|
156
|
+
message,
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.TestGenUpdatesReporter = TestGenUpdatesReporter;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare function getSessionDetails(): {
|
|
2
|
+
generationId: number | undefined;
|
|
3
|
+
sessionId: number | undefined;
|
|
4
|
+
testUrl: string | undefined;
|
|
5
|
+
version: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function setSessionDetails({ sessionId, generationId, testCaseId, projectRepoName, }: {
|
|
8
|
+
sessionId: number;
|
|
9
|
+
generationId: number;
|
|
10
|
+
testCaseId: number;
|
|
11
|
+
projectRepoName: string;
|
|
12
|
+
}): void;
|
|
13
|
+
export declare function shouldStopSession(): Promise<boolean>;
|
|
14
|
+
export declare function getSessionState(): Promise<"started" | "completed" | "request_complete">;
|
|
15
|
+
export declare function endSession(): Promise<void>;
|
|
16
|
+
export { getSessionDetails };
|
|
17
|
+
export declare function updateSessionStatus(sessionId: number, payload: {
|
|
18
|
+
status: string;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAmBA,iBAAS,iBAAiB;;;;;EAOzB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,GAChB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,QAIA;AAED,wBAAsB,iBAAiB,qBAItC;AAED,wBAAsB,eAAe,0DA0BpC;AAED,wBAAsB,UAAU,kBAyB/B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;CAChB,iBAmBF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
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.updateSessionStatus = exports.getSessionDetails = exports.endSession = exports.getSessionState = exports.shouldStopSession = exports.setSessionDetails = void 0;
|
|
7
|
+
const package_json_1 = __importDefault(require("../../package.json"));
|
|
8
|
+
const env_1 = require("../utils/env");
|
|
9
|
+
const sessionDetails = {
|
|
10
|
+
sessionId: undefined,
|
|
11
|
+
version: package_json_1.default.version,
|
|
12
|
+
generationId: undefined,
|
|
13
|
+
testUrl: undefined,
|
|
14
|
+
};
|
|
15
|
+
const DASHBOARD_DOMAIN = process.env.DASHBOARD_DOMAIN ||
|
|
16
|
+
((0, env_1.isRunningOnCloud)() ? "https://dash.empirical.run" : "");
|
|
17
|
+
function getSessionDetails() {
|
|
18
|
+
return {
|
|
19
|
+
generationId: sessionDetails.generationId,
|
|
20
|
+
sessionId: sessionDetails.sessionId,
|
|
21
|
+
testUrl: sessionDetails.testUrl,
|
|
22
|
+
version: package_json_1.default.version,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.getSessionDetails = getSessionDetails;
|
|
26
|
+
function setSessionDetails({ sessionId, generationId, testCaseId, projectRepoName, }) {
|
|
27
|
+
sessionDetails.sessionId = sessionId;
|
|
28
|
+
sessionDetails.generationId = generationId;
|
|
29
|
+
sessionDetails.testUrl = `${process.env.DASHBOARD_DOMAIN ?? ""}/${projectRepoName}/test-cases/${testCaseId}`;
|
|
30
|
+
}
|
|
31
|
+
exports.setSessionDetails = setSessionDetails;
|
|
32
|
+
async function shouldStopSession() {
|
|
33
|
+
const sessionState = await getSessionState();
|
|
34
|
+
const shouldStopSession = sessionState !== "started";
|
|
35
|
+
return shouldStopSession;
|
|
36
|
+
}
|
|
37
|
+
exports.shouldStopSession = shouldStopSession;
|
|
38
|
+
async function getSessionState() {
|
|
39
|
+
// if there is no dashboard domain to connect to or session details missing, then continue the generation session.
|
|
40
|
+
if (!DASHBOARD_DOMAIN ||
|
|
41
|
+
!sessionDetails.sessionId ||
|
|
42
|
+
!sessionDetails.generationId) {
|
|
43
|
+
return "started";
|
|
44
|
+
}
|
|
45
|
+
const apiPath = `${DASHBOARD_DOMAIN}/api/sessions/${sessionDetails.sessionId}/generations/${sessionDetails.generationId}/state`;
|
|
46
|
+
const response = await fetch(apiPath, {
|
|
47
|
+
method: "GET",
|
|
48
|
+
headers: {
|
|
49
|
+
"Content-Type": "application/json",
|
|
50
|
+
Authorization: "weQPMWKT",
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const generationStateData = (await response.json());
|
|
54
|
+
// TODO: fix this heirarchy
|
|
55
|
+
return generationStateData.data.state.state;
|
|
56
|
+
}
|
|
57
|
+
exports.getSessionState = getSessionState;
|
|
58
|
+
async function endSession() {
|
|
59
|
+
if (!DASHBOARD_DOMAIN) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!sessionDetails.sessionId || !sessionDetails.generationId) {
|
|
63
|
+
console.warn("Session details missing, skipping session end");
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const apiPath = `${DASHBOARD_DOMAIN}/api/sessions/${sessionDetails.sessionId}/generations/${sessionDetails.generationId}/state`;
|
|
67
|
+
try {
|
|
68
|
+
await fetch(apiPath, {
|
|
69
|
+
method: "POST",
|
|
70
|
+
headers: {
|
|
71
|
+
"Content-Type": "application/json",
|
|
72
|
+
Authorization: "weQPMWKT",
|
|
73
|
+
},
|
|
74
|
+
body: JSON.stringify({
|
|
75
|
+
state: {
|
|
76
|
+
state: "completed",
|
|
77
|
+
},
|
|
78
|
+
}),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error("Failed to end session:", error);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.endSession = endSession;
|
|
86
|
+
async function updateSessionStatus(sessionId, payload) {
|
|
87
|
+
if (!DASHBOARD_DOMAIN) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const body = JSON.stringify(payload);
|
|
92
|
+
await fetch(`${DASHBOARD_DOMAIN}/api/sessions/${sessionId}`, {
|
|
93
|
+
method: "PATCH",
|
|
94
|
+
headers: {
|
|
95
|
+
"Content-Type": "application/json",
|
|
96
|
+
Authorization: "weQPMWKT",
|
|
97
|
+
},
|
|
98
|
+
body,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error("Failed to update session status:", error);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.updateSessionStatus = updateSessionStatus;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Build } from "@empiricalrun/shared-types";
|
|
2
|
+
/**
|
|
3
|
+
* method to download the build from the URL provided in the build object
|
|
4
|
+
* this is only used in cases like chrome extension as of yet.
|
|
5
|
+
* @export
|
|
6
|
+
* @param {Build} build
|
|
7
|
+
* @return {*} {Promise<void>}
|
|
8
|
+
*/
|
|
9
|
+
export declare function downloadBuild(build: Build): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-build/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAUnD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/D"}
|