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.

@@ -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,6 +0,0 @@
1
- /**
2
- * QA360 Coverage Analytics Module
3
- *
4
- * Types for coverage collection, analysis, and reporting.
5
- */
6
- export {};
@@ -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
- }