-
Notifications
You must be signed in to change notification settings - Fork 6
/
test-istanbul.js
90 lines (70 loc) · 2.07 KB
/
test-istanbul.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
81
82
83
84
85
86
87
88
89
90
const { chromium } = require('playwright');
const EC = require('eight-colors');
const MCR = require('../');
const checkSnapshot = require('./check-snapshot.js');
const coverageOptions = {
// logging: 'debug',
// watermarks: [60, 90],
reports: [
['console-details', {
metrics: ['lines']
}],
// ['console-summary', {
// metrics: ['lines']
// }],
'codecov',
// v8 will be ignored if input data istanbul
'v8',
'raw',
['html'],
// ['text'],
['json']
// ['html-spa', {
// subdir: 'html-spa'
// }]
],
lcov: true,
name: 'My Istanbul Report',
all: {
dir: ['test/mock/src']
},
outputDir: './docs/istanbul',
onEnd: function(coverageResults) {
checkSnapshot(coverageResults);
}
};
const test = async () => {
console.log('start istanbul test ...');
const browser = await chromium.launch();
const page = await browser.newPage();
await page.addScriptTag({
path: './test/mock/istanbul/dist/coverage-istanbul.js'
});
await new Promise((resolve) => {
setTimeout(resolve, 500);
});
await page.evaluate(() => {
const { foo } = window['coverage-istanbul'];
foo();
});
await page.evaluate(() => {
const { bar } = window['coverage-istanbul'];
bar();
});
const coverageData = await page.evaluate(() => window.__coverage__);
const results = await MCR(coverageOptions).add(coverageData);
console.log('istanbul coverage added', results.type);
await browser.close();
};
const generate = async () => {
console.log('generate istanbul coverage reports ...');
const coverageResults = await MCR(coverageOptions).generate();
// console.log('istanbul coverageResults', Object.keys(coverageResults));
console.log('istanbul coverage reportPath', EC.magenta(coverageResults.reportPath));
};
const main = async () => {
await MCR(coverageOptions).cleanCache();
await test();
await generate();
};
main();