Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 9x 31x 3x 1x 2x 2x 1x 1x | /**
* CSS Normalizer Plugin
* Normalizes CSS content for more meaningful comparisons
*/
/**
* Normalize CSS content by standardizing whitespace and formatting
* @param {string} css - CSS content
* @returns {string} Normalized CSS
*/
export function normalizeCSS(css) {
return (
css
// Normalize line endings
.replace(/\r\n/g, '\n')
// Remove trailing whitespace from lines
.split('\n')
.map((line) => line.trimEnd())
.join('\n')
// Normalize multiple blank lines to single blank line
.replace(/\n{3,}/g, '\n\n')
// Trim leading/trailing whitespace
.trim()
);
}
/**
* Plugin hook: beforeCompare
* Normalizes both baseline and current content before comparison
* @param {string} baseline - Baseline content
* @param {string} current - Current content
* @param {string} filePath - File path
* @returns {Object} Normalized content
*/
export function beforeCompare(baseline, current, filePath) {
// Only process CSS files
if (!filePath.endsWith('.css')) {
return null;
}
return {
baseline: normalizeCSS(baseline),
current: normalizeCSS(current),
};
}
/**
* Plugin hook: beforeCapture
* Normalizes content before capturing baseline
* @param {string} content - Content to normalize
* @param {string} filePath - File path
* @returns {string} Normalized content
*/
export function beforeCapture(content, filePath) {
// Only process CSS files
if (!filePath.endsWith('.css')) {
return content;
}
return normalizeCSS(content);
}
export default {
name: 'css-normalizer',
beforeCompare,
beforeCapture,
};
|