api-tests-coverage 1.0.25 → 1.0.26
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/dashboard/dist/assets/_basePickBy-DIphIltc.js +1 -0
- package/dist/dashboard/dist/assets/_baseUniq-D57u2_9m.js +1 -0
- package/dist/dashboard/dist/assets/arc-DQosMxPM.js +1 -0
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-CNbtIqHR.js +36 -0
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-NgdJaQvK.js +122 -0
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-ChTe70Dn.js +10 -0
- package/dist/dashboard/dist/assets/channel-B3Mj1BTw.js +1 -0
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-BS3-4dfL.js +1 -0
- package/dist/dashboard/dist/assets/chunk-55IACEB6-BCczdImM.js +1 -0
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-D6Mi4ccz.js +165 -0
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-B0tOisd5.js +220 -0
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-RSShKwSG.js +15 -0
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-DFyjAoyD.js +1 -0
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-ARq4habW.js +1 -0
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-DrmzpdLp.js +1 -0
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-cvlgQ4cC.js +1 -0
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-cvlgQ4cC.js +1 -0
- package/dist/dashboard/dist/assets/clone-DRiM0_7k.js +1 -0
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-_dXvVagP.js +1 -0
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-BfhkcdcZ.js +4 -0
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-C8bgfsC2.js +24 -0
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-SPnyk4NX.js +43 -0
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-Cv8CAseP.js +24 -0
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-DHMIYnca.js +60 -0
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-B-9A_TD6.js +162 -0
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-DDmcIEO0.js +267 -0
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-D4YFQ0Qf.js +65 -0
- package/dist/dashboard/dist/assets/graph-DI2MOSai.js +1 -0
- package/dist/dashboard/dist/assets/index-BQfUzgMV.js +778 -0
- package/dist/dashboard/dist/assets/index-Bpho1Ov5.css +1 -0
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-BULYGXV8.js +2 -0
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-CpGd67rs.js +139 -0
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-CXjvcKGc.js +89 -0
- package/dist/dashboard/dist/assets/layout-D5qgY_UX.js +1 -0
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-CKZrc1IF.js +68 -0
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-uIOJq-u0.js +30 -0
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-D5g_wTRC.js +7 -0
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-BLpGY-Om.js +64 -0
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-E0klRQfk.js +10 -0
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-Byy1IdkL.js +145 -0
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-x3lHxmNY.js +1 -0
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-D0gUM6SR.js +1 -0
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-D490JqJU.js +61 -0
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-C5Nk6dQh.js +162 -0
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-CYsIKi3H.js +7 -0
- package/dist/dashboard/dist/index.html +2 -2
- package/dist/src/analyzeHelpers.d.ts +60 -0
- package/dist/src/analyzeHelpers.d.ts.map +1 -0
- package/dist/src/analyzeHelpers.js +670 -0
- package/dist/src/config/defaultConfig.js +1 -1
- package/dist/src/index.js +553 -615
- package/dist/src/reporting.d.ts +10 -0
- package/dist/src/reporting.d.ts.map +1 -1
- package/dist/src/reporting.js +3 -0
- package/dist/src/summary/evaluateMetrics.js +3 -2
- package/dist/src/unitAnalysis.d.ts +132 -1
- package/dist/src/unitAnalysis.d.ts.map +1 -1
- package/dist/src/unitAnalysis.js +1139 -185
- package/package.json +1 -1
package/dist/src/reporting.d.ts
CHANGED
|
@@ -13,6 +13,16 @@ export interface CoverageResult {
|
|
|
13
13
|
coveredItems: number;
|
|
14
14
|
/** Coverage percentage (0‑100, two decimal places) */
|
|
15
15
|
coveragePercent: number;
|
|
16
|
+
/** Optional computed status for dashboards and summary tables */
|
|
17
|
+
status?: 'PASS' | 'FAIL' | 'SKIPPED' | 'N/A';
|
|
18
|
+
/** Human-readable reason, required for N/A results */
|
|
19
|
+
reason?: string;
|
|
20
|
+
/** Scan metadata captured during analysis */
|
|
21
|
+
scanMeta?: {
|
|
22
|
+
filesScanned: number;
|
|
23
|
+
scanDurationMs: number;
|
|
24
|
+
detectionMethod: string;
|
|
25
|
+
};
|
|
16
26
|
/** Arbitrary per-type detail data serialisable to JSON */
|
|
17
27
|
details: unknown;
|
|
18
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/reporting.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIzD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,+GAA+G;IAC/G,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAMxD;
|
|
1
|
+
{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/reporting.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIzD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,+GAA+G;IAC/G,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IAC7C,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAMxD;AA2ND;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,EAAE,YAAY,EAAE,EACvB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACvC,aAAa,CAAC,EAAE,iBAAiB,GAChC,IAAI,CAqBN;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,EAAE,CAaV"}
|
package/dist/src/reporting.js
CHANGED
|
@@ -82,6 +82,9 @@ function writeJson(results, reportsDir, observability) {
|
|
|
82
82
|
totalItems: r.totalItems,
|
|
83
83
|
coveredItems: r.coveredItems,
|
|
84
84
|
coveragePercent: r.coveragePercent,
|
|
85
|
+
status: r.status,
|
|
86
|
+
reason: r.reason,
|
|
87
|
+
scanMeta: r.scanMeta,
|
|
85
88
|
})),
|
|
86
89
|
];
|
|
87
90
|
const mergedDetails = {
|
|
@@ -69,6 +69,7 @@ function buildMetric(type, resultByType, thresholds, qualityGate) {
|
|
|
69
69
|
gateEvaluated,
|
|
70
70
|
qualityGate,
|
|
71
71
|
type,
|
|
72
|
+
customReason: result === null || result === void 0 ? void 0 : result.reason,
|
|
72
73
|
});
|
|
73
74
|
const topGaps = result && applicable
|
|
74
75
|
? (0, markdownRenderer_1.extractGaps)(result, 5)
|
|
@@ -89,12 +90,12 @@ function buildMetric(type, resultByType, thresholds, qualityGate) {
|
|
|
89
90
|
}
|
|
90
91
|
function computeStatus(opts) {
|
|
91
92
|
var _a;
|
|
92
|
-
const { executed, applicable, totalItems, coveragePercent, threshold, gateEvaluated, qualityGate, type } = opts;
|
|
93
|
+
const { executed, applicable, totalItems, coveragePercent, threshold, gateEvaluated, qualityGate, type, customReason } = opts;
|
|
93
94
|
if (!executed) {
|
|
94
95
|
return { status: 'SKIPPED', reason: 'Analyzer did not run for this type' };
|
|
95
96
|
}
|
|
96
97
|
if (totalItems === 0) {
|
|
97
|
-
return { status: 'N/A', reason: 'No items found to measure' };
|
|
98
|
+
return { status: 'N/A', reason: customReason !== null && customReason !== void 0 ? customReason : 'No items found to measure' };
|
|
98
99
|
}
|
|
99
100
|
if (!gateEvaluated) {
|
|
100
101
|
return { status: 'N/A', reason: 'No threshold configured — gate not evaluated' };
|
|
@@ -19,6 +19,16 @@ export interface UnitCoverageSummary {
|
|
|
19
19
|
branchCoverage: number | null;
|
|
20
20
|
methodCoverage: number | null;
|
|
21
21
|
classCoverage: number | null;
|
|
22
|
+
uncoveredFiles: string[];
|
|
23
|
+
lowCoverageFiles: Array<{
|
|
24
|
+
file: string;
|
|
25
|
+
lineCoverage: number;
|
|
26
|
+
}>;
|
|
27
|
+
fileCoverage: Array<{
|
|
28
|
+
file: string;
|
|
29
|
+
lineCoverage: number;
|
|
30
|
+
}>;
|
|
31
|
+
uncoveredClasses: string[];
|
|
22
32
|
uncoveredMethods: Array<{
|
|
23
33
|
class: string;
|
|
24
34
|
method: string;
|
|
@@ -45,6 +55,12 @@ export interface UnitMutationSummary {
|
|
|
45
55
|
totalMutants: number;
|
|
46
56
|
killedMutants: number;
|
|
47
57
|
survivedMutants: number;
|
|
58
|
+
worstMutationFiles: Array<{
|
|
59
|
+
file: string;
|
|
60
|
+
survived: number;
|
|
61
|
+
killed: number;
|
|
62
|
+
}>;
|
|
63
|
+
weakestFiles: string[];
|
|
48
64
|
survivedByFile: Array<{
|
|
49
65
|
file: string;
|
|
50
66
|
survived: UnitMutationSurvivor[];
|
|
@@ -75,6 +91,57 @@ export interface SlowTestSummary {
|
|
|
75
91
|
slowPercent: number;
|
|
76
92
|
reportPaths: string[];
|
|
77
93
|
}
|
|
94
|
+
export interface UnitDynamicFailure {
|
|
95
|
+
file: string;
|
|
96
|
+
method: string;
|
|
97
|
+
message: string;
|
|
98
|
+
stackTrace?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface UnitDynamicSummary extends SlowTestSummary {
|
|
101
|
+
passed: number;
|
|
102
|
+
failed: number;
|
|
103
|
+
skipped: number;
|
|
104
|
+
flakyTests: string[];
|
|
105
|
+
failures: UnitDynamicFailure[];
|
|
106
|
+
}
|
|
107
|
+
export interface UnitContractSummary {
|
|
108
|
+
totalContracts: number;
|
|
109
|
+
verifiedContracts: number;
|
|
110
|
+
failedVerifications: string[];
|
|
111
|
+
contractPaths: string[];
|
|
112
|
+
}
|
|
113
|
+
export interface UnitAstSummary {
|
|
114
|
+
filesScanned: number;
|
|
115
|
+
testCount: number;
|
|
116
|
+
parameterizedTestCount: number;
|
|
117
|
+
testClassCount: number;
|
|
118
|
+
mockCount: number;
|
|
119
|
+
stubCount: number;
|
|
120
|
+
spyCount: number;
|
|
121
|
+
isolationPercent: number;
|
|
122
|
+
assertionCount: number;
|
|
123
|
+
assertionsPerTest: number;
|
|
124
|
+
testsWithZeroAssertions: string[];
|
|
125
|
+
testsWithTooManyAssertions: string[];
|
|
126
|
+
descriptiveNamePercent: number;
|
|
127
|
+
genericNameExamples: string[];
|
|
128
|
+
qualityScore: number;
|
|
129
|
+
dimensionScores: {
|
|
130
|
+
assertionCompleteness: number;
|
|
131
|
+
testIsolation: number;
|
|
132
|
+
namingQuality: number;
|
|
133
|
+
disabledTests: number;
|
|
134
|
+
criticalSmells: number;
|
|
135
|
+
};
|
|
136
|
+
smells: UnitTestSmell[];
|
|
137
|
+
disabledTests: string[];
|
|
138
|
+
emptyTestBodies: string[];
|
|
139
|
+
threadSleepUsage: string[];
|
|
140
|
+
systemOutUsage: string[];
|
|
141
|
+
hardcodedCredentials: string[];
|
|
142
|
+
staticMutableStateModified: boolean;
|
|
143
|
+
sharedMutableFields: string[];
|
|
144
|
+
}
|
|
78
145
|
export interface IndependenceSummary {
|
|
79
146
|
score: number;
|
|
80
147
|
deductions: Array<{
|
|
@@ -96,9 +163,38 @@ export interface AssertionDensitySummary {
|
|
|
96
163
|
}
|
|
97
164
|
export interface UnitAnalysisDetails {
|
|
98
165
|
items: UnitCoverageItem[];
|
|
166
|
+
layersApplied: Array<'ast' | 'dynamic' | 'coverage' | 'mutation' | 'contract'>;
|
|
167
|
+
ast: UnitAstSummary;
|
|
168
|
+
dynamic: UnitDynamicSummary | null;
|
|
169
|
+
coverage: UnitCoverageSummary | null;
|
|
170
|
+
mutation: UnitMutationSummary | null;
|
|
171
|
+
contract: UnitContractSummary | null;
|
|
99
172
|
codeCoverage: UnitCoverageSummary | null;
|
|
100
173
|
codeCoverageMissing?: UnitCoverageMissingInfo;
|
|
101
174
|
mutationTesting: UnitMutationSummary | null;
|
|
175
|
+
filesScanned: number;
|
|
176
|
+
smells: UnitTestSmell[];
|
|
177
|
+
enrichedByRuntime: boolean;
|
|
178
|
+
enrichedByMutation: boolean;
|
|
179
|
+
lineCoverage?: number | null;
|
|
180
|
+
branchCoverage?: number | null;
|
|
181
|
+
classCoverage?: number | null;
|
|
182
|
+
methodCoverage?: number | null;
|
|
183
|
+
uncoveredFiles?: string[];
|
|
184
|
+
lowCoverageFiles?: Array<{
|
|
185
|
+
file: string;
|
|
186
|
+
lineCoverage: number;
|
|
187
|
+
}>;
|
|
188
|
+
runtimeReportPath?: string;
|
|
189
|
+
mutationScore?: number | null;
|
|
190
|
+
mutationSurvivedCount?: number;
|
|
191
|
+
mutationKilledCount?: number;
|
|
192
|
+
worstMutationFiles?: Array<{
|
|
193
|
+
file: string;
|
|
194
|
+
survived: number;
|
|
195
|
+
killed: number;
|
|
196
|
+
}>;
|
|
197
|
+
mutationReportPath?: string;
|
|
102
198
|
testSmells: {
|
|
103
199
|
bySeverity: Record<UnitTestSmellSeverity, number>;
|
|
104
200
|
items: UnitTestSmell[];
|
|
@@ -107,25 +203,50 @@ export interface UnitAnalysisDetails {
|
|
|
107
203
|
independence: IndependenceSummary | null;
|
|
108
204
|
assertionDensity: AssertionDensitySummary;
|
|
109
205
|
messages: string[];
|
|
206
|
+
weightedScore?: number;
|
|
207
|
+
scoreWeighting?: string;
|
|
208
|
+
qualityPassingTests?: number;
|
|
110
209
|
}
|
|
111
210
|
export interface UnitAnalysisExecution {
|
|
112
211
|
result: CoverageResult;
|
|
113
212
|
failures: string[];
|
|
114
213
|
warnings: string[];
|
|
214
|
+
consoleLines: string[];
|
|
115
215
|
}
|
|
116
216
|
interface TestFileAnalysis {
|
|
117
217
|
filePath: string;
|
|
118
218
|
relativePath: string;
|
|
119
|
-
language: 'java' | 'kotlin' | 'javascript' | 'typescript' | 'python' | 'other';
|
|
219
|
+
language: 'java' | 'kotlin' | 'javascript' | 'typescript' | 'python' | 'ruby' | 'go' | 'other';
|
|
120
220
|
content: string;
|
|
221
|
+
testBlocks: TestBlock[];
|
|
222
|
+
testCount: number;
|
|
121
223
|
qualityScore: number;
|
|
122
224
|
parameterizedExpansions: number;
|
|
123
225
|
assertionCount: number;
|
|
226
|
+
testClassCount: number;
|
|
227
|
+
mockCount: number;
|
|
228
|
+
stubCount: number;
|
|
229
|
+
spyCount: number;
|
|
230
|
+
testsUsingIsolation: number;
|
|
231
|
+
descriptiveTestNameCount: number;
|
|
232
|
+
genericNameExamples: string[];
|
|
233
|
+
emptyTestBodies: string[];
|
|
234
|
+
threadSleepUsage: string[];
|
|
235
|
+
systemOutUsage: string[];
|
|
236
|
+
hardcodedCredentials: string[];
|
|
237
|
+
staticMutableStateModified: boolean;
|
|
238
|
+
sharedMutableFields: string[];
|
|
124
239
|
mockLibrary?: string;
|
|
125
240
|
layer: string;
|
|
126
241
|
coveredMethods: string[];
|
|
127
242
|
instantiatedClasses: string[];
|
|
128
243
|
}
|
|
244
|
+
interface TestBlock {
|
|
245
|
+
name: string;
|
|
246
|
+
body: string;
|
|
247
|
+
line: number;
|
|
248
|
+
decorators: string[];
|
|
249
|
+
}
|
|
129
250
|
export declare function analyzeUnitTests(options: {
|
|
130
251
|
rootDir: string;
|
|
131
252
|
testFiles: string[];
|
|
@@ -140,6 +261,16 @@ export declare function parseCoverageXml(reportPath: string): UnitCoverageSummar
|
|
|
140
261
|
export declare function parseGoCoverage(reportPath: string): UnitCoverageSummary;
|
|
141
262
|
export declare function parseStrykerReport(reportPath: string, toolName: string): UnitMutationSummary;
|
|
142
263
|
export declare function parseSlowTests(rootDir: string, config: UnitAnalysisConfig): SlowTestSummary | null;
|
|
264
|
+
export declare function calculateDynamicPassRate(summary: UnitDynamicSummary): number;
|
|
265
|
+
export declare function calculateUnitScore(input: {
|
|
266
|
+
astQuality: number;
|
|
267
|
+
dynamicPassRate: number | null;
|
|
268
|
+
lineCoverage: number | null;
|
|
269
|
+
branchCoverage?: number | null;
|
|
270
|
+
mutationScore: number | null;
|
|
271
|
+
layersApplied: UnitAnalysisDetails['layersApplied'];
|
|
272
|
+
}): number;
|
|
143
273
|
export declare function detectTestSmells(rootDir: string, tests: TestFileAnalysis[]): UnitTestSmell[];
|
|
274
|
+
export declare function calculateWeightedCoveredItems(totalItems: number, weightedScore: number): number;
|
|
144
275
|
export {};
|
|
145
276
|
//# sourceMappingURL=unitAnalysis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unitAnalysis.d.ts","sourceRoot":"","sources":["../../src/unitAnalysis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unitAnalysis.d.ts","sourceRoot":"","sources":["../../src/unitAnalysis.ts"],"names":[],"mappings":"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"}
|