@wdio/reporter 6.6.6 → 6.11.0
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/build/index.d.ts +42 -26
- package/build/index.d.ts.map +1 -1
- package/build/index.js +51 -37
- package/build/stats/hook.d.ts +26 -9
- package/build/stats/hook.d.ts.map +1 -1
- package/build/stats/hook.js +1 -0
- package/build/stats/runnable.d.ts +8 -5
- package/build/stats/runnable.d.ts.map +1 -1
- package/build/stats/runnable.js +2 -2
- package/build/stats/runner.d.ts +24 -9
- package/build/stats/runner.d.ts.map +1 -1
- package/build/stats/suite.d.ts +29 -12
- package/build/stats/suite.d.ts.map +1 -1
- package/build/stats/suite.js +4 -4
- package/build/stats/test.d.ts +46 -15
- package/build/stats/test.d.ts.map +1 -1
- package/build/types.d.ts +20 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/utils.d.ts +7 -3
- package/build/utils.d.ts.map +1 -1
- package/package.json +6 -3
- package/reporter.d.ts +0 -85
package/build/index.d.ts
CHANGED
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { WriteStream } from 'fs';
|
|
3
|
+
import { EventEmitter } from 'events';
|
|
4
|
+
import SuiteStats from './stats/suite';
|
|
5
|
+
import HookStats from './stats/hook';
|
|
6
|
+
import TestStats from './stats/test';
|
|
7
|
+
import RunnerStats from './stats/runner';
|
|
8
|
+
import { AfterCommandArgs, BeforeCommandArgs, CommandArgs, Tag } from './types';
|
|
9
|
+
export interface WDIOReporterBaseOptions {
|
|
10
|
+
outputDir?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface WDIOReporterOptionsFromStdout extends WDIOReporterBaseOptions {
|
|
13
|
+
stdout: boolean;
|
|
14
|
+
writeStream: WriteStream;
|
|
15
|
+
}
|
|
16
|
+
export interface WDIOReporterOptionsFromLogFile extends WDIOReporterBaseOptions {
|
|
17
|
+
logFile: string;
|
|
18
|
+
}
|
|
19
|
+
export declare type WDIOReporterOptions = WDIOReporterOptionsFromLogFile & WDIOReporterOptionsFromStdout;
|
|
2
20
|
export default class WDIOReporter extends EventEmitter {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
tests: {};
|
|
21
|
+
options: Partial<WDIOReporterOptions>;
|
|
22
|
+
outputStream: WriteStream;
|
|
23
|
+
failures: number;
|
|
24
|
+
suites: Record<string, SuiteStats>;
|
|
25
|
+
hooks: Record<string, HookStats>;
|
|
26
|
+
tests: Record<string, TestStats>;
|
|
10
27
|
currentSuites: SuiteStats[];
|
|
11
28
|
counts: {
|
|
12
29
|
suites: number;
|
|
@@ -17,26 +34,25 @@ export default class WDIOReporter extends EventEmitter {
|
|
|
17
34
|
failures: number;
|
|
18
35
|
};
|
|
19
36
|
retries: number;
|
|
20
|
-
runnerStat
|
|
37
|
+
runnerStat?: RunnerStats;
|
|
38
|
+
isContentPresent: boolean;
|
|
39
|
+
constructor(options: Partial<WDIOReporterOptions>);
|
|
21
40
|
get isSynchronised(): boolean;
|
|
22
41
|
write(content: any): void;
|
|
23
|
-
onRunnerStart(): void;
|
|
24
|
-
onBeforeCommand(): void;
|
|
25
|
-
onAfterCommand(): void;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
onRunnerEnd(): void;
|
|
42
|
+
onRunnerStart(runnerStats: RunnerStats): void;
|
|
43
|
+
onBeforeCommand(commandArgs: BeforeCommandArgs): void;
|
|
44
|
+
onAfterCommand(commandArgs: AfterCommandArgs): void;
|
|
45
|
+
onSuiteStart(suiteStats: SuiteStats): void;
|
|
46
|
+
onHookStart(hookStat: HookStats): void;
|
|
47
|
+
onHookEnd(hookStats: HookStats): void;
|
|
48
|
+
onTestStart(testStats: TestStats): void;
|
|
49
|
+
onTestPass(testStats: TestStats): void;
|
|
50
|
+
onTestFail(testStats: TestStats): void;
|
|
51
|
+
onTestRetry(testStats: TestStats): void;
|
|
52
|
+
onTestSkip(testStats: TestStats): void;
|
|
53
|
+
onTestEnd(testStats: TestStats): void;
|
|
54
|
+
onSuiteEnd(suiteStats: SuiteStats): void;
|
|
55
|
+
onRunnerEnd(runnerStats: RunnerStats): void;
|
|
38
56
|
}
|
|
39
|
-
|
|
40
|
-
import SuiteStats from "./stats/suite";
|
|
41
|
-
import RunnerStats from "./stats/runner";
|
|
57
|
+
export { SuiteStats, Tag, HookStats, TestStats, RunnerStats, BeforeCommandArgs, AfterCommandArgs, CommandArgs };
|
|
42
58
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,UAAqB,MAAM,eAAe,CAAA;AACjD,OAAO,SAAmB,MAAM,cAAc,CAAA;AAC9C,OAAO,SAAmB,MAAM,cAAc,CAAA;AAC9C,OAAO,WAAuB,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAE/E,MAAM,WAAW,uBAAuB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC1E,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,WAAW,CAAA;CAC3B;AAED,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC3E,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,oBAAY,mBAAmB,GAAG,8BAA8B,GAAG,6BAA6B,CAAA;AAEhG,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IAmB/B,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAlBxD,YAAY,EAAE,WAAW,CAAA;IACzB,QAAQ,SAAI;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAK;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAK;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAI;IACpC,aAAa,EAAE,UAAU,EAAE,CAAK;IAChC,MAAM;;;;;;;MAOL;IACD,OAAO,SAAI;IACX,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,gBAAgB,UAAQ;gBAEL,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAsKxD,IAAI,cAAc,YAEjB;IAKD,KAAK,CAAC,OAAO,EAAE,GAAG;IASlB,aAAa,CAAC,WAAW,EAAE,WAAW;IAGtC,eAAe,CAAC,WAAW,EAAE,iBAAiB;IAG9C,cAAc,CAAC,WAAW,EAAE,gBAAgB;IAG5C,YAAY,CAAC,UAAU,EAAE,UAAU;IAGnC,WAAW,CAAC,QAAQ,EAAE,SAAS;IAG/B,SAAS,CAAC,SAAS,EAAE,SAAS;IAG9B,WAAW,CAAC,SAAS,EAAE,SAAS;IAGhC,UAAU,CAAC,SAAS,EAAE,SAAS;IAG/B,UAAU,CAAC,SAAS,EAAE,SAAS;IAG/B,WAAW,CAAC,SAAS,EAAE,SAAS;IAGhC,UAAU,CAAC,SAAS,EAAE,SAAS;IAG/B,SAAS,CAAC,SAAS,EAAE,SAAS;IAG9B,UAAU,CAAC,UAAU,EAAE,UAAU;IAGjC,WAAW,CAAC,WAAW,EAAE,WAAW;CACvC;AAED,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA"}
|
package/build/index.js
CHANGED
|
@@ -3,25 +3,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RunnerStats = exports.TestStats = exports.HookStats = exports.SuiteStats = void 0;
|
|
6
7
|
const fs_1 = __importDefault(require("fs"));
|
|
7
|
-
const fs_extra_1 =
|
|
8
|
-
const events_1 =
|
|
8
|
+
const fs_extra_1 = require("fs-extra");
|
|
9
|
+
const events_1 = require("events");
|
|
9
10
|
const utils_1 = require("./utils");
|
|
10
11
|
const suite_1 = __importDefault(require("./stats/suite"));
|
|
12
|
+
exports.SuiteStats = suite_1.default;
|
|
11
13
|
const hook_1 = __importDefault(require("./stats/hook"));
|
|
14
|
+
exports.HookStats = hook_1.default;
|
|
12
15
|
const test_1 = __importDefault(require("./stats/test"));
|
|
16
|
+
exports.TestStats = test_1.default;
|
|
13
17
|
const runner_1 = __importDefault(require("./stats/runner"));
|
|
14
|
-
|
|
18
|
+
exports.RunnerStats = runner_1.default;
|
|
19
|
+
class WDIOReporter extends events_1.EventEmitter {
|
|
15
20
|
constructor(options) {
|
|
16
21
|
super();
|
|
17
22
|
this.options = options;
|
|
18
|
-
|
|
19
|
-
fs_extra_1.default.ensureDirSync(this.options.outputDir);
|
|
20
|
-
}
|
|
21
|
-
this.outputStream = this.options.stdout || !this.options.logFile
|
|
22
|
-
? options.writeStream
|
|
23
|
-
: fs_1.default.createWriteStream(this.options.logFile);
|
|
24
|
-
this.failures = [];
|
|
23
|
+
this.failures = 0;
|
|
25
24
|
this.suites = {};
|
|
26
25
|
this.hooks = {};
|
|
27
26
|
this.tests = {};
|
|
@@ -35,6 +34,13 @@ class WDIOReporter extends events_1.default {
|
|
|
35
34
|
failures: 0
|
|
36
35
|
};
|
|
37
36
|
this.retries = 0;
|
|
37
|
+
this.isContentPresent = false;
|
|
38
|
+
if (this.options.outputDir) {
|
|
39
|
+
fs_extra_1.ensureDirSync(this.options.outputDir);
|
|
40
|
+
}
|
|
41
|
+
this.outputStream = this.options.stdout || !this.options.logFile
|
|
42
|
+
? this.options.writeStream
|
|
43
|
+
: fs_extra_1.createWriteStream(this.options.logFile);
|
|
38
44
|
let currentTest;
|
|
39
45
|
const rootSuite = new suite_1.default({
|
|
40
46
|
title: '(root)',
|
|
@@ -57,18 +63,18 @@ class WDIOReporter extends events_1.default {
|
|
|
57
63
|
this.onSuiteStart(suite);
|
|
58
64
|
});
|
|
59
65
|
this.on('hook:start', (hook) => {
|
|
60
|
-
const
|
|
66
|
+
const hookStats = new hook_1.default(hook);
|
|
61
67
|
const currentSuite = this.currentSuites[this.currentSuites.length - 1];
|
|
62
|
-
currentSuite.hooks.push(
|
|
63
|
-
currentSuite.hooksAndTests.push(
|
|
64
|
-
this.hooks[hook.uid] =
|
|
65
|
-
this.onHookStart(
|
|
68
|
+
currentSuite.hooks.push(hookStats);
|
|
69
|
+
currentSuite.hooksAndTests.push(hookStats);
|
|
70
|
+
this.hooks[hook.uid] = hookStats;
|
|
71
|
+
this.onHookStart(hookStats);
|
|
66
72
|
});
|
|
67
73
|
this.on('hook:end', (hook) => {
|
|
68
|
-
const
|
|
69
|
-
|
|
74
|
+
const hookStats = this.hooks[hook.uid];
|
|
75
|
+
hookStats.complete(utils_1.getErrorsFromEvent(hook));
|
|
70
76
|
this.counts.hooks++;
|
|
71
|
-
this.onHookEnd(
|
|
77
|
+
this.onHookEnd(hookStats);
|
|
72
78
|
});
|
|
73
79
|
this.on('test:start', (test) => {
|
|
74
80
|
test.retries = this.retries;
|
|
@@ -134,10 +140,16 @@ class WDIOReporter extends events_1.default {
|
|
|
134
140
|
});
|
|
135
141
|
this.on('runner:end', (runner) => {
|
|
136
142
|
rootSuite.complete();
|
|
137
|
-
this.runnerStat
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
143
|
+
if (this.runnerStat) {
|
|
144
|
+
this.runnerStat.failures = runner.failures;
|
|
145
|
+
this.runnerStat.retries = runner.retries;
|
|
146
|
+
this.runnerStat.complete();
|
|
147
|
+
this.onRunnerEnd(this.runnerStat);
|
|
148
|
+
}
|
|
149
|
+
const logFile = this.options.logFile;
|
|
150
|
+
if (!this.isContentPresent && logFile && fs_1.default.existsSync(logFile)) {
|
|
151
|
+
fs_1.default.unlinkSync(logFile);
|
|
152
|
+
}
|
|
141
153
|
});
|
|
142
154
|
this.on('client:beforeCommand', (payload) => {
|
|
143
155
|
if (!currentTest) {
|
|
@@ -156,22 +168,24 @@ class WDIOReporter extends events_1.default {
|
|
|
156
168
|
return true;
|
|
157
169
|
}
|
|
158
170
|
write(content) {
|
|
171
|
+
if (content) {
|
|
172
|
+
this.isContentPresent = true;
|
|
173
|
+
}
|
|
159
174
|
this.outputStream.write(content);
|
|
160
175
|
}
|
|
161
|
-
onRunnerStart() { }
|
|
162
|
-
onBeforeCommand() { }
|
|
163
|
-
onAfterCommand() { }
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
onRunnerEnd() { }
|
|
176
|
+
onRunnerStart(runnerStats) { }
|
|
177
|
+
onBeforeCommand(commandArgs) { }
|
|
178
|
+
onAfterCommand(commandArgs) { }
|
|
179
|
+
onSuiteStart(suiteStats) { }
|
|
180
|
+
onHookStart(hookStat) { }
|
|
181
|
+
onHookEnd(hookStats) { }
|
|
182
|
+
onTestStart(testStats) { }
|
|
183
|
+
onTestPass(testStats) { }
|
|
184
|
+
onTestFail(testStats) { }
|
|
185
|
+
onTestRetry(testStats) { }
|
|
186
|
+
onTestSkip(testStats) { }
|
|
187
|
+
onTestEnd(testStats) { }
|
|
188
|
+
onSuiteEnd(suiteStats) { }
|
|
189
|
+
onRunnerEnd(runnerStats) { }
|
|
176
190
|
}
|
|
177
191
|
exports.default = WDIOReporter;
|
package/build/stats/hook.d.ts
CHANGED
|
@@ -1,12 +1,29 @@
|
|
|
1
|
+
import RunnableStats from './runnable';
|
|
2
|
+
export interface Hook {
|
|
3
|
+
type?: string;
|
|
4
|
+
title: string;
|
|
5
|
+
parent: string;
|
|
6
|
+
fullTitle?: string;
|
|
7
|
+
pending?: boolean;
|
|
8
|
+
file?: string;
|
|
9
|
+
duration?: number;
|
|
10
|
+
cid: string;
|
|
11
|
+
specs?: string[];
|
|
12
|
+
uid?: string;
|
|
13
|
+
errors?: Error[];
|
|
14
|
+
error?: Error;
|
|
15
|
+
currentTest?: string;
|
|
16
|
+
}
|
|
1
17
|
export default class HookStats extends RunnableStats {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
18
|
+
uid: string;
|
|
19
|
+
cid: string;
|
|
20
|
+
title: string;
|
|
21
|
+
parent: string;
|
|
22
|
+
errors?: Error[];
|
|
23
|
+
error?: Error;
|
|
24
|
+
state?: 'failed' | 'passed';
|
|
25
|
+
currentTest?: string;
|
|
26
|
+
constructor(runner: Hook);
|
|
27
|
+
complete(errors?: Error[]): void;
|
|
10
28
|
}
|
|
11
|
-
import RunnableStats from "./runnable";
|
|
12
29
|
//# sourceMappingURL=hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/stats/hook.
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/stats/hook.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,YAAY,CAAA;AAEtC,MAAM,WAAW,IAAI;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;gBAEP,MAAM,EAAE,IAAI;IASzB,QAAQ,CAAE,MAAM,CAAC,EAAE,KAAK,EAAE;CAS7B"}
|
package/build/stats/hook.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Hook } from './hook';
|
|
2
|
+
import { Suite } from './suite';
|
|
3
|
+
import { Test } from './test';
|
|
4
|
+
export default abstract class RunnableStats {
|
|
5
|
+
type: string;
|
|
5
6
|
start: Date;
|
|
7
|
+
end?: Date;
|
|
6
8
|
_duration: number;
|
|
9
|
+
constructor(type: string);
|
|
7
10
|
complete(): void;
|
|
8
|
-
end: Date | undefined;
|
|
9
11
|
get duration(): number;
|
|
12
|
+
static getIdentifier(runner: Hook | Suite | Test): string;
|
|
10
13
|
}
|
|
11
14
|
//# sourceMappingURL=runnable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runnable.d.ts","sourceRoot":"","sources":["../../src/stats/runnable.
|
|
1
|
+
{"version":3,"file":"runnable.d.ts","sourceRoot":"","sources":["../../src/stats/runnable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAM7B,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa;IAKnB,IAAI,EAAE,MAAM;IAJhC,KAAK,OAAa;IAClB,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,SAAS,SAAI;gBAEO,IAAI,EAAE,MAAM;IAEhC,QAAQ;IAKR,IAAI,QAAQ,WAKX;IAKD,MAAM,CAAC,aAAa,CAAE,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI;CAGpD"}
|
package/build/stats/runnable.js
CHANGED
|
@@ -8,13 +8,13 @@ class RunnableStats {
|
|
|
8
8
|
}
|
|
9
9
|
complete() {
|
|
10
10
|
this.end = new Date();
|
|
11
|
-
this._duration = this.end - this.start;
|
|
11
|
+
this._duration = this.end.getTime() - this.start.getTime();
|
|
12
12
|
}
|
|
13
13
|
get duration() {
|
|
14
14
|
if (this.end) {
|
|
15
15
|
return this._duration;
|
|
16
16
|
}
|
|
17
|
-
return new Date() - this.start;
|
|
17
|
+
return new Date().getTime() - this.start.getTime();
|
|
18
18
|
}
|
|
19
19
|
static getIdentifier(runner) {
|
|
20
20
|
return runner.uid || runner.title;
|
package/build/stats/runner.d.ts
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
|
+
/// <reference types="webdriver" />
|
|
2
|
+
import RunnableStats from './runnable';
|
|
3
|
+
import { WDIOReporterOptions } from '..';
|
|
4
|
+
export interface Runner {
|
|
5
|
+
cid: string;
|
|
6
|
+
specs: string[];
|
|
7
|
+
config: WDIOReporterOptions;
|
|
8
|
+
isMultiremote: boolean;
|
|
9
|
+
sessionId?: string;
|
|
10
|
+
capabilities: WebDriver.DesiredCapabilities;
|
|
11
|
+
retry?: number;
|
|
12
|
+
failures?: number;
|
|
13
|
+
retries?: number;
|
|
14
|
+
}
|
|
1
15
|
export default class RunnerStats extends RunnableStats {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
capabilities: any;
|
|
16
|
+
cid: string;
|
|
17
|
+
capabilities: WebDriver.DesiredCapabilities;
|
|
5
18
|
sanitizedCapabilities: string;
|
|
6
|
-
config:
|
|
7
|
-
specs:
|
|
8
|
-
sessionId
|
|
9
|
-
isMultiremote:
|
|
10
|
-
retry
|
|
19
|
+
config: WDIOReporterOptions;
|
|
20
|
+
specs: string[];
|
|
21
|
+
sessionId?: string;
|
|
22
|
+
isMultiremote: boolean;
|
|
23
|
+
retry?: number;
|
|
24
|
+
failures?: number;
|
|
25
|
+
retries?: number;
|
|
26
|
+
constructor(runner: Runner);
|
|
11
27
|
}
|
|
12
|
-
import RunnableStats from "./runnable";
|
|
13
28
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/stats/runner.
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/stats/runner.ts"],"names":[],"mappings":";AAAA,OAAO,aAAa,MAAM,YAAY,CAAA;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,IAAI,CAAA;AAExC,MAAM,WAAW,MAAM;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,mBAAmB,CAAA;IAC3B,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,SAAS,CAAC,mBAAmB,CAAA;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IAClD,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,SAAS,CAAC,mBAAmB,CAAA;IAC3C,qBAAqB,EAAE,MAAM,CAAA;IAC7B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;gBAEH,MAAM,EAAE,MAAM;CAW9B"}
|
package/build/stats/suite.d.ts
CHANGED
|
@@ -1,15 +1,32 @@
|
|
|
1
|
+
import { Tag } from '../types';
|
|
2
|
+
import HookStats from './hook';
|
|
3
|
+
import RunnableStats from './runnable';
|
|
4
|
+
import TestStats from './test';
|
|
5
|
+
export interface Suite {
|
|
6
|
+
type?: string;
|
|
7
|
+
title: string;
|
|
8
|
+
parent?: string;
|
|
9
|
+
fullTitle: string;
|
|
10
|
+
pending?: boolean;
|
|
11
|
+
fil?: string;
|
|
12
|
+
duration?: number;
|
|
13
|
+
cid?: string;
|
|
14
|
+
specs?: string[];
|
|
15
|
+
uid?: string;
|
|
16
|
+
tags?: string[] | Tag[];
|
|
17
|
+
description?: string;
|
|
18
|
+
}
|
|
1
19
|
export default class SuiteStats extends RunnableStats {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
uid: string;
|
|
21
|
+
cid?: string;
|
|
22
|
+
title: string;
|
|
23
|
+
fullTitle: string;
|
|
24
|
+
tags?: string[] | Tag[];
|
|
25
|
+
tests: TestStats[];
|
|
26
|
+
hooks: HookStats[];
|
|
27
|
+
suites: SuiteStats[];
|
|
28
|
+
hooksAndTests: (HookStats | TestStats)[];
|
|
29
|
+
description?: string;
|
|
30
|
+
constructor(suite: Suite);
|
|
13
31
|
}
|
|
14
|
-
import RunnableStats from "./runnable";
|
|
15
32
|
//# sourceMappingURL=suite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/stats/suite.
|
|
1
|
+
{"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../src/stats/suite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,SAAS,MAAM,QAAQ,CAAA;AAC9B,OAAO,aAAa,MAAM,YAAY,CAAA;AACtC,OAAO,SAAS,MAAM,QAAQ,CAAA;AAE9B,MAAM,WAAW,KAAK;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAKD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,aAAa;IACjD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAA;IACvB,KAAK,EAAE,SAAS,EAAE,CAAK;IACvB,KAAK,EAAE,SAAS,EAAE,CAAK;IACvB,MAAM,EAAE,UAAU,EAAE,CAAK;IAIzB,aAAa,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,CAAK;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;gBAEP,KAAK,EAAE,KAAK;CAY5B"}
|
package/build/stats/suite.js
CHANGED
|
@@ -7,15 +7,15 @@ const runnable_1 = __importDefault(require("./runnable"));
|
|
|
7
7
|
class SuiteStats extends runnable_1.default {
|
|
8
8
|
constructor(suite) {
|
|
9
9
|
super(suite.type || 'suite');
|
|
10
|
+
this.tests = [];
|
|
11
|
+
this.hooks = [];
|
|
12
|
+
this.suites = [];
|
|
13
|
+
this.hooksAndTests = [];
|
|
10
14
|
this.uid = runnable_1.default.getIdentifier(suite);
|
|
11
15
|
this.cid = suite.cid;
|
|
12
16
|
this.title = suite.title;
|
|
13
17
|
this.fullTitle = suite.fullTitle;
|
|
14
18
|
this.tags = suite.tags;
|
|
15
|
-
this.tests = [];
|
|
16
|
-
this.hooks = [];
|
|
17
|
-
this.suites = [];
|
|
18
|
-
this.hooksAndTests = [];
|
|
19
19
|
this.description = suite.description;
|
|
20
20
|
}
|
|
21
21
|
}
|
package/build/stats/test.d.ts
CHANGED
|
@@ -1,19 +1,50 @@
|
|
|
1
|
+
import type { pickle } from 'cucumber';
|
|
2
|
+
import RunnableStats from './runnable';
|
|
3
|
+
export interface Test {
|
|
4
|
+
type: 'test:start' | 'test:pass' | 'test:fail' | 'test:retry' | 'test:pending' | 'test:end';
|
|
5
|
+
title: string;
|
|
6
|
+
parent: string;
|
|
7
|
+
fullTitle: string;
|
|
8
|
+
pending: boolean;
|
|
9
|
+
file?: string;
|
|
10
|
+
duration?: number;
|
|
11
|
+
cid: string;
|
|
12
|
+
specs: string[];
|
|
13
|
+
uid: string;
|
|
14
|
+
pendingReason?: string;
|
|
15
|
+
error?: Error;
|
|
16
|
+
errors?: Error[];
|
|
17
|
+
retries?: number;
|
|
18
|
+
argument?: pickle.Argument;
|
|
19
|
+
}
|
|
20
|
+
interface Output {
|
|
21
|
+
method: 'PUT' | 'POST' | 'GET' | 'DELETE';
|
|
22
|
+
endpoint: string;
|
|
23
|
+
body: {};
|
|
24
|
+
result: {
|
|
25
|
+
value: string | null;
|
|
26
|
+
};
|
|
27
|
+
sessionId: string;
|
|
28
|
+
cid: string;
|
|
29
|
+
type: 'command' | 'result';
|
|
30
|
+
}
|
|
1
31
|
export default class TestStats extends RunnableStats {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
fullTitle:
|
|
7
|
-
output:
|
|
8
|
-
argument
|
|
9
|
-
retries
|
|
10
|
-
state:
|
|
32
|
+
uid: string;
|
|
33
|
+
cid: string;
|
|
34
|
+
title: string;
|
|
35
|
+
currentTest?: string;
|
|
36
|
+
fullTitle: string;
|
|
37
|
+
output: Output[];
|
|
38
|
+
argument?: pickle.Argument;
|
|
39
|
+
retries?: number;
|
|
40
|
+
state: 'pending' | 'passed' | 'skipped' | 'failed';
|
|
41
|
+
pendingReason?: string;
|
|
42
|
+
errors?: Error[];
|
|
43
|
+
error?: Error;
|
|
44
|
+
constructor(test: Test);
|
|
11
45
|
pass(): void;
|
|
12
|
-
skip(reason:
|
|
13
|
-
|
|
14
|
-
fail(errors: any): void;
|
|
15
|
-
errors: any;
|
|
16
|
-
error: any;
|
|
46
|
+
skip(reason: string): void;
|
|
47
|
+
fail(errors?: Error[]): void;
|
|
17
48
|
}
|
|
18
|
-
|
|
49
|
+
export {};
|
|
19
50
|
//# sourceMappingURL=test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/stats/test.
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/stats/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEtC,OAAO,aAAa,MAAM,YAAY,CAAA;AAEtC,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,CAAA;IAC3F,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;CAC7B;AAED,UAAU,MAAM;IACZ,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE;QACJ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KACvB,CAAA;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;CAC7B;AAMD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAKhB,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;IAClD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;gBAED,IAAI,EAAE,IAAI;IAiBtB,IAAI;IAKJ,IAAI,CAAC,MAAM,EAAE,MAAM;IAKnB,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;CAUxB"}
|
package/build/types.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface Tag {
|
|
2
|
+
name: string;
|
|
3
|
+
line: number;
|
|
4
|
+
}
|
|
5
|
+
export interface CommandArgs {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
method?: string;
|
|
8
|
+
endpoint?: string;
|
|
9
|
+
retries?: number;
|
|
10
|
+
command?: string;
|
|
11
|
+
params?: any;
|
|
12
|
+
}
|
|
13
|
+
export interface BeforeCommandArgs extends CommandArgs {
|
|
14
|
+
body: any;
|
|
15
|
+
}
|
|
16
|
+
export interface AfterCommandArgs extends CommandArgs {
|
|
17
|
+
result: any;
|
|
18
|
+
name?: string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IAKjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,GAAG,CAAA;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IAClD,IAAI,EAAE,GAAG,CAAA;CACZ;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACjD,MAAM,EAAE,GAAG,CAAA;IAKX,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB"}
|
package/build/types.js
ADDED
package/build/utils.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
export function
|
|
3
|
-
export function
|
|
1
|
+
/// <reference types="webdriver" />
|
|
2
|
+
export declare function sanitizeString(str?: string): string;
|
|
3
|
+
export declare function sanitizeCaps(caps?: WebDriver.DesiredCapabilities): string;
|
|
4
|
+
export declare function getErrorsFromEvent(e: {
|
|
5
|
+
errors?: any;
|
|
6
|
+
error?: any;
|
|
7
|
+
}): any;
|
|
4
8
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAKA,wBAAgB,cAAc,CAAE,GAAG,CAAC,EAAE,MAAM,UAU3C;AAMD,wBAAgB,YAAY,CAAE,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,UA4BjE;AAUD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAA;CAAE,OAIlE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/reporter",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.11.0",
|
|
4
4
|
"description": "A WebdriverIO utility to help reporting all events",
|
|
5
5
|
"author": "Christian Bromann <christian@saucelabs.com>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/master/packages/wdio-reporter",
|
|
@@ -22,14 +22,17 @@
|
|
|
22
22
|
"url": "https://github.com/webdriverio/webdriverio/issues"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
+
"@types/fs-extra": "^9.0.1",
|
|
26
|
+
"@types/tmp": "^0.2.0",
|
|
25
27
|
"tmp": "^0.2.0"
|
|
26
28
|
},
|
|
27
29
|
"publishConfig": {
|
|
28
30
|
"access": "public"
|
|
29
31
|
},
|
|
30
32
|
"dependencies": {
|
|
33
|
+
"@types/cucumber": "^6.0.1",
|
|
31
34
|
"fs-extra": "^9.0.0"
|
|
32
35
|
},
|
|
33
|
-
"types": "
|
|
34
|
-
"gitHead": "
|
|
36
|
+
"types": "./build/index.d.ts",
|
|
37
|
+
"gitHead": "5fba2c2f136f280a0370ac5b76394478e5db3339"
|
|
35
38
|
}
|
package/reporter.d.ts
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
declare namespace WDIOReporter {
|
|
2
|
-
type TestState = 'passed' | 'pending' | 'failed' | 'skipped';
|
|
3
|
-
type ErrorType = 'AssertionError' | 'Error';
|
|
4
|
-
|
|
5
|
-
class Reporter {
|
|
6
|
-
constructor (options: Options);
|
|
7
|
-
|
|
8
|
-
onRunnerStart(runner: any): void;
|
|
9
|
-
onBeforeCommand(command: BeforeCommand): void;
|
|
10
|
-
onAfterCommand(command: AfterCommand): void;
|
|
11
|
-
onScreenshot(): void;
|
|
12
|
-
onSuiteStart(suite: Suite): void;
|
|
13
|
-
onHookStart(hook: Hook): void;
|
|
14
|
-
onHookEnd(hook: Hook): void;
|
|
15
|
-
onTestStart(test: Test): void;
|
|
16
|
-
onTestPass(test: Test): void;
|
|
17
|
-
onTestFail(test: Test): void;
|
|
18
|
-
onTestSkip(test: Test): void;
|
|
19
|
-
onTestEnd(test: Test): void;
|
|
20
|
-
onSuiteEnd(suite: Suite): void;
|
|
21
|
-
onRunnerEnd(runner: any): void;
|
|
22
|
-
|
|
23
|
-
isSynchronised: boolean;
|
|
24
|
-
|
|
25
|
-
write(content: any): void;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface Options {
|
|
29
|
-
logFile?: string;
|
|
30
|
-
logLevel?: string;
|
|
31
|
-
stdout?: boolean;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
interface Suite {
|
|
35
|
-
duration: number;
|
|
36
|
-
fullTitle: string;
|
|
37
|
-
title: string;
|
|
38
|
-
type: string;
|
|
39
|
-
uid: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
interface Hook {
|
|
43
|
-
duration: number;
|
|
44
|
-
parent: string;
|
|
45
|
-
title: string;
|
|
46
|
-
uid: string;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
interface Test {
|
|
50
|
-
_duration: number;
|
|
51
|
-
title: string;
|
|
52
|
-
fullTitle: string;
|
|
53
|
-
state: TestState;
|
|
54
|
-
errors?: Error[];
|
|
55
|
-
error?: Error;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
interface Error {
|
|
59
|
-
message: string;
|
|
60
|
-
stack: string;
|
|
61
|
-
type: ErrorType;
|
|
62
|
-
expected: any;
|
|
63
|
-
actual: any;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
interface BeforeCommand {
|
|
67
|
-
method: string;
|
|
68
|
-
endpoint: string;
|
|
69
|
-
body: any;
|
|
70
|
-
sessionId: string;
|
|
71
|
-
cid: string;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
interface AfterCommand {
|
|
75
|
-
method: string;
|
|
76
|
-
endpoint: string;
|
|
77
|
-
body?: any;
|
|
78
|
-
result?: any;
|
|
79
|
-
sessionId: string;
|
|
80
|
-
cid: string;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
declare module "@wdio/reporter" {
|
|
84
|
-
export default WDIOReporter.Reporter;
|
|
85
|
-
}
|