@wdio/cucumber-framework 7.13.2 → 7.16.3

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.
@@ -1,5 +1,5 @@
1
1
  import { CucumberOptions } from './types';
2
- import { PickleStep } from '@cucumber/messages';
2
+ import { Pickle, PickleStep } from '@cucumber/messages';
3
3
  export declare const DEFAULT_TIMEOUT = 60000;
4
4
  export declare const DEFAULT_OPTS: CucumberOptions;
5
5
  export declare const NOOP: () => void;
@@ -11,4 +11,11 @@ export declare const CUCUMBER_HOOK_DEFINITION_TYPES: readonly ["beforeTestRunHoo
11
11
  export interface ReporterStep extends PickleStep {
12
12
  keyword?: string;
13
13
  }
14
+ /**
15
+ * The pickle scenario needs to have a rule for the reporters, otherwise reporters like
16
+ * the allure or spec reporter won't show the rule
17
+ */
18
+ export interface ReporterScenario extends Pickle {
19
+ rule?: string;
20
+ }
14
21
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,eAAO,MAAM,eAAe,QAAQ,CAAA;AAEpC,eAAO,MAAM,YAAY,EAAE,eAkB1B,CAAA;AAGD,eAAO,MAAM,IAAI,YAAiB,CAAA;AAElC,eAAO,MAAM,8BAA8B,mKAKjC,CAAA;AAEV;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEvD,eAAO,MAAM,eAAe,QAAQ,CAAA;AAEpC,eAAO,MAAM,YAAY,EAAE,eAkB1B,CAAA;AAGD,eAAO,MAAM,IAAI,YAAiB,CAAA;AAElC,eAAO,MAAM,8BAA8B,mKAKjC,CAAA;AAEV;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,MAAM;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB"}
@@ -12,6 +12,7 @@ export default class CucumberEventListener extends EventEmitter {
12
12
  private _currentTestCase?;
13
13
  private _currentPickle?;
14
14
  private _suiteMap;
15
+ private _pickleMap;
15
16
  private _currentDoc;
16
17
  private _startedFeatures;
17
18
  constructor(eventBroadcaster: EventEmitter, _pickleFilter: PickleFilter);
@@ -1 +1 @@
1
- {"version":3,"file":"cucumberEventListener.d.ts","sourceRoot":"","sources":["../src/cucumberEventListener.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAU,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EACH,MAAM,EAAE,QAAQ,EAAY,cAAc,EAAE,eAAe,EAAE,eAAe,EAC5E,eAAe,EAAE,gBAAgB,EACpC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAKpC,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,YAAY;IAUd,OAAO,CAAC,aAAa;IATlE,OAAO,CAAC,iBAAiB,CAAwB;IACjD,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,gBAAgB,CAAe;gBAE1B,gBAAgB,EAAE,YAAY,EAAU,aAAa,EAAE,YAAY;IAwChF,gBAAgB;IAIhB,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAoDhC,iBAAiB,CAAE,eAAe,EAAE,eAAe;IAgCnD,gBAAgB,CAAE,WAAW,EAAE,MAAM;IAerC,gBAAgB;IA4EhB,kBAAkB,CAAE,QAAQ,EAAE,QAAQ;IAetC,iBAAiB,CAAE,QAAQ,EAAE,eAAe;IA8C5C,iBAAiB,CAAE,oBAAoB,EAAE,eAAe;IAoCxD,kBAAkB,CAAE,qBAAqB,EAAE,gBAAgB;IA6B3D,kBAAkB,CACd,OAAO,EAAE,cAAc,EAAE;IA4B7B,iBAAiB;IAkBjB,aAAa;IAIb;;;OAGG;IACH,YAAY,CAAE,IAAI,EAAE,YAAY,CAAC,gBAAgB;CAgBpD"}
1
+ {"version":3,"file":"cucumberEventListener.d.ts","sourceRoot":"","sources":["../src/cucumberEventListener.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAU,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EACH,MAAM,EAAE,QAAQ,EAAY,cAAc,EAAE,eAAe,EAAE,eAAe,EAC5E,eAAe,EAAE,gBAAgB,EACpC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAMpC,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,YAAY;IAWd,OAAO,CAAC,aAAa;IAVlE,OAAO,CAAC,iBAAiB,CAAwB;IACjD,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,gBAAgB,CAAe;gBAE1B,gBAAgB,EAAE,YAAY,EAAU,aAAa,EAAE,YAAY;IAwChF,gBAAgB;IAIhB,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAoDhC,iBAAiB,CAAE,eAAe,EAAE,eAAe;IAgCnD,gBAAgB,CAAE,WAAW,EAAE,MAAM;IAgBrC,gBAAgB;IA4EhB,kBAAkB,CAAE,QAAQ,EAAE,QAAQ;IAetC,iBAAiB,CAAE,QAAQ,EAAE,eAAe;IAkD5C,iBAAiB,CAAE,oBAAoB,EAAE,eAAe;IAoCxD,kBAAkB,CAAE,qBAAqB,EAAE,gBAAgB;IA6B3D,kBAAkB,CACd,OAAO,EAAE,cAAc,EAAE;IA4B7B,iBAAiB;IAkBjB,aAAa;IAIb;;;OAGG;IACH,YAAY,CAAE,IAAI,EAAE,YAAY,CAAC,gBAAgB;CAgBpD"}
@@ -7,7 +7,7 @@ const events_1 = require("events");
7
7
  const cucumber_1 = require("@cucumber/cucumber");
8
8
  const logger_1 = __importDefault(require("@wdio/logger"));
9
9
  const utils_1 = require("./utils");
10
- const log = logger_1.default('CucumberEventListener');
10
+ const log = (0, logger_1.default)('CucumberEventListener');
11
11
  class CucumberEventListener extends events_1.EventEmitter {
12
12
  constructor(eventBroadcaster, _pickleFilter) {
13
13
  super();
@@ -17,6 +17,7 @@ class CucumberEventListener extends events_1.EventEmitter {
17
17
  this._testCases = [];
18
18
  this._currentPickle = {};
19
19
  this._suiteMap = new Map();
20
+ this._pickleMap = new Map();
20
21
  this._currentDoc = { comments: [] };
21
22
  this._startedFeatures = [];
22
23
  let results = [];
@@ -154,6 +155,7 @@ class CucumberEventListener extends events_1.EventEmitter {
154
155
  onPickleAccepted(pickleEvent) {
155
156
  const id = this._suiteMap.size.toString();
156
157
  this._suiteMap.set(pickleEvent.id, id);
158
+ this._pickleMap.set(id, pickleEvent.astNodeIds[0]);
157
159
  const scenario = { ...pickleEvent, id };
158
160
  this._scenarios.push(scenario);
159
161
  }
@@ -279,10 +281,12 @@ class CucumberEventListener extends events_1.EventEmitter {
279
281
  * This will aad them
280
282
  */
281
283
  if (scenario.steps && feature) {
282
- scenario.steps = utils_1.addKeywordToStep(scenario.steps, feature);
284
+ scenario.steps = (0, utils_1.addKeywordToStep)(scenario.steps, feature);
283
285
  }
284
286
  this._currentPickle = { uri, feature, scenario };
285
- this.emit('before-scenario', scenario.uri, doc === null || doc === void 0 ? void 0 : doc.feature, scenario);
287
+ let reporterScenario = scenario;
288
+ reporterScenario.rule = (0, utils_1.getRule)(doc === null || doc === void 0 ? void 0 : doc.feature, this._pickleMap.get(scenario.id));
289
+ this.emit('before-scenario', scenario.uri, doc === null || doc === void 0 ? void 0 : doc.feature, reporterScenario);
286
290
  }
287
291
  // {
288
292
  // "testStepStarted": {
@@ -402,7 +406,7 @@ class CucumberEventListener extends events_1.EventEmitter {
402
406
  /**
403
407
  * match based on capability tags
404
408
  */
405
- .filter(([, fakeId]) => utils_1.filterPickles(caps, this._scenarios.find(s => s.id === fakeId)))
409
+ .filter(([, fakeId]) => (0, utils_1.filterPickles)(caps, this._scenarios.find(s => s.id === fakeId)))
406
410
  /**
407
411
  * match based on Cucumber pickle filter
408
412
  */
package/build/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="expect-webdriverio/types/standalone" />
2
3
  import { EventEmitter } from 'events';
3
4
  import * as Cucumber from '@cucumber/cucumber';
4
5
  import { After, AfterAll, AfterStep, Before, BeforeAll, BeforeStep, defineParameterType, defineStep, Given, setDefaultTimeout, setDefinitionFunctionWrapper, setWorldConstructor, Then, When } from '@cucumber/cucumber';
5
6
  import { Long } from 'long';
6
7
  import type { Capabilities, Options } from '@wdio/types';
8
+ import type ExpectWebdriverIO from 'expect-webdriverio';
7
9
  import { CucumberOptions, StepDefinitionOptions, HookFunctionExtension as HookFunctionExtensionImport } from './types';
8
10
  declare class CucumberAdapter {
9
11
  private _cid;
@@ -76,5 +78,10 @@ declare global {
76
78
  interface HookFunctionExtension extends HookFunctionExtensionImport {
77
79
  }
78
80
  }
81
+ namespace NodeJS {
82
+ interface Global {
83
+ expect: ExpectWebdriverIO.Expect;
84
+ }
85
+ }
79
86
  }
80
87
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAMrC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACH,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACP,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAc,MAAM,aAAa,CAAA;AAIpE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,IAAI,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAatH,cAAM,eAAe;IAoBb,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IAvBrB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gCAAgC,CAAU;IAClD,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,aAAa,CAAuB;IAE5C,aAAa,CAAC,EAAE,QAAQ,CAAA;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,IAAI,CAAA;gBAGA,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,UAAU,EAC3B,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,YAAY,CAAC,gBAAgB,EAC5C,SAAS,EAAE,YAAY;IA0B7B,IAAI;IAmCV,QAAQ;IAIF,GAAG;IAkET;;;;;;;;OAQG;IACH,uBAAuB;IAYvB,aAAa;IAUb,aAAa;IAsBb;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU;IAkDvC;;;OAGG;IACH,SAAS,CAAE,MAAM,EAAE,OAAO,CAAC,UAAU;IAwBrC;;;;;;;;;OASG;IACH,QAAQ,CACJ,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,qBAAqB,EAC9B,aAAa,EAAE,QAAQ,UAEA,SAAS,KAAK,WAAW,GAAG,EAAE;CAkB5D;AAGD,QAAA,MAAM,cAAc,EAAE;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAO,CAAA;AAa9C,eAAe,cAAc,CAAA;AAC7B,OAAO,EACH,eAAe,EACf,cAAc,EACd,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACP,CAAA;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW,CAAC;QAClB,UAAU,YAAa,SAAQ,eAAe;SAAG;QACjD,UAAU,qBAAsB,SAAQ,2BAA2B;SAAG;KACzE;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAMrC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACH,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACP,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAc,MAAM,aAAa,CAAA;AACpE,OAAO,KAAK,iBAAiB,MAAM,oBAAoB,CAAA;AAIvD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,IAAI,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAatH,cAAM,eAAe;IAoBb,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IAvBrB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gCAAgC,CAAU;IAClD,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,aAAa,CAAuB;IAE5C,aAAa,CAAC,EAAE,QAAQ,CAAA;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,IAAI,CAAA;gBAGA,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,UAAU,EAC3B,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,YAAY,CAAC,gBAAgB,EAC5C,SAAS,EAAE,YAAY;IA0B7B,IAAI;IAmCV,QAAQ;IAIF,GAAG;IAkET;;;;;;;;OAQG;IACH,uBAAuB;IAYvB,aAAa;IAUb,aAAa;IAsBb;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU;IAkDvC;;;OAGG;IACH,SAAS,CAAE,MAAM,EAAE,OAAO,CAAC,UAAU;IAwBrC;;;;;;;;;OASG;IACH,QAAQ,CACJ,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,qBAAqB,EAC9B,aAAa,EAAE,QAAQ,UAEA,SAAS,KAAK,WAAW,GAAG,EAAE;CAkB5D;AAGD,QAAA,MAAM,cAAc,EAAE;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAO,CAAA;AAa9C,eAAe,cAAc,CAAA;AAC7B,OAAO,EACH,eAAe,EACf,cAAc,EACd,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,IAAI,EACJ,IAAI,EACP,CAAA;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW,CAAC;QAClB,UAAU,YAAa,SAAQ,eAAe;SAAG;QACjD,UAAU,qBAAsB,SAAQ,2BAA2B;SAAG;KACzE;IACD,UAAU,MAAM,CAAC;QACb,UAAU,MAAM;YACZ,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAA;SACnC;KACJ;CACJ"}
package/build/index.js CHANGED
@@ -107,7 +107,7 @@ class CucumberAdapter {
107
107
  this._hasTests = this._cucumberReporter.eventListener.getPickleIds(this._capabilities).length > 0;
108
108
  }
109
109
  catch (runtimeError) {
110
- await utils_1.executeHooksWithArgs('after', this._config.after, [runtimeError, this._capabilities, this._specs]);
110
+ await (0, utils_1.executeHooksWithArgs)('after', this._config.after, [runtimeError, this._capabilities, this._specs]);
111
111
  throw runtimeError;
112
112
  }
113
113
  /**
@@ -140,7 +140,7 @@ class CucumberAdapter {
140
140
  * we need to somehow identify is function is step or hook
141
141
  * so we wrap every user hook function
142
142
  */
143
- utils_2.setUserHookNames(Cucumber.supportCodeLibraryBuilder);
143
+ (0, utils_2.setUserHookNames)(Cucumber.supportCodeLibraryBuilder);
144
144
  Cucumber.setDefaultTimeout(this._cucumberOpts.timeout);
145
145
  const supportCodeLibrary = Cucumber.supportCodeLibraryBuilder.finalize();
146
146
  /**
@@ -168,11 +168,11 @@ class CucumberAdapter {
168
168
  result = this._cucumberReporter.failedCount;
169
169
  }
170
170
  }
171
- catch (e) {
172
- runtimeError = e;
171
+ catch (err) {
172
+ runtimeError = err;
173
173
  result = 1;
174
174
  }
175
- await utils_1.executeHooksWithArgs('after', this._config.after, [runtimeError || result, this._capabilities, this._specs]);
175
+ await (0, utils_1.executeHooksWithArgs)('after', this._config.after, [runtimeError || result, this._capabilities, this._specs]);
176
176
  /**
177
177
  * in case the spec has a runtime error throw after the wdio hook
178
178
  */
@@ -204,7 +204,7 @@ class CucumberAdapter {
204
204
  });
205
205
  }
206
206
  requiredFiles() {
207
- return this._cucumberOpts.require.reduce((files, requiredFile) => files.concat(is_glob_1.default(requiredFile)
207
+ return this._cucumberOpts.require.reduce((files, requiredFile) => files.concat((0, is_glob_1.default)(requiredFile)
208
208
  ? glob_1.default.sync(requiredFile)
209
209
  : [requiredFile]), []);
210
210
  }
@@ -237,25 +237,25 @@ class CucumberAdapter {
237
237
  const eventListener = (_a = this._cucumberReporter) === null || _a === void 0 ? void 0 : _a.eventListener;
238
238
  Cucumber.BeforeAll(async function wdioHookBeforeFeature() {
239
239
  const params = eventListener === null || eventListener === void 0 ? void 0 : eventListener.getHookParams();
240
- await utils_1.executeHooksWithArgs('beforeFeature', config.beforeFeature, [params === null || params === void 0 ? void 0 : params.uri, params === null || params === void 0 ? void 0 : params.feature]);
240
+ await (0, utils_1.executeHooksWithArgs)('beforeFeature', config.beforeFeature, [params === null || params === void 0 ? void 0 : params.uri, params === null || params === void 0 ? void 0 : params.feature]);
241
241
  });
242
242
  Cucumber.AfterAll(async function wdioHookAfterFeature() {
243
243
  const params = eventListener === null || eventListener === void 0 ? void 0 : eventListener.getHookParams();
244
- await utils_1.executeHooksWithArgs('afterFeature', config.afterFeature, [params === null || params === void 0 ? void 0 : params.uri, params === null || params === void 0 ? void 0 : params.feature]);
244
+ await (0, utils_1.executeHooksWithArgs)('afterFeature', config.afterFeature, [params === null || params === void 0 ? void 0 : params.uri, params === null || params === void 0 ? void 0 : params.feature]);
245
245
  });
246
246
  Cucumber.Before(async function wdioHookBeforeScenario(world) {
247
- await utils_1.executeHooksWithArgs('beforeScenario', config.beforeScenario, [world]);
247
+ await (0, utils_1.executeHooksWithArgs)('beforeScenario', config.beforeScenario, [world]);
248
248
  });
249
249
  Cucumber.After(async function wdioHookAfterScenario(world) {
250
- await utils_1.executeHooksWithArgs('afterScenario', config.afterScenario, [world, getResultObject(world)]);
250
+ await (0, utils_1.executeHooksWithArgs)('afterScenario', config.afterScenario, [world, getResultObject(world)]);
251
251
  });
252
252
  Cucumber.BeforeStep(async function wdioHookBeforeStep() {
253
253
  const params = eventListener === null || eventListener === void 0 ? void 0 : eventListener.getHookParams();
254
- await utils_1.executeHooksWithArgs('beforeStep', config.beforeStep, [params === null || params === void 0 ? void 0 : params.step, params === null || params === void 0 ? void 0 : params.scenario]);
254
+ await (0, utils_1.executeHooksWithArgs)('beforeStep', config.beforeStep, [params === null || params === void 0 ? void 0 : params.step, params === null || params === void 0 ? void 0 : params.scenario]);
255
255
  });
256
256
  Cucumber.AfterStep(async function wdioHookAfterStep(world) {
257
257
  const params = eventListener === null || eventListener === void 0 ? void 0 : eventListener.getHookParams();
258
- await utils_1.executeHooksWithArgs('afterStep', config.afterStep, [params === null || params === void 0 ? void 0 : params.step, params === null || params === void 0 ? void 0 : params.scenario, getResultObject(world)]);
258
+ await (0, utils_1.executeHooksWithArgs)('afterStep', config.afterStep, [params === null || params === void 0 ? void 0 : params.step, params === null || params === void 0 ? void 0 : params.scenario, getResultObject(world)]);
259
259
  });
260
260
  }
261
261
  /**
@@ -4,6 +4,7 @@ import { PickleFilter } from '@cucumber/cucumber';
4
4
  import { Feature, Pickle, PickleStep, TestStep, TestStepResult } from '@cucumber/messages';
5
5
  import CucumberEventListener from './cucumberEventListener';
6
6
  import type { ReporterOptions } from './types';
7
+ import { ReporterScenario } from './constants';
7
8
  declare class CucumberReporter {
8
9
  private _options;
9
10
  private _cid;
@@ -18,7 +19,7 @@ declare class CucumberReporter {
18
19
  private _testStart?;
19
20
  constructor(eventBroadcaster: EventEmitter, pickleFilter: PickleFilter, _options: ReporterOptions, _cid: string, _specs: string[], _reporter: EventEmitter);
20
21
  handleBeforeFeature(uri: string, feature: Feature): void;
21
- handleBeforeScenario(uri: string, feature: Feature, scenario: Pickle): void;
22
+ handleBeforeScenario(uri: string, feature: Feature, scenario: ReporterScenario): void;
22
23
  handleBeforeStep(uri: string, feature: Feature, scenario: Pickle, step: PickleStep | TestStep): void;
23
24
  handleAfterStep(uri: string, feature: Feature, scenario: Pickle, step: PickleStep | TestStep, result: TestStepResult): void;
24
25
  afterHook(uri: string, feature: Feature, scenario: Pickle, step: TestStep, result: TestStepResult): void;
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAU,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAA;AAE5H,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,cAAM,gBAAgB;IAad,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IAfd,aAAa,EAAE,qBAAqB,CAAA;IACpC,WAAW,SAAI;IAEtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,aAAa,CAAC,CAAM;IAC5B,OAAO,CAAC,cAAc,CAAC,CAAM;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAM;gBAGrB,gBAAgB,EAAE,YAAY,EAC9B,YAAY,EAAE,YAAY,EAClB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,YAAY;IAkBnC,mBAAmB,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAclD,oBAAoB,CAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM;IAepB,gBAAgB,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GAAG,QAAQ;IAS/B,eAAe,CACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GAAG,QAAQ,EAC3B,MAAM,EAAE,cAAc;IAS1B,SAAS,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,cAAc;IAkB1B,SAAS,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,cAAc;IAyF1B,mBAAmB,CACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc;IAiB1B,kBAAkB,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAWjD,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAUjC,QAAQ,CAAE,iBAAiB,EAAE,OAAO,GAAG,MAAM;CAMhD;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAU,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAA;AAE5H,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,cAAM,gBAAgB;IAad,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IAfd,aAAa,EAAE,qBAAqB,CAAA;IACpC,WAAW,SAAI;IAEtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,aAAa,CAAC,CAAM;IAC5B,OAAO,CAAC,cAAc,CAAC,CAAM;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAM;gBAGrB,gBAAgB,EAAE,YAAY,EAC9B,YAAY,EAAE,YAAY,EAClB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,YAAY;IAkBnC,mBAAmB,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAclD,oBAAoB,CAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB;IAgB9B,gBAAgB,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GAAG,QAAQ;IAS/B,eAAe,CACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GAAG,QAAQ,EAC3B,MAAM,EAAE,cAAc;IAS1B,SAAS,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,cAAc;IAkB1B,SAAS,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,cAAc;IAyF1B,mBAAmB,CACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc;IAiB1B,kBAAkB,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAWjD,IAAI,CAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAUjC,QAAQ,CAAE,iBAAiB,EAAE,OAAO,GAAG,MAAM;CAMhD;AAED,eAAe,gBAAgB,CAAA"}
package/build/reporter.js CHANGED
@@ -29,7 +29,7 @@ class CucumberReporter {
29
29
  handleBeforeFeature(uri, feature) {
30
30
  this._featureStart = new Date();
31
31
  this.emit('suite:start', {
32
- uid: utils_1.getFeatureId(uri, feature),
32
+ uid: (0, utils_1.getFeatureId)(uri, feature),
33
33
  title: this.getTitle(feature),
34
34
  type: 'feature',
35
35
  file: uri,
@@ -44,20 +44,21 @@ class CucumberReporter {
44
44
  this.emit(this._scenarioLevelReport ? 'test:start' : 'suite:start', {
45
45
  uid: scenario.id,
46
46
  title: this.getTitle(scenario),
47
- parent: utils_1.getFeatureId(uri, feature),
47
+ parent: (0, utils_1.getFeatureId)(uri, feature),
48
48
  type: 'scenario',
49
49
  file: uri,
50
- tags: scenario.tags
50
+ tags: scenario.tags,
51
+ rule: scenario.rule
51
52
  });
52
53
  }
53
54
  handleBeforeStep(uri, feature, scenario, step) {
54
55
  this._testStart = new Date();
55
- const type = utils_1.getStepType(step);
56
- const payload = utils_1.buildStepPayload(uri, feature, scenario, step, { type });
56
+ const type = (0, utils_1.getStepType)(step);
57
+ const payload = (0, utils_1.buildStepPayload)(uri, feature, scenario, step, { type });
57
58
  this.emit(`${type}:start`, payload);
58
59
  }
59
60
  handleAfterStep(uri, feature, scenario, step, result) {
60
- const type = utils_1.getStepType(step);
61
+ const type = (0, utils_1.getStepType)(step);
61
62
  if (type === 'hook') {
62
63
  return this.afterHook(uri, feature, scenario, step, result);
63
64
  }
@@ -70,7 +71,7 @@ class CucumberReporter {
70
71
  error = new Error(result.message.split('\n')[0]);
71
72
  error.stack = result.message;
72
73
  }
73
- const payload = utils_1.buildStepPayload(uri, feature, scenario, step, {
74
+ const payload = (0, utils_1.buildStepPayload)(uri, feature, scenario, step, {
74
75
  type: 'hook',
75
76
  state: result.status,
76
77
  error,
@@ -148,14 +149,14 @@ class CucumberReporter {
148
149
  file: uri
149
150
  };
150
151
  const payload = step
151
- ? utils_1.buildStepPayload(uri, feature, scenario, step, {
152
+ ? (0, utils_1.buildStepPayload)(uri, feature, scenario, step, {
152
153
  type: 'step',
153
154
  ...common
154
155
  })
155
156
  : {
156
157
  type: 'scenario',
157
158
  uid: scenario.id,
158
- parent: utils_1.getFeatureId(uri, feature),
159
+ parent: (0, utils_1.getFeatureId)(uri, feature),
159
160
  tags: scenario.tags,
160
161
  ...common
161
162
  };
@@ -169,7 +170,7 @@ class CucumberReporter {
169
170
  this.emit('suite:end', {
170
171
  uid: scenario.id,
171
172
  title: this.getTitle(scenario),
172
- parent: utils_1.getFeatureId(uri, feature),
173
+ parent: (0, utils_1.getFeatureId)(uri, feature),
173
174
  type: 'scenario',
174
175
  file: uri,
175
176
  duration: Date.now() - ((_a = this._scenarioStart) === null || _a === void 0 ? void 0 : _a.getTime()),
@@ -179,7 +180,7 @@ class CucumberReporter {
179
180
  handleAfterFeature(uri, feature) {
180
181
  var _a;
181
182
  this.emit('suite:end', {
182
- uid: utils_1.getFeatureId(uri, feature),
183
+ uid: (0, utils_1.getFeatureId)(uri, feature),
183
184
  title: this.getTitle(feature),
184
185
  type: 'feature',
185
186
  file: uri,
@@ -188,7 +189,7 @@ class CucumberReporter {
188
189
  });
189
190
  }
190
191
  emit(event, payload) {
191
- let message = utils_1.formatMessage({ payload });
192
+ let message = (0, utils_1.formatMessage)({ payload });
192
193
  message.cid = this._cid;
193
194
  message.specs = this._specs;
194
195
  message.uid = payload.uid;
package/build/utils.d.ts CHANGED
@@ -75,6 +75,12 @@ export declare function setUserHookNames(options: typeof supportCodeLibraryBuild
75
75
  * @param {*} testCase
76
76
  */
77
77
  export declare function filterPickles(capabilities: Capabilities.RemoteCapability, pickle?: Pickle): boolean;
78
+ /**
79
+ * The reporters need to have the rule.
80
+ * They are NOT available on the scenario, they ARE on the feature.
81
+ * This will add them to it
82
+ */
83
+ export declare function getRule(feature: Feature, scenarioId: string): string | undefined;
78
84
  /**
79
85
  * The reporters need to have the keywords, like `Given|When|Then`. They are NOT available
80
86
  * on the scenario, they ARE on the feature.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAuB,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACrH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAkC,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1E;;GAEG;AACH,wBAAgB,kBAAkB,CAAE,EAAE,QAAQ,EAAE,EAAE,UAAU;;;;cAoB3D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAE,EAAE,OAAY,EAAE,EAAE,GAAG,OAgBnD;AAED,aAAK,QAAQ;IACT,IAAI,SAAS;IACb,IAAI,SAAS;CAChB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAE,IAAI,EAAE,QAAQ,YAE1C;AAED,wBAAgB,YAAY,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,UAE1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAE,OAAO,oBAAY,EAAE,IAAI,oBAAY,EAAE,IAAI,EAAC,MAAM,UAGnF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE;IACJ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;;;;;;;;;;;;;UAPS,MAAM;;;;;EAqBnB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAE,OAAO,EAAE,OAAO,yBAAyB,QAe1E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAE,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,WA+B1F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,kBA4BvE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAuB,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACrH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAkC,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1E;;GAEG;AACH,wBAAgB,kBAAkB,CAAE,EAAE,QAAQ,EAAE,EAAE,UAAU;;;;cAoB3D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAE,EAAE,OAAY,EAAE,EAAE,GAAG,OAgBnD;AAED,aAAK,QAAQ;IACT,IAAI,SAAS;IACb,IAAI,SAAS;CAChB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAE,IAAI,EAAE,QAAQ,YAE1C;AAED,wBAAgB,YAAY,CAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,UAE1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAE,OAAO,oBAAY,EAAE,IAAI,oBAAY,EAAE,IAAI,EAAC,MAAM,UAGnF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE;IACJ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;;;;;;;;;;;;;UAPS,MAAM;;;;;EAqBnB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAE,OAAO,EAAE,OAAO,yBAAyB,QAe1E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAE,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,MAAM,WA+B1F;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAS3D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,kBA4BvE"}
package/build/utils.js CHANGED
@@ -3,12 +3,12 @@ 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.addKeywordToStep = exports.filterPickles = exports.setUserHookNames = exports.buildStepPayload = exports.getTestStepTitle = exports.getFeatureId = exports.getStepType = exports.formatMessage = exports.createStepArgument = void 0;
6
+ exports.addKeywordToStep = exports.getRule = exports.filterPickles = exports.setUserHookNames = exports.buildStepPayload = exports.getTestStepTitle = exports.getFeatureId = exports.getStepType = exports.formatMessage = exports.createStepArgument = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const utils_1 = require("@wdio/utils");
9
9
  const logger_1 = __importDefault(require("@wdio/logger"));
10
10
  const constants_1 = require("./constants");
11
- const log = logger_1.default('@wdio/cucumber-framework:utils');
11
+ const log = (0, logger_1.default)('@wdio/cucumber-framework:utils');
12
12
  /**
13
13
  * NOTE: this function is exported for testing only
14
14
  */
@@ -115,7 +115,7 @@ function setUserHookNames(options) {
115
115
  const userHookFn = function (...args) {
116
116
  return hookFn.apply(this, args);
117
117
  };
118
- testRunHookDefinition.code = (utils_1.isFunctionAsync(hookFn)) ? userHookAsyncFn : userHookFn;
118
+ testRunHookDefinition.code = ((0, utils_1.isFunctionAsync)(hookFn)) ? userHookAsyncFn : userHookFn;
119
119
  }
120
120
  });
121
121
  });
@@ -144,7 +144,7 @@ function filterPickles(capabilities, pickle) {
144
144
  try {
145
145
  acc[splitItem.substring(0, pos)] = eval(splitItem.substring(pos + 1));
146
146
  }
147
- catch (e) {
147
+ catch (err) {
148
148
  log.error(`Couldn't use tag "${splitItem}" for filtering because it is malformed`);
149
149
  }
150
150
  }
@@ -158,6 +158,24 @@ function filterPickles(capabilities, pickle) {
158
158
  .every((key) => match(capabilities[key], filter[key]))));
159
159
  }
160
160
  exports.filterPickles = filterPickles;
161
+ /**
162
+ * The reporters need to have the rule.
163
+ * They are NOT available on the scenario, they ARE on the feature.
164
+ * This will add them to it
165
+ */
166
+ function getRule(feature, scenarioId) {
167
+ var _a, _b;
168
+ const rules = (_a = feature.children) === null || _a === void 0 ? void 0 : _a.filter((child) => Object.keys(child)[0] === 'rule');
169
+ const rule = rules.find((rule) => {
170
+ var _a, _b;
171
+ let scenarioRule = (_b = (_a = rule.rule) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.find((child) => { var _a; return ((_a = child.scenario) === null || _a === void 0 ? void 0 : _a.id) === scenarioId; });
172
+ if (scenarioRule) {
173
+ return rule;
174
+ }
175
+ });
176
+ return (_b = rule === null || rule === void 0 ? void 0 : rule.rule) === null || _b === void 0 ? void 0 : _b.name;
177
+ }
178
+ exports.getRule = getRule;
161
179
  /**
162
180
  * The reporters need to have the keywords, like `Given|When|Then`. They are NOT available
163
181
  * on the scenario, they ARE on the feature.
@@ -173,10 +191,10 @@ function addKeywordToStep(steps, feature) {
173
191
  // See https://github.com/cucumber/cucumber/blob/master/messages/messages.md
174
192
  const astNodeId = step.astNodeIds[0];
175
193
  const rules = feature.children.filter((child) => Object.keys(child)[0] === 'rule');
176
- feature.children = feature.children.filter((child) => Object.keys(child)[0] !== 'rule');
194
+ let featureChildren = feature.children.filter((child) => Object.keys(child)[0] !== 'rule');
177
195
  const rulesChildrens = rules.map((child) => { var _a; return (_a = child.rule) === null || _a === void 0 ? void 0 : _a.children; }).flat();
178
- feature.children = feature.children.concat(rulesChildrens);
179
- feature.children.find((child) =>
196
+ featureChildren = featureChildren.concat(rulesChildrens);
197
+ featureChildren.find((child) =>
180
198
  // @ts-ignore
181
199
  child[Object.keys(child)[0]].steps.find((featureScenarioStep) => {
182
200
  if (featureScenarioStep.id === astNodeId.toString()) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wdio/cucumber-framework",
3
- "version": "7.13.2",
3
+ "version": "7.16.3",
4
4
  "description": "A WebdriverIO plugin. Adapter for Cucumber.js testing framework.",
5
5
  "author": "Christian Bromann <christian@saucelabs.com>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-cucumber-framework",
@@ -23,15 +23,15 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@cucumber/cucumber": "7.3.1",
26
- "@cucumber/gherkin": "21.0.0",
26
+ "@cucumber/gherkin": "22.0.0",
27
27
  "@cucumber/gherkin-streams": "^3.0.0",
28
28
  "@cucumber/messages": "17.1.1",
29
29
  "@types/is-glob": "^4.0.1",
30
30
  "@types/long": "^4.0.1",
31
31
  "@types/mockery": "^1.4.29",
32
- "@wdio/logger": "7.7.0",
33
- "@wdio/types": "7.13.2",
34
- "@wdio/utils": "7.13.2",
32
+ "@wdio/logger": "7.16.0",
33
+ "@wdio/types": "7.16.3",
34
+ "@wdio/utils": "7.16.3",
35
35
  "expect-webdriverio": "^3.0.0",
36
36
  "glob": "^7.1.2",
37
37
  "is-glob": "^4.0.0",
@@ -45,5 +45,5 @@
45
45
  "access": "public"
46
46
  },
47
47
  "types": "./build/index.d.ts",
48
- "gitHead": "1ea2b99e2e335c0fb517c726cd92da970636aaf9"
48
+ "gitHead": "23e2af933060e829f03d7518089c377571c654e3"
49
49
  }