-
Notifications
You must be signed in to change notification settings - Fork 6
/
test-css.js
80 lines (66 loc) · 2.13 KB
/
test-css.js
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
69
70
71
72
73
74
75
76
77
78
79
80
const fs = require('fs');
const path = require('path');
const { chromium } = require('playwright');
const EC = require('eight-colors');
const MCR = require('../');
const checkSnapshot = require('./check-snapshot.js');
// v8 and lcov
const coverageOptions = {
// logging: 'debug',
// watermarks: [60, 90],
reports: 'v8',
name: 'My Css Coverage Report',
assetsPath: '../assets',
lcov: true,
outputDir: './docs/css',
onEnd: function(coverageResults) {
checkSnapshot(coverageResults);
}
};
const test = async (serverUrl) => {
console.log('start css test ...');
const browser = await chromium.launch();
const page = await browser.newPage();
await page.coverage.startCSSCoverage({
resetOnNavigation: false
});
const fileList = [
'./test/mock/css/index.html',
'./test/mock/minify/with-map/bootstrap.min.css',
'./test/mock/css/style.css'
];
for (const filePath of fileList) {
const content = fs.readFileSync(filePath).toString('utf-8');
const extname = path.extname(filePath);
if (extname === '.html') {
await page.setContent(content);
} else if (extname === '.css') {
await page.addStyleTag({
content: `${content}\n/*# sourceURL=${filePath} */`
});
} else {
await page.addScriptTag({
content: `${content}\n//# sourceURL=${filePath}`
});
}
}
await new Promise((resolve) => {
setTimeout(resolve, 500);
});
const coverageData = await page.coverage.stopCSSCoverage();
const report = await MCR(coverageOptions).add(coverageData);
console.log('css coverage added', report.type);
await browser.close();
};
const generate = async () => {
console.log('generate css coverage reports ...');
const coverageResults = await MCR(coverageOptions).generate();
console.log('css coverage reportPath', EC.magenta(coverageResults.reportPath));
};
const main = async () => {
// clean cache first
await MCR(coverageOptions).cleanCache();
await test();
await generate();
};
main();