@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 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
- constructor(options: any);
4
- options: any;
5
- outputStream: any;
6
- failures: any[];
7
- suites: {};
8
- hooks: {};
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: RunnerStats;
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
- onScreenshot(): void;
27
- onSuiteStart(): void;
28
- onHookStart(): void;
29
- onHookEnd(): void;
30
- onTestStart(): void;
31
- onTestPass(): void;
32
- onTestFail(): void;
33
- onTestRetry(): void;
34
- onTestSkip(): void;
35
- onTestEnd(): void;
36
- onSuiteEnd(): void;
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
- import EventEmitter from "events";
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";AAYA;IACI,0BAyKC;IAvKG,aAAsB;IAOtB,kBAEgD;IAChD,gBAAkB;IAClB,WAAgB;IAChB,UAAe;IACf,UAAe;IACf,4BAAuB;IACvB;;;;;;;MAOC;IACD,gBAAgB;IAeZ,wBAAyC;IAuIjD,8BAEC;IAKD,0BAEC;IAGD,sBAAmB;IAEnB,wBAAqB;IAErB,uBAAoB;IAEpB,qBAAkB;IAElB,qBAAkB;IAElB,oBAAiB;IAEjB,kBAAe;IAEf,oBAAiB;IAEjB,mBAAgB;IAEhB,mBAAgB;IAEhB,oBAAiB;IAEjB,mBAAgB;IAEhB,kBAAe;IAEf,mBAAgB;IAEhB,oBAAiB;CACpB"}
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 = __importDefault(require("fs-extra"));
8
- const events_1 = __importDefault(require("events"));
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
- class WDIOReporter extends events_1.default {
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
- if (this.options.outputDir) {
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 hookStat = new hook_1.default(hook);
66
+ const hookStats = new hook_1.default(hook);
61
67
  const currentSuite = this.currentSuites[this.currentSuites.length - 1];
62
- currentSuite.hooks.push(hookStat);
63
- currentSuite.hooksAndTests.push(hookStat);
64
- this.hooks[hook.uid] = hookStat;
65
- this.onHookStart(hookStat);
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 hookStat = this.hooks[hook.uid];
69
- hookStat.complete(utils_1.getErrorsFromEvent(hook));
74
+ const hookStats = this.hooks[hook.uid];
75
+ hookStats.complete(utils_1.getErrorsFromEvent(hook));
70
76
  this.counts.hooks++;
71
- this.onHookEnd(hookStat);
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.failures = runner.failures;
138
- this.runnerStat.retries = runner.retries;
139
- this.runnerStat.complete();
140
- this.onRunnerEnd(this.runnerStat);
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
- onScreenshot() { }
165
- onSuiteStart() { }
166
- onHookStart() { }
167
- onHookEnd() { }
168
- onTestStart() { }
169
- onTestPass() { }
170
- onTestFail() { }
171
- onTestRetry() { }
172
- onTestSkip() { }
173
- onTestEnd() { }
174
- onSuiteEnd() { }
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;
@@ -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
- constructor(runner: any);
3
- uid: any;
4
- cid: any;
5
- title: any;
6
- parent: any;
7
- errors: any;
8
- error: any;
9
- state: string | undefined;
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.js"],"names":[],"mappings":"AAEA;IACI,yBAMC;IAJG,SAA8C;IAC9C,SAAqB;IACrB,WAAyB;IACzB,YAA2B;IAI3B,YAAoB;IAEhB,WAAsB;IACtB,0BAAqB;CAKhC"}
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"}
@@ -11,6 +11,7 @@ class HookStats extends runnable_1.default {
11
11
  this.cid = runner.cid;
12
12
  this.title = runner.title;
13
13
  this.parent = runner.parent;
14
+ this.currentTest = runner.currentTest;
14
15
  }
15
16
  complete(errors) {
16
17
  this.errors = errors;
@@ -1,11 +1,14 @@
1
- export default class RunnableStats {
2
- static getIdentifier(runner: any): any;
3
- constructor(type: any);
4
- type: any;
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.js"],"names":[],"mappings":"AAIA;IAsBI,uCAEC;IAvBD,uBAIC;IAHG,UAAgB;IAChB,YAAuB;IACvB,kBAAkB;IAGtB,iBAGC;IAFG,sBAAqB;IAIzB,uBAKC;CAQJ"}
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"}
@@ -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;
@@ -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
- constructor(runner: any);
3
- cid: any;
4
- capabilities: any;
16
+ cid: string;
17
+ capabilities: WebDriver.DesiredCapabilities;
5
18
  sanitizedCapabilities: string;
6
- config: any;
7
- specs: any;
8
- sessionId: any;
9
- isMultiremote: any;
10
- retry: any;
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.js"],"names":[],"mappings":"AAOA;IACI,yBAUC;IARG,SAAqB;IACrB,kBAAuC;IACvC,8BAA8D;IAC9D,YAA2B;IAC3B,WAAyB;IACzB,eAAiC;IACjC,mBAAyC;IACzC,WAAyB;CAEhC"}
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"}
@@ -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
- constructor(suite: any);
3
- uid: any;
4
- cid: any;
5
- title: any;
6
- fullTitle: any;
7
- tags: any;
8
- tests: any[];
9
- hooks: any[];
10
- suites: any[];
11
- hooksAndTests: any[];
12
- description: any;
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.js"],"names":[],"mappings":"AAKA;IACI,wBAmBC;IAjBG,SAA6C;IAC7C,SAAoB;IACpB,WAAwB;IACxB,eAAgC;IAChC,UAAsB;IACtB,aAAe;IACf,aAAe;IACf,cAAgB;IAIhB,qBAAuB;IAKvB,iBAAoC;CAE3C"}
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"}
@@ -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
  }
@@ -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
- constructor(test: any);
3
- uid: any;
4
- cid: any;
5
- title: any;
6
- fullTitle: any;
7
- output: any[];
8
- argument: any;
9
- retries: any;
10
- state: string;
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: any): void;
13
- pendingReason: any;
14
- fail(errors: any): void;
15
- errors: any;
16
- error: any;
46
+ skip(reason: string): void;
47
+ fail(errors?: Error[]): void;
17
48
  }
18
- import RunnableStats from "./runnable";
49
+ export {};
19
50
  //# sourceMappingURL=test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/stats/test.js"],"names":[],"mappings":"AAMA;IACI,uBAeC;IAbG,SAA4C;IAC5C,SAAmB;IACnB,WAAuB;IACvB,eAA+B;IAC/B,cAAgB;IAChB,cAA6B;IAC7B,aAA2B;IAM3B,cAAsB;IAG1B,aAGC;IAED,wBAGC;IAFG,mBAA2B;IAI/B,wBAQC;IALG,YAAoB;IAGhB,WAAsB;CAIjC"}
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"}
@@ -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
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/build/utils.d.ts CHANGED
@@ -1,4 +1,8 @@
1
- export function sanitizeString(str: string): string;
2
- export function sanitizeCaps(caps: Object): string;
3
- export function getErrorsFromEvent(e: any): any;
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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.js"],"names":[],"mappings":"AAKA,oDAUC;AAMD,mCAFW,MAAM,UA8BhB;AAUD,gDAIC"}
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.6.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": "reporter.d.ts",
34
- "gitHead": "bd5a61a663dc0e0061f4d27009b4c94163cf3fd7"
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
- }