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 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
- this.coverageReport.cleanCache();
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
- await Promise.all([
44
- page.coverage.startJSCoverage({
45
- resetOnNavigation: false,
46
- includeRawScriptCoverage: true
47
- }),
48
- page.coverage.startCSSCoverage({
49
- resetOnNavigation: false
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
- const [jsCoverage, cssCoverage] = await Promise.all([
63
- page.coverage.stopJSCoverage(),
64
- page.coverage.stopCSSCoverage()
65
- ]);
66
- // to raw V8 script coverage
67
- const coverageList = [... jsCoverage.map((it) => {
68
- return {
69
- source: it.text,
70
- ... it.rawScriptCoverage
71
- };
72
- }), ... cssCoverage];
73
- await this.coverageReport.add(coverageList);
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wdio-monocart-service",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "WebdriverIO Monocart Coverage Reports",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",