opencroc 1.6.3 → 1.6.4
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/cli/index.js +217 -22
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +27 -4
- package/dist/index.js +45 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -220,6 +220,12 @@ interface PipelineRunResult {
|
|
|
220
220
|
validationErrors: ValidationError[];
|
|
221
221
|
duration: number;
|
|
222
222
|
}
|
|
223
|
+
interface ExecutionMetrics$1 {
|
|
224
|
+
passed: number;
|
|
225
|
+
failed: number;
|
|
226
|
+
skipped: number;
|
|
227
|
+
timedOut: number;
|
|
228
|
+
}
|
|
223
229
|
interface ChainFailureResult {
|
|
224
230
|
chain: string;
|
|
225
231
|
failedStep: number;
|
|
@@ -1226,6 +1232,19 @@ declare function listCiPlatforms(): string[];
|
|
|
1226
1232
|
*/
|
|
1227
1233
|
declare function generateCiTemplate(platform: string, opts?: CiTemplateOptions): string;
|
|
1228
1234
|
|
|
1235
|
+
type AuthStatus = 'skipped' | 'ready' | 'failed';
|
|
1236
|
+
type BackendStatus = 'reused' | 'started' | 'skipped' | 'failed';
|
|
1237
|
+
interface ExecutionQualityGateResult {
|
|
1238
|
+
setupFail: boolean;
|
|
1239
|
+
skipRatio: number;
|
|
1240
|
+
authFailRatio: number;
|
|
1241
|
+
effectiveExecutionRate: number;
|
|
1242
|
+
level: 'pass' | 'warn' | 'fail';
|
|
1243
|
+
reasons: string[];
|
|
1244
|
+
authStatus: AuthStatus;
|
|
1245
|
+
backendStatus: BackendStatus;
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1229
1248
|
/**
|
|
1230
1249
|
* Checklist Reporter — generates backend fix checklists from test results.
|
|
1231
1250
|
*
|
|
@@ -1282,13 +1301,17 @@ interface ReportOutput {
|
|
|
1282
1301
|
content: string;
|
|
1283
1302
|
filename: string;
|
|
1284
1303
|
}
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1304
|
+
interface ReportExecutionContext {
|
|
1305
|
+
metrics?: ExecutionMetrics$1 | null;
|
|
1306
|
+
quality?: ExecutionQualityGateResult | null;
|
|
1307
|
+
}
|
|
1308
|
+
declare function generateJsonReport(result: PipelineRunResult, context?: ReportExecutionContext): ReportOutput;
|
|
1309
|
+
declare function generateMarkdownReport(result: PipelineRunResult, context?: ReportExecutionContext): ReportOutput;
|
|
1310
|
+
declare function generateHtmlReport(result: PipelineRunResult, context?: ReportExecutionContext): ReportOutput;
|
|
1288
1311
|
/**
|
|
1289
1312
|
* Generate reports in the specified formats.
|
|
1290
1313
|
*/
|
|
1291
|
-
declare function generateReports(result: PipelineRunResult, formats?: ('html' | 'json' | 'markdown')[]): ReportOutput[];
|
|
1314
|
+
declare function generateReports(result: PipelineRunResult, formats?: ('html' | 'json' | 'markdown')[], context?: ReportExecutionContext): ReportOutput[];
|
|
1292
1315
|
|
|
1293
1316
|
interface DashboardData {
|
|
1294
1317
|
generatedAt: string;
|
package/dist/index.js
CHANGED
|
@@ -5398,7 +5398,7 @@ function renderTokenReportMarkdown(summary) {
|
|
|
5398
5398
|
}
|
|
5399
5399
|
|
|
5400
5400
|
// src/reporters/index.ts
|
|
5401
|
-
function generateJsonReport(result) {
|
|
5401
|
+
function generateJsonReport(result, context) {
|
|
5402
5402
|
const serializable = {
|
|
5403
5403
|
modules: result.modules,
|
|
5404
5404
|
erDiagrams: Object.fromEntries(
|
|
@@ -5418,6 +5418,10 @@ function generateJsonReport(result) {
|
|
|
5418
5418
|
module: f.module,
|
|
5419
5419
|
chain: f.chain
|
|
5420
5420
|
})),
|
|
5421
|
+
execution: context ? {
|
|
5422
|
+
metrics: context.metrics ?? null,
|
|
5423
|
+
quality: context.quality ?? null
|
|
5424
|
+
} : void 0,
|
|
5421
5425
|
validationErrors: result.validationErrors,
|
|
5422
5426
|
duration: result.duration
|
|
5423
5427
|
};
|
|
@@ -5427,7 +5431,7 @@ function generateJsonReport(result) {
|
|
|
5427
5431
|
filename: "opencroc-report.json"
|
|
5428
5432
|
};
|
|
5429
5433
|
}
|
|
5430
|
-
function generateMarkdownReport(result) {
|
|
5434
|
+
function generateMarkdownReport(result, context) {
|
|
5431
5435
|
const lines = [
|
|
5432
5436
|
"# OpenCroc Report",
|
|
5433
5437
|
"",
|
|
@@ -5471,6 +5475,31 @@ function generateMarkdownReport(result) {
|
|
|
5471
5475
|
}
|
|
5472
5476
|
}
|
|
5473
5477
|
}
|
|
5478
|
+
if (context?.metrics || context?.quality) {
|
|
5479
|
+
lines.push("", "## Execution Quality", "");
|
|
5480
|
+
if (context.metrics) {
|
|
5481
|
+
lines.push(
|
|
5482
|
+
`- Passed: ${context.metrics.passed}`,
|
|
5483
|
+
`- Failed: ${context.metrics.failed}`,
|
|
5484
|
+
`- Skipped: ${context.metrics.skipped}`,
|
|
5485
|
+
`- TimedOut: ${context.metrics.timedOut}`
|
|
5486
|
+
);
|
|
5487
|
+
}
|
|
5488
|
+
if (context.quality) {
|
|
5489
|
+
lines.push(
|
|
5490
|
+
`- Gate Level: ${context.quality.level}`,
|
|
5491
|
+
`- Setup Fail: ${context.quality.setupFail}`,
|
|
5492
|
+
`- Skip Ratio: ${(context.quality.skipRatio * 100).toFixed(2)}%`,
|
|
5493
|
+
`- Auth Fail Ratio: ${(context.quality.authFailRatio * 100).toFixed(2)}%`,
|
|
5494
|
+
`- Effective Execution Rate: ${(context.quality.effectiveExecutionRate * 100).toFixed(2)}%`,
|
|
5495
|
+
`- Auth Status: ${context.quality.authStatus}`,
|
|
5496
|
+
`- Backend Status: ${context.quality.backendStatus}`
|
|
5497
|
+
);
|
|
5498
|
+
if (context.quality.reasons.length > 0) {
|
|
5499
|
+
lines.push(`- Reasons: ${context.quality.reasons.join(", ")}`);
|
|
5500
|
+
}
|
|
5501
|
+
}
|
|
5502
|
+
}
|
|
5474
5503
|
lines.push("", "---", "*Generated by [OpenCroc](https://github.com/opencroc/opencroc)*");
|
|
5475
5504
|
return {
|
|
5476
5505
|
format: "markdown",
|
|
@@ -5503,7 +5532,7 @@ function validationRows(errors) {
|
|
|
5503
5532
|
(e) => `<tr class="${e.severity}"><td><span class="badge ${e.severity}">${e.severity}</span></td><td>${escapeHtml(e.module)}</td><td>${escapeHtml(e.field)}</td><td>${escapeHtml(e.message)}</td></tr>`
|
|
5504
5533
|
).join("\n");
|
|
5505
5534
|
}
|
|
5506
|
-
function generateHtmlReport(result) {
|
|
5535
|
+
function generateHtmlReport(result, context) {
|
|
5507
5536
|
const totalTables = Array.from(result.erDiagrams.values()).reduce((s, e) => s + e.tables.length, 0);
|
|
5508
5537
|
const totalRelations = Array.from(result.erDiagrams.values()).reduce((s, e) => s + e.relations.length, 0);
|
|
5509
5538
|
const totalChains = Array.from(result.chainPlans.values()).reduce((s, p) => s + p.chains.length, 0);
|
|
@@ -5582,6 +5611,17 @@ function generateHtmlReport(result) {
|
|
|
5582
5611
|
</table>
|
|
5583
5612
|
</section>
|
|
5584
5613
|
|
|
5614
|
+
${context?.quality || context?.metrics ? `<section>
|
|
5615
|
+
<h2>Execution Quality</h2>
|
|
5616
|
+
<table>
|
|
5617
|
+
<thead><tr><th>Item</th><th>Value</th></tr></thead>
|
|
5618
|
+
<tbody>
|
|
5619
|
+
${context.metrics ? `<tr><td>Passed</td><td>${context.metrics.passed}</td></tr><tr><td>Failed</td><td>${context.metrics.failed}</td></tr><tr><td>Skipped</td><td>${context.metrics.skipped}</td></tr><tr><td>TimedOut</td><td>${context.metrics.timedOut}</td></tr>` : ""}
|
|
5620
|
+
${context.quality ? `<tr><td>Gate Level</td><td>${escapeHtml(context.quality.level)}</td></tr><tr><td>Setup Fail</td><td>${String(context.quality.setupFail)}</td></tr><tr><td>Skip Ratio</td><td>${(context.quality.skipRatio * 100).toFixed(2)}%</td></tr><tr><td>Auth Fail Ratio</td><td>${(context.quality.authFailRatio * 100).toFixed(2)}%</td></tr><tr><td>Effective Execution Rate</td><td>${(context.quality.effectiveExecutionRate * 100).toFixed(2)}%</td></tr><tr><td>Auth Status</td><td>${escapeHtml(context.quality.authStatus)}</td></tr><tr><td>Backend Status</td><td>${escapeHtml(context.quality.backendStatus)}</td></tr><tr><td>Reasons</td><td>${escapeHtml(context.quality.reasons.join(", ") || "-")}</td></tr>` : ""}
|
|
5621
|
+
</tbody>
|
|
5622
|
+
</table>
|
|
5623
|
+
</section>` : ""}
|
|
5624
|
+
|
|
5585
5625
|
${result.validationErrors.length > 0 ? `<section>
|
|
5586
5626
|
<h2>Validation Issues (${result.validationErrors.length})</h2>
|
|
5587
5627
|
<table>
|
|
@@ -5606,11 +5646,11 @@ var REPORTERS = {
|
|
|
5606
5646
|
json: generateJsonReport,
|
|
5607
5647
|
markdown: generateMarkdownReport
|
|
5608
5648
|
};
|
|
5609
|
-
function generateReports(result, formats = ["html"]) {
|
|
5649
|
+
function generateReports(result, formats = ["html"], context) {
|
|
5610
5650
|
return formats.map((fmt) => {
|
|
5611
5651
|
const gen = REPORTERS[fmt];
|
|
5612
5652
|
if (!gen) throw new Error(`Unknown report format: "${fmt}". Available: ${Object.keys(REPORTERS).join(", ")}`);
|
|
5613
|
-
return gen(result);
|
|
5653
|
+
return gen(result, context);
|
|
5614
5654
|
});
|
|
5615
5655
|
}
|
|
5616
5656
|
|