qa360 2.2.7 → 2.2.9
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.
Potentially problematic release.
This version of qa360 might be problematic. Click here for more details.
- package/cli/dist/core/pack-v2/migrator.d.ts +1 -0
- package/cli/dist/core/pack-v2/migrator.js +25 -0
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/cli/dist/core/core/coverage/analyzer.d.ts +0 -101
- package/cli/dist/core/core/coverage/analyzer.js +0 -415
- package/cli/dist/core/core/coverage/collector.d.ts +0 -74
- package/cli/dist/core/core/coverage/collector.js +0 -459
- package/cli/dist/core/core/coverage/config.d.ts +0 -37
- package/cli/dist/core/core/coverage/config.js +0 -156
- package/cli/dist/core/core/coverage/index.d.ts +0 -11
- package/cli/dist/core/core/coverage/index.js +0 -15
- package/cli/dist/core/core/coverage/types.d.ts +0 -267
- package/cli/dist/core/core/coverage/types.js +0 -6
- package/cli/dist/core/core/coverage/vault.d.ts +0 -95
- package/cli/dist/core/core/coverage/vault.js +0 -405
- package/cli/dist/core/schemas/pack.schema.json +0 -236
- package/cli/dist/schemas/pack.schema.json +0 -236
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* QA360 Coverage Analytics Module
|
|
3
|
-
*
|
|
4
|
-
* Types for coverage collection, analysis, and reporting.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Coverage types supported
|
|
8
|
-
*/
|
|
9
|
-
export type CoverageType = 'line' | 'branch' | 'function' | 'statement';
|
|
10
|
-
/**
|
|
11
|
-
* Coverage data source
|
|
12
|
-
*/
|
|
13
|
-
export type CoverageSource = 'jest' | 'vitest' | 'cypress' | 'playwright' | 'istanbul' | 'lcov' | 'custom';
|
|
14
|
-
/**
|
|
15
|
-
* Single file coverage metric
|
|
16
|
-
*/
|
|
17
|
-
export interface FileCoverage {
|
|
18
|
-
/** File path relative to project root */
|
|
19
|
-
path: string;
|
|
20
|
-
/** Total lines in file */
|
|
21
|
-
totalLines: number;
|
|
22
|
-
/** Covered lines */
|
|
23
|
-
coveredLines: number;
|
|
24
|
-
/** Line coverage percentage (0-100) */
|
|
25
|
-
lineCoverage: number;
|
|
26
|
-
/** Total branches */
|
|
27
|
-
totalBranches: number;
|
|
28
|
-
/** Covered branches */
|
|
29
|
-
coveredBranches: number;
|
|
30
|
-
/** Branch coverage percentage (0-100) */
|
|
31
|
-
branchCoverage: number;
|
|
32
|
-
/** Total functions */
|
|
33
|
-
totalFunctions: number;
|
|
34
|
-
/** Covered functions */
|
|
35
|
-
coveredFunctions: number;
|
|
36
|
-
/** Function coverage percentage (0-100) */
|
|
37
|
-
functionCoverage: number;
|
|
38
|
-
/** Total statements */
|
|
39
|
-
totalStatements: number;
|
|
40
|
-
/** Covered statements */
|
|
41
|
-
coveredStatements: number;
|
|
42
|
-
/** Statement coverage percentage (0-100) */
|
|
43
|
-
statementCoverage: number;
|
|
44
|
-
/** Uncovered line numbers */
|
|
45
|
-
uncoveredLines: number[];
|
|
46
|
-
/** Partially covered line numbers */
|
|
47
|
-
partiallyCoveredLines: number[];
|
|
48
|
-
/** Branches by line number */
|
|
49
|
-
branchesByLine: Record<number, BranchInfo[]>;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Branch information for a specific line
|
|
53
|
-
*/
|
|
54
|
-
export interface BranchInfo {
|
|
55
|
-
/** Branch index */
|
|
56
|
-
index: number;
|
|
57
|
-
/** Number of times this branch was executed */
|
|
58
|
-
count: number;
|
|
59
|
-
/** Branch location in source */
|
|
60
|
-
location: {
|
|
61
|
-
start: {
|
|
62
|
-
line: number;
|
|
63
|
-
column: number;
|
|
64
|
-
};
|
|
65
|
-
end: {
|
|
66
|
-
line: number;
|
|
67
|
-
column: number;
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Aggregate coverage metrics
|
|
73
|
-
*/
|
|
74
|
-
export interface CoverageMetrics {
|
|
75
|
-
/** Overall line coverage percentage */
|
|
76
|
-
lineCoverage: number;
|
|
77
|
-
/** Overall branch coverage percentage */
|
|
78
|
-
branchCoverage: number;
|
|
79
|
-
/** Overall function coverage percentage */
|
|
80
|
-
functionCoverage: number;
|
|
81
|
-
/** Overall statement coverage percentage */
|
|
82
|
-
statementCoverage: number;
|
|
83
|
-
/** Total files analyzed */
|
|
84
|
-
totalFiles: number;
|
|
85
|
-
/** Files with coverage data */
|
|
86
|
-
filesWithCoverage: number;
|
|
87
|
-
/** Files meeting threshold */
|
|
88
|
-
filesMeetingThreshold: number;
|
|
89
|
-
/** Total lines across all files */
|
|
90
|
-
totalLines: number;
|
|
91
|
-
/** Covered lines across all files */
|
|
92
|
-
coveredLines: number;
|
|
93
|
-
/** Timestamp of metrics calculation */
|
|
94
|
-
timestamp: number;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Coverage threshold configuration
|
|
98
|
-
*/
|
|
99
|
-
export interface CoverageThreshold {
|
|
100
|
-
/** Minimum line coverage percentage */
|
|
101
|
-
line?: number;
|
|
102
|
-
/** Minimum branch coverage percentage */
|
|
103
|
-
branch?: number;
|
|
104
|
-
/** Minimum function coverage percentage */
|
|
105
|
-
function?: number;
|
|
106
|
-
/** Minimum statement coverage percentage */
|
|
107
|
-
statement?: number;
|
|
108
|
-
/** Global or per-file thresholds */
|
|
109
|
-
scope?: 'global' | 'per-file';
|
|
110
|
-
/** File-specific thresholds (glob patterns) */
|
|
111
|
-
files?: Record<string, Partial<CoverageThreshold>>;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Coverage result from a single test execution
|
|
115
|
-
*/
|
|
116
|
-
export interface CoverageResult {
|
|
117
|
-
/** Source of coverage data */
|
|
118
|
-
source: CoverageSource;
|
|
119
|
-
/** Gate that produced this coverage */
|
|
120
|
-
gate: string;
|
|
121
|
-
/** File-level coverage data */
|
|
122
|
-
files: Record<string, FileCoverage>;
|
|
123
|
-
/** Aggregate metrics */
|
|
124
|
-
metrics: CoverageMetrics;
|
|
125
|
-
/** Coverage report format */
|
|
126
|
-
format: 'json' | 'lcov' | 'istanbul';
|
|
127
|
-
/** Raw coverage data */
|
|
128
|
-
rawData?: unknown;
|
|
129
|
-
/** Execution timestamp */
|
|
130
|
-
timestamp: number;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Coverage trend data point
|
|
134
|
-
*/
|
|
135
|
-
export interface CoverageTrend {
|
|
136
|
-
/** Run identifier */
|
|
137
|
-
runId: string;
|
|
138
|
-
/** Timestamp of run */
|
|
139
|
-
timestamp: number;
|
|
140
|
-
/** Coverage percentage for this point */
|
|
141
|
-
coverage: number;
|
|
142
|
-
/** Coverage type */
|
|
143
|
-
type: CoverageType;
|
|
144
|
-
/** Change from previous run */
|
|
145
|
-
change: number;
|
|
146
|
-
/** Git commit hash if available */
|
|
147
|
-
commit?: string;
|
|
148
|
-
/** Git branch if available */
|
|
149
|
-
branch?: string;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Coverage gap analysis
|
|
153
|
-
*/
|
|
154
|
-
export interface CoverageGap {
|
|
155
|
-
/** File path */
|
|
156
|
-
path: string;
|
|
157
|
-
/** Current coverage percentage */
|
|
158
|
-
currentCoverage: number;
|
|
159
|
-
/** Target coverage percentage */
|
|
160
|
-
targetCoverage: number;
|
|
161
|
-
/** Gap percentage */
|
|
162
|
-
gap: number;
|
|
163
|
-
/** Priority (higher = more important to cover) */
|
|
164
|
-
priority: 'high' | 'medium' | 'low';
|
|
165
|
-
/** Estimated effort to cover */
|
|
166
|
-
effort: 'low' | 'medium' | 'high';
|
|
167
|
-
/** Uncovered lines count */
|
|
168
|
-
uncoveredCount: number;
|
|
169
|
-
/** Suggested test cases */
|
|
170
|
-
suggestions: string[];
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Coverage comparison between two runs
|
|
174
|
-
*/
|
|
175
|
-
export interface CoverageComparison {
|
|
176
|
-
/** Base run ID */
|
|
177
|
-
baseRunId: string;
|
|
178
|
-
/** Compare run ID */
|
|
179
|
-
compareRunId: string;
|
|
180
|
-
/** Files with improved coverage */
|
|
181
|
-
improved: Array<{
|
|
182
|
-
path: string;
|
|
183
|
-
before: number;
|
|
184
|
-
after: number;
|
|
185
|
-
delta: number;
|
|
186
|
-
}>;
|
|
187
|
-
/** Files with decreased coverage */
|
|
188
|
-
regressed: Array<{
|
|
189
|
-
path: string;
|
|
190
|
-
before: number;
|
|
191
|
-
after: number;
|
|
192
|
-
delta: number;
|
|
193
|
-
}>;
|
|
194
|
-
/** New files covered */
|
|
195
|
-
newFiles: string[];
|
|
196
|
-
/** Removed files */
|
|
197
|
-
removedFiles: string[];
|
|
198
|
-
/** Overall coverage change */
|
|
199
|
-
overallChange: number;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Coverage configuration
|
|
203
|
-
*/
|
|
204
|
-
export interface CoverageConfig {
|
|
205
|
-
/** Enable coverage collection */
|
|
206
|
-
enabled: boolean;
|
|
207
|
-
/** Coverage threshold requirements */
|
|
208
|
-
thresholds: CoverageThreshold;
|
|
209
|
-
/** Fail build if thresholds not met */
|
|
210
|
-
failOnThreshold: boolean;
|
|
211
|
-
/** Include patterns for coverage collection */
|
|
212
|
-
include: string[];
|
|
213
|
-
/** Exclude patterns for coverage collection */
|
|
214
|
-
exclude: string[];
|
|
215
|
-
/** Report formats to generate */
|
|
216
|
-
reportFormats: Array<'json' | 'lcov' | 'html' | 'text'>;
|
|
217
|
-
/** Coverage sources to collect from */
|
|
218
|
-
sources: CoverageSource[];
|
|
219
|
-
/** Store coverage in vault */
|
|
220
|
-
storeInVault: boolean;
|
|
221
|
-
/** Generate trend analysis */
|
|
222
|
-
trackTrends: boolean;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Test coverage mapping
|
|
226
|
-
*/
|
|
227
|
-
export interface TestCoverageMap {
|
|
228
|
-
/** Test name/identifier */
|
|
229
|
-
testName: string;
|
|
230
|
-
/** Files covered by this test */
|
|
231
|
-
files: string[];
|
|
232
|
-
/** Specific lines covered (by file path) */
|
|
233
|
-
lines: Record<string, number[]>;
|
|
234
|
-
/** Branches covered (by file path) */
|
|
235
|
-
branches: Record<string, BranchInfo[]>;
|
|
236
|
-
/** Execution time */
|
|
237
|
-
duration: number;
|
|
238
|
-
/** Gate this test belongs to */
|
|
239
|
-
gate: string;
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Coverage report summary
|
|
243
|
-
*/
|
|
244
|
-
export interface CoverageReport {
|
|
245
|
-
/** Run ID */
|
|
246
|
-
runId: string;
|
|
247
|
-
/** Timestamp */
|
|
248
|
-
timestamp: number;
|
|
249
|
-
/** Overall coverage metrics */
|
|
250
|
-
metrics: CoverageMetrics;
|
|
251
|
-
/** Coverage by gate */
|
|
252
|
-
byGate: Record<string, CoverageMetrics>;
|
|
253
|
-
/** Coverage by file (top N files by coverage) */
|
|
254
|
-
topFiles: Array<{
|
|
255
|
-
path: string;
|
|
256
|
-
coverage: number;
|
|
257
|
-
type: 'best' | 'worst';
|
|
258
|
-
}>;
|
|
259
|
-
/** Coverage gaps */
|
|
260
|
-
gaps: CoverageGap[];
|
|
261
|
-
/** Trends (if available) */
|
|
262
|
-
trends?: Record<CoverageType, CoverageTrend[]>;
|
|
263
|
-
/** Threshold status */
|
|
264
|
-
thresholdsMet: boolean;
|
|
265
|
-
/** Files not meeting thresholds */
|
|
266
|
-
thresholdViolations: string[];
|
|
267
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Coverage Vault Integration
|
|
3
|
-
*
|
|
4
|
-
* Integrates coverage data storage and retrieval with the Evidence Vault.
|
|
5
|
-
*/
|
|
6
|
-
import type { Database } from 'sqlite3';
|
|
7
|
-
import type { CoverageMetrics, CoverageResult, CoverageTrend, CoverageType } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Coverage Vault class
|
|
10
|
-
*/
|
|
11
|
-
export declare class CoverageVault {
|
|
12
|
-
private db;
|
|
13
|
-
private dbRun;
|
|
14
|
-
private dbAll;
|
|
15
|
-
private dbGet;
|
|
16
|
-
constructor(db: Database);
|
|
17
|
-
/**
|
|
18
|
-
* Initialize coverage tables
|
|
19
|
-
*/
|
|
20
|
-
initialize(): Promise<void>;
|
|
21
|
-
/**
|
|
22
|
-
* Store coverage result for a run
|
|
23
|
-
*/
|
|
24
|
-
storeCoverage(runId: string, result: CoverageResult): Promise<void>;
|
|
25
|
-
/**
|
|
26
|
-
* Store coverage summary for a run
|
|
27
|
-
*/
|
|
28
|
-
storeSummary(runId: string, metrics: CoverageMetrics): Promise<void>;
|
|
29
|
-
/**
|
|
30
|
-
* Retrieve coverage for a run
|
|
31
|
-
*/
|
|
32
|
-
getCoverage(runId: string): Promise<CoverageResult | null>;
|
|
33
|
-
/**
|
|
34
|
-
* Get coverage summary for a run
|
|
35
|
-
*/
|
|
36
|
-
getSummary(runId: string): Promise<CoverageMetrics | null>;
|
|
37
|
-
/**
|
|
38
|
-
* Get coverage trends for a file
|
|
39
|
-
*/
|
|
40
|
-
getTrends(filePath: string, coverageType?: CoverageType, limit?: number): Promise<CoverageTrend[]>;
|
|
41
|
-
/**
|
|
42
|
-
* Get overall coverage trends
|
|
43
|
-
*/
|
|
44
|
-
getOverallTrends(coverageType?: CoverageType, limit?: number): Promise<CoverageTrend[]>;
|
|
45
|
-
/**
|
|
46
|
-
* Get coverage by gate
|
|
47
|
-
*/
|
|
48
|
-
getCoverageByGate(gate: string, limit?: number): Promise<CoverageMetrics[]>;
|
|
49
|
-
/**
|
|
50
|
-
* Get files with lowest coverage
|
|
51
|
-
*/
|
|
52
|
-
getLowestCoverageFiles(limit?: number): Promise<Array<{
|
|
53
|
-
filePath: string;
|
|
54
|
-
coverage: number;
|
|
55
|
-
gate: string;
|
|
56
|
-
}>>;
|
|
57
|
-
/**
|
|
58
|
-
* Get files with highest coverage
|
|
59
|
-
*/
|
|
60
|
-
getHighestCoverageFiles(limit?: number): Promise<Array<{
|
|
61
|
-
filePath: string;
|
|
62
|
-
coverage: number;
|
|
63
|
-
gate: string;
|
|
64
|
-
}>>;
|
|
65
|
-
/**
|
|
66
|
-
* Get coverage statistics across all runs
|
|
67
|
-
*/
|
|
68
|
-
getStatistics(): Promise<{
|
|
69
|
-
totalRuns: number;
|
|
70
|
-
averageLineCoverage: number;
|
|
71
|
-
averageBranchCoverage: number;
|
|
72
|
-
averageFunctionCoverage: number;
|
|
73
|
-
bestCoverage: {
|
|
74
|
-
runId: string;
|
|
75
|
-
coverage: number;
|
|
76
|
-
};
|
|
77
|
-
worstCoverage: {
|
|
78
|
-
runId: string;
|
|
79
|
-
coverage: number;
|
|
80
|
-
};
|
|
81
|
-
}>;
|
|
82
|
-
/**
|
|
83
|
-
* Delete coverage data for a run
|
|
84
|
-
*/
|
|
85
|
-
deleteCoverage(runId: string): Promise<void>;
|
|
86
|
-
/**
|
|
87
|
-
* Get recent coverage changes (comparison with previous run)
|
|
88
|
-
*/
|
|
89
|
-
getRecentChanges(limit?: number): Promise<Array<{
|
|
90
|
-
runId: string;
|
|
91
|
-
timestamp: number;
|
|
92
|
-
lineCoverage: number;
|
|
93
|
-
change: number;
|
|
94
|
-
}>>;
|
|
95
|
-
}
|