wdio-monocart-service 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/lib/index.d.ts +5 -1
- package/lib/index.js +40 -23
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,7 +18,13 @@ npm i wdio-monocart-service
|
|
|
18
18
|
services: [
|
|
19
19
|
['monocart', {
|
|
20
20
|
name: 'My WebdriverIO Coverage Report',
|
|
21
|
+
// v8 (default) or istanbul (requires instrumenting source code)
|
|
22
|
+
// coverageProvider: 'v8',
|
|
21
23
|
entryFilter: '**/src/**',
|
|
24
|
+
reports: [
|
|
25
|
+
'v8',
|
|
26
|
+
'console-details'
|
|
27
|
+
],
|
|
22
28
|
outputDir: './coverage-reports'
|
|
23
29
|
}]
|
|
24
30
|
]
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
CoverageReportOptions,
|
|
2
|
+
CoverageReportOptions as BaseOptions,
|
|
3
3
|
ReportDescription,
|
|
4
4
|
V8CoverageEntry,
|
|
5
5
|
Watermarks,
|
|
@@ -13,6 +13,10 @@ import type {
|
|
|
13
13
|
CoverageReport
|
|
14
14
|
} from "monocart-coverage-reports";
|
|
15
15
|
|
|
16
|
+
interface CoverageReportOptions extends BaseOptions {
|
|
17
|
+
coverageProvider?: 'v8' | "istanbul";
|
|
18
|
+
}
|
|
19
|
+
|
|
16
20
|
export type {
|
|
17
21
|
CoverageReportOptions,
|
|
18
22
|
ReportDescription,
|
package/lib/index.js
CHANGED
|
@@ -16,15 +16,19 @@ export default class CoverageReportService {
|
|
|
16
16
|
this.coverageReport = new CoverageReport({
|
|
17
17
|
... serviceOptions
|
|
18
18
|
});
|
|
19
|
-
|
|
19
|
+
// v8 or istanbul
|
|
20
|
+
this.coverageProvider = 'v8';
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* this browser object is passed in here for the first time
|
|
24
25
|
*/
|
|
25
|
-
before(config, capabilities, browser) {
|
|
26
|
+
async before(config, capabilities, browser) {
|
|
26
27
|
this.browser = browser;
|
|
27
28
|
// something before all tests are run, e.g.
|
|
29
|
+
await this.coverageReport.loadConfig();
|
|
30
|
+
this.coverageProvider = this.coverageReport.options.coverageProvider;
|
|
31
|
+
this.coverageReport.cleanCache();
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
async after(exitCode, config, capabilities) {
|
|
@@ -40,15 +44,21 @@ export default class CoverageReportService {
|
|
|
40
44
|
if (puppeteer) {
|
|
41
45
|
const page = (await puppeteer.pages())[0];
|
|
42
46
|
if (page) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
|
|
48
|
+
if (this.coverageProvider === 'istanbul') {
|
|
49
|
+
// no need start for istanbul, but it requires instrumenting source code
|
|
50
|
+
// https://github.com/cenfun/monocart-coverage-reports?tab=readme-ov-file#collecting-istanbul-coverage-data
|
|
51
|
+
} else {
|
|
52
|
+
await Promise.all([
|
|
53
|
+
page.coverage.startJSCoverage({
|
|
54
|
+
resetOnNavigation: false,
|
|
55
|
+
includeRawScriptCoverage: true
|
|
56
|
+
}),
|
|
57
|
+
page.coverage.startCSSCoverage({
|
|
58
|
+
resetOnNavigation: false
|
|
59
|
+
})
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
52
62
|
}
|
|
53
63
|
}
|
|
54
64
|
|
|
@@ -59,18 +69,25 @@ export default class CoverageReportService {
|
|
|
59
69
|
if (puppeteer) {
|
|
60
70
|
const page = (await puppeteer.pages())[0];
|
|
61
71
|
if (page) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
page.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
|
|
73
|
+
if (this.coverageProvider === 'istanbul') {
|
|
74
|
+
const coverageData = await page.evaluate(() => window.__coverage__);
|
|
75
|
+
await this.coverageReport.add(coverageData);
|
|
76
|
+
} else {
|
|
77
|
+
const [jsCoverage, cssCoverage] = await Promise.all([
|
|
78
|
+
page.coverage.stopJSCoverage(),
|
|
79
|
+
page.coverage.stopCSSCoverage()
|
|
80
|
+
]);
|
|
81
|
+
// to raw V8 script coverage
|
|
82
|
+
const coverageList = [... jsCoverage.map((it) => {
|
|
83
|
+
return {
|
|
84
|
+
source: it.text,
|
|
85
|
+
... it.rawScriptCoverage
|
|
86
|
+
};
|
|
87
|
+
}), ... cssCoverage];
|
|
88
|
+
await this.coverageReport.add(coverageList);
|
|
89
|
+
}
|
|
90
|
+
|
|
74
91
|
}
|
|
75
92
|
}
|
|
76
93
|
}
|