@yasserkhanorg/e2e-agents 1.10.1 → 1.10.2
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/README.md +116 -99
- package/dist/agent/config.d.ts +1 -1
- package/dist/agent/config.d.ts.map +1 -1
- package/dist/agent/config.js +6 -1
- package/dist/cache/cached_provider.d.ts +4 -0
- package/dist/cache/cached_provider.d.ts.map +1 -1
- package/dist/cache/cached_provider.js +3 -0
- package/dist/cli/commands/crew.d.ts.map +1 -1
- package/dist/cli/commands/crew.js +1 -0
- package/dist/cli/commands/init.js +5 -5
- package/dist/cli/commands/llm_health.d.ts.map +1 -1
- package/dist/cli/commands/llm_health.js +11 -67
- package/dist/cli/defaults.d.ts.map +1 -1
- package/dist/cli/defaults.js +47 -0
- package/dist/cli/parse_args.d.ts.map +1 -1
- package/dist/cli/parse_args.js +3 -1
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/usage.d.ts.map +1 -1
- package/dist/cli/usage.js +28 -18
- package/dist/cli.js +5 -1
- package/dist/esm/agent/config.js +6 -1
- package/dist/esm/cache/cached_provider.js +3 -0
- package/dist/esm/cli/commands/crew.js +1 -0
- package/dist/esm/cli/commands/init.js +5 -5
- package/dist/esm/cli/commands/llm_health.js +11 -67
- package/dist/esm/cli/defaults.js +47 -0
- package/dist/esm/cli/parse_args.js +3 -1
- package/dist/esm/cli/usage.js +28 -18
- package/dist/esm/cli.js +5 -1
- package/dist/esm/prompts/coverage.js +2 -2
- package/dist/esm/prompts/cross-impact.js +1 -1
- package/dist/esm/prompts/generation.js +4 -4
- package/dist/esm/prompts/heal.js +4 -4
- package/dist/esm/prompts/impact.js +1 -1
- package/dist/esm/prompts/test-designer.js +1 -1
- package/dist/esm/provider_factory.js +17 -0
- package/dist/prompts/coverage.js +2 -2
- package/dist/prompts/cross-impact.js +1 -1
- package/dist/prompts/generation.js +4 -4
- package/dist/prompts/heal.js +4 -4
- package/dist/prompts/impact.js +1 -1
- package/dist/prompts/test-designer.js +1 -1
- package/dist/provider_factory.d.ts.map +1 -1
- package/dist/provider_factory.js +17 -0
- package/dist/provider_interface.d.ts +7 -0
- package/dist/provider_interface.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -283,6 +283,23 @@ class HybridProvider {
|
|
|
283
283
|
this.primary.resetUsageStats();
|
|
284
284
|
this.fallback.resetUsageStats();
|
|
285
285
|
}
|
|
286
|
+
async checkHealth() {
|
|
287
|
+
const primaryHealth = await this.primary.checkHealth();
|
|
288
|
+
if (primaryHealth.healthy) {
|
|
289
|
+
return { healthy: true, message: `${this.primary.name}: ${primaryHealth.message}` };
|
|
290
|
+
}
|
|
291
|
+
const fallbackHealth = await this.fallback.checkHealth();
|
|
292
|
+
if (fallbackHealth.healthy) {
|
|
293
|
+
return {
|
|
294
|
+
healthy: true,
|
|
295
|
+
message: `${this.primary.name} unhealthy (${primaryHealth.message}); fallback ${this.fallback.name}: ${fallbackHealth.message}`,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
return {
|
|
299
|
+
healthy: false,
|
|
300
|
+
message: `${this.primary.name} unhealthy (${primaryHealth.message}); fallback ${this.fallback.name} unhealthy (${fallbackHealth.message})`,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
286
303
|
/**
|
|
287
304
|
* Get breakdown of which provider was used for what
|
|
288
305
|
*/
|
package/dist/prompts/coverage.js
CHANGED
|
@@ -19,7 +19,7 @@ function buildCoveragePrompt(ctx) {
|
|
|
19
19
|
})
|
|
20
20
|
.join('\n\n');
|
|
21
21
|
return [
|
|
22
|
-
`You are evaluating whether existing ${ctx.profile?.projectName || '
|
|
22
|
+
`You are evaluating whether existing ${ctx.profile?.projectName || 'the project'} ${ctx.profile?.testFramework || 'Playwright'} E2E tests cover the impacted flows.`,
|
|
23
23
|
'',
|
|
24
24
|
`IMPACTED FLOWS (${ctx.flows.length}):`,
|
|
25
25
|
flowsBlock,
|
|
@@ -42,7 +42,7 @@ function buildCoveragePrompt(ctx) {
|
|
|
42
42
|
' Wrong: "test the new isEditing state"',
|
|
43
43
|
' Right: "test editing a scheduled message while it is in pending state"',
|
|
44
44
|
'- For add_scenarios, specify which existing spec file to extend in targetSpec.',
|
|
45
|
-
`- For create_spec, suggest a path following ${ctx.profile?.projectName || '
|
|
45
|
+
`- For create_spec, suggest a path following ${ctx.profile?.projectName || 'the project'} conventions.`,
|
|
46
46
|
'- Prefer adding scenarios to existing specs over creating new spec files.',
|
|
47
47
|
'',
|
|
48
48
|
'SEMANTIC MATCHING RULES (critical for accuracy):',
|
|
@@ -19,7 +19,7 @@ function buildCrossImpactPrompt(ctx) {
|
|
|
19
19
|
.join('\n');
|
|
20
20
|
const changedBlock = ctx.changedFiles.map((f) => (0, sanitize_js_1.sanitizeForPrompt)(f)).join('\n');
|
|
21
21
|
return [
|
|
22
|
-
`You are analyzing code changes in ${ctx.projectName || '
|
|
22
|
+
`You are analyzing code changes in ${ctx.projectName || 'the project'} to identify cross-family ripple effects.`,
|
|
23
23
|
'When a change in one route family could affect another family through shared dependencies,',
|
|
24
24
|
'that is a cross-impact.',
|
|
25
25
|
'',
|
|
@@ -41,7 +41,7 @@ function buildAssertionPatternsBlock(patterns) {
|
|
|
41
41
|
}
|
|
42
42
|
function buildGenerationPrompt(ctx) {
|
|
43
43
|
const profile = ctx.profile;
|
|
44
|
-
const isMM = profile ? (0, generation_profile_js_1.isMattermostProfile)(profile) :
|
|
44
|
+
const isMM = profile ? (0, generation_profile_js_1.isMattermostProfile)(profile) : false;
|
|
45
45
|
const relevantClasses = resolveRelevantPageObjects(ctx.apiSurface, ctx.decision);
|
|
46
46
|
const apiBlock = relevantClasses.length > 0
|
|
47
47
|
? (0, api_surface_js_1.formatApiSurfaceForPrompt)(ctx.apiSurface, relevantClasses)
|
|
@@ -57,9 +57,9 @@ function buildGenerationPrompt(ctx) {
|
|
|
57
57
|
: `ADD scenarios to the EXISTING spec at: ${ctx.specPath}`;
|
|
58
58
|
const routeFamilyTag = ctx.decision.routeFamily;
|
|
59
59
|
// Build prompt based on profile
|
|
60
|
-
const projectName = profile?.projectName || '
|
|
60
|
+
const projectName = profile?.projectName || 'Project';
|
|
61
61
|
const testFramework = profile?.testFramework || 'Playwright';
|
|
62
|
-
const importStatement = profile?.importStatement || '@
|
|
62
|
+
const importStatement = profile?.importStatement || '@playwright/test';
|
|
63
63
|
// API test mode prompt
|
|
64
64
|
if (profile?.testMode === 'api') {
|
|
65
65
|
return buildApiTestPrompt(ctx, profile, scenariosBlock, routeFamilyTag);
|
|
@@ -231,7 +231,7 @@ function parseGenerationResponse(text, expectedPath, mode, flowId, profile) {
|
|
|
231
231
|
if (!code.includes('test(') && !code.includes('it(') && !code.includes('describe(')) {
|
|
232
232
|
return null;
|
|
233
233
|
}
|
|
234
|
-
const importStatement = profile?.importStatement || '@
|
|
234
|
+
const importStatement = profile?.importStatement || '@playwright/test';
|
|
235
235
|
// Auto-add import if missing
|
|
236
236
|
if (!code.includes(importStatement)) {
|
|
237
237
|
if (profile?.testMode === 'api') {
|
package/dist/prompts/heal.js
CHANGED
|
@@ -32,9 +32,9 @@ function buildHealPrompt(ctx) {
|
|
|
32
32
|
const consoleBlock = ctx.consoleErrors && ctx.consoleErrors.length > 0
|
|
33
33
|
? `\nRecent console errors from test run:\n${ctx.consoleErrors.slice(-3).map((e) => ` - ${(0, sanitize_js_1.sanitizeForPrompt)(e)}`).join('\n')}`
|
|
34
34
|
: '';
|
|
35
|
-
const importLib = ctx.profile?.importStatement || '@
|
|
36
|
-
const isMM = ctx.profile ? (0, generation_profile_js_1.isMattermostProfile)(ctx.profile) :
|
|
37
|
-
const projectLabel = ctx.profile?.projectName || '
|
|
35
|
+
const importLib = ctx.profile?.importStatement || '@playwright/test';
|
|
36
|
+
const isMM = ctx.profile ? (0, generation_profile_js_1.isMattermostProfile)(ctx.profile) : false;
|
|
37
|
+
const projectLabel = ctx.profile?.projectName || 'Project';
|
|
38
38
|
const frameworkLabel = ctx.profile?.testFramework || 'Playwright';
|
|
39
39
|
const constraints = isMM
|
|
40
40
|
? [
|
|
@@ -75,7 +75,7 @@ function buildHealPrompt(ctx) {
|
|
|
75
75
|
* (e.g. contain test.describe, test.only, wrong imports).
|
|
76
76
|
*/
|
|
77
77
|
function buildQualityFixPrompt(specPath, qualityIssues, profile) {
|
|
78
|
-
const importLib = profile?.importStatement || '@
|
|
78
|
+
const importLib = profile?.importStatement || '@playwright/test';
|
|
79
79
|
const frameworkLabel = profile?.testFramework || 'Playwright';
|
|
80
80
|
return [
|
|
81
81
|
`Fix quality issues in this ${frameworkLabel} spec file. Make minimal edits only.`,
|
package/dist/prompts/impact.js
CHANGED
|
@@ -28,7 +28,7 @@ function buildImpactPrompt(ctx) {
|
|
|
28
28
|
})
|
|
29
29
|
.join('\n\n');
|
|
30
30
|
return [
|
|
31
|
-
`You are analyzing code changes in ${ctx.projectName || '
|
|
31
|
+
`You are analyzing code changes in ${ctx.projectName || 'the project'} to identify impacted user-facing flows.`,
|
|
32
32
|
'',
|
|
33
33
|
`ROUTE FAMILY: ${ctx.family.id}`,
|
|
34
34
|
`ROUTES: ${familyRoutes}`,
|
|
@@ -29,7 +29,7 @@ function buildTestDesignerPrompt(ctx) {
|
|
|
29
29
|
: 'None detected.';
|
|
30
30
|
const categories = ctx.strategy.testCategories.join(', ');
|
|
31
31
|
return [
|
|
32
|
-
`You are a senior QA engineer designing comprehensive test cases for a ${ctx.profile?.projectName || '
|
|
32
|
+
`You are a senior QA engineer designing comprehensive test cases for a ${ctx.profile?.projectName || 'project'} user flow.`,
|
|
33
33
|
'',
|
|
34
34
|
`FLOW: ${ctx.flow.flowName}`,
|
|
35
35
|
`Flow ID: ${ctx.flow.flowId}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider_factory.d.ts","sourceRoot":"","sources":["../src/provider_factory.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAKR,WAAW,EAIX,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAC3B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW;IAmBlD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW;IAWtD;;;;;;;;;OASG;WACU,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IAyElD;;;OAGG;WACU,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASpF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;CAkC/D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;OAGG;IACH,OAAO,EAAE,cAAc,CAAC;IAExB;;;OAGG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,mBAAmB,GAAG,wBAAwB,CAAC,CAAC;CACrF;
|
|
1
|
+
{"version":3,"file":"provider_factory.d.ts","sourceRoot":"","sources":["../src/provider_factory.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAKR,WAAW,EAIX,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAC3B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW;IAmBlD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW;IAWtD;;;;;;;;;OASG;WACU,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IAyElD;;;OAGG;WACU,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASpF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;CAkC/D;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;OAGG;IACH,OAAO,EAAE,cAAc,CAAC;IAExB;;;OAGG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,mBAAmB,GAAG,wBAAwB,CAAC,CAAC;CACrF;AAoKD;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC;IACxE,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC,CAsCD"}
|
package/dist/provider_factory.js
CHANGED
|
@@ -288,6 +288,23 @@ class HybridProvider {
|
|
|
288
288
|
this.primary.resetUsageStats();
|
|
289
289
|
this.fallback.resetUsageStats();
|
|
290
290
|
}
|
|
291
|
+
async checkHealth() {
|
|
292
|
+
const primaryHealth = await this.primary.checkHealth();
|
|
293
|
+
if (primaryHealth.healthy) {
|
|
294
|
+
return { healthy: true, message: `${this.primary.name}: ${primaryHealth.message}` };
|
|
295
|
+
}
|
|
296
|
+
const fallbackHealth = await this.fallback.checkHealth();
|
|
297
|
+
if (fallbackHealth.healthy) {
|
|
298
|
+
return {
|
|
299
|
+
healthy: true,
|
|
300
|
+
message: `${this.primary.name} unhealthy (${primaryHealth.message}); fallback ${this.fallback.name}: ${fallbackHealth.message}`,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
return {
|
|
304
|
+
healthy: false,
|
|
305
|
+
message: `${this.primary.name} unhealthy (${primaryHealth.message}); fallback ${this.fallback.name} unhealthy (${fallbackHealth.message})`,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
291
308
|
/**
|
|
292
309
|
* Get breakdown of which provider was used for what
|
|
293
310
|
*/
|
|
@@ -49,6 +49,13 @@ export interface LLMProvider {
|
|
|
49
49
|
* Reset usage statistics (typically called at start of new cycle)
|
|
50
50
|
*/
|
|
51
51
|
resetUsageStats(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Run a lightweight health probe against the provider.
|
|
54
|
+
*/
|
|
55
|
+
checkHealth(): Promise<{
|
|
56
|
+
healthy: boolean;
|
|
57
|
+
message: string;
|
|
58
|
+
}>;
|
|
52
59
|
}
|
|
53
60
|
/**
|
|
54
61
|
* Options for text generation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider_interface.d.ts","sourceRoot":"","sources":["../src/provider_interface.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE9E;;;OAGG;IACH,YAAY,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAErG;;;OAGG;IACH,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE9F;;OAEG;IACH,YAAY,EAAE,oBAAoB,CAAC;IAEnC;;OAEG;IACH,aAAa,IAAI,kBAAkB,CAAC;IAEpC;;OAEG;IACH,eAAe,IAAI,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"provider_interface.d.ts","sourceRoot":"","sources":["../src/provider_interface.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yasserkhanorg/e2e-agents",
|
|
3
|
-
"version": "1.10.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.10.2",
|
|
4
|
+
"description": "Diff-aware E2E impact analysis and coverage gating for Playwright/Cypress teams. Optional AI features can suggest, generate, and heal tests once your project has a route-families.json manifest.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|