@serenity-js/core 3.31.17 → 3.32.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/CHANGELOG.md +18 -0
- package/lib/Serenity.d.ts +4 -2
- package/lib/Serenity.d.ts.map +1 -1
- package/lib/Serenity.js +14 -8
- package/lib/Serenity.js.map +1 -1
- package/lib/model/CorrelationIdFactory.d.ts +8 -0
- package/lib/model/CorrelationIdFactory.d.ts.map +1 -0
- package/lib/model/CorrelationIdFactory.js +3 -0
- package/lib/model/CorrelationIdFactory.js.map +1 -0
- package/lib/model/index.d.ts +1 -0
- package/lib/model/index.d.ts.map +1 -1
- package/lib/model/index.js +1 -0
- package/lib/model/index.js.map +1 -1
- package/lib/model/tags/ProjectTag.d.ts +11 -0
- package/lib/model/tags/ProjectTag.d.ts.map +1 -0
- package/lib/model/tags/ProjectTag.js +17 -0
- package/lib/model/tags/ProjectTag.js.map +1 -0
- package/lib/model/tags/index.d.ts +1 -0
- package/lib/model/tags/index.d.ts.map +1 -1
- package/lib/model/tags/index.js +1 -0
- package/lib/model/tags/index.js.map +1 -1
- package/lib/stage/Cast.d.ts +12 -7
- package/lib/stage/Cast.d.ts.map +1 -1
- package/lib/stage/Cast.js +12 -7
- package/lib/stage/Cast.js.map +1 -1
- package/lib/stage/Stage.d.ts +9 -5
- package/lib/stage/Stage.d.ts.map +1 -1
- package/lib/stage/Stage.js +19 -5
- package/lib/stage/Stage.js.map +1 -1
- package/lib/stage/StageManager.d.ts +4 -1
- package/lib/stage/StageManager.d.ts.map +1 -1
- package/lib/stage/StageManager.js +7 -0
- package/lib/stage/StageManager.js.map +1 -1
- package/package.json +3 -3
- package/src/Serenity.ts +12 -16
- package/src/model/CorrelationIdFactory.ts +8 -0
- package/src/model/index.ts +1 -0
- package/src/model/tags/ProjectTag.ts +14 -0
- package/src/model/tags/index.ts +1 -0
- package/src/stage/Cast.ts +12 -7
- package/src/stage/Stage.ts +34 -10
- package/src/stage/StageManager.ts +12 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
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.32.0](https://github.com/serenity-js/serenity-js/compare/v3.31.17...v3.32.0) (2025-06-20)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **core:** retain the Stage when Serenity is re-configured ([03f74bf](https://github.com/serenity-js/serenity-js/commit/03f74bfe33349f2fa5b32e0a10ceb1f57047dc3b))
|
|
12
|
+
* **playwright:** marked all properties of ExtraBrowserContextOptions as optional ([3ee0145](https://github.com/serenity-js/serenity-js/commit/3ee0145890d0619cc0f4786b9addad429a41f278))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **playwright-test:** aggregate retried test reports, filter tests by project ([6cc46db](https://github.com/serenity-js/serenity-js/commit/6cc46dbc073134dd6956fff04208c1e574f38b05))
|
|
18
|
+
* **playwright:** refactored SerenityFixtures, corrected BrowseTheWebWithPlaywright parameters ([9c62723](https://github.com/serenity-js/serenity-js/commit/9c627233bc93e38a8ae6e9ba531c31ba05ab707f))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
6
24
|
## [3.31.17](https://github.com/serenity-js/serenity-js/compare/v3.31.16...v3.31.17) (2025-06-16)
|
|
7
25
|
|
|
8
26
|
**Note:** Version bump only for package @serenity-js/core
|
package/lib/Serenity.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { SerenityConfig } from './config';
|
|
|
2
2
|
import type { ErrorOptions, RuntimeError } from './errors';
|
|
3
3
|
import type { DomainEvent, EmitsDomainEvents } from './events';
|
|
4
4
|
import { Path } from './io';
|
|
5
|
-
import type
|
|
5
|
+
import { type ActivityDetails, CorrelationId, type CorrelationIdFactory } from './model';
|
|
6
6
|
import type { Actor, Timestamp } from './screenplay';
|
|
7
7
|
import { Clock } from './screenplay';
|
|
8
8
|
import type { Cast } from './stage/Cast';
|
|
@@ -11,6 +11,7 @@ import type { Cast } from './stage/Cast';
|
|
|
11
11
|
*/
|
|
12
12
|
export declare class Serenity implements EmitsDomainEvents {
|
|
13
13
|
private readonly clock;
|
|
14
|
+
private readonly sceneIdFactory;
|
|
14
15
|
private static defaultCueTimeout;
|
|
15
16
|
private static defaultInteractionTimeout;
|
|
16
17
|
private static defaultActors;
|
|
@@ -22,8 +23,9 @@ export declare class Serenity implements EmitsDomainEvents {
|
|
|
22
23
|
/**
|
|
23
24
|
* @param clock
|
|
24
25
|
* @param cwd
|
|
26
|
+
* @param sceneIdFactory
|
|
25
27
|
*/
|
|
26
|
-
constructor(clock?: Clock, cwd?: string);
|
|
28
|
+
constructor(clock?: Clock, cwd?: string, sceneIdFactory?: CorrelationIdFactory);
|
|
27
29
|
/**
|
|
28
30
|
* Configures Serenity/JS. Every call to this function
|
|
29
31
|
* replaces the previous configuration provided,
|
package/lib/Serenity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Serenity.d.ts","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAyE,IAAI,EAAE,MAAM,MAAM,CAAC;AACnG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Serenity.d.ts","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAyE,IAAI,EAAE,MAAM,MAAM,CAAC;AACnG,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,KAAK,EAAY,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAKzC;;GAEG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAkB1C,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAnBnC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAoC;IACpE,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAA4B;IACpE,OAAO,CAAC,MAAM,CAAC,aAAa,CAA+B;IAE3D,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,YAAY,CAAiC;IAErD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAExC;;;;OAIG;gBAEkB,KAAK,GAAE,KAAmB,EAC3C,GAAG,GAAE,MAAsB,EACV,cAAc,GAAE,oBAAoC;IAqBzE;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAmDvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACH,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAI1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAInC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,sBAAsB,IAAI,KAAK;IAI/B,QAAQ,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;IAI7C,WAAW,IAAI,SAAS;IAIxB,gBAAgB,IAAI,aAAa;IAIjC,cAAc,IAAI,aAAa;IAI/B,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa;IAIpE,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,EAAE;IAItG;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,GAAG,IAAI,IAAI;CAGd"}
|
package/lib/Serenity.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.Serenity = void 0;
|
|
|
4
4
|
const tiny_types_1 = require("tiny-types");
|
|
5
5
|
const errors_1 = require("./errors");
|
|
6
6
|
const io_1 = require("./io");
|
|
7
|
+
const model_1 = require("./model");
|
|
7
8
|
const screenplay_1 = require("./screenplay");
|
|
8
9
|
const Extras_1 = require("./stage/Extras");
|
|
9
10
|
const Stage_1 = require("./stage/Stage");
|
|
@@ -13,6 +14,7 @@ const StageManager_1 = require("./stage/StageManager");
|
|
|
13
14
|
*/
|
|
14
15
|
class Serenity {
|
|
15
16
|
clock;
|
|
17
|
+
sceneIdFactory;
|
|
16
18
|
static defaultCueTimeout = screenplay_1.Duration.ofSeconds(5);
|
|
17
19
|
static defaultInteractionTimeout = screenplay_1.Duration.ofSeconds(5);
|
|
18
20
|
static defaultActors = new Extras_1.Extras();
|
|
@@ -24,10 +26,12 @@ class Serenity {
|
|
|
24
26
|
/**
|
|
25
27
|
* @param clock
|
|
26
28
|
* @param cwd
|
|
29
|
+
* @param sceneIdFactory
|
|
27
30
|
*/
|
|
28
|
-
constructor(clock = new screenplay_1.Clock(), cwd = process.cwd()) {
|
|
31
|
+
constructor(clock = new screenplay_1.Clock(), cwd = process.cwd(), sceneIdFactory = model_1.CorrelationId) {
|
|
29
32
|
this.clock = clock;
|
|
30
|
-
this.
|
|
33
|
+
this.sceneIdFactory = sceneIdFactory;
|
|
34
|
+
this.stage = new Stage_1.Stage(Serenity.defaultActors, new StageManager_1.StageManager(Serenity.defaultCueTimeout, clock), new errors_1.ErrorFactory(), clock, Serenity.defaultInteractionTimeout, sceneIdFactory);
|
|
31
35
|
this.classLoader = new io_1.ClassLoader(new io_1.ModuleLoader(cwd), new io_1.ClassDescriptionParser());
|
|
32
36
|
this.workingDirectory = new io_1.Path(cwd);
|
|
33
37
|
this.fileSystem = new io_1.FileSystem(this.workingDirectory);
|
|
@@ -52,10 +56,12 @@ class Serenity {
|
|
|
52
56
|
if (config.outputStream) {
|
|
53
57
|
this.outputStream = config.outputStream;
|
|
54
58
|
}
|
|
55
|
-
this.stage
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
this.stage.configure({
|
|
60
|
+
actors: config.actors ?? Serenity.defaultActors,
|
|
61
|
+
cueTimeout,
|
|
62
|
+
interactionTimeout,
|
|
63
|
+
diffFormatter: config.diffFormatter ?? new errors_1.NoOpDiffFormatter(),
|
|
64
|
+
});
|
|
59
65
|
if (Array.isArray(config.crew)) {
|
|
60
66
|
this.stage.assign(...config.crew.map((stageCrewMemberDescription, i) => {
|
|
61
67
|
const stageCrewMember = this.classLoader.looksLoadable(stageCrewMemberDescription)
|
|
@@ -143,7 +149,7 @@ class Serenity {
|
|
|
143
149
|
* @param actors
|
|
144
150
|
*/
|
|
145
151
|
engage(actors) {
|
|
146
|
-
this.stage.engage(
|
|
152
|
+
this.stage.engage(actors);
|
|
147
153
|
}
|
|
148
154
|
/**
|
|
149
155
|
* Instantiates or retrieves an [`Actor`](https://serenity-js.org/api/core/class/Actor/)
|
|
@@ -204,7 +210,7 @@ class Serenity {
|
|
|
204
210
|
* The name of the actor to instantiate or retrieve
|
|
205
211
|
*/
|
|
206
212
|
theActorCalled(name) {
|
|
207
|
-
return this.stage.
|
|
213
|
+
return this.stage.actor(name);
|
|
208
214
|
}
|
|
209
215
|
/**
|
|
210
216
|
* Retrieves an actor who was last instantiated or retrieved
|
package/lib/Serenity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Serenity.js","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Serenity.js","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CorrelationIdFactory.d.ts","sourceRoot":"","sources":["../../src/model/CorrelationIdFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACjC;;OAEG;IACH,MAAM,IAAI,aAAa,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CorrelationIdFactory.js","sourceRoot":"","sources":["../../src/model/CorrelationIdFactory.ts"],"names":[],"mappings":""}
|
package/lib/model/index.d.ts
CHANGED
package/lib/model/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAEA,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAEA,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC"}
|
package/lib/model/index.js
CHANGED
|
@@ -21,6 +21,7 @@ __exportStar(require("./Artifact"), exports);
|
|
|
21
21
|
__exportStar(require("./BusinessRule"), exports);
|
|
22
22
|
__exportStar(require("./Category"), exports);
|
|
23
23
|
__exportStar(require("./CorrelationId"), exports);
|
|
24
|
+
__exportStar(require("./CorrelationIdFactory"), exports);
|
|
24
25
|
__exportStar(require("./Description"), exports);
|
|
25
26
|
__exportStar(require("./Name"), exports);
|
|
26
27
|
__exportStar(require("./outcomes"), exports);
|
package/lib/model/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;;;;;;;;;;;;;;AAE/C,oDAAkC;AAClC,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,6CAA2B;AAC3B,kDAAgC;AAChC,gDAA8B;AAC9B,yCAAuB;AACvB,6CAA2B;AAC3B,oDAAkC;AAClC,uDAAqC;AACrC,yCAAuB;AACvB,qDAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;;;;;;;;;;;;;;AAE/C,oDAAkC;AAClC,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,6CAA2B;AAC3B,kDAAgC;AAChC,yDAAuC;AACvC,gDAA8B;AAC9B,yCAAuB;AACvB,6CAA2B;AAC3B,oDAAkC;AAClC,uDAAqC;AACrC,yCAAuB;AACvB,qDAAmC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tag } from './Tag';
|
|
2
|
+
/**
|
|
3
|
+
* Used to categorise tests by the project they belong to.
|
|
4
|
+
*
|
|
5
|
+
* @access public
|
|
6
|
+
*/
|
|
7
|
+
export declare class ProjectTag extends Tag {
|
|
8
|
+
static readonly Type = "project";
|
|
9
|
+
constructor(projectName: string);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ProjectTag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectTag.d.ts","sourceRoot":"","sources":["../../../src/model/tags/ProjectTag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,GAAG;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa;gBAErB,WAAW,EAAE,MAAM;CAGlC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProjectTag = void 0;
|
|
4
|
+
const Tag_1 = require("./Tag");
|
|
5
|
+
/**
|
|
6
|
+
* Used to categorise tests by the project they belong to.
|
|
7
|
+
*
|
|
8
|
+
* @access public
|
|
9
|
+
*/
|
|
10
|
+
class ProjectTag extends Tag_1.Tag {
|
|
11
|
+
static Type = 'project';
|
|
12
|
+
constructor(projectName) {
|
|
13
|
+
super(projectName, ProjectTag.Type);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ProjectTag = ProjectTag;
|
|
17
|
+
//# sourceMappingURL=ProjectTag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectTag.js","sourceRoot":"","sources":["../../../src/model/tags/ProjectTag.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAE5B;;;;GAIG;AACH,MAAa,UAAW,SAAQ,SAAG;IAC/B,MAAM,CAAU,IAAI,GAAG,SAAS,CAAC;IAEjC,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AALL,gCAMC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/tags/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/tags/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
package/lib/model/tags/index.js
CHANGED
|
@@ -22,6 +22,7 @@ __exportStar(require("./FeatureTag"), exports);
|
|
|
22
22
|
__exportStar(require("./IssueTag"), exports);
|
|
23
23
|
__exportStar(require("./ManualTag"), exports);
|
|
24
24
|
__exportStar(require("./PlatformTag"), exports);
|
|
25
|
+
__exportStar(require("./ProjectTag"), exports);
|
|
25
26
|
__exportStar(require("./Tag"), exports);
|
|
26
27
|
__exportStar(require("./Tags"), exports);
|
|
27
28
|
__exportStar(require("./ThemeTag"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/tags/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,+CAA6B;AAC7B,kDAAgC;AAChC,wDAAsC;AACtC,+CAA6B;AAC7B,6CAA2B;AAC3B,8CAA4B;AAC5B,gDAA8B;AAC9B,wCAAsB;AACtB,yCAAuB;AACvB,6CAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/tags/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,+CAA6B;AAC7B,kDAAgC;AAChC,wDAAsC;AACtC,+CAA6B;AAC7B,6CAA2B;AAC3B,8CAA4B;AAC5B,gDAA8B;AAC9B,+CAA6B;AAC7B,wCAAsB;AACtB,yCAAuB;AACvB,6CAA2B"}
|
package/lib/stage/Cast.d.ts
CHANGED
|
@@ -86,13 +86,13 @@ import type { Actor } from '../screenplay';
|
|
|
86
86
|
* ```ts
|
|
87
87
|
* import { beforeEach } from 'mocha'
|
|
88
88
|
* import { engage, Actor, Cast } from '@serenity-js/core'
|
|
89
|
-
* import { BrowseTheWebWithPlaywright,
|
|
89
|
+
* import { BrowseTheWebWithPlaywright, ExtraBrowserContextOptions } from '@serenity-js/playwright'
|
|
90
90
|
* import { Browser, chromium } from 'playwright'
|
|
91
91
|
*
|
|
92
92
|
* export class UIActors implements Cast {
|
|
93
93
|
* constructor(
|
|
94
94
|
* private readonly browser: Browser,
|
|
95
|
-
* private readonly options?:
|
|
95
|
+
* private readonly options?: ExtraBrowserContextOptions,
|
|
96
96
|
* ) {
|
|
97
97
|
* }
|
|
98
98
|
*
|
|
@@ -114,23 +114,28 @@ import type { Actor } from '../screenplay';
|
|
|
114
114
|
* ```ts
|
|
115
115
|
* import { beforeEach } from 'mocha'
|
|
116
116
|
* import { actorCalled, engage, Cast } from '@serenity-js/core'
|
|
117
|
-
* import { BrowseTheWebWithPlaywright } from '@serenity-js/playwright'
|
|
117
|
+
* import { BrowseTheWebWithPlaywright, ExtraBrowserContextOptions } from '@serenity-js/playwright'
|
|
118
118
|
* import { CallAnApi } from '@serenity-js/rest'
|
|
119
|
-
* import { Browser, chromium } from 'playwright'
|
|
119
|
+
* import { Browser, BrowserContextOptions, chromium } from 'playwright'
|
|
120
120
|
*
|
|
121
121
|
* class Actors implements Cast {
|
|
122
122
|
* constructor(
|
|
123
123
|
* private readonly browser: Browser,
|
|
124
|
-
* private readonly
|
|
124
|
+
* private readonly contextOptions: BrowserContextOptions,
|
|
125
|
+
* private readonly extraContextOptions: ExtraBrowserContextOptions,
|
|
125
126
|
* ) {
|
|
126
127
|
* }
|
|
127
128
|
*
|
|
128
129
|
* prepare(actor: Actor) {
|
|
129
130
|
* switch (actor.name) {
|
|
130
131
|
* case 'James':
|
|
131
|
-
* return actor.whoCan(BrowseTheWebWithPlaywright.using(
|
|
132
|
+
* return actor.whoCan(BrowseTheWebWithPlaywright.using(
|
|
133
|
+
* this.browser,
|
|
134
|
+
* this.contextOptions,
|
|
135
|
+
* this.extraContextOptions
|
|
136
|
+
* ));
|
|
132
137
|
* default:
|
|
133
|
-
* return actor.whoCan(CallAnApi.at(this.
|
|
138
|
+
* return actor.whoCan(CallAnApi.at(this.contextOptions.baseURL));
|
|
134
139
|
* }
|
|
135
140
|
* }
|
|
136
141
|
* }
|
package/lib/stage/Cast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cast.d.ts","sourceRoot":"","sources":["../../src/stage/Cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"Cast.d.ts","sourceRoot":"","sources":["../../src/stage/Cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuJG;AACH,8BAAsB,IAAI;IAEtB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,GAAG,IAAI;IAQ5D;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;CACxC"}
|
package/lib/stage/Cast.js
CHANGED
|
@@ -88,13 +88,13 @@ exports.Cast = void 0;
|
|
|
88
88
|
* ```ts
|
|
89
89
|
* import { beforeEach } from 'mocha'
|
|
90
90
|
* import { engage, Actor, Cast } from '@serenity-js/core'
|
|
91
|
-
* import { BrowseTheWebWithPlaywright,
|
|
91
|
+
* import { BrowseTheWebWithPlaywright, ExtraBrowserContextOptions } from '@serenity-js/playwright'
|
|
92
92
|
* import { Browser, chromium } from 'playwright'
|
|
93
93
|
*
|
|
94
94
|
* export class UIActors implements Cast {
|
|
95
95
|
* constructor(
|
|
96
96
|
* private readonly browser: Browser,
|
|
97
|
-
* private readonly options?:
|
|
97
|
+
* private readonly options?: ExtraBrowserContextOptions,
|
|
98
98
|
* ) {
|
|
99
99
|
* }
|
|
100
100
|
*
|
|
@@ -116,23 +116,28 @@ exports.Cast = void 0;
|
|
|
116
116
|
* ```ts
|
|
117
117
|
* import { beforeEach } from 'mocha'
|
|
118
118
|
* import { actorCalled, engage, Cast } from '@serenity-js/core'
|
|
119
|
-
* import { BrowseTheWebWithPlaywright } from '@serenity-js/playwright'
|
|
119
|
+
* import { BrowseTheWebWithPlaywright, ExtraBrowserContextOptions } from '@serenity-js/playwright'
|
|
120
120
|
* import { CallAnApi } from '@serenity-js/rest'
|
|
121
|
-
* import { Browser, chromium } from 'playwright'
|
|
121
|
+
* import { Browser, BrowserContextOptions, chromium } from 'playwright'
|
|
122
122
|
*
|
|
123
123
|
* class Actors implements Cast {
|
|
124
124
|
* constructor(
|
|
125
125
|
* private readonly browser: Browser,
|
|
126
|
-
* private readonly
|
|
126
|
+
* private readonly contextOptions: BrowserContextOptions,
|
|
127
|
+
* private readonly extraContextOptions: ExtraBrowserContextOptions,
|
|
127
128
|
* ) {
|
|
128
129
|
* }
|
|
129
130
|
*
|
|
130
131
|
* prepare(actor: Actor) {
|
|
131
132
|
* switch (actor.name) {
|
|
132
133
|
* case 'James':
|
|
133
|
-
* return actor.whoCan(BrowseTheWebWithPlaywright.using(
|
|
134
|
+
* return actor.whoCan(BrowseTheWebWithPlaywright.using(
|
|
135
|
+
* this.browser,
|
|
136
|
+
* this.contextOptions,
|
|
137
|
+
* this.extraContextOptions
|
|
138
|
+
* ));
|
|
134
139
|
* default:
|
|
135
|
-
* return actor.whoCan(CallAnApi.at(this.
|
|
140
|
+
* return actor.whoCan(CallAnApi.at(this.contextOptions.baseURL));
|
|
136
141
|
* }
|
|
137
142
|
* }
|
|
138
143
|
* }
|
package/lib/stage/Cast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cast.js","sourceRoot":"","sources":["../../src/stage/Cast.ts"],"names":[],"mappings":";;;AAEA
|
|
1
|
+
{"version":3,"file":"Cast.js","sourceRoot":"","sources":["../../src/stage/Cast.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuJG;AACH,MAAsB,IAAI;IAEtB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,eAAwC;QACjD,OAAO,IAAI,MAAM,WAAY,SAAQ,IAAI;YACrC,OAAO,CAAC,KAAY;gBAChB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;SACJ,CAAA;IACL,CAAC;CAWJ;AAzBD,oBAyBC"}
|
package/lib/stage/Stage.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { SerenityConfig } from '../config';
|
|
2
|
+
import { ErrorFactory, type ErrorOptions, type RuntimeError } from '../errors';
|
|
2
3
|
import { type DomainEvent, type EmitsDomainEvents } from '../events';
|
|
3
|
-
import { type ActivityDetails, CorrelationId } from '../model';
|
|
4
|
+
import { type ActivityDetails, CorrelationId, type CorrelationIdFactory } from '../model';
|
|
4
5
|
import { Actor, type Clock, type Duration, type Timestamp } from '../screenplay';
|
|
5
6
|
import type { ListensToDomainEvents } from '../stage';
|
|
6
7
|
import type { Cast } from './Cast';
|
|
@@ -23,10 +24,11 @@ import type { StageManager } from './StageManager';
|
|
|
23
24
|
*/
|
|
24
25
|
export declare class Stage implements EmitsDomainEvents {
|
|
25
26
|
private cast;
|
|
26
|
-
private
|
|
27
|
+
private manager;
|
|
27
28
|
private errors;
|
|
28
29
|
private readonly clock;
|
|
29
|
-
private
|
|
30
|
+
private interactionTimeout;
|
|
31
|
+
private readonly sceneIdFactory;
|
|
30
32
|
static readonly unknownSceneId: CorrelationId;
|
|
31
33
|
/**
|
|
32
34
|
* Actors instantiated after the scene has started,
|
|
@@ -51,8 +53,10 @@ export declare class Stage implements EmitsDomainEvents {
|
|
|
51
53
|
* @param errors
|
|
52
54
|
* @param clock
|
|
53
55
|
* @param interactionTimeout
|
|
56
|
+
* @param sceneIdFactory
|
|
54
57
|
*/
|
|
55
|
-
constructor(cast: Cast, manager: StageManager, errors: ErrorFactory, clock: Clock, interactionTimeout: Duration);
|
|
58
|
+
constructor(cast: Cast, manager: StageManager, errors: ErrorFactory, clock: Clock, interactionTimeout: Duration, sceneIdFactory?: CorrelationIdFactory);
|
|
59
|
+
configure(options: Pick<SerenityConfig, 'actors' | 'cueTimeout' | 'interactionTimeout' | 'diffFormatter'>): void;
|
|
56
60
|
/**
|
|
57
61
|
* An alias for [`Stage.actor`](https://serenity-js.org/api/core/class/Stage/#actor)
|
|
58
62
|
*
|
package/lib/stage/Stage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stage.d.ts","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Stage.d.ts","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"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"}
|
package/lib/stage/Stage.js
CHANGED
|
@@ -28,6 +28,7 @@ class Stage {
|
|
|
28
28
|
errors;
|
|
29
29
|
clock;
|
|
30
30
|
interactionTimeout;
|
|
31
|
+
sceneIdFactory;
|
|
31
32
|
static unknownSceneId = new model_1.CorrelationId('unknown');
|
|
32
33
|
/**
|
|
33
34
|
* Actors instantiated after the scene has started,
|
|
@@ -52,18 +53,33 @@ class Stage {
|
|
|
52
53
|
* @param errors
|
|
53
54
|
* @param clock
|
|
54
55
|
* @param interactionTimeout
|
|
56
|
+
* @param sceneIdFactory
|
|
55
57
|
*/
|
|
56
|
-
constructor(cast, manager, errors, clock, interactionTimeout) {
|
|
58
|
+
constructor(cast, manager, errors, clock, interactionTimeout, sceneIdFactory = model_1.CorrelationId) {
|
|
57
59
|
this.cast = cast;
|
|
58
60
|
this.manager = manager;
|
|
59
61
|
this.errors = errors;
|
|
60
62
|
this.clock = clock;
|
|
61
63
|
this.interactionTimeout = interactionTimeout;
|
|
64
|
+
this.sceneIdFactory = sceneIdFactory;
|
|
62
65
|
(0, tiny_types_1.ensure)('Cast', cast, (0, tiny_types_1.isDefined)());
|
|
63
66
|
(0, tiny_types_1.ensure)('StageManager', manager, (0, tiny_types_1.isDefined)());
|
|
64
67
|
(0, tiny_types_1.ensure)('ErrorFactory', errors, (0, tiny_types_1.isDefined)());
|
|
65
68
|
(0, tiny_types_1.ensure)('Clock', clock, (0, tiny_types_1.isDefined)());
|
|
66
69
|
(0, tiny_types_1.ensure)('interactionTimeout', interactionTimeout, (0, tiny_types_1.isDefined)());
|
|
70
|
+
(0, tiny_types_1.ensure)('sceneIdFactory', sceneIdFactory, (0, tiny_types_1.isDefined)());
|
|
71
|
+
}
|
|
72
|
+
configure(options) {
|
|
73
|
+
this.interactionTimeout = options.interactionTimeout || this.interactionTimeout;
|
|
74
|
+
if (options.actors) {
|
|
75
|
+
this.engage(options.actors);
|
|
76
|
+
}
|
|
77
|
+
if (options.cueTimeout) {
|
|
78
|
+
this.manager.configure({ cueTimeout: options.cueTimeout });
|
|
79
|
+
}
|
|
80
|
+
if (options.diffFormatter) {
|
|
81
|
+
this.errors = new errors_1.ErrorFactory(options.diffFormatter);
|
|
82
|
+
}
|
|
67
83
|
}
|
|
68
84
|
/**
|
|
69
85
|
* An alias for [`Stage.actor`](https://serenity-js.org/api/core/class/Stage/#actor)
|
|
@@ -131,8 +147,7 @@ class Stage {
|
|
|
131
147
|
* @param actors
|
|
132
148
|
*/
|
|
133
149
|
engage(actors) {
|
|
134
|
-
(0, tiny_types_1.ensure)('
|
|
135
|
-
this.cast = actors;
|
|
150
|
+
this.cast = (0, tiny_types_1.ensure)('actors', actors, (0, tiny_types_1.isDefined)(), (0, tiny_types_1.property)('prepare', (0, tiny_types_1.isDefined)()));
|
|
136
151
|
}
|
|
137
152
|
/**
|
|
138
153
|
* Assigns listeners to be notified of [Serenity/JS domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
@@ -188,8 +203,7 @@ class Stage {
|
|
|
188
203
|
* - [`Stage.currentSceneId`](https://serenity-js.org/api/core/class/Stage/#currentSceneId)
|
|
189
204
|
*/
|
|
190
205
|
assignNewSceneId() {
|
|
191
|
-
|
|
192
|
-
this.currentScene = model_1.CorrelationId.create();
|
|
206
|
+
this.currentScene = this.sceneIdFactory.create();
|
|
193
207
|
return this.currentScene;
|
|
194
208
|
}
|
|
195
209
|
/**
|
package/lib/stage/Stage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,14 @@ import type { ListensToDomainEvents } from '../stage';
|
|
|
5
5
|
* @group Stage
|
|
6
6
|
*/
|
|
7
7
|
export declare class StageManager implements TellsTime {
|
|
8
|
-
private
|
|
8
|
+
private cueTimeout;
|
|
9
9
|
private readonly clock;
|
|
10
10
|
private readonly subscribers;
|
|
11
11
|
private readonly wip;
|
|
12
12
|
constructor(cueTimeout: Duration, clock: Clock);
|
|
13
|
+
configure(options: {
|
|
14
|
+
cueTimeout: Duration;
|
|
15
|
+
}): void;
|
|
13
16
|
register(...subscribers: ListensToDomainEvents[]): void;
|
|
14
17
|
deregister(subscriber: ListensToDomainEvents): void;
|
|
15
18
|
notifyOf(event: DomainEvent): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageManager.d.ts","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAI9B,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"StageManager.d.ts","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAI9B,OAAO,CAAC,UAAU;IAAY,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHhE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;gBAEN,UAAU,EAAE,QAAQ,EAAmB,KAAK,EAAE,KAAK;IAIvE,SAAS,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI;IAKlD,QAAQ,CAAC,GAAG,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAIvD,UAAU,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAInD,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAMlC,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrC,WAAW,IAAI,SAAS;CAG3B"}
|
|
@@ -15,6 +15,10 @@ class StageManager {
|
|
|
15
15
|
this.clock = clock;
|
|
16
16
|
this.wip = new WIP(cueTimeout, clock);
|
|
17
17
|
}
|
|
18
|
+
configure(options) {
|
|
19
|
+
this.cueTimeout = options.cueTimeout;
|
|
20
|
+
this.wip.configure(options);
|
|
21
|
+
}
|
|
18
22
|
register(...subscribers) {
|
|
19
23
|
this.subscribers.push(...subscribers);
|
|
20
24
|
}
|
|
@@ -68,6 +72,9 @@ class WIP {
|
|
|
68
72
|
this.cueTimeout = cueTimeout;
|
|
69
73
|
this.clock = clock;
|
|
70
74
|
}
|
|
75
|
+
configure(options) {
|
|
76
|
+
this.cueTimeout = options.cueTimeout;
|
|
77
|
+
}
|
|
71
78
|
recordIfAsync(event) {
|
|
72
79
|
if (event instanceof events_1.AsyncOperationAttempted) {
|
|
73
80
|
this.set(event.correlationId, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageManager.js","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":";;;AACA,sCAAmG;AAKnG;;GAEG;AACH,MAAa,YAAY;
|
|
1
|
+
{"version":3,"file":"StageManager.js","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.32.0",
|
|
4
4
|
"description": "The core Serenity/JS framework, providing the Screenplay Pattern interfaces, as well as the test reporting and integration infrastructure",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"assertion-error-formatter": "3.0.0",
|
|
60
60
|
"c8": "10.1.3",
|
|
61
61
|
"memfs": "4.17.2",
|
|
62
|
-
"mocha": "11.
|
|
62
|
+
"mocha": "11.7.0",
|
|
63
63
|
"mocha-multi": "1.1.7",
|
|
64
64
|
"ts-node": "10.9.2",
|
|
65
65
|
"typescript": "5.8.3"
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
"engines": {
|
|
76
76
|
"node": "^18.12 || ^20 || ^22"
|
|
77
77
|
},
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "2b6464752f0a65ccf4b9f83ce1b309e14e9c6293"
|
|
79
79
|
}
|
package/src/Serenity.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ensure,
|
|
1
|
+
import { ensure, isInstanceOf } from 'tiny-types';
|
|
2
2
|
|
|
3
3
|
import type { OutputStream } from './adapter';
|
|
4
4
|
import type { SerenityConfig } from './config';
|
|
@@ -6,7 +6,7 @@ import type { ErrorOptions, RuntimeError } from './errors';
|
|
|
6
6
|
import { ConfigurationError, ErrorFactory, NoOpDiffFormatter } from './errors';
|
|
7
7
|
import type { DomainEvent, EmitsDomainEvents } from './events';
|
|
8
8
|
import { ClassDescriptionParser, ClassLoader, d, FileSystem, has, ModuleLoader, Path } from './io';
|
|
9
|
-
import type
|
|
9
|
+
import { type ActivityDetails, CorrelationId, type CorrelationIdFactory } from './model';
|
|
10
10
|
import type { Actor, Timestamp } from './screenplay';
|
|
11
11
|
import { Clock, Duration } from './screenplay';
|
|
12
12
|
import type { StageCrewMember, StageCrewMemberBuilder } from './stage';
|
|
@@ -33,10 +33,12 @@ export class Serenity implements EmitsDomainEvents {
|
|
|
33
33
|
/**
|
|
34
34
|
* @param clock
|
|
35
35
|
* @param cwd
|
|
36
|
+
* @param sceneIdFactory
|
|
36
37
|
*/
|
|
37
38
|
constructor(
|
|
38
39
|
private readonly clock: Clock = new Clock(),
|
|
39
40
|
cwd: string = process.cwd(),
|
|
41
|
+
private readonly sceneIdFactory: CorrelationIdFactory = CorrelationId,
|
|
40
42
|
) {
|
|
41
43
|
this.stage = new Stage(
|
|
42
44
|
Serenity.defaultActors,
|
|
@@ -44,6 +46,7 @@ export class Serenity implements EmitsDomainEvents {
|
|
|
44
46
|
new ErrorFactory(),
|
|
45
47
|
clock,
|
|
46
48
|
Serenity.defaultInteractionTimeout,
|
|
49
|
+
sceneIdFactory,
|
|
47
50
|
);
|
|
48
51
|
|
|
49
52
|
this.classLoader = new ClassLoader(
|
|
@@ -80,17 +83,12 @@ export class Serenity implements EmitsDomainEvents {
|
|
|
80
83
|
this.outputStream = config.outputStream;
|
|
81
84
|
}
|
|
82
85
|
|
|
83
|
-
this.stage
|
|
84
|
-
Serenity.defaultActors,
|
|
85
|
-
|
|
86
|
-
new ErrorFactory(config.diffFormatter ?? new NoOpDiffFormatter()),
|
|
87
|
-
this.clock,
|
|
86
|
+
this.stage.configure({
|
|
87
|
+
actors: config.actors ?? Serenity.defaultActors,
|
|
88
|
+
cueTimeout,
|
|
88
89
|
interactionTimeout,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (config.actors) {
|
|
92
|
-
this.engage(config.actors);
|
|
93
|
-
}
|
|
90
|
+
diffFormatter: config.diffFormatter ?? new NoOpDiffFormatter(),
|
|
91
|
+
});
|
|
94
92
|
|
|
95
93
|
if (Array.isArray(config.crew)) {
|
|
96
94
|
this.stage.assign(
|
|
@@ -188,9 +186,7 @@ export class Serenity implements EmitsDomainEvents {
|
|
|
188
186
|
* @param actors
|
|
189
187
|
*/
|
|
190
188
|
engage(actors: Cast): void {
|
|
191
|
-
this.stage.engage(
|
|
192
|
-
ensure('actors', actors, property('prepare', isDefined())),
|
|
193
|
-
);
|
|
189
|
+
this.stage.engage(actors);
|
|
194
190
|
}
|
|
195
191
|
|
|
196
192
|
/**
|
|
@@ -252,7 +248,7 @@ export class Serenity implements EmitsDomainEvents {
|
|
|
252
248
|
* The name of the actor to instantiate or retrieve
|
|
253
249
|
*/
|
|
254
250
|
theActorCalled(name: string): Actor {
|
|
255
|
-
return this.stage.
|
|
251
|
+
return this.stage.actor(name);
|
|
256
252
|
}
|
|
257
253
|
|
|
258
254
|
/**
|
package/src/model/index.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Tag } from './Tag';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Used to categorise tests by the project they belong to.
|
|
5
|
+
*
|
|
6
|
+
* @access public
|
|
7
|
+
*/
|
|
8
|
+
export class ProjectTag extends Tag {
|
|
9
|
+
static readonly Type = 'project';
|
|
10
|
+
|
|
11
|
+
constructor(projectName: string) {
|
|
12
|
+
super(projectName, ProjectTag.Type);
|
|
13
|
+
}
|
|
14
|
+
}
|
package/src/model/tags/index.ts
CHANGED
package/src/stage/Cast.ts
CHANGED
|
@@ -87,13 +87,13 @@ import type { Actor } from '../screenplay';
|
|
|
87
87
|
* ```ts
|
|
88
88
|
* import { beforeEach } from 'mocha'
|
|
89
89
|
* import { engage, Actor, Cast } from '@serenity-js/core'
|
|
90
|
-
* import { BrowseTheWebWithPlaywright,
|
|
90
|
+
* import { BrowseTheWebWithPlaywright, ExtraBrowserContextOptions } from '@serenity-js/playwright'
|
|
91
91
|
* import { Browser, chromium } from 'playwright'
|
|
92
92
|
*
|
|
93
93
|
* export class UIActors implements Cast {
|
|
94
94
|
* constructor(
|
|
95
95
|
* private readonly browser: Browser,
|
|
96
|
-
* private readonly options?:
|
|
96
|
+
* private readonly options?: ExtraBrowserContextOptions,
|
|
97
97
|
* ) {
|
|
98
98
|
* }
|
|
99
99
|
*
|
|
@@ -115,23 +115,28 @@ import type { Actor } from '../screenplay';
|
|
|
115
115
|
* ```ts
|
|
116
116
|
* import { beforeEach } from 'mocha'
|
|
117
117
|
* import { actorCalled, engage, Cast } from '@serenity-js/core'
|
|
118
|
-
* import { BrowseTheWebWithPlaywright } from '@serenity-js/playwright'
|
|
118
|
+
* import { BrowseTheWebWithPlaywright, ExtraBrowserContextOptions } from '@serenity-js/playwright'
|
|
119
119
|
* import { CallAnApi } from '@serenity-js/rest'
|
|
120
|
-
* import { Browser, chromium } from 'playwright'
|
|
120
|
+
* import { Browser, BrowserContextOptions, chromium } from 'playwright'
|
|
121
121
|
*
|
|
122
122
|
* class Actors implements Cast {
|
|
123
123
|
* constructor(
|
|
124
124
|
* private readonly browser: Browser,
|
|
125
|
-
* private readonly
|
|
125
|
+
* private readonly contextOptions: BrowserContextOptions,
|
|
126
|
+
* private readonly extraContextOptions: ExtraBrowserContextOptions,
|
|
126
127
|
* ) {
|
|
127
128
|
* }
|
|
128
129
|
*
|
|
129
130
|
* prepare(actor: Actor) {
|
|
130
131
|
* switch (actor.name) {
|
|
131
132
|
* case 'James':
|
|
132
|
-
* return actor.whoCan(BrowseTheWebWithPlaywright.using(
|
|
133
|
+
* return actor.whoCan(BrowseTheWebWithPlaywright.using(
|
|
134
|
+
* this.browser,
|
|
135
|
+
* this.contextOptions,
|
|
136
|
+
* this.extraContextOptions
|
|
137
|
+
* ));
|
|
133
138
|
* default:
|
|
134
|
-
* return actor.whoCan(CallAnApi.at(this.
|
|
139
|
+
* return actor.whoCan(CallAnApi.at(this.contextOptions.baseURL));
|
|
135
140
|
* }
|
|
136
141
|
* }
|
|
137
142
|
* }
|
package/src/stage/Stage.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import { ensure, isDefined } from 'tiny-types';
|
|
1
|
+
import { ensure, isDefined, property } from 'tiny-types';
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import type { SerenityConfig } from '../config';
|
|
4
|
+
import {
|
|
5
|
+
ConfigurationError,
|
|
6
|
+
ErrorFactory,
|
|
7
|
+
type ErrorOptions,
|
|
8
|
+
LogicError,
|
|
9
|
+
RaiseErrors,
|
|
10
|
+
type RuntimeError
|
|
11
|
+
} from '../errors';
|
|
4
12
|
import {
|
|
5
13
|
ActorEntersStage,
|
|
6
14
|
ActorStageExitAttempted,
|
|
@@ -13,7 +21,7 @@ import {
|
|
|
13
21
|
SceneStarts,
|
|
14
22
|
TestRunFinishes
|
|
15
23
|
} from '../events';
|
|
16
|
-
import { type ActivityDetails, CorrelationId, Name } from '../model';
|
|
24
|
+
import { type ActivityDetails, CorrelationId, type CorrelationIdFactory, Name } from '../model';
|
|
17
25
|
import { Actor, type Clock, type Duration, ScheduleWork, type Timestamp } from '../screenplay';
|
|
18
26
|
import type { ListensToDomainEvents } from '../stage';
|
|
19
27
|
import type { Cast } from './Cast';
|
|
@@ -68,19 +76,38 @@ export class Stage implements EmitsDomainEvents {
|
|
|
68
76
|
* @param errors
|
|
69
77
|
* @param clock
|
|
70
78
|
* @param interactionTimeout
|
|
79
|
+
* @param sceneIdFactory
|
|
71
80
|
*/
|
|
72
81
|
constructor(
|
|
73
82
|
private cast: Cast,
|
|
74
|
-
private
|
|
83
|
+
private manager: StageManager,
|
|
75
84
|
private errors: ErrorFactory,
|
|
76
85
|
private readonly clock: Clock,
|
|
77
|
-
private
|
|
86
|
+
private interactionTimeout: Duration,
|
|
87
|
+
private readonly sceneIdFactory: CorrelationIdFactory = CorrelationId,
|
|
78
88
|
) {
|
|
79
89
|
ensure('Cast', cast, isDefined());
|
|
80
90
|
ensure('StageManager', manager, isDefined());
|
|
81
91
|
ensure('ErrorFactory', errors, isDefined());
|
|
82
92
|
ensure('Clock', clock, isDefined());
|
|
83
93
|
ensure('interactionTimeout', interactionTimeout, isDefined());
|
|
94
|
+
ensure('sceneIdFactory', sceneIdFactory, isDefined());
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
configure(options: Pick<SerenityConfig, 'actors' | 'cueTimeout' | 'interactionTimeout' | 'diffFormatter'>): void {
|
|
98
|
+
this.interactionTimeout = options.interactionTimeout || this.interactionTimeout;
|
|
99
|
+
|
|
100
|
+
if (options.actors) {
|
|
101
|
+
this.engage(options.actors);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (options.cueTimeout) {
|
|
105
|
+
this.manager.configure({ cueTimeout: options.cueTimeout })
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (options.diffFormatter) {
|
|
109
|
+
this.errors = new ErrorFactory(options.diffFormatter);
|
|
110
|
+
}
|
|
84
111
|
}
|
|
85
112
|
|
|
86
113
|
/**
|
|
@@ -171,9 +198,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
171
198
|
* @param actors
|
|
172
199
|
*/
|
|
173
200
|
engage(actors: Cast): void {
|
|
174
|
-
ensure('
|
|
175
|
-
|
|
176
|
-
this.cast = actors;
|
|
201
|
+
this.cast = ensure('actors', actors, isDefined(), property('prepare', isDefined()));
|
|
177
202
|
}
|
|
178
203
|
|
|
179
204
|
/**
|
|
@@ -239,8 +264,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
239
264
|
* - [`Stage.currentSceneId`](https://serenity-js.org/api/core/class/Stage/#currentSceneId)
|
|
240
265
|
*/
|
|
241
266
|
assignNewSceneId(): CorrelationId {
|
|
242
|
-
|
|
243
|
-
this.currentScene = CorrelationId.create();
|
|
267
|
+
this.currentScene = this.sceneIdFactory.create();
|
|
244
268
|
|
|
245
269
|
return this.currentScene;
|
|
246
270
|
}
|
|
@@ -11,10 +11,15 @@ export class StageManager implements TellsTime {
|
|
|
11
11
|
private readonly subscribers: ListensToDomainEvents[] = [];
|
|
12
12
|
private readonly wip: WIP;
|
|
13
13
|
|
|
14
|
-
constructor(private
|
|
14
|
+
constructor(private cueTimeout: Duration, private readonly clock: Clock) {
|
|
15
15
|
this.wip = new WIP(cueTimeout, clock);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
configure(options: { cueTimeout: Duration }): void {
|
|
19
|
+
this.cueTimeout = options.cueTimeout;
|
|
20
|
+
this.wip.configure(options);
|
|
21
|
+
}
|
|
22
|
+
|
|
18
23
|
register(...subscribers: ListensToDomainEvents[]): void {
|
|
19
24
|
this.subscribers.push(...subscribers);
|
|
20
25
|
}
|
|
@@ -79,11 +84,15 @@ class WIP {
|
|
|
79
84
|
private readonly failedOperations: FailedAsyncOperationDetails[] = [];
|
|
80
85
|
|
|
81
86
|
constructor(
|
|
82
|
-
private
|
|
87
|
+
private cueTimeout: Duration,
|
|
83
88
|
private readonly clock: Clock,
|
|
84
89
|
) {
|
|
85
90
|
}
|
|
86
91
|
|
|
92
|
+
configure(options: { cueTimeout: Duration }) {
|
|
93
|
+
this.cueTimeout = options.cueTimeout;
|
|
94
|
+
}
|
|
95
|
+
|
|
87
96
|
recordIfAsync(event: DomainEvent): void {
|
|
88
97
|
if (event instanceof AsyncOperationAttempted) {
|
|
89
98
|
this.set(event.correlationId, {
|
|
@@ -151,7 +160,7 @@ class WIP {
|
|
|
151
160
|
return Array.from(this.wip.values());
|
|
152
161
|
}
|
|
153
162
|
|
|
154
|
-
private header(numberOfFailures): string {
|
|
163
|
+
private header(numberOfFailures: number): string {
|
|
155
164
|
return numberOfFailures === 1
|
|
156
165
|
? `1 async operation has failed to complete`
|
|
157
166
|
: `${ numberOfFailures } async operations have failed to complete`;
|