@yasserkhanorg/e2e-agents 0.8.0 → 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/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();
@@ -386,13 +386,14 @@ export function renderCiSummaryMarkdown(plan) {
386
386
  lines.push(`### 💡 New behavior detected in ${flowsWithAdvisory.length} covered feature${flowsWithAdvisory.length !== 1 ? 's' : ''} — consider adding tests`);
387
387
  lines.push('');
388
388
  for (const flow of flowsWithAdvisory) {
389
- // Green [!TIP] box: just the name (always visible, compact)
390
- lines.push(`> [!TIP]`);
391
- lines.push(`> **${flow.name}** · ${flow.priority}`);
392
- lines.push('');
393
- // Specs + scenarios: collapsible below
394
- const coverageSummary = flow.coveredBy.join(', ');
395
- lines.push(`<details><summary>${coverageSummary} click to see suggested scenarios</summary>`);
389
+ const specParts = [];
390
+ for (const s of flow.coveredBy) {
391
+ // Strip "N Playwright spec(s)" "N PW" and "N Cypress spec(s)" → "N Cy"
392
+ specParts.push(s.replace(/ Playwright spec\(s\)/, ' PW').replace(/ Cypress spec\(s\)/, ' Cy'));
393
+ }
394
+ const specSummary = specParts.length > 0 ? ` — ${specParts.join(' · ')}` : '';
395
+ const scenarioCount = flow.advisoryScenarios.length;
396
+ lines.push(`<details><summary>💡 <strong>${flow.name}</strong> · ${flow.priority}${specSummary} · ${scenarioCount} scenario${scenarioCount !== 1 ? 's' : ''}</summary>`);
396
397
  lines.push('');
397
398
  for (const s of flow.advisoryScenarios) {
398
399
  lines.push(`- [ ] ${s}`);
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
@@ -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.8.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",