@yasserkhanorg/e2e-agents 0.7.1 → 0.7.3
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/agent/plan.d.ts +2 -0
- package/dist/agent/plan.d.ts.map +1 -1
- package/dist/engine/ai_enrichment.d.ts.map +1 -1
- package/dist/engine/ai_enrichment.js +4 -2
- package/dist/engine/impact_engine.d.ts.map +1 -1
- package/dist/engine/impact_engine.js +5 -4
- package/dist/engine/plan_builder.d.ts.map +1 -1
- package/dist/engine/plan_builder.js +23 -10
- package/dist/esm/engine/ai_enrichment.js +4 -2
- package/dist/esm/engine/impact_engine.js +5 -4
- package/dist/esm/engine/plan_builder.js +23 -10
- package/package.json +1 -1
package/dist/agent/plan.d.ts
CHANGED
package/dist/agent/plan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/agent/plan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/agent/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai_enrichment.d.ts","sourceRoot":"","sources":["../../src/engine/ai_enrichment.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAC,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAGpE,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,mBAAmB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAClF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAChC,mBAAmB,EAAE,YAAY,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"ai_enrichment.d.ts","sourceRoot":"","sources":["../../src/engine/ai_enrichment.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAC,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAGpE,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,mBAAmB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAClF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAChC,mBAAmB,EAAE,YAAY,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAsJD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkIlG"}
|
|
@@ -70,9 +70,11 @@ function buildPrompt(options) {
|
|
|
70
70
|
id: '<featureId or familyId from the deterministic list above>',
|
|
71
71
|
name: '<human-readable flow name>',
|
|
72
72
|
priority: 'P0|P1|P2',
|
|
73
|
-
reasons: [
|
|
73
|
+
reasons: [
|
|
74
|
+
'<EXACTLY 1-2 sentences describing user-visible behavioral impact. Focus on what a user would observe or do differently — NOT file names, NOT implementation details. Example: "Users can now open search results in a detached browser window that persists independently.">',
|
|
75
|
+
],
|
|
74
76
|
coveredBy: ['<spec file paths that cover this flow>'],
|
|
75
|
-
missingScenarios: ['<
|
|
77
|
+
missingScenarios: ['<concrete user action to test, phrased as a scenario title. E.g. "Thread popout opens and displays replies correctly">'],
|
|
76
78
|
},
|
|
77
79
|
],
|
|
78
80
|
unboundFileAnalysis: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact_engine.d.ts","sourceRoot":"","sources":["../../src/engine/impact_engine.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGR,eAAe,EAClB,MAAM,gCAAgC,CAAC;AASxC,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"impact_engine.d.ts","sourceRoot":"","sources":["../../src/engine/impact_engine.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGR,eAAe,EAClB,MAAM,gCAAgC,CAAC;AASxC,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAwGD,wBAAgB,aAAa,CACzB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,mBAAmB,GAC7B,YAAY,CA2Ed;AAYD;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,EAAE,CAI/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,eAAe,EAAE,CAItE"}
|
|
@@ -73,12 +73,13 @@ function resolveCypressSpecs(cypressRoot, specDirs) {
|
|
|
73
73
|
return specs;
|
|
74
74
|
}
|
|
75
75
|
function computeCoverageStatus(pwSpecs, cySpecs) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
// Playwright is the primary framework — having Playwright specs is sufficient for "covered".
|
|
77
|
+
// Cypress-only = partial (advisory: legacy coverage, migrate when possible).
|
|
78
|
+
// Neither = uncovered (must add tests).
|
|
79
|
+
if (pwSpecs.length > 0) {
|
|
79
80
|
return 'covered';
|
|
80
81
|
}
|
|
81
|
-
if (
|
|
82
|
+
if (cySpecs.length > 0) {
|
|
82
83
|
return 'partial';
|
|
83
84
|
}
|
|
84
85
|
return 'uncovered';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan_builder.d.ts","sourceRoot":"","sources":["../../src/engine/plan_builder.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAC,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAG3D,OAAO,KAAK,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAIrB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAC,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC;AAqOxD,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,YAAY,EACpB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EACtC,YAAY,CAAC,EAAE,kBAAkB,GAClC,UAAU,
|
|
1
|
+
{"version":3,"file":"plan_builder.d.ts","sourceRoot":"","sources":["../../src/engine/plan_builder.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAC,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAG3D,OAAO,KAAK,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAIrB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAC,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAC,CAAC;AAqOxD,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,YAAY,EACpB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EACtC,YAAY,CAAC,EAAE,kBAAkB,GAClC,UAAU,CAgIZ;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAMzE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgEhE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,SAAiC,GAAG,MAAM,CAMvH"}
|
|
@@ -226,9 +226,9 @@ function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
226
226
|
const aiFeature = f.featureId
|
|
227
227
|
? (aiFeatureByFeatureId.get(f.featureId) ?? aiFeatureByFamilyId.get(f.familyId))
|
|
228
228
|
: aiFeatureByFamilyId.get(f.familyId);
|
|
229
|
-
const baseReasons = [`No
|
|
229
|
+
const baseReasons = [`No E2E tests found for ${label}`];
|
|
230
230
|
const reasons = aiFeature && aiFeature.aiReasons.length > 0
|
|
231
|
-
? [...baseReasons, ...aiFeature.aiReasons]
|
|
231
|
+
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
232
232
|
: baseReasons;
|
|
233
233
|
const missingScenarios = aiFeature && aiFeature.aiMissingScenarios.length > 0
|
|
234
234
|
? aiFeature.aiMissingScenarios
|
|
@@ -243,17 +243,15 @@ function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
243
243
|
source: aiFeature ? 'ai+deterministic' : 'deterministic',
|
|
244
244
|
};
|
|
245
245
|
});
|
|
246
|
-
// Add partial gaps as advisory info
|
|
246
|
+
// Add partial gaps as advisory info (Cypress-only coverage — Playwright migration recommended)
|
|
247
247
|
for (const f of partialGaps) {
|
|
248
|
-
const coverageType = f.playwrightSpecs.length > 0 ? 'Cypress' : 'Playwright';
|
|
249
|
-
const hasOpposite = f.playwrightSpecs.length > 0 ? 'Playwright' : 'Cypress';
|
|
250
248
|
const label = featureLabel(f);
|
|
251
249
|
const aiFeature = f.featureId
|
|
252
250
|
? (aiFeatureByFeatureId.get(f.featureId) ?? aiFeatureByFamilyId.get(f.familyId))
|
|
253
251
|
: aiFeatureByFamilyId.get(f.familyId);
|
|
254
|
-
const baseReasons = [
|
|
252
|
+
const baseReasons = [`${label} is covered by Cypress only — consider adding Playwright tests`];
|
|
255
253
|
const reasons = aiFeature && aiFeature.aiReasons.length > 0
|
|
256
|
-
? [...baseReasons, ...aiFeature.aiReasons]
|
|
254
|
+
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
257
255
|
: baseReasons;
|
|
258
256
|
gapDetails.push({
|
|
259
257
|
id: label,
|
|
@@ -280,6 +278,8 @@ function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
280
278
|
const p0 = impact.impactedFeatures.filter((f) => f.priority === 'P0').length;
|
|
281
279
|
const p1 = impact.impactedFeatures.filter((f) => f.priority === 'P1').length;
|
|
282
280
|
const p2 = impact.impactedFeatures.filter((f) => f.priority === 'P2').length;
|
|
281
|
+
const coveredCount = impact.impactedFeatures.filter((f) => f.coverageStatus === 'covered').length;
|
|
282
|
+
const partialCount = impact.impactedFeatures.filter((f) => f.coverageStatus === 'partial').length;
|
|
283
283
|
const runId = `plan-${Date.now().toString(36)}`;
|
|
284
284
|
const planSource = aiEnrichment ? 'ai+deterministic' : 'impact';
|
|
285
285
|
return {
|
|
@@ -307,6 +307,8 @@ function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
307
307
|
p0Flows: p0,
|
|
308
308
|
p1Flows: p1,
|
|
309
309
|
p2Flows: p2,
|
|
310
|
+
coveredFlows: coveredCount,
|
|
311
|
+
partialFlows: partialCount,
|
|
310
312
|
uncoveredP0P1Flows: gaps.length,
|
|
311
313
|
warnings: impact.warnings.length,
|
|
312
314
|
},
|
|
@@ -321,15 +323,26 @@ function writePlanReport(appRoot, plan) {
|
|
|
321
323
|
}
|
|
322
324
|
function renderCiSummaryMarkdown(plan) {
|
|
323
325
|
const lines = [];
|
|
324
|
-
const {
|
|
326
|
+
const { uncoveredP0P1Flows, changedFiles, impactedFlows, coveredFlows: coveredCount, partialFlows: partialCount } = plan.metrics;
|
|
325
327
|
const mustAddTests = plan.decision.action === 'must-add-tests';
|
|
326
328
|
const statusEmoji = mustAddTests ? '🔴' : plan.decision.action === 'safe-to-merge' ? '🟢' : '🟡';
|
|
327
329
|
lines.push(`## ${statusEmoji} E2E Coverage: ${plan.decision.title}`);
|
|
328
330
|
lines.push('');
|
|
329
331
|
lines.push(`${plan.decision.summary}`);
|
|
330
332
|
lines.push('');
|
|
331
|
-
|
|
332
|
-
|
|
333
|
+
// Build a readable coverage breakdown instead of raw P0/P1 counts
|
|
334
|
+
const parts = [];
|
|
335
|
+
if ((coveredCount ?? 0) > 0) {
|
|
336
|
+
parts.push(`${coveredCount} covered`);
|
|
337
|
+
}
|
|
338
|
+
if (uncoveredP0P1Flows > 0) {
|
|
339
|
+
parts.push(`${uncoveredP0P1Flows} gap${uncoveredP0P1Flows !== 1 ? 's' : ''}`);
|
|
340
|
+
}
|
|
341
|
+
if ((partialCount ?? 0) > 0) {
|
|
342
|
+
parts.push(`${partialCount} partial`);
|
|
343
|
+
}
|
|
344
|
+
const breakdown = parts.length > 0 ? ` (${parts.join(' · ')})` : '';
|
|
345
|
+
lines.push(`**${changedFiles}** files changed → **${impactedFlows}** features impacted${breakdown}`);
|
|
333
346
|
if (mustAddTests && plan.requiredNewTests.length > 0) {
|
|
334
347
|
lines.push('');
|
|
335
348
|
lines.push('### ⚠️ Add E2E tests for these uncovered P0/P1 features');
|
|
@@ -67,9 +67,11 @@ function buildPrompt(options) {
|
|
|
67
67
|
id: '<featureId or familyId from the deterministic list above>',
|
|
68
68
|
name: '<human-readable flow name>',
|
|
69
69
|
priority: 'P0|P1|P2',
|
|
70
|
-
reasons: [
|
|
70
|
+
reasons: [
|
|
71
|
+
'<EXACTLY 1-2 sentences describing user-visible behavioral impact. Focus on what a user would observe or do differently — NOT file names, NOT implementation details. Example: "Users can now open search results in a detached browser window that persists independently.">',
|
|
72
|
+
],
|
|
71
73
|
coveredBy: ['<spec file paths that cover this flow>'],
|
|
72
|
-
missingScenarios: ['<
|
|
74
|
+
missingScenarios: ['<concrete user action to test, phrased as a scenario title. E.g. "Thread popout opens and displays replies correctly">'],
|
|
73
75
|
},
|
|
74
76
|
],
|
|
75
77
|
unboundFileAnalysis: [
|
|
@@ -68,12 +68,13 @@ function resolveCypressSpecs(cypressRoot, specDirs) {
|
|
|
68
68
|
return specs;
|
|
69
69
|
}
|
|
70
70
|
function computeCoverageStatus(pwSpecs, cySpecs) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
// Playwright is the primary framework — having Playwright specs is sufficient for "covered".
|
|
72
|
+
// Cypress-only = partial (advisory: legacy coverage, migrate when possible).
|
|
73
|
+
// Neither = uncovered (must add tests).
|
|
74
|
+
if (pwSpecs.length > 0) {
|
|
74
75
|
return 'covered';
|
|
75
76
|
}
|
|
76
|
-
if (
|
|
77
|
+
if (cySpecs.length > 0) {
|
|
77
78
|
return 'partial';
|
|
78
79
|
}
|
|
79
80
|
return 'uncovered';
|
|
@@ -220,9 +220,9 @@ export function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
220
220
|
const aiFeature = f.featureId
|
|
221
221
|
? (aiFeatureByFeatureId.get(f.featureId) ?? aiFeatureByFamilyId.get(f.familyId))
|
|
222
222
|
: aiFeatureByFamilyId.get(f.familyId);
|
|
223
|
-
const baseReasons = [`No
|
|
223
|
+
const baseReasons = [`No E2E tests found for ${label}`];
|
|
224
224
|
const reasons = aiFeature && aiFeature.aiReasons.length > 0
|
|
225
|
-
? [...baseReasons, ...aiFeature.aiReasons]
|
|
225
|
+
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
226
226
|
: baseReasons;
|
|
227
227
|
const missingScenarios = aiFeature && aiFeature.aiMissingScenarios.length > 0
|
|
228
228
|
? aiFeature.aiMissingScenarios
|
|
@@ -237,17 +237,15 @@ export function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
237
237
|
source: aiFeature ? 'ai+deterministic' : 'deterministic',
|
|
238
238
|
};
|
|
239
239
|
});
|
|
240
|
-
// Add partial gaps as advisory info
|
|
240
|
+
// Add partial gaps as advisory info (Cypress-only coverage — Playwright migration recommended)
|
|
241
241
|
for (const f of partialGaps) {
|
|
242
|
-
const coverageType = f.playwrightSpecs.length > 0 ? 'Cypress' : 'Playwright';
|
|
243
|
-
const hasOpposite = f.playwrightSpecs.length > 0 ? 'Playwright' : 'Cypress';
|
|
244
242
|
const label = featureLabel(f);
|
|
245
243
|
const aiFeature = f.featureId
|
|
246
244
|
? (aiFeatureByFeatureId.get(f.featureId) ?? aiFeatureByFamilyId.get(f.familyId))
|
|
247
245
|
: aiFeatureByFamilyId.get(f.familyId);
|
|
248
|
-
const baseReasons = [
|
|
246
|
+
const baseReasons = [`${label} is covered by Cypress only — consider adding Playwright tests`];
|
|
249
247
|
const reasons = aiFeature && aiFeature.aiReasons.length > 0
|
|
250
|
-
? [...baseReasons, ...aiFeature.aiReasons]
|
|
248
|
+
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
251
249
|
: baseReasons;
|
|
252
250
|
gapDetails.push({
|
|
253
251
|
id: label,
|
|
@@ -274,6 +272,8 @@ export function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
274
272
|
const p0 = impact.impactedFeatures.filter((f) => f.priority === 'P0').length;
|
|
275
273
|
const p1 = impact.impactedFeatures.filter((f) => f.priority === 'P1').length;
|
|
276
274
|
const p2 = impact.impactedFeatures.filter((f) => f.priority === 'P2').length;
|
|
275
|
+
const coveredCount = impact.impactedFeatures.filter((f) => f.coverageStatus === 'covered').length;
|
|
276
|
+
const partialCount = impact.impactedFeatures.filter((f) => f.coverageStatus === 'partial').length;
|
|
277
277
|
const runId = `plan-${Date.now().toString(36)}`;
|
|
278
278
|
const planSource = aiEnrichment ? 'ai+deterministic' : 'impact';
|
|
279
279
|
return {
|
|
@@ -301,6 +301,8 @@ export function buildPlanFromImpact(impact, policyOverride, aiEnrichment) {
|
|
|
301
301
|
p0Flows: p0,
|
|
302
302
|
p1Flows: p1,
|
|
303
303
|
p2Flows: p2,
|
|
304
|
+
coveredFlows: coveredCount,
|
|
305
|
+
partialFlows: partialCount,
|
|
304
306
|
uncoveredP0P1Flows: gaps.length,
|
|
305
307
|
warnings: impact.warnings.length,
|
|
306
308
|
},
|
|
@@ -315,15 +317,26 @@ export function writePlanReport(appRoot, plan) {
|
|
|
315
317
|
}
|
|
316
318
|
export function renderCiSummaryMarkdown(plan) {
|
|
317
319
|
const lines = [];
|
|
318
|
-
const {
|
|
320
|
+
const { uncoveredP0P1Flows, changedFiles, impactedFlows, coveredFlows: coveredCount, partialFlows: partialCount } = plan.metrics;
|
|
319
321
|
const mustAddTests = plan.decision.action === 'must-add-tests';
|
|
320
322
|
const statusEmoji = mustAddTests ? '🔴' : plan.decision.action === 'safe-to-merge' ? '🟢' : '🟡';
|
|
321
323
|
lines.push(`## ${statusEmoji} E2E Coverage: ${plan.decision.title}`);
|
|
322
324
|
lines.push('');
|
|
323
325
|
lines.push(`${plan.decision.summary}`);
|
|
324
326
|
lines.push('');
|
|
325
|
-
|
|
326
|
-
|
|
327
|
+
// Build a readable coverage breakdown instead of raw P0/P1 counts
|
|
328
|
+
const parts = [];
|
|
329
|
+
if ((coveredCount ?? 0) > 0) {
|
|
330
|
+
parts.push(`${coveredCount} covered`);
|
|
331
|
+
}
|
|
332
|
+
if (uncoveredP0P1Flows > 0) {
|
|
333
|
+
parts.push(`${uncoveredP0P1Flows} gap${uncoveredP0P1Flows !== 1 ? 's' : ''}`);
|
|
334
|
+
}
|
|
335
|
+
if ((partialCount ?? 0) > 0) {
|
|
336
|
+
parts.push(`${partialCount} partial`);
|
|
337
|
+
}
|
|
338
|
+
const breakdown = parts.length > 0 ? ` (${parts.join(' · ')})` : '';
|
|
339
|
+
lines.push(`**${changedFiles}** files changed → **${impactedFlows}** features impacted${breakdown}`);
|
|
327
340
|
if (mustAddTests && plan.requiredNewTests.length > 0) {
|
|
328
341
|
lines.push('');
|
|
329
342
|
lines.push('### ⚠️ Add E2E tests for these uncovered P0/P1 features');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yasserkhanorg/e2e-agents",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
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",
|