@serenity-js/cucumber 3.13.0 → 3.13.2
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/CHANGELOG.md +22 -0
- package/lib/adapter/CucumberCLIAdapter.d.ts +2 -0
- package/lib/adapter/CucumberCLIAdapter.d.ts.map +1 -1
- package/lib/adapter/CucumberCLIAdapter.js +20 -6
- package/lib/adapter/CucumberCLIAdapter.js.map +1 -1
- package/lib/adapter/CucumberConfig.d.ts +8 -0
- package/lib/adapter/CucumberConfig.d.ts.map +1 -1
- package/lib/adapter/CucumberOptions.d.ts +3 -2
- package/lib/adapter/CucumberOptions.d.ts.map +1 -1
- package/lib/adapter/CucumberOptions.js +11 -7
- package/lib/adapter/CucumberOptions.js.map +1 -1
- package/package.json +6 -6
- package/src/adapter/CucumberCLIAdapter.ts +26 -9
- package/src/adapter/CucumberConfig.ts +9 -0
- package/src/adapter/CucumberOptions.ts +16 -9
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.13.2](https://github.com/serenity-js/serenity-js/compare/v3.13.1...v3.13.2) (2023-11-14)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **cucumber:** resolve paths to "imports" as absolute file URLs ([fc9aefc](https://github.com/serenity-js/serenity-js/commit/fc9aefcdc2ec8e1dfe3ce38b03a1ff7fd7d3c6c6)), closes [#2060](https://github.com/serenity-js/serenity-js/issues/2060)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [3.13.1](https://github.com/serenity-js/serenity-js/compare/v3.13.0...v3.13.1) (2023-11-07)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **deps:** update dependency tiny-types to ^1.21.0 ([d4921f9](https://github.com/serenity-js/serenity-js/commit/d4921f9cedb502487c176216fbf15dd2ef83dcc4))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
# [3.13.0](https://github.com/serenity-js/serenity-js/compare/v3.12.0...v3.13.0) (2023-10-19)
|
|
7
29
|
|
|
8
30
|
|
|
@@ -42,7 +42,9 @@ export declare class CucumberCLIAdapter implements TestRunnerAdapter {
|
|
|
42
42
|
*/
|
|
43
43
|
run(): Promise<void>;
|
|
44
44
|
private runScenarios;
|
|
45
|
+
private runWithCucumber10;
|
|
45
46
|
private runWithCucumber8JavaScriptApi;
|
|
47
|
+
private runWithCucumberApi;
|
|
46
48
|
private runWithCucumber8;
|
|
47
49
|
private runWithCucumber7;
|
|
48
50
|
private runWithCucumber3to6;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CucumberCLIAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/CucumberCLIAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"CucumberCLIAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/CucumberCLIAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAI3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAoB,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAE1E;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAQpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAR3B,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;gBAGtC,MAAM,EAAE,cAAc,EACL,MAAM,EAAE,YAAY,EACrC,UAAU,EAAE,UAAU,EACL,MAAM,EAAE,uBAAuB;IAKpD;;OAEG;IACH,gBAAgB,IAAI,OAAO,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAM9C;;;;;OAKG;IACG,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAYvB;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAU1B,OAAO,CAAC,YAAY;YAkCN,iBAAiB;YAcjB,6BAA6B;YAK7B,kBAAkB;IAmChC,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,mBAAmB;CAO9B"}
|
|
@@ -41,7 +41,7 @@ class CucumberCLIAdapter {
|
|
|
41
41
|
this.loader = loader;
|
|
42
42
|
this.output = output;
|
|
43
43
|
this.pathsToScenarios = [];
|
|
44
|
-
this.options = new CucumberOptions_1.CucumberOptions(fileSystem, config);
|
|
44
|
+
this.options = new CucumberOptions_1.CucumberOptions(new io_1.FileFinder(io_1.Path.from(this.loader.cwd)), fileSystem, config);
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* Scenario success threshold for this test runner, calculated based on {@apilink CucumberConfig}
|
|
@@ -95,7 +95,7 @@ class CucumberCLIAdapter {
|
|
|
95
95
|
}
|
|
96
96
|
runScenarios(version, serenityListener, pathsToScenarios) {
|
|
97
97
|
if (version.isAtLeast(new io_1.Version('10.0.0'))) {
|
|
98
|
-
return this.
|
|
98
|
+
return this.runWithCucumber10(serenityListener, pathsToScenarios);
|
|
99
99
|
}
|
|
100
100
|
if (version.isAtLeast(new io_1.Version('9.0.0'))) {
|
|
101
101
|
return this.runWithCucumber8JavaScriptApi(serenityListener, pathsToScenarios);
|
|
@@ -118,11 +118,25 @@ class CucumberCLIAdapter {
|
|
|
118
118
|
}
|
|
119
119
|
return this.runWithCucumber0to1(argv, serenityListener, pathsToScenarios);
|
|
120
120
|
}
|
|
121
|
+
async runWithCucumber10(pathToSerenityListener, pathsToScenarios) {
|
|
122
|
+
const output = this.output.get();
|
|
123
|
+
const serenityListenerUrl = io_1.Path.from(pathToSerenityListener).toFileURL().href;
|
|
124
|
+
const outputUrl = output.value() ?? undefined;
|
|
125
|
+
// https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md#ambiguous-colons-in-formats
|
|
126
|
+
// https://github.com/cucumber/cucumber-js/issues/2326#issuecomment-1711701382
|
|
127
|
+
return await this.runWithCucumberApi([
|
|
128
|
+
serenityListenerUrl,
|
|
129
|
+
outputUrl,
|
|
130
|
+
], pathsToScenarios, output);
|
|
131
|
+
}
|
|
121
132
|
// https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md
|
|
122
133
|
async runWithCucumber8JavaScriptApi(pathToSerenityListener, pathsToScenarios) {
|
|
134
|
+
const output = this.output.get();
|
|
135
|
+
return await this.runWithCucumberApi(`${pathToSerenityListener}:${output.value()}`, pathsToScenarios, output);
|
|
136
|
+
}
|
|
137
|
+
async runWithCucumberApi(serenityFormatter, pathsToScenarios, output) {
|
|
123
138
|
const configuration = this.options.asCucumberApiConfiguration();
|
|
124
139
|
const { loadConfiguration, loadSupport, runCucumber } = this.loader.require('@cucumber/cucumber/api');
|
|
125
|
-
const output = this.output.get();
|
|
126
140
|
// https://github.com/cucumber/cucumber-js/blob/main/src/api/environment.ts
|
|
127
141
|
const environment = {
|
|
128
142
|
cwd: this.loader.cwd,
|
|
@@ -131,13 +145,13 @@ class CucumberCLIAdapter {
|
|
|
131
145
|
env: process.env,
|
|
132
146
|
debug: false,
|
|
133
147
|
};
|
|
134
|
-
configuration.format.push(
|
|
148
|
+
configuration.format.push(serenityFormatter);
|
|
135
149
|
configuration.paths = pathsToScenarios;
|
|
136
150
|
// https://github.com/cucumber/cucumber-js/blob/main/src/configuration/types.ts
|
|
137
151
|
const { runConfiguration } = await loadConfiguration({ provided: configuration }, environment);
|
|
138
|
-
// load the support code upfront
|
|
139
|
-
const support = await loadSupport(runConfiguration, environment);
|
|
140
152
|
try {
|
|
153
|
+
// load the support code upfront
|
|
154
|
+
const support = await loadSupport(runConfiguration, environment);
|
|
141
155
|
// run cucumber, using the support code we loaded already
|
|
142
156
|
const { success } = await runCucumber({ ...runConfiguration, support }, environment);
|
|
143
157
|
await output.cleanUp();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CucumberCLIAdapter.js","sourceRoot":"","sources":["../../src/adapter/CucumberCLIAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"CucumberCLIAdapter.js","sourceRoot":"","sources":["../../src/adapter/CucumberCLIAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
* @group Configuration
|
|
7
7
|
*/
|
|
8
8
|
export interface CucumberConfig {
|
|
9
|
+
/**
|
|
10
|
+
* Paths to where your feature files are. Note that you don't need to specify the paths when
|
|
11
|
+
* using Serenity/JS with WebdriverIO or Protractor, as their respective adapters will do it for you.
|
|
12
|
+
*
|
|
13
|
+
* #### Learn more
|
|
14
|
+
* - [Cucumber docs: configuration](https://github.com/cucumber/cucumber-js/blob/main/docs/configuration.md)
|
|
15
|
+
*/
|
|
16
|
+
paths?: string[];
|
|
9
17
|
/**
|
|
10
18
|
* Prepare a test run but don't run it
|
|
11
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CucumberConfig.d.ts","sourceRoot":"","sources":["../../src/adapter/CucumberConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAE3B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE3B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC"}
|
|
1
|
+
{"version":3,"file":"CucumberConfig.d.ts","sourceRoot":"","sources":["../../src/adapter/CucumberConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAE3B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE3B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { IConfiguration } from '@cucumber/cucumber/api';
|
|
2
|
-
import type { FileSystem } from '@serenity-js/core/lib/io';
|
|
2
|
+
import type { FileFinder, FileSystem } from '@serenity-js/core/lib/io';
|
|
3
3
|
import { Version } from '@serenity-js/core/lib/io';
|
|
4
4
|
import type { CucumberConfig } from './CucumberConfig';
|
|
5
5
|
/**
|
|
6
6
|
* @private
|
|
7
7
|
*/
|
|
8
8
|
export declare class CucumberOptions {
|
|
9
|
+
private readonly finder;
|
|
9
10
|
private readonly fileSystem;
|
|
10
11
|
private readonly config;
|
|
11
|
-
constructor(fileSystem: FileSystem, config: CucumberConfig);
|
|
12
|
+
constructor(finder: FileFinder, fileSystem: FileSystem, config: CucumberConfig);
|
|
12
13
|
isStrict(): boolean;
|
|
13
14
|
asArgumentsForCucumber(version: Version): string[];
|
|
14
15
|
private asArray;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CucumberOptions.d.ts","sourceRoot":"","sources":["../../src/adapter/CucumberOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"CucumberOptions.d.ts","sourceRoot":"","sources":["../../src/adapter/CucumberOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAQ,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,qBAAa,eAAe;IAEpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc;IAI3C,QAAQ,IAAI,OAAO;IAInB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE;IAgBlD,OAAO,CAAC,OAAO;IAYf,0BAA0B,IAAI,OAAO,CAAC,cAAc,CAAC;IAgCrD,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,QAAQ;IAMhB;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,YAAY;CAKvB"}
|
|
@@ -6,7 +6,8 @@ const io_1 = require("@serenity-js/core/lib/io");
|
|
|
6
6
|
* @private
|
|
7
7
|
*/
|
|
8
8
|
class CucumberOptions {
|
|
9
|
-
constructor(fileSystem, config) {
|
|
9
|
+
constructor(finder, fileSystem, config) {
|
|
10
|
+
this.finder = finder;
|
|
10
11
|
this.fileSystem = fileSystem;
|
|
11
12
|
this.config = config;
|
|
12
13
|
}
|
|
@@ -40,20 +41,23 @@ class CucumberOptions {
|
|
|
40
41
|
failFast: this.config.failFast,
|
|
41
42
|
format: this.asArray(this.config.format),
|
|
42
43
|
formatOptions: this.config.formatOptions,
|
|
43
|
-
|
|
44
|
+
paths: this.asArray(this.config.paths)
|
|
45
|
+
.flatMap(glob => this.finder.filesMatching(glob).map(path => path.value)),
|
|
46
|
+
import: this.asArray(this.config.import)
|
|
47
|
+
.flatMap(glob => this.finder.filesMatching(glob).map(path => path.toFileURL().href)),
|
|
48
|
+
require: this.asArray(this.config.require)
|
|
49
|
+
.flatMap(glob => this.finder.filesMatching(glob).map(path => path.value)),
|
|
50
|
+
requireModule: this.asArray(this.config.requireModule),
|
|
44
51
|
language: this.config.language,
|
|
45
52
|
name: this.asArray(this.config.name),
|
|
46
|
-
// order: PickleOrder
|
|
47
|
-
// paths: string[],
|
|
48
|
-
// parallel: number, // this only works when Cucumber is the runner, in which scenario CucumberCLIAdapter is not used anyway
|
|
49
53
|
publish: false,
|
|
50
|
-
require: this.asArray(this.config.require),
|
|
51
|
-
requireModule: this.asArray(this.config.requireModule),
|
|
52
54
|
retry: this.config.retry,
|
|
53
55
|
retryTagFilter: this.config.retryTagFilter,
|
|
54
56
|
strict: this.config.strict,
|
|
55
57
|
tags: this.asArray(this.config.tags).join(' and '),
|
|
56
58
|
worldParameters: this.config.worldParameters,
|
|
59
|
+
// order: PickleOrder
|
|
60
|
+
// parallel: number, // this only works when Cucumber is the runner, in which scenario CucumberCLIAdapter is not used anyway
|
|
57
61
|
};
|
|
58
62
|
}
|
|
59
63
|
optionToValues(option, value, version) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CucumberOptions.js","sourceRoot":"","sources":["../../src/adapter/CucumberOptions.ts"],"names":[],"mappings":";;;AAEA,iDAAyD;AAIzD;;GAEG;AACH,MAAa,eAAe;IACxB,YACqB,UAAsB,EACtB,MAAsB;
|
|
1
|
+
{"version":3,"file":"CucumberOptions.js","sourceRoot":"","sources":["../../src/adapter/CucumberOptions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/cucumber",
|
|
3
|
-
"version": "3.13.
|
|
3
|
+
"version": "3.13.2",
|
|
4
4
|
"description": "Serenity/JS adapter for Cucumber test runners version 1.x - 7.x",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@cucumber/messages": "22.0.0",
|
|
47
|
-
"@serenity-js/core": "3.13.
|
|
47
|
+
"@serenity-js/core": "3.13.2",
|
|
48
48
|
"cli-table3": "^0.6.3",
|
|
49
49
|
"gherkin": "5.1.0",
|
|
50
|
-
"tiny-types": "^1.
|
|
50
|
+
"tiny-types": "^1.21.0"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@cucumber/cucumber": "^7.3.2 || ^8.5.0 || ^9.1.0 || ^10.0.0",
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@cucumber/cucumber": "^10.0.0",
|
|
66
66
|
"@integration/testing-tools": "3.0.0",
|
|
67
|
-
"@types/chai": "^4.3.
|
|
68
|
-
"@types/mocha": "^10.0.
|
|
67
|
+
"@types/chai": "^4.3.10",
|
|
68
|
+
"@types/mocha": "^10.0.4",
|
|
69
69
|
"c8": "8.0.1",
|
|
70
70
|
"mocha": "^10.2.0",
|
|
71
71
|
"mocha-multi": "^1.1.7",
|
|
72
72
|
"ts-node": "^10.9.1",
|
|
73
73
|
"typescript": "5.1.6"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "ed08db56c2c947c2c2ac4d9d4e95f9f68e90d2a4"
|
|
76
76
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TestRunnerAdapter } from '@serenity-js/core/lib/adapter';
|
|
2
|
-
import type { FileSystem, ModuleLoader} from '@serenity-js/core/lib/io';
|
|
3
|
-
import { Version } from '@serenity-js/core/lib/io';
|
|
2
|
+
import type { FileSystem, ModuleLoader } from '@serenity-js/core/lib/io';
|
|
3
|
+
import { FileFinder, Path, Version } from '@serenity-js/core/lib/io';
|
|
4
4
|
import type { Outcome } from '@serenity-js/core/lib/model';
|
|
5
5
|
import { ExecutionIgnored, ImplementationPending } from '@serenity-js/core/lib/model';
|
|
6
6
|
import * as path from 'path'; // eslint-disable-line unicorn/import-style
|
|
@@ -29,7 +29,7 @@ export class CucumberCLIAdapter implements TestRunnerAdapter {
|
|
|
29
29
|
fileSystem: FileSystem,
|
|
30
30
|
private readonly output: SerenityFormatterOutput,
|
|
31
31
|
) {
|
|
32
|
-
this.options = new CucumberOptions(fileSystem, config);
|
|
32
|
+
this.options = new CucumberOptions(new FileFinder(Path.from(this.loader.cwd)), fileSystem, config);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -92,7 +92,7 @@ export class CucumberCLIAdapter implements TestRunnerAdapter {
|
|
|
92
92
|
|
|
93
93
|
private runScenarios(version: Version, serenityListener: string, pathsToScenarios: string[]): Promise<void> {
|
|
94
94
|
if (version.isAtLeast(new Version('10.0.0'))) {
|
|
95
|
-
return this.
|
|
95
|
+
return this.runWithCucumber10(serenityListener, pathsToScenarios);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
if (version.isAtLeast(new Version('9.0.0'))) {
|
|
@@ -124,11 +124,28 @@ export class CucumberCLIAdapter implements TestRunnerAdapter {
|
|
|
124
124
|
return this.runWithCucumber0to1(argv, serenityListener, pathsToScenarios);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
private async runWithCucumber10(pathToSerenityListener: string, pathsToScenarios: string[]): Promise<void> {
|
|
128
|
+
const output = this.output.get();
|
|
129
|
+
const serenityListenerUrl = Path.from(pathToSerenityListener).toFileURL().href;
|
|
130
|
+
const outputUrl = output.value() ?? undefined;
|
|
131
|
+
|
|
132
|
+
// https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md#ambiguous-colons-in-formats
|
|
133
|
+
// https://github.com/cucumber/cucumber-js/issues/2326#issuecomment-1711701382
|
|
134
|
+
return await this.runWithCucumberApi([
|
|
135
|
+
serenityListenerUrl,
|
|
136
|
+
outputUrl,
|
|
137
|
+
], pathsToScenarios, output);
|
|
138
|
+
}
|
|
139
|
+
|
|
127
140
|
// https://github.com/cucumber/cucumber-js/blob/main/docs/deprecations.md
|
|
128
141
|
private async runWithCucumber8JavaScriptApi(pathToSerenityListener: string, pathsToScenarios: string[]): Promise<void> {
|
|
142
|
+
const output = this.output.get();
|
|
143
|
+
return await this.runWithCucumberApi(`${ pathToSerenityListener }:${ output.value() }`, pathsToScenarios, output);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private async runWithCucumberApi(serenityFormatter: string | [string, string?], pathsToScenarios: string[], output: OutputDescriptor): Promise<void> {
|
|
129
147
|
const configuration = this.options.asCucumberApiConfiguration();
|
|
130
148
|
const { loadConfiguration, loadSupport, runCucumber } = this.loader.require('@cucumber/cucumber/api');
|
|
131
|
-
const output = this.output.get();
|
|
132
149
|
|
|
133
150
|
// https://github.com/cucumber/cucumber-js/blob/main/src/api/environment.ts
|
|
134
151
|
const environment = {
|
|
@@ -139,16 +156,16 @@ export class CucumberCLIAdapter implements TestRunnerAdapter {
|
|
|
139
156
|
debug: false,
|
|
140
157
|
};
|
|
141
158
|
|
|
142
|
-
configuration.format.push(
|
|
159
|
+
configuration.format.push(serenityFormatter)
|
|
143
160
|
configuration.paths = pathsToScenarios;
|
|
144
161
|
|
|
145
162
|
// https://github.com/cucumber/cucumber-js/blob/main/src/configuration/types.ts
|
|
146
163
|
const { runConfiguration } = await loadConfiguration({ provided: configuration }, environment);
|
|
147
164
|
|
|
148
|
-
// load the support code upfront
|
|
149
|
-
const support = await loadSupport(runConfiguration, environment)
|
|
150
|
-
|
|
151
165
|
try {
|
|
166
|
+
// load the support code upfront
|
|
167
|
+
const support = await loadSupport(runConfiguration, environment)
|
|
168
|
+
|
|
152
169
|
// run cucumber, using the support code we loaded already
|
|
153
170
|
const { success } = await runCucumber({ ...runConfiguration, support }, environment)
|
|
154
171
|
await output.cleanUp();
|
|
@@ -7,6 +7,15 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export interface CucumberConfig {
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Paths to where your feature files are. Note that you don't need to specify the paths when
|
|
12
|
+
* using Serenity/JS with WebdriverIO or Protractor, as their respective adapters will do it for you.
|
|
13
|
+
*
|
|
14
|
+
* #### Learn more
|
|
15
|
+
* - [Cucumber docs: configuration](https://github.com/cucumber/cucumber-js/blob/main/docs/configuration.md)
|
|
16
|
+
*/
|
|
17
|
+
paths?: string[];
|
|
18
|
+
|
|
10
19
|
/**
|
|
11
20
|
* Prepare a test run but don't run it
|
|
12
21
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IConfiguration } from '@cucumber/cucumber/api';
|
|
2
|
-
import type { FileSystem} from '@serenity-js/core/lib/io';
|
|
2
|
+
import type { FileFinder, FileSystem } from '@serenity-js/core/lib/io';
|
|
3
3
|
import { Path, Version } from '@serenity-js/core/lib/io';
|
|
4
4
|
|
|
5
5
|
import type { CucumberConfig } from './CucumberConfig';
|
|
@@ -9,6 +9,7 @@ import type { CucumberConfig } from './CucumberConfig';
|
|
|
9
9
|
*/
|
|
10
10
|
export class CucumberOptions {
|
|
11
11
|
constructor(
|
|
12
|
+
private readonly finder: FileFinder,
|
|
12
13
|
private readonly fileSystem: FileSystem,
|
|
13
14
|
private readonly config: CucumberConfig,
|
|
14
15
|
) {
|
|
@@ -55,20 +56,26 @@ export class CucumberOptions {
|
|
|
55
56
|
failFast: this.config.failFast,
|
|
56
57
|
format: this.asArray(this.config.format),
|
|
57
58
|
formatOptions: this.config.formatOptions as any,
|
|
58
|
-
|
|
59
|
+
|
|
60
|
+
paths: this.asArray(this.config.paths)
|
|
61
|
+
.flatMap(glob => this.finder.filesMatching(glob).map(path => path.value)),
|
|
62
|
+
import: this.asArray(this.config.import)
|
|
63
|
+
.flatMap(glob => this.finder.filesMatching(glob).map(path => path.toFileURL().href)),
|
|
64
|
+
require: this.asArray(this.config.require)
|
|
65
|
+
.flatMap(glob => this.finder.filesMatching(glob).map(path => path.value)),
|
|
66
|
+
requireModule: this.asArray(this.config.requireModule),
|
|
67
|
+
|
|
59
68
|
language: this.config.language,
|
|
60
69
|
name: this.asArray(this.config.name),
|
|
61
|
-
// order: PickleOrder
|
|
62
|
-
// paths: string[],
|
|
63
|
-
// parallel: number, // this only works when Cucumber is the runner, in which scenario CucumberCLIAdapter is not used anyway
|
|
64
70
|
publish: false,
|
|
65
|
-
require: this.asArray(this.config.require),
|
|
66
|
-
requireModule: this.asArray(this.config.requireModule),
|
|
67
71
|
retry: this.config.retry,
|
|
68
72
|
retryTagFilter: this.config.retryTagFilter,
|
|
69
73
|
strict: this.config.strict,
|
|
70
74
|
tags: this.asArray(this.config.tags).join(' and '),
|
|
71
75
|
worldParameters: this.config.worldParameters,
|
|
76
|
+
|
|
77
|
+
// order: PickleOrder
|
|
78
|
+
// parallel: number, // this only works when Cucumber is the runner, in which scenario CucumberCLIAdapter is not used anyway
|
|
72
79
|
};
|
|
73
80
|
}
|
|
74
81
|
|
|
@@ -124,8 +131,8 @@ export class CucumberOptions {
|
|
|
124
131
|
|
|
125
132
|
private tagsToCucumberExpressions(tags: string[]): string {
|
|
126
133
|
return tags.filter(tag => !! tag.replace)
|
|
127
|
-
|
|
128
|
-
|
|
134
|
+
.map(tag => tag.replaceAll('~', 'not '))
|
|
135
|
+
.join(' and ');
|
|
129
136
|
}
|
|
130
137
|
|
|
131
138
|
private flagToArg(option: string, value: boolean): string {
|