-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathtest-esbuild.js
84 lines (60 loc) · 1.89 KB
/
test-esbuild.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
const { chromium } = require('playwright');
const EC = require('eight-colors');
const serve = require('./serve.js');
const MCR = require('../');
const checkSnapshot = require('./check-snapshot.js');
const coverageOptions = {
// logging: 'debug',
reports: [
['v8', {
assetsPath: '../assets'
}]
],
name: 'My V8 Esbuild Coverage Report',
outputDir: './docs/esbuild',
onEnd: function(coverageResults) {
checkSnapshot(coverageResults);
}
};
const test = async (serverUrl) => {
console.log('start esbuild test ...');
const browser = await chromium.launch({
// headless: false
});
const page = await browser.newPage();
await Promise.all([
page.coverage.startJSCoverage({
resetOnNavigation: false
}),
page.coverage.startCSSCoverage({
resetOnNavigation: false
})
]);
console.log(`goto ${serverUrl}`);
await page.goto(serverUrl);
await new Promise((resolve) => {
setTimeout(resolve, 500);
});
const [jsCoverage, cssCoverage] = await Promise.all([
page.coverage.stopJSCoverage(),
page.coverage.stopCSSCoverage()
]);
const coverageList = [... jsCoverage, ... cssCoverage];
const results = await MCR(coverageOptions).add(coverageList);
console.log('esbuild coverage added', results.type);
await browser.close();
};
const generate = async () => {
console.log('generate esbuild coverage reports ...');
const coverageResults = await MCR(coverageOptions).generate();
console.log('esbuild coverage reportPath', EC.magenta(coverageResults.reportPath));
};
const main = async () => {
const { server, serverUrl } = await serve(8140, 'esbuild');
// clean cache first
await MCR(coverageOptions).cleanCache();
await test(serverUrl);
server.close();
await generate();
};
main();