@yasserkhanorg/e2e-agents 0.8.1 → 0.9.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/dist/agentic/fix_loop.d.ts +26 -0
- package/dist/agentic/fix_loop.d.ts.map +1 -0
- package/dist/agentic/fix_loop.js +95 -0
- package/dist/agentic/playwright_runner.d.ts +43 -0
- package/dist/agentic/playwright_runner.d.ts.map +1 -0
- package/dist/agentic/playwright_runner.js +165 -0
- package/dist/agentic/runner.d.ts +25 -0
- package/dist/agentic/runner.d.ts.map +1 -0
- package/dist/agentic/runner.js +207 -0
- package/dist/agentic/types.d.ts +62 -0
- package/dist/agentic/types.d.ts.map +1 -0
- package/dist/agentic/types.js +4 -0
- package/dist/cli.js +130 -0
- package/dist/esm/agentic/fix_loop.js +90 -0
- package/dist/esm/agentic/playwright_runner.js +161 -0
- package/dist/esm/agentic/runner.js +204 -0
- package/dist/esm/agentic/types.js +3 -0
- package/dist/esm/cli.js +131 -1
- package/dist/esm/index.js +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/package.json +1 -1
package/dist/esm/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
3
3
|
// See LICENSE.txt for license information.
|
|
4
|
-
import { appendFileSync, existsSync, readFileSync } from 'fs';
|
|
4
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
5
5
|
import { dirname, join, resolve } from 'path';
|
|
6
6
|
import { resolveConfig } from './agent/config.js';
|
|
7
7
|
import { AnthropicProvider } from './anthropic_provider.js';
|
|
@@ -17,6 +17,9 @@ import { captureTraceabilityInput } from './agent/traceability_capture.js';
|
|
|
17
17
|
import { runTargetedSpecHeal } from './agent/pipeline.js';
|
|
18
18
|
import { extractPlaywrightUnstableSpecs } from './agent/playwright_report.js';
|
|
19
19
|
import { runPipeline } from './pipeline/orchestrator.js';
|
|
20
|
+
import { LLMProviderFactory } from './provider_factory.js';
|
|
21
|
+
import { runAgenticGeneration } from './agentic/runner.js';
|
|
22
|
+
import { loadOrBuildApiSurface } from './knowledge/api_surface.js';
|
|
20
23
|
const CONFIG_CANDIDATES = ['e2e-ai-agents.config.json', '.e2e-ai-agents.config.json'];
|
|
21
24
|
function findConfigUpwards(startDir) {
|
|
22
25
|
if (!startDir) {
|
|
@@ -67,6 +70,7 @@ function printUsage() {
|
|
|
67
70
|
' e2e-ai-agents feedback --path <app-root> --feedback-input <json>',
|
|
68
71
|
' e2e-ai-agents traceability-capture --path <app-root> --traceability-report <json>',
|
|
69
72
|
' e2e-ai-agents traceability-ingest --path <app-root> --traceability-input <json>',
|
|
73
|
+
' e2e-ai-agents generate [--scenarios <path|json>] [--max-attempts <n>] [--dry-run]',
|
|
70
74
|
' e2e-ai-agents analyze --path <app-root> [--tests-root <path>] [--since <ref>] [--generate] [--generate-output <dir>] [--heal] [--heal-report <json>]',
|
|
71
75
|
' e2e-ai-agents llm-health',
|
|
72
76
|
'',
|
|
@@ -129,6 +133,8 @@ function printUsage() {
|
|
|
129
133
|
' --pr-base <branch> PR base branch for finalize-generated-tests',
|
|
130
134
|
' (auto-heal-pr defaults to base=master)',
|
|
131
135
|
' --dry-run Preview actions without mutating git state',
|
|
136
|
+
' --max-attempts <n> Max fix attempts per scenario (default: 3)',
|
|
137
|
+
' --scenarios <path|json> Scenarios file/JSON for generate command',
|
|
132
138
|
' --apply Apply data-testid patches and generate tests',
|
|
133
139
|
' (legacy shortcut; prefer approve-and-generate)',
|
|
134
140
|
' --help Show help',
|
|
@@ -144,6 +150,7 @@ function parseArgs(argv) {
|
|
|
144
150
|
|| command === 'plan'
|
|
145
151
|
|| command === 'heal'
|
|
146
152
|
|| command === 'suggest'
|
|
153
|
+
|| command === 'generate'
|
|
147
154
|
|| command === 'finalize-generated-tests'
|
|
148
155
|
|| command === 'feedback'
|
|
149
156
|
|| command === 'traceability-capture'
|
|
@@ -159,6 +166,16 @@ function parseArgs(argv) {
|
|
|
159
166
|
parsed.help = true;
|
|
160
167
|
continue;
|
|
161
168
|
}
|
|
169
|
+
if (arg === '--max-attempts' && next) {
|
|
170
|
+
parsed.maxAttempts = parseInt(next, 10);
|
|
171
|
+
i += 1;
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (arg === '--scenarios' && next) {
|
|
175
|
+
parsed.generateScenarios = next;
|
|
176
|
+
i += 1;
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
162
179
|
if (arg === '--apply') {
|
|
163
180
|
parsed.apply = true;
|
|
164
181
|
continue;
|
|
@@ -979,6 +996,119 @@ async function main() {
|
|
|
979
996
|
}
|
|
980
997
|
return;
|
|
981
998
|
}
|
|
999
|
+
if (args.command === 'generate') {
|
|
1000
|
+
const reportRoot = config.testsRoot || config.path;
|
|
1001
|
+
// Load scenarios from --scenarios flag or plan-report.json
|
|
1002
|
+
let scenarios = [];
|
|
1003
|
+
if (args.generateScenarios) {
|
|
1004
|
+
let raw;
|
|
1005
|
+
if (existsSync(args.generateScenarios)) {
|
|
1006
|
+
raw = JSON.parse(readFileSync(args.generateScenarios, 'utf-8'));
|
|
1007
|
+
}
|
|
1008
|
+
else {
|
|
1009
|
+
raw = JSON.parse(args.generateScenarios);
|
|
1010
|
+
}
|
|
1011
|
+
if (!Array.isArray(raw)) {
|
|
1012
|
+
// eslint-disable-next-line no-console
|
|
1013
|
+
console.error('--scenarios must be a JSON array of ScenarioInput objects.');
|
|
1014
|
+
process.exit(1);
|
|
1015
|
+
}
|
|
1016
|
+
for (const item of raw) {
|
|
1017
|
+
if (!item.id || !item.name || !Array.isArray(item.scenarios) || !item.routeFamily || !item.priority) {
|
|
1018
|
+
// eslint-disable-next-line no-console
|
|
1019
|
+
console.error(`Invalid scenario: each must have id, name, scenarios[], routeFamily, priority.`);
|
|
1020
|
+
process.exit(1);
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
scenarios = raw;
|
|
1024
|
+
}
|
|
1025
|
+
else {
|
|
1026
|
+
const planReportPath = join(reportRoot, '.e2e-ai-agents', 'plan-report.json');
|
|
1027
|
+
if (!existsSync(planReportPath)) {
|
|
1028
|
+
// eslint-disable-next-line no-console
|
|
1029
|
+
console.error('No plan report found. Run `plan` first or pass --scenarios.');
|
|
1030
|
+
process.exit(1);
|
|
1031
|
+
}
|
|
1032
|
+
const planReport = JSON.parse(readFileSync(planReportPath, 'utf-8'));
|
|
1033
|
+
scenarios = (planReport.gapDetails || []).map((gap) => ({
|
|
1034
|
+
id: gap.id,
|
|
1035
|
+
name: gap.id,
|
|
1036
|
+
scenarios: gap.missingScenarios || gap.reasons || ['Verify core user flow'],
|
|
1037
|
+
routeFamily: gap.id.split('.')[0] || gap.id,
|
|
1038
|
+
priority: 'P1',
|
|
1039
|
+
}));
|
|
1040
|
+
}
|
|
1041
|
+
if (scenarios.length === 0) {
|
|
1042
|
+
// eslint-disable-next-line no-console
|
|
1043
|
+
console.log('No scenarios to generate tests for.');
|
|
1044
|
+
return;
|
|
1045
|
+
}
|
|
1046
|
+
let apiSurface;
|
|
1047
|
+
try {
|
|
1048
|
+
apiSurface = loadOrBuildApiSurface(reportRoot, config.apiSurface);
|
|
1049
|
+
}
|
|
1050
|
+
catch {
|
|
1051
|
+
// eslint-disable-next-line no-console
|
|
1052
|
+
console.warn('Could not load API surface catalog. Generation will use generic selectors.');
|
|
1053
|
+
}
|
|
1054
|
+
const provider = await LLMProviderFactory.createFromEnv();
|
|
1055
|
+
// eslint-disable-next-line no-console
|
|
1056
|
+
console.log(`Generating tests for ${scenarios.length} scenario(s)...`);
|
|
1057
|
+
const summary = await runAgenticGeneration({
|
|
1058
|
+
scenarios,
|
|
1059
|
+
config: {
|
|
1060
|
+
maxAttempts: args.maxAttempts || 3,
|
|
1061
|
+
project: args.pipelineProject || 'chrome',
|
|
1062
|
+
baseUrl: args.pipelineBaseUrl,
|
|
1063
|
+
testTimeoutMs: 120000,
|
|
1064
|
+
testsRoot: reportRoot,
|
|
1065
|
+
dryRun: args.dryRun,
|
|
1066
|
+
},
|
|
1067
|
+
provider,
|
|
1068
|
+
apiSurface,
|
|
1069
|
+
});
|
|
1070
|
+
// eslint-disable-next-line no-console
|
|
1071
|
+
console.log(`\nAgentic Generation Summary:`);
|
|
1072
|
+
// eslint-disable-next-line no-console
|
|
1073
|
+
console.log(` Generated: ${summary.totalGenerated}`);
|
|
1074
|
+
// eslint-disable-next-line no-console
|
|
1075
|
+
console.log(` Passed: ${summary.totalPassed}`);
|
|
1076
|
+
// eslint-disable-next-line no-console
|
|
1077
|
+
console.log(` Failed: ${summary.totalFailed}`);
|
|
1078
|
+
// eslint-disable-next-line no-console
|
|
1079
|
+
console.log(` Attempts: ${summary.totalAttempts}`);
|
|
1080
|
+
// eslint-disable-next-line no-console
|
|
1081
|
+
console.log(` Duration: ${(summary.durationMs / 1000).toFixed(1)}s`);
|
|
1082
|
+
for (const result of summary.results) {
|
|
1083
|
+
const icon = result.status === 'passed' ? 'PASS' : result.status === 'skipped' ? 'SKIP' : 'FAIL';
|
|
1084
|
+
// eslint-disable-next-line no-console
|
|
1085
|
+
console.log(` [${icon}] ${result.scenarioSource} (${result.attempts} attempts)`);
|
|
1086
|
+
if (result.status === 'passed' || result.status === 'skipped') {
|
|
1087
|
+
// eslint-disable-next-line no-console
|
|
1088
|
+
console.log(` ${result.specPath}`);
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
if (summary.warnings.length > 0) {
|
|
1092
|
+
// eslint-disable-next-line no-console
|
|
1093
|
+
console.log(`\nWarnings:`);
|
|
1094
|
+
for (const w of summary.warnings) {
|
|
1095
|
+
// eslint-disable-next-line no-console
|
|
1096
|
+
console.warn(` - ${w}`);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
const summaryDir = join(reportRoot, '.e2e-ai-agents');
|
|
1100
|
+
if (!existsSync(summaryDir)) {
|
|
1101
|
+
mkdirSync(summaryDir, { recursive: true });
|
|
1102
|
+
}
|
|
1103
|
+
const summaryPath = join(summaryDir, 'agentic-summary.json');
|
|
1104
|
+
writeFileSync(summaryPath, JSON.stringify(summary, null, 2), 'utf-8');
|
|
1105
|
+
// eslint-disable-next-line no-console
|
|
1106
|
+
console.log(`\nReport: ${summaryPath}`);
|
|
1107
|
+
if (summary.totalFailed > 0) {
|
|
1108
|
+
process.exit(1);
|
|
1109
|
+
}
|
|
1110
|
+
return;
|
|
1111
|
+
}
|
|
982
1112
|
// eslint-disable-next-line no-console
|
|
983
1113
|
console.error(`Unknown command: ${args.command}`);
|
|
984
1114
|
printUsage();
|
package/dist/esm/index.js
CHANGED
|
@@ -28,3 +28,5 @@ export { buildHealPrompt, buildQualityFixPrompt } from './prompts/heal.js';
|
|
|
28
28
|
export { loadRouteFamilyManifest, bindFilesToFamilies, getCypressSpecDirsForBinding, getPriorityForBinding, getUserFlowsForBinding } from './knowledge/route_families.js';
|
|
29
29
|
export { buildApiSurface, loadOrBuildApiSurface } from './knowledge/api_surface.js';
|
|
30
30
|
export { buildSpecIndex, getSpecsForFamily } from './knowledge/spec_index.js';
|
|
31
|
+
// Agentic generation
|
|
32
|
+
export { runAgenticGeneration } from './agentic/runner.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -51,4 +51,7 @@ export { buildSpecIndex, getSpecsForFamily } from './knowledge/spec_index.js';
|
|
|
51
51
|
export type { SpecIndex, SpecEntry } from './knowledge/spec_index.js';
|
|
52
52
|
export type { FlowImpact, FlowPriority, FlowCoverage, FlagHit, BlastRadius } from './agent/types.js';
|
|
53
53
|
export type { PlanReport } from './agent/plan.js';
|
|
54
|
+
export { runAgenticGeneration } from './agentic/runner.js';
|
|
55
|
+
export type { ScenarioInput, AgenticRunOptions } from './agentic/runner.js';
|
|
56
|
+
export type { AgenticConfig, AgenticResult, AgenticSummary, PlaywrightRunResult, TestFailure } from './agentic/types.js';
|
|
54
57
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
3
3
|
// See LICENSE.txt for license information.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.getSpecsForFamily = exports.buildSpecIndex = exports.loadOrBuildApiSurface = exports.buildApiSurface = exports.getUserFlowsForBinding = exports.getPriorityForBinding = exports.getCypressSpecDirsForBinding = exports.bindFilesToFamilies = exports.loadRouteFamilyManifest = exports.buildQualityFixPrompt = exports.buildHealPrompt = exports.renderHealMarkdown = exports.resolveHealTargets = exports.healFromReport = exports.runHealStage = exports.detectHallucinatedMethods = exports.parseGenerationResponse = exports.buildGenerationPrompt = exports.runGenerationStage = exports.runPipeline = exports.captureTraceabilityInput = exports.ingestTraceabilityInput = exports.finalizeGeneratedTests = exports.readCalibration = exports.appendFeedbackAndRecompute = exports.buildPlanFromImpact = exports.extractScenarios = exports.getPartialGaps = exports.getGaps = exports.analyzeImpactV2 = exports.captureTraceability = exports.ingestTraceability = exports.handoffGeneratedTests = exports.recommendTestsDeterministic = exports.analyzeImpactDeterministic = exports.validateProviderSetup = exports.LLMProviderFactory = exports.CustomProvider = exports.checkOpenAISetup = exports.OpenAIProvider = exports.checkOllamaSetup = exports.OllamaProvider = exports.checkAnthropicSetup = exports.AnthropicProvider = exports.UnsupportedCapabilityError = exports.LLMProviderError = void 0;
|
|
5
|
+
exports.runAgenticGeneration = exports.getSpecsForFamily = exports.buildSpecIndex = exports.loadOrBuildApiSurface = exports.buildApiSurface = exports.getUserFlowsForBinding = exports.getPriorityForBinding = exports.getCypressSpecDirsForBinding = exports.bindFilesToFamilies = exports.loadRouteFamilyManifest = exports.buildQualityFixPrompt = exports.buildHealPrompt = exports.renderHealMarkdown = exports.resolveHealTargets = exports.healFromReport = exports.runHealStage = exports.detectHallucinatedMethods = exports.parseGenerationResponse = exports.buildGenerationPrompt = exports.runGenerationStage = exports.runPipeline = exports.captureTraceabilityInput = exports.ingestTraceabilityInput = exports.finalizeGeneratedTests = exports.readCalibration = exports.appendFeedbackAndRecompute = exports.buildPlanFromImpact = exports.extractScenarios = exports.getPartialGaps = exports.getGaps = exports.analyzeImpactV2 = exports.captureTraceability = exports.ingestTraceability = exports.handoffGeneratedTests = exports.recommendTestsDeterministic = exports.analyzeImpactDeterministic = exports.validateProviderSetup = exports.LLMProviderFactory = exports.CustomProvider = exports.checkOpenAISetup = exports.OpenAIProvider = exports.checkOllamaSetup = exports.OllamaProvider = exports.checkAnthropicSetup = exports.AnthropicProvider = exports.UnsupportedCapabilityError = exports.LLMProviderError = void 0;
|
|
6
6
|
var provider_interface_js_1 = require("./provider_interface.js");
|
|
7
7
|
Object.defineProperty(exports, "LLMProviderError", { enumerable: true, get: function () { return provider_interface_js_1.LLMProviderError; } });
|
|
8
8
|
Object.defineProperty(exports, "UnsupportedCapabilityError", { enumerable: true, get: function () { return provider_interface_js_1.UnsupportedCapabilityError; } });
|
|
@@ -77,3 +77,6 @@ Object.defineProperty(exports, "loadOrBuildApiSurface", { enumerable: true, get:
|
|
|
77
77
|
var spec_index_js_1 = require("./knowledge/spec_index.js");
|
|
78
78
|
Object.defineProperty(exports, "buildSpecIndex", { enumerable: true, get: function () { return spec_index_js_1.buildSpecIndex; } });
|
|
79
79
|
Object.defineProperty(exports, "getSpecsForFamily", { enumerable: true, get: function () { return spec_index_js_1.getSpecsForFamily; } });
|
|
80
|
+
// Agentic generation
|
|
81
|
+
var runner_js_1 = require("./agentic/runner.js");
|
|
82
|
+
Object.defineProperty(exports, "runAgenticGeneration", { enumerable: true, get: function () { return runner_js_1.runAgenticGeneration; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yasserkhanorg/e2e-agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Pluggable LLM provider library for AI-powered test automation. Use Claude, Ollama, or your own LLM. Integrate with Playwright, Jest, or any test framework. MCP server for test agents, cost tracking, and hybrid provider mode.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|