@wdio/cucumber-framework 8.16.11 → 8.16.12

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
@@ -24,7 +24,6 @@ declare class CucumberAdapter {
24
24
  constructor(_cid: string, _config: Options.Testrunner, _specs: string[], _capabilities: Capabilities.RemoteCapability, _reporter: EventEmitter, _eventEmitter: EventEmitter, _generateSkipTags?: boolean, _cucumberFormatter?: string);
25
25
  readFiles(filePaths?: Options.Testrunner['specs']): (string | string[])[];
26
26
  getGherkinDocuments(files?: Options.Testrunner['specs']): (GherkinDocument | GherkinDocument[])[];
27
- filterSpecsByTagExpression(specs?: Options.Testrunner['specs'], tagExpression?: string): typeof specs;
28
27
  generateDynamicSkipTags(): string[];
29
28
  init(): Promise<this>;
30
29
  hasTests(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO1C,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAO9C,OAAO,KAAK,EACR,eAAe,EACf,qBAAqB,IAAI,2BAA2B,EAEvD,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAW,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAc,MAAM,aAAa,CAAA;AAUpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAA;AAE7G,eAAO,MAAM,aAAa,YAAY,CAAA;AAItC,QAAA,MACI,KAAK,0lBACL,QAAQ,sKACR,SAAS,0lBAET,MAAM,0lBACN,SAAS,sKACT,UAAU,0lBAEV,KAAK,sFACL,IAAI,sFACJ,IAAI,sFAEJ,SAAS,6BAET,KAAK,yBAIL,iBAAiB,kCACjB,4BAA4B,0BAC5B,mBAAmB,qBACnB,mBAAmB,2HACnB,UAAU,oFAEF,CAAA;AAoBZ,cAAM,eAAe;IAUb,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,kBAAkB;IAhB9B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,SAAS,CAAO;IAExB,OAAO,CAAC,aAAa,CAAqC;gBAG9C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,UAAU,EAC3B,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,YAAY,CAAC,gBAAgB,EAC5C,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,YAAY,EAC3B,iBAAiB,GAAE,OAAc,EACjC,kBAAkB,GAAE,MAA+G;IAyD/I,SAAS,CACL,SAAS,GAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAM,GAC5C,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE;IAUxB,mBAAmB,CACf,KAAK,GAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAM,GACxC,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE;IAkB1C,uBAAuB;IAWjB,IAAI;IA6BV,QAAQ;IAIF,GAAG;IAmFT;;;;;;;;OAQG;IACH,uBAAuB;IAgBjB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE;IAQpC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE;IA0BtC,SAAS;IAWf;;;OAGG;IACH,wBAAwB,CACpB,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,yBAAyB,EAAE,yBAAyB;CA8E3D;AAGD,QAAA,MAAM,cAAc,EAAE;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAO,CAAA;AAa9C,eAAe,cAAc,CAAA;AAC7B,OAAO,EACH,eAAe,EACf,cAAc,EAEd,KAAK,EACL,QAAQ,EACR,SAAS,EAET,MAAM,EACN,SAAS,EACT,UAAU,EAEV,KAAK,EACL,IAAI,EACJ,IAAI,EAEJ,SAAS,EAET,KAAK,EAEL,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACb,CAAA;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW,CAAC;QAClB,UAAU,YAAa,SAAQ,eAAe;SAAG;QACjD,UAAU,qBAAsB,SAAQ,2BAA2B;SAAG;KACzE;CACJ"}
package/build/index.js CHANGED
@@ -11,10 +11,9 @@ import { executeHooksWithArgs } from '@wdio/utils';
11
11
  import * as Cucumber from '@cucumber/cucumber';
12
12
  import Gherkin from '@cucumber/gherkin';
13
13
  import { IdGenerator } from '@cucumber/messages';
14
- import TagExpressionParser from '@cucumber/tag-expressions';
15
14
  import { DEFAULT_OPTS } from './constants.js';
16
- import { generateSkipTagsFromCapabilities, shouldRun } from './utils.js';
17
- import { loadConfiguration, runCucumber } from '@cucumber/cucumber/api';
15
+ import { generateSkipTagsFromCapabilities } from './utils.js';
16
+ import { loadConfiguration, loadSources, runCucumber } from '@cucumber/cucumber/api';
18
17
  export const FILE_PROTOCOL = 'file://';
19
18
  const log = logger('@wdio/cucumber-framework');
20
19
  const { After, AfterAll, AfterStep, Before, BeforeAll, BeforeStep, Given, When, Then, DataTable, World, Status, setDefaultTimeout, setDefinitionFunctionWrapper, setWorldConstructor, defineParameterType, defineStep, supportCodeLibraryBuilder, } = Cucumber;
@@ -110,30 +109,6 @@ class CucumberAdapter {
110
109
  return etc.length ? docs : doc;
111
110
  });
112
111
  }
113
- filterSpecsByTagExpression(specs = [], tagExpression = this._cucumberOpts.tags ?? '') {
114
- if (!tagExpression) {
115
- return specs;
116
- }
117
- const tagParser = TagExpressionParser(tagExpression);
118
- const filteredSpecs = this.getGherkinDocuments([this._specs])
119
- .map((specDoc) => {
120
- const [doc, ...etc] = [specDoc]
121
- .flat(1)
122
- .filter((doc) => shouldRun(doc, tagParser));
123
- const ret = Array.isArray(specDoc)
124
- ? // Return group only if its not empty
125
- doc && [doc, ...etc]
126
- : doc;
127
- return ret;
128
- })
129
- .filter((doc) => !!doc)
130
- .map((doc) => {
131
- // Get URIs from Gherkin documents to run
132
- const [uri, ...etc] = [doc].flat(1).map((doc) => doc.uri);
133
- return Array.isArray(doc) ? [uri, ...etc] : uri;
134
- });
135
- return filteredSpecs;
136
- }
137
112
  generateDynamicSkipTags() {
138
113
  return this.getGherkinDocuments([this._specs])
139
114
  .map((specDoc) => {
@@ -151,13 +126,19 @@ class CucumberAdapter {
151
126
  // Filter the specs according to the tag expression
152
127
  // Some workers would only spawn to then skip the spec (Feature) file
153
128
  // Filtering at this stage can prevent the spawning of a massive number of workers
154
- if (this._cucumberOpts.tags) {
155
- this._specs = this.filterSpecsByTagExpression([this._specs]).flat(1);
156
- }
129
+ const { plan } = await loadSources({
130
+ paths: this._specs,
131
+ defaultDialect: this._cucumberOpts.language,
132
+ order: this._cucumberOpts.order,
133
+ names: this._cucumberOpts.name,
134
+ tagExpression: this._cucumberOpts.tags,
135
+ });
136
+ this._specs = plan?.map((pl) => path.resolve(pl.uri));
157
137
  // Filter the specs according to line numbers
158
138
  if (this._config.cucumberFeaturesWithLineNumbers?.length > 0) {
159
139
  this._specs = this._config.cucumberFeaturesWithLineNumbers;
160
140
  }
141
+ this._specs = [...new Set(this._specs)];
161
142
  this._cucumberOpts.paths = this._specs;
162
143
  this._hasTests = this._specs.length > 0;
163
144
  return this;
package/build/utils.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import type TagExpressionParser from '@cucumber/tag-expressions';
2
- import type { PickleStep, TestStep, Feature, Pickle, TestStepResultStatus, GherkinDocument } from '@cucumber/messages';
1
+ import type { PickleStep, TestStep, Feature, Pickle, TestStepResultStatus } from '@cucumber/messages';
3
2
  import type { Capabilities } from '@wdio/types';
4
3
  import type { ReporterStep } from './types.js';
5
4
  /**
@@ -74,7 +73,6 @@ export declare function getRule(feature: Feature, scenarioId: string): string |
74
73
  * This will aad them
75
74
  */
76
75
  export declare function addKeywordToStep(steps: ReporterStep[], feature: Feature): ReporterStep[];
77
- export declare function shouldRun(doc: GherkinDocument, tagParser: ReturnType<typeof TagExpressionParser>): boolean;
78
76
  /**
79
77
  * Generates skip tags based on capabilities and provided tags.
80
78
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAA;AAIhE,OAAO,KAAK,EAGR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,eAAe,EAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C;;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,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,WAOhG;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CA6CxH;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAG1E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EACN,oBAAoB,EACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C;;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,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;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CA6CxH;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAG1E"}
package/build/utils.js CHANGED
@@ -1,7 +1,5 @@
1
1
  import path from 'node:path';
2
2
  import logger from '@wdio/logger';
3
- import { compile } from '@cucumber/gherkin';
4
- import { IdGenerator } from '@cucumber/messages';
5
3
  const log = logger('@wdio/cucumber-framework:utils');
6
4
  /**
7
5
  * NOTE: this function is exported for testing only
@@ -128,14 +126,6 @@ export function addKeywordToStep(steps, feature) {
128
126
  return step;
129
127
  });
130
128
  }
131
- export function shouldRun(doc, tagParser) {
132
- if (!doc.feature) {
133
- return false;
134
- }
135
- const pickles = compile(doc, '', IdGenerator.uuid());
136
- const tags = pickles.map((pickle) => pickle.tags.map((tag) => tag.name));
137
- return tags.some((tag) => tagParser.evaluate(tag));
138
- }
139
129
  /**
140
130
  * Generates skip tags based on capabilities and provided tags.
141
131
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wdio/cucumber-framework",
3
- "version": "8.16.11",
3
+ "version": "8.16.12",
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",
@@ -41,11 +41,10 @@
41
41
  "@cucumber/cucumber": "9.5.1",
42
42
  "@cucumber/gherkin": "26.2.0",
43
43
  "@cucumber/messages": "22.0.0",
44
- "@cucumber/tag-expressions": "5.0.6",
45
44
  "@types/node": "^20.1.0",
46
45
  "@wdio/logger": "8.11.0",
47
- "@wdio/types": "8.16.7",
48
- "@wdio/utils": "8.16.11",
46
+ "@wdio/types": "8.16.12",
47
+ "@wdio/utils": "8.16.12",
49
48
  "glob": "^10.2.2",
50
49
  "is-glob": "^4.0.0"
51
50
  },
@@ -55,5 +54,5 @@
55
54
  "publishConfig": {
56
55
  "access": "public"
57
56
  },
58
- "gitHead": "f254aac9e601e0c39f1d046faeccffb0ebbe5cb4"
57
+ "gitHead": "6a010586db579a5019b490172f8ffc3939c9e852"
59
58
  }