@wdio/cucumber-framework 8.11.3 → 8.13.9
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/cucumberEventListener.d.ts +1 -0
- package/build/cucumberEventListener.d.ts.map +1 -1
- package/build/cucumberEventListener.js +10 -4
- package/build/reporter.d.ts.map +1 -1
- package/build/reporter.js +3 -0
- package/build/utils.d.ts +1 -5
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +5 -30
- package/package.json +3 -3
|
@@ -5,6 +5,7 @@ import type { Pickle, TestCase, TestStepResult, TestCaseStarted, GherkinDocument
|
|
|
5
5
|
import type { Capabilities } from '@wdio/types';
|
|
6
6
|
import type { HookParams } from './types.js';
|
|
7
7
|
export default class CucumberEventListener extends EventEmitter {
|
|
8
|
+
#private;
|
|
8
9
|
private _pickleFilter;
|
|
9
10
|
private _gherkinDocEvents;
|
|
10
11
|
private _scenarios;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cucumberEventListener.d.ts","sourceRoot":"","sources":["../src/cucumberEventListener.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EACR,MAAM,EAAE,QAAQ,EAAY,cAAc,EAAE,eAAe,EAAE,eAAe,EAC5E,eAAe,EAAE,gBAAgB,EACpC,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"cucumberEventListener.d.ts","sourceRoot":"","sources":["../src/cucumberEventListener.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EACR,MAAM,EAAE,QAAQ,EAAY,cAAc,EAAE,eAAe,EAAE,eAAe,EAC5E,eAAe,EAAE,gBAAgB,EACpC,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,YAAY;;IAYd,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,CAAC,OAAO,YAAY,CAAC;IAuCrG,gBAAgB;IAIhB,gBAAgB,CAAC,OAAO,EAAE,MAAM;IAoDhC,iBAAiB,CAAC,eAAe,EAAE,eAAe;IAgClD,gBAAgB,CAAC,WAAW,EAAE,MAAM;IAgBpC,gBAAgB;IA4EhB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;IAerC,iBAAiB,CAAC,QAAQ,EAAE,eAAe;IAkD3C,iBAAiB,CAAC,oBAAoB,EAAE,eAAe;IAoCvD,kBAAkB,CAAC,qBAAqB,EAAE,gBAAgB;IA6B1D,kBAAkB,CACd,OAAO,EAAE,cAAc,EAAE;IA4B7B,iBAAiB;IAkBjB,aAAa;IAIb;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,gBAAgB;CAoBnD"}
|
|
@@ -2,9 +2,11 @@ import { EventEmitter } from 'node:events';
|
|
|
2
2
|
import { Status } from '@cucumber/cucumber';
|
|
3
3
|
import logger from '@wdio/logger';
|
|
4
4
|
import { addKeywordToStep, filterPickles, getRule } from './utils.js';
|
|
5
|
+
import path from 'node:path';
|
|
5
6
|
const log = logger('CucumberEventListener');
|
|
6
7
|
export default class CucumberEventListener extends EventEmitter {
|
|
7
8
|
_pickleFilter;
|
|
9
|
+
#cwd = process.cwd();
|
|
8
10
|
_gherkinDocEvents = [];
|
|
9
11
|
_scenarios = [];
|
|
10
12
|
_testCases = [];
|
|
@@ -404,10 +406,14 @@ export default class CucumberEventListener extends EventEmitter {
|
|
|
404
406
|
/**
|
|
405
407
|
* match based on Cucumber pickle filter
|
|
406
408
|
*/
|
|
407
|
-
.filter(([, fakeId]) =>
|
|
408
|
-
|
|
409
|
-
pickle
|
|
410
|
-
|
|
409
|
+
.filter(([, fakeId]) => {
|
|
410
|
+
const pickle = { ...this._scenarios.find(s => s.id === fakeId) };
|
|
411
|
+
pickle.uri = path.relative(this.#cwd, pickle.uri);
|
|
412
|
+
return this._pickleFilter.matches({
|
|
413
|
+
gherkinDocument,
|
|
414
|
+
pickle
|
|
415
|
+
});
|
|
416
|
+
})
|
|
411
417
|
.map(([id]) => id);
|
|
412
418
|
}
|
|
413
419
|
}
|
package/build/reporter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAA;AAEjI,OAAO,qBAAqB,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAa7B,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,CAAC,OAAO,YAAY,CAAC,EACvC,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;
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAA;AAEjI,OAAO,qBAAqB,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAa7B,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,CAAC,OAAO,YAAY,CAAC,EACvC,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;IAsB1B,SAAS,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,cAAc;IA+F1B,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;CAQhD"}
|
package/build/reporter.js
CHANGED
|
@@ -75,6 +75,9 @@ export default class CucumberReporter {
|
|
|
75
75
|
error = new Error(result.message.split('\n')[0]);
|
|
76
76
|
error.stack = result.message;
|
|
77
77
|
}
|
|
78
|
+
if (result.status === Status.FAILED) {
|
|
79
|
+
this.failedCount++;
|
|
80
|
+
}
|
|
78
81
|
const payload = buildStepPayload(uri, feature, scenario, step, {
|
|
79
82
|
type: 'hook',
|
|
80
83
|
state: result.status,
|
package/build/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type TagExpressionParser from '@cucumber/tag-expressions';
|
|
2
2
|
import type { supportCodeLibraryBuilder } from '@cucumber/cucumber';
|
|
3
|
-
import type { PickleStep, TestStep, Feature, Pickle, TestStepResultStatus, GherkinDocument
|
|
3
|
+
import type { PickleStep, TestStep, Feature, Pickle, TestStepResultStatus, GherkinDocument } from '@cucumber/messages';
|
|
4
4
|
import type { Capabilities } from '@wdio/types';
|
|
5
5
|
import type { ReporterStep } from './constants.js';
|
|
6
6
|
/**
|
|
@@ -88,10 +88,6 @@ export declare function getRule(feature: Feature, scenarioId: string): string |
|
|
|
88
88
|
* This will aad them
|
|
89
89
|
*/
|
|
90
90
|
export declare function addKeywordToStep(steps: ReporterStep[], feature: Feature): ReporterStep[];
|
|
91
|
-
export declare function hasTags(msg: GherkinDocument | FeatureChild | RuleChild, { tagParser, lineOnFile }: {
|
|
92
|
-
tagParser: ReturnType<typeof TagExpressionParser>;
|
|
93
|
-
lineOnFile: number | undefined;
|
|
94
|
-
}): boolean;
|
|
95
91
|
export declare function shouldRun(doc: GherkinDocument, tagParser: ReturnType<typeof TagExpressionParser>): boolean;
|
|
96
92
|
export {};
|
|
97
93
|
//# 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.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAA;AAKhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,KAAK,EAGR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,eAAe,EAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAKlD;;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;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,WAShG"}
|
package/build/utils.js
CHANGED
|
@@ -2,6 +2,8 @@ import path from 'node:path';
|
|
|
2
2
|
import logger from '@wdio/logger';
|
|
3
3
|
import { isFunctionAsync } from '@wdio/utils';
|
|
4
4
|
import { CUCUMBER_HOOK_DEFINITION_TYPES } from './constants.js';
|
|
5
|
+
import { compile } from '@cucumber/gherkin';
|
|
6
|
+
import { IdGenerator } from '@cucumber/messages';
|
|
5
7
|
const log = logger('@wdio/cucumber-framework:utils');
|
|
6
8
|
/**
|
|
7
9
|
* NOTE: this function is exported for testing only
|
|
@@ -185,38 +187,11 @@ export function addKeywordToStep(steps, feature) {
|
|
|
185
187
|
return step;
|
|
186
188
|
});
|
|
187
189
|
}
|
|
188
|
-
export function hasTags(msg, { tagParser, lineOnFile }) {
|
|
189
|
-
const type = (msg.feature
|
|
190
|
-
?? msg.rule
|
|
191
|
-
?? msg.scenario);
|
|
192
|
-
if (type) {
|
|
193
|
-
const matches = tagParser.evaluate(type.tags.map(t => t.name));
|
|
194
|
-
return lineOnFile
|
|
195
|
-
// Evaluate only specific line
|
|
196
|
-
? type.location.line === lineOnFile && matches
|
|
197
|
-
: matches;
|
|
198
|
-
}
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
190
|
export function shouldRun(doc, tagParser) {
|
|
202
191
|
if (!doc.feature) {
|
|
203
192
|
return false;
|
|
204
193
|
}
|
|
205
|
-
const
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
: undefined;
|
|
209
|
-
return (
|
|
210
|
-
// Check if Feature has matching tags
|
|
211
|
-
hasTags(doc, { tagParser, lineOnFile })
|
|
212
|
-
// Check if some root Scenarios have matching tags
|
|
213
|
-
|| doc.feature.children.filter(c => c.scenario).some(child => hasTags(child, { tagParser, lineOnFile }))
|
|
214
|
-
// Check if some Rules have matching tags
|
|
215
|
-
|| doc.feature.children.filter(c => c.rule).some(child => hasTags(child, { tagParser, lineOnFile }))
|
|
216
|
-
// Check if some Scenarios within Rules have matching tags
|
|
217
|
-
|| doc.feature.children
|
|
218
|
-
.filter(c => c.rule)
|
|
219
|
-
.map(c => c.rule.children.filter(c => c.scenario))
|
|
220
|
-
.flat(1)
|
|
221
|
-
.some(child => hasTags(child, { tagParser, lineOnFile })));
|
|
194
|
+
const pickles = compile(doc, '', IdGenerator.uuid());
|
|
195
|
+
const tags = pickles.map((pickle) => pickle.tags.map((tag) => tag.name));
|
|
196
|
+
return tags.some((tag) => tagParser.evaluate(tag));
|
|
222
197
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/cucumber-framework",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.13.9",
|
|
4
4
|
"description": "A WebdriverIO plugin. Adapter for Cucumber.js testing framework.",
|
|
5
5
|
"author": "Christian Bromann <mail@bromann.dev>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-cucumber-framework",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@types/node": "^20.1.0",
|
|
47
47
|
"@wdio/logger": "8.11.0",
|
|
48
48
|
"@wdio/types": "8.10.4",
|
|
49
|
-
"@wdio/utils": "8.
|
|
49
|
+
"@wdio/utils": "8.12.1",
|
|
50
50
|
"glob": "^10.2.2",
|
|
51
51
|
"is-glob": "^4.0.0",
|
|
52
52
|
"mockery": "^2.1.0"
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "1785f113f436eba9ae73b25c5d26389769f9d035"
|
|
62
62
|
}
|