laxy-verify 1.2.2 → 1.3.0

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.
@@ -1,108 +1,164 @@
1
- export type VerificationGrade = "gold" | "silver" | "bronze" | "unverified";
2
- export type VerificationTier = "free" | "pro" | "team";
3
- export type ReleaseVerdict = "quick-pass" | "client-ready" | "investigate" | "hold" | "release-ready" | "build-failed";
4
- export interface LighthouseThresholds {
5
- performance: number;
6
- accessibility: number;
7
- seo: number;
8
- bestPractices: number;
9
- }
10
- export interface LighthouseScores {
11
- performance: number;
12
- accessibility: number;
13
- bestPractices: number;
14
- seo: number;
15
- }
16
- export interface VerificationInput {
17
- buildSuccess?: boolean;
18
- buildErrors?: string[];
19
- e2ePassed?: number;
20
- e2eTotal?: number;
21
- e2eCoverageGaps?: string[];
22
- e2eStabilityPassed?: boolean;
23
- e2eConsoleErrorCount?: number;
24
- lighthouseSkipped?: boolean;
25
- lighthouseErrorCount?: number;
26
- viewportIssues?: number;
27
- multiViewportPassed?: boolean;
28
- multiViewportSummary?: string;
29
- visualDiffVerdict?: "pass" | "warn" | "rollback";
30
- visualDiffPercentage?: number;
31
- hasVisualBaseline?: boolean;
32
- failureEvidence?: string[];
33
- lighthouseScores?: LighthouseScores;
34
- mobileLighthouseScores?: LighthouseScores;
35
- securityAudit?: {
36
- totalVulnerabilities: number;
37
- critical: number;
38
- high: number;
39
- summary: string;
40
- };
41
- brokenLinksAudit?: {
42
- checkedCount: number;
43
- brokenCount: number;
44
- summary: string;
45
- };
46
- }
47
- export interface VerificationCheck {
48
- key: "build" | "e2e" | "lighthouse" | "viewport" | "visual" | "security" | "mobile-lh" | "console-errors" | "broken-links";
49
- label: string;
50
- passed: boolean;
51
- }
52
- export interface VerificationFinding {
53
- category: "build" | "performance" | "accessibility" | "seo" | "bestPractices" | "e2e" | "viewport" | "visual" | "security" | "runtime";
54
- severity: "critical" | "high" | "medium";
55
- title: string;
56
- description: string;
57
- action: string;
58
- }
59
- export interface VerificationEvidence {
60
- input: VerificationInput;
61
- thresholds: LighthouseThresholds;
62
- buildPassed: boolean;
63
- e2ePassedAll: boolean;
64
- e2eStabilityPassed: boolean;
65
- hasE2EData: boolean;
66
- hasLighthouseData: boolean;
67
- lighthouseSkipped: boolean;
68
- hasMultiViewportData: boolean;
69
- multiViewportPassed: boolean;
70
- hasVisualDiffData: boolean;
71
- hasComparableVisualDiffData: boolean;
72
- visualDiffPassed: boolean;
73
- lighthousePassed: boolean;
74
- hasConsoleErrors: boolean;
75
- hasSecurityData: boolean;
76
- securityPassed: boolean;
77
- hasMobileLighthouseData: boolean;
78
- mobileLighthousePassed: boolean;
79
- }
80
- export interface VerificationReport {
81
- tier: VerificationTier;
82
- verdict: ReleaseVerdict;
83
- confidence: "low" | "medium" | "high";
84
- summary: string;
85
- grade: VerificationGrade;
86
- blockers: VerificationFinding[];
87
- warnings: VerificationFinding[];
88
- passes: VerificationCheck[];
89
- nextActions: string[];
90
- failureEvidence: string[];
91
- evidence: VerificationEvidence;
92
- }
93
- export interface TierVerificationView {
94
- tier: VerificationTier;
95
- question: string;
96
- verdict: ReleaseVerdict;
97
- confidence: "low" | "medium" | "high";
98
- summary: string;
99
- grade: VerificationGrade;
100
- blockers: VerificationFinding[];
101
- warnings: VerificationFinding[];
102
- passes: VerificationCheck[];
103
- nextActions: string[];
104
- failureEvidence: string[];
105
- showDetailedLighthouse: boolean;
106
- showDetailedE2E: boolean;
107
- showReportExport: boolean;
108
- }
1
+ export type VerificationGrade = "gold" | "silver" | "bronze" | "unverified";
2
+ export type VerificationTier = "free" | "pro" | "team";
3
+ export type ReleaseVerdict = "quick-pass" | "client-ready" | "investigate" | "hold" | "release-ready" | "build-failed";
4
+ export interface LighthouseThresholds {
5
+ performance: number;
6
+ accessibility: number;
7
+ seo: number;
8
+ bestPractices: number;
9
+ }
10
+ export interface LighthouseScores {
11
+ performance: number;
12
+ accessibility: number;
13
+ bestPractices: number;
14
+ seo: number;
15
+ }
16
+ export interface VerificationInput {
17
+ buildSuccess?: boolean;
18
+ buildErrors?: string[];
19
+ e2ePassed?: number;
20
+ e2eTotal?: number;
21
+ e2eCoverageGaps?: string[];
22
+ e2eStabilityPassed?: boolean;
23
+ e2eConsoleErrorCount?: number;
24
+ lighthouseSkipped?: boolean;
25
+ lighthouseErrorCount?: number;
26
+ viewportIssues?: number;
27
+ multiViewportPassed?: boolean;
28
+ multiViewportSummary?: string;
29
+ visualDiffVerdict?: "pass" | "warn" | "rollback";
30
+ visualDiffPercentage?: number;
31
+ hasVisualBaseline?: boolean;
32
+ failureEvidence?: string[];
33
+ lighthouseScores?: LighthouseScores;
34
+ mobileLighthouseScores?: LighthouseScores;
35
+ securityAudit?: {
36
+ totalVulnerabilities: number;
37
+ critical: number;
38
+ high: number;
39
+ summary: string;
40
+ };
41
+ brokenLinksAudit?: {
42
+ checkedCount: number;
43
+ brokenCount: number;
44
+ summary: string;
45
+ };
46
+ typecheck?: {
47
+ passed: boolean;
48
+ errorCount: number;
49
+ skipped: boolean;
50
+ };
51
+ secretScan?: {
52
+ passed: boolean;
53
+ findingsCount: number;
54
+ filesScanned: number;
55
+ skipped: boolean;
56
+ };
57
+ a11yDeep?: {
58
+ passed: boolean;
59
+ criticalCount: number;
60
+ seriousCount: number;
61
+ summary: string;
62
+ skipped: boolean;
63
+ };
64
+ seoDeep?: {
65
+ passed: boolean;
66
+ errorCount: number;
67
+ warningCount: number;
68
+ summary: string;
69
+ skipped: boolean;
70
+ };
71
+ vitalsBudget?: {
72
+ passed: boolean;
73
+ lcp: number | null;
74
+ cls: number | null;
75
+ inp: number | null;
76
+ summary: string;
77
+ skipped: boolean;
78
+ };
79
+ bundleSize?: {
80
+ framework: string;
81
+ firstLoadJsKb: number | null;
82
+ largestChunkKb: number | null;
83
+ advisory: string;
84
+ skipped: boolean;
85
+ };
86
+ outdatedCheck?: {
87
+ outdatedCount: number;
88
+ majorOutdated: number;
89
+ advisory: string;
90
+ skipped: boolean;
91
+ };
92
+ }
93
+ export interface VerificationCheck {
94
+ key: "build" | "e2e" | "lighthouse" | "viewport" | "visual" | "security" | "mobile-lh" | "console-errors" | "broken-links" | "typecheck" | "secret-scan" | "a11y-deep" | "seo-deep" | "vitals-budget" | "bundle-size" | "outdated-check";
95
+ label: string;
96
+ passed: boolean;
97
+ }
98
+ export interface VerificationFinding {
99
+ category: "build" | "performance" | "accessibility" | "seo" | "bestPractices" | "e2e" | "viewport" | "visual" | "security" | "runtime" | "typecheck" | "secrets" | "vitals";
100
+ severity: "critical" | "high" | "medium";
101
+ title: string;
102
+ description: string;
103
+ action: string;
104
+ }
105
+ export interface VerificationEvidence {
106
+ input: VerificationInput;
107
+ thresholds: LighthouseThresholds;
108
+ buildPassed: boolean;
109
+ e2ePassedAll: boolean;
110
+ e2eStabilityPassed: boolean;
111
+ hasE2EData: boolean;
112
+ hasLighthouseData: boolean;
113
+ lighthouseSkipped: boolean;
114
+ hasMultiViewportData: boolean;
115
+ multiViewportPassed: boolean;
116
+ hasVisualDiffData: boolean;
117
+ hasComparableVisualDiffData: boolean;
118
+ visualDiffPassed: boolean;
119
+ lighthousePassed: boolean;
120
+ hasConsoleErrors: boolean;
121
+ hasSecurityData: boolean;
122
+ securityPassed: boolean;
123
+ hasMobileLighthouseData: boolean;
124
+ mobileLighthousePassed: boolean;
125
+ hasTypecheckData: boolean;
126
+ typecheckPassed: boolean;
127
+ hasSecretScanData: boolean;
128
+ secretScanPassed: boolean;
129
+ hasA11yDeepData: boolean;
130
+ a11yDeepPassed: boolean;
131
+ hasSeoDeepData: boolean;
132
+ seoDeepPassed: boolean;
133
+ hasVitalsBudgetData: boolean;
134
+ vitalsBudgetPassed: boolean;
135
+ }
136
+ export interface VerificationReport {
137
+ tier: VerificationTier;
138
+ verdict: ReleaseVerdict;
139
+ confidence: "low" | "medium" | "high";
140
+ summary: string;
141
+ grade: VerificationGrade;
142
+ blockers: VerificationFinding[];
143
+ warnings: VerificationFinding[];
144
+ passes: VerificationCheck[];
145
+ nextActions: string[];
146
+ failureEvidence: string[];
147
+ evidence: VerificationEvidence;
148
+ }
149
+ export interface TierVerificationView {
150
+ tier: VerificationTier;
151
+ question: string;
152
+ verdict: ReleaseVerdict;
153
+ confidence: "low" | "medium" | "high";
154
+ summary: string;
155
+ grade: VerificationGrade;
156
+ blockers: VerificationFinding[];
157
+ warnings: VerificationFinding[];
158
+ passes: VerificationCheck[];
159
+ nextActions: string[];
160
+ failureEvidence: string[];
161
+ showDetailedLighthouse: boolean;
162
+ showDetailedE2E: boolean;
163
+ showReportExport: boolean;
164
+ }
@@ -1,26 +1,33 @@
1
- export type VisualDiffViewportName = "desktop" | "tablet" | "mobile";
2
- export interface VisualDiffViewportResult {
3
- viewport: VisualDiffViewportName;
4
- hasBaseline: boolean;
5
- diffPercentage: number;
6
- verdict: "pass" | "warn" | "rollback";
7
- diffPixels: number;
8
- totalPixels: number;
9
- baselinePath: string;
10
- currentPath: string;
11
- diffPath: string;
12
- }
13
- export interface VisualDiffResult {
14
- hasBaseline: boolean;
15
- diffPercentage: number;
16
- verdict: "pass" | "warn" | "rollback";
17
- diffPixels: number;
18
- totalPixels: number;
19
- baselinePath: string;
20
- currentPath: string;
21
- diffPath: string;
22
- viewports: VisualDiffViewportResult[];
23
- summary: string;
24
- }
25
- export declare function formatVisualDiffSummary(result: VisualDiffResult): string;
26
- export declare function runVisualDiff(projectDir: string, url: string, label?: string): Promise<VisualDiffResult>;
1
+ export type VisualDiffViewportName = "desktop" | "tablet" | "mobile";
2
+ export interface VisualDiffViewportResult {
3
+ viewport: VisualDiffViewportName;
4
+ hasBaseline: boolean;
5
+ diffPercentage: number;
6
+ verdict: "pass" | "warn" | "rollback";
7
+ diffPixels: number;
8
+ totalPixels: number;
9
+ baselinePath: string;
10
+ currentPath: string;
11
+ diffPath: string;
12
+ }
13
+ export interface VisualDiffResult {
14
+ hasBaseline: boolean;
15
+ diffPercentage: number;
16
+ verdict: "pass" | "warn" | "rollback";
17
+ diffPixels: number;
18
+ totalPixels: number;
19
+ baselinePath: string;
20
+ currentPath: string;
21
+ diffPath: string;
22
+ viewports: VisualDiffViewportResult[];
23
+ summary: string;
24
+ }
25
+ export interface VisualDiffOptions {
26
+ pixelmatchThreshold?: number;
27
+ warnThreshold?: number;
28
+ rollbackThreshold?: number;
29
+ ignoreSelectors?: string[];
30
+ disableAnimations?: boolean;
31
+ }
32
+ export declare function formatVisualDiffSummary(result: VisualDiffResult): string;
33
+ export declare function runVisualDiff(projectDir: string, url: string, label?: string, options?: VisualDiffOptions): Promise<VisualDiffResult>;