up
This commit is contained in:
78
src/Web/StellaOps.Web/.lighthouserc.js
Normal file
78
src/Web/StellaOps.Web/.lighthouserc.js
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* Lighthouse CI Configuration
|
||||
*
|
||||
* Quality gates aligned with StellaOps advisory:
|
||||
* - Performance: >= 90
|
||||
* - Accessibility: >= 95
|
||||
* - Best Practices: >= 90
|
||||
* - SEO: >= 90
|
||||
*/
|
||||
module.exports = {
|
||||
ci: {
|
||||
collect: {
|
||||
staticDistDir: './dist/stella-ops-web/browser',
|
||||
numberOfRuns: 3,
|
||||
settings: {
|
||||
// Mobile-first testing
|
||||
formFactor: 'mobile',
|
||||
throttling: {
|
||||
rttMs: 150,
|
||||
throughputKbps: 1638.4,
|
||||
cpuSlowdownMultiplier: 4,
|
||||
},
|
||||
screenEmulation: {
|
||||
mobile: true,
|
||||
width: 375,
|
||||
height: 667,
|
||||
deviceScaleFactor: 2,
|
||||
disabled: false,
|
||||
},
|
||||
// Skip audits that don't apply to SPAs
|
||||
skipAudits: [
|
||||
'uses-http2', // Often depends on server config
|
||||
'redirects-http', // Handled by deployment
|
||||
],
|
||||
},
|
||||
},
|
||||
assert: {
|
||||
preset: 'lighthouse:recommended',
|
||||
assertions: {
|
||||
// Performance budget
|
||||
'categories:performance': ['warn', { minScore: 0.9 }],
|
||||
'first-contentful-paint': ['warn', { maxNumericValue: 2000 }],
|
||||
'largest-contentful-paint': ['warn', { maxNumericValue: 2500 }],
|
||||
'cumulative-layout-shift': ['error', { maxNumericValue: 0.1 }],
|
||||
'total-blocking-time': ['warn', { maxNumericValue: 300 }],
|
||||
|
||||
// Accessibility (strict - these are blocking)
|
||||
'categories:accessibility': ['error', { minScore: 0.95 }],
|
||||
'color-contrast': 'error',
|
||||
'document-title': 'error',
|
||||
'html-has-lang': 'error',
|
||||
'image-alt': 'error',
|
||||
'label': 'error',
|
||||
'link-name': 'error',
|
||||
'meta-viewport': 'error',
|
||||
'button-name': 'error',
|
||||
'aria-roles': 'error',
|
||||
'aria-valid-attr': 'error',
|
||||
'aria-valid-attr-value': 'error',
|
||||
|
||||
// Best Practices
|
||||
'categories:best-practices': ['warn', { minScore: 0.9 }],
|
||||
'is-on-https': 'off', // Handled by deployment
|
||||
'no-vulnerable-libraries': 'error',
|
||||
|
||||
// SEO
|
||||
'categories:seo': ['warn', { minScore: 0.9 }],
|
||||
'meta-description': 'warn',
|
||||
'robots-txt': 'off', // Handled by deployment
|
||||
},
|
||||
},
|
||||
upload: {
|
||||
target: 'filesystem',
|
||||
outputDir: './lighthouse-results',
|
||||
reportFilenamePattern: '%%PATHNAME%%-%%DATETIME%%-report.%%EXTENSION%%',
|
||||
},
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user