@yasserkhanorg/e2e-agents 0.7.2 → 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/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 +3 -5
- package/dist/esm/engine/impact_engine.js +5 -4
- package/dist/esm/engine/plan_builder.js +3 -5
- package/package.json +1 -1
|
@@ -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,7 +226,7 @@ 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
231
|
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
232
232
|
: baseReasons;
|
|
@@ -243,15 +243,13 @@ 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
254
|
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
257
255
|
: baseReasons;
|
|
@@ -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,7 +220,7 @@ 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
225
|
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
226
226
|
: baseReasons;
|
|
@@ -237,15 +237,13 @@ 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
248
|
? [...baseReasons, ...aiFeature.aiReasons.slice(0, 2)]
|
|
251
249
|
: baseReasons;
|
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",
|