@serenity-js/core 3.25.0 → 3.25.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 +19 -0
- package/README.md +1 -1
- package/lib/Serenity.d.ts +22 -22
- package/lib/Serenity.js +22 -22
- package/lib/adapter/OutputStream.d.ts +5 -4
- package/lib/adapter/OutputStream.d.ts.map +1 -1
- package/lib/adapter/TestRunnerAdapter.d.ts +2 -2
- package/lib/config/ClassDescription.d.ts +1 -1
- package/lib/config/SerenityConfig.d.ts +22 -20
- package/lib/config/SerenityConfig.d.ts.map +1 -1
- package/lib/config/SerenityConfig.js +22 -20
- package/lib/config/SerenityConfig.js.map +1 -1
- package/lib/errors/ErrorFactory.d.ts +2 -1
- package/lib/errors/ErrorFactory.d.ts.map +1 -1
- package/lib/errors/ErrorFactory.js +2 -1
- package/lib/errors/ErrorFactory.js.map +1 -1
- package/lib/errors/RaiseErrors.d.ts +9 -9
- package/lib/errors/RaiseErrors.js +9 -9
- package/lib/errors/diff/AnsiDiffFormatter.d.ts +1 -1
- package/lib/errors/diff/AnsiDiffFormatter.js +1 -1
- package/lib/errors/diff/DiffFormatter.d.ts +1 -1
- package/lib/errors/diff/NoOpDiffFormatter.d.ts +1 -1
- package/lib/errors/diff/NoOpDiffFormatter.js +1 -1
- package/lib/errors/model/AssertionError.d.ts +1 -1
- package/lib/errors/model/AssertionError.js +1 -1
- package/lib/errors/model/ConfigurationError.d.ts +1 -1
- package/lib/errors/model/ConfigurationError.js +1 -1
- package/lib/errors/model/ImplementationPendingError.d.ts +3 -3
- package/lib/errors/model/ImplementationPendingError.js +3 -3
- package/lib/errors/model/ListItemNotFoundError.d.ts +2 -2
- package/lib/errors/model/ListItemNotFoundError.js +2 -2
- package/lib/errors/model/LogicError.d.ts +2 -2
- package/lib/errors/model/LogicError.js +2 -2
- package/lib/errors/model/OperationInterruptedError.d.ts +2 -2
- package/lib/errors/model/OperationInterruptedError.js +2 -2
- package/lib/errors/model/RuntimeError.d.ts +2 -2
- package/lib/errors/model/RuntimeError.js +2 -2
- package/lib/errors/model/TestCompromisedError.d.ts +1 -1
- package/lib/errors/model/TestCompromisedError.js +1 -1
- package/lib/errors/model/TimeoutExpiredError.d.ts +2 -2
- package/lib/errors/model/TimeoutExpiredError.js +2 -2
- package/lib/errors/model/UnknownError.d.ts +1 -1
- package/lib/errors/model/UnknownError.js +1 -1
- package/lib/events/ActivityFinished.d.ts +1 -1
- package/lib/events/ActivityFinished.js +1 -1
- package/lib/events/ActivityStarts.d.ts +1 -1
- package/lib/events/ActivityStarts.js +1 -1
- package/lib/events/BusinessRuleDetected.d.ts +1 -1
- package/lib/events/BusinessRuleDetected.js +1 -1
- package/lib/events/SceneFinishes.d.ts +2 -1
- package/lib/events/SceneFinishes.d.ts.map +1 -1
- package/lib/events/SceneFinishes.js +2 -1
- package/lib/events/SceneFinishes.js.map +1 -1
- package/lib/instance.d.ts +30 -30
- package/lib/instance.js +30 -30
- package/lib/io/format.d.ts +15 -6
- package/lib/io/format.d.ts.map +1 -1
- package/lib/io/format.js +15 -6
- package/lib/io/format.js.map +1 -1
- package/lib/io/loader/ModuleLoader.d.ts +1 -1
- package/lib/io/loader/ModuleLoader.js +1 -1
- package/lib/io/reflection/ValueInspector.d.ts +1 -1
- package/lib/io/reflection/ValueInspector.js +2 -2
- package/lib/io/reflection/ValueInspector.js.map +1 -1
- package/lib/io/stringified.d.ts +1 -1
- package/lib/io/stringified.js +1 -1
- package/lib/io/trimmed.d.ts +1 -1
- package/lib/io/trimmed.js +1 -1
- package/lib/model/artifacts/HTTPRequestResponse.d.ts +2 -2
- package/lib/model/artifacts/HTTPRequestResponse.js +1 -1
- package/lib/screenplay/Activity.d.ts +10 -10
- package/lib/screenplay/Activity.js +5 -5
- package/lib/screenplay/Actor.d.ts +28 -28
- package/lib/screenplay/Actor.js +28 -28
- package/lib/screenplay/Answerable.d.ts +1 -1
- package/lib/screenplay/Answered.d.ts +2 -2
- package/lib/screenplay/Interaction.d.ts +17 -17
- package/lib/screenplay/Interaction.js +12 -12
- package/lib/screenplay/Optional.d.ts +1 -1
- package/lib/screenplay/Question.d.ts +48 -45
- package/lib/screenplay/Question.d.ts.map +1 -1
- package/lib/screenplay/Question.js +39 -36
- package/lib/screenplay/Question.js.map +1 -1
- package/lib/screenplay/RecursivelyAnswered.d.ts +2 -2
- package/lib/screenplay/Task.d.ts +19 -19
- package/lib/screenplay/Task.js +15 -15
- package/lib/screenplay/WithAnswerableProperties.d.ts +2 -2
- package/lib/screenplay/abilities/Ability.d.ts +48 -46
- package/lib/screenplay/abilities/Ability.d.ts.map +1 -1
- package/lib/screenplay/abilities/Ability.js +48 -46
- package/lib/screenplay/abilities/Ability.js.map +1 -1
- package/lib/screenplay/abilities/AbilityType.d.ts +5 -5
- package/lib/screenplay/abilities/AnswerQuestions.d.ts +3 -3
- package/lib/screenplay/abilities/AnswerQuestions.js +3 -3
- package/lib/screenplay/abilities/CanHaveAbilities.d.ts +4 -4
- package/lib/screenplay/abilities/Discardable.d.ts +8 -8
- package/lib/screenplay/abilities/Initialisable.d.ts +11 -11
- package/lib/screenplay/abilities/PerformActivities.d.ts +3 -3
- package/lib/screenplay/abilities/PerformActivities.js +3 -3
- package/lib/screenplay/abilities/UsesAbilities.d.ts +6 -6
- package/lib/screenplay/activities/PerformsActivities.d.ts +7 -7
- package/lib/screenplay/artifacts/CollectsArtifacts.d.ts +4 -5
- package/lib/screenplay/artifacts/CollectsArtifacts.d.ts.map +1 -1
- package/lib/screenplay/debugging/Debug.d.ts +7 -6
- package/lib/screenplay/debugging/Debug.d.ts.map +1 -1
- package/lib/screenplay/debugging/Debug.js +7 -6
- package/lib/screenplay/debugging/Debug.js.map +1 -1
- package/lib/screenplay/debugging/DebuggingResult.d.ts +1 -1
- package/lib/screenplay/debugging/Log.d.ts +7 -5
- package/lib/screenplay/debugging/Log.d.ts.map +1 -1
- package/lib/screenplay/debugging/Log.js +7 -5
- package/lib/screenplay/debugging/Log.js.map +1 -1
- package/lib/screenplay/notes/Notepad.d.ts +13 -13
- package/lib/screenplay/notes/Notepad.js +13 -13
- package/lib/screenplay/notes/NotepadAdapter.d.ts +16 -16
- package/lib/screenplay/notes/NotepadAdapter.js +16 -16
- package/lib/screenplay/notes/TakeNotes.d.ts +9 -9
- package/lib/screenplay/notes/TakeNotes.js +9 -9
- package/lib/screenplay/notes/notes.d.ts +6 -6
- package/lib/screenplay/notes/notes.js +6 -6
- package/lib/screenplay/questions/AnswersQuestions.d.ts +4 -4
- package/lib/screenplay/questions/ChainableMetaQuestion.d.ts +6 -6
- package/lib/screenplay/questions/Check.d.ts +2 -2
- package/lib/screenplay/questions/Check.js +2 -2
- package/lib/screenplay/questions/DescriptionFormattingOptions.d.ts +2 -2
- package/lib/screenplay/questions/Expectation.d.ts +17 -14
- package/lib/screenplay/questions/Expectation.d.ts.map +1 -1
- package/lib/screenplay/questions/Expectation.js +17 -14
- package/lib/screenplay/questions/Expectation.js.map +1 -1
- package/lib/screenplay/questions/List.d.ts +5 -5
- package/lib/screenplay/questions/List.js +5 -5
- package/lib/screenplay/questions/Masked.d.ts +4 -2
- package/lib/screenplay/questions/Masked.d.ts.map +1 -1
- package/lib/screenplay/questions/Masked.js +4 -2
- package/lib/screenplay/questions/Masked.js.map +1 -1
- package/lib/screenplay/questions/MetaQuestion.d.ts +9 -9
- package/lib/screenplay/questions/Unanswered.d.ts +2 -2
- package/lib/screenplay/questions/Unanswered.js +2 -2
- package/lib/screenplay/questions/expectations/ExpectationDetails.d.ts +1 -1
- package/lib/screenplay/questions/expectations/ExpectationDetails.js +1 -1
- package/lib/screenplay/questions/expectations/ExpectationMet.d.ts +1 -1
- package/lib/screenplay/questions/expectations/ExpectationMet.js +1 -1
- package/lib/screenplay/questions/expectations/ExpectationNotMet.d.ts +1 -1
- package/lib/screenplay/questions/expectations/ExpectationNotMet.js +1 -1
- package/lib/screenplay/questions/expectations/ExpectationOutcome.d.ts +2 -2
- package/lib/screenplay/questions/expectations/ExpectationOutcome.js +2 -2
- package/lib/screenplay/questions/tag-functions.d.ts +23 -21
- package/lib/screenplay/questions/tag-functions.d.ts.map +1 -1
- package/lib/screenplay/questions/tag-functions.js +5 -5
- package/lib/screenplay/questions/tag-functions.js.map +1 -1
- package/lib/screenplay/time/TellsTime.d.ts +4 -4
- package/lib/screenplay/time/abilities/ScheduleWork.d.ts +2 -2
- package/lib/screenplay/time/abilities/ScheduleWork.js +2 -2
- package/lib/screenplay/time/activities/Wait.d.ts +29 -27
- package/lib/screenplay/time/activities/Wait.d.ts.map +1 -1
- package/lib/screenplay/time/activities/Wait.js +29 -27
- package/lib/screenplay/time/activities/Wait.js.map +1 -1
- package/lib/screenplay/time/models/Clock.d.ts +4 -4
- package/lib/screenplay/time/models/Clock.js +4 -4
- package/lib/screenplay/time/models/Duration.d.ts +1 -1
- package/lib/screenplay/time/models/Duration.js +1 -1
- package/lib/screenplay/time/models/Timestamp.d.ts +2 -2
- package/lib/screenplay/time/models/Timestamp.js +2 -2
- package/lib/stage/Cast.d.ts +21 -21
- package/lib/stage/Cast.js +19 -19
- package/lib/stage/Extras.d.ts +1 -1
- package/lib/stage/Extras.js +1 -1
- package/lib/stage/ListensToDomainEvents.d.ts +7 -7
- package/lib/stage/Stage.d.ts +30 -30
- package/lib/stage/Stage.d.ts.map +1 -1
- package/lib/stage/Stage.js +30 -30
- package/lib/stage/Stage.js.map +1 -1
- package/lib/stage/StageCrewMember.d.ts +11 -11
- package/lib/stage/StageCrewMemberBuilder.d.ts +7 -7
- package/lib/stage/StageCrewMemberBuilderDependencies.d.ts +2 -2
- package/lib/stage/crew/artifact-archiver/ArtifactArchiver.d.ts +4 -4
- package/lib/stage/crew/artifact-archiver/ArtifactArchiver.js +4 -4
- package/lib/stage/crew/stream-reporter/StreamReporter.d.ts +7 -7
- package/lib/stage/crew/stream-reporter/StreamReporter.js +7 -7
- package/package.json +4 -4
- package/src/Serenity.ts +22 -22
- package/src/adapter/OutputStream.ts +5 -4
- package/src/adapter/TestRunnerAdapter.ts +2 -2
- package/src/config/ClassDescription.ts +1 -1
- package/src/config/SerenityConfig.ts +22 -20
- package/src/errors/ErrorFactory.ts +2 -1
- package/src/errors/ErrorSerialiser.ts +3 -3
- package/src/errors/RaiseErrors.ts +9 -9
- package/src/errors/diff/AnsiDiffFormatter.ts +1 -1
- package/src/errors/diff/DiffFormatter.ts +1 -1
- package/src/errors/diff/NoOpDiffFormatter.ts +1 -1
- package/src/errors/model/AssertionError.ts +1 -1
- package/src/errors/model/ConfigurationError.ts +1 -1
- package/src/errors/model/ImplementationPendingError.ts +3 -3
- package/src/errors/model/ListItemNotFoundError.ts +2 -2
- package/src/errors/model/LogicError.ts +2 -2
- package/src/errors/model/OperationInterruptedError.ts +2 -2
- package/src/errors/model/RuntimeError.ts +2 -2
- package/src/errors/model/TestCompromisedError.ts +1 -1
- package/src/errors/model/TimeoutExpiredError.ts +2 -2
- package/src/errors/model/UnknownError.ts +1 -1
- package/src/events/ActivityFinished.ts +1 -1
- package/src/events/ActivityStarts.ts +1 -1
- package/src/events/BusinessRuleDetected.ts +1 -1
- package/src/events/SceneFinishes.ts +2 -1
- package/src/instance.ts +30 -30
- package/src/io/format.ts +15 -6
- package/src/io/loader/ModuleLoader.ts +1 -1
- package/src/io/reflection/ValueInspector.ts +3 -3
- package/src/io/stringified.ts +1 -1
- package/src/io/trimmed.ts +1 -1
- package/src/model/artifacts/HTTPRequestResponse.ts +2 -2
- package/src/screenplay/Activity.ts +10 -10
- package/src/screenplay/Actor.ts +28 -28
- package/src/screenplay/Answerable.ts +1 -1
- package/src/screenplay/Answered.ts +2 -2
- package/src/screenplay/Interaction.ts +17 -17
- package/src/screenplay/Optional.ts +1 -1
- package/src/screenplay/Question.ts +48 -45
- package/src/screenplay/RecursivelyAnswered.ts +2 -2
- package/src/screenplay/Task.ts +19 -19
- package/src/screenplay/WithAnswerableProperties.ts +2 -2
- package/src/screenplay/abilities/Ability.ts +48 -46
- package/src/screenplay/abilities/AbilityType.ts +5 -5
- package/src/screenplay/abilities/AnswerQuestions.ts +3 -3
- package/src/screenplay/abilities/CanHaveAbilities.ts +4 -4
- package/src/screenplay/abilities/Discardable.ts +8 -8
- package/src/screenplay/abilities/Initialisable.ts +11 -11
- package/src/screenplay/abilities/PerformActivities.ts +3 -3
- package/src/screenplay/abilities/UsesAbilities.ts +6 -6
- package/src/screenplay/activities/PerformsActivities.ts +7 -7
- package/src/screenplay/artifacts/CollectsArtifacts.ts +4 -5
- package/src/screenplay/debugging/Debug.ts +7 -6
- package/src/screenplay/debugging/DebuggingResult.ts +1 -1
- package/src/screenplay/debugging/Log.ts +7 -5
- package/src/screenplay/notes/Notepad.ts +13 -13
- package/src/screenplay/notes/NotepadAdapter.ts +16 -16
- package/src/screenplay/notes/TakeNotes.ts +9 -9
- package/src/screenplay/notes/notes.ts +6 -6
- package/src/screenplay/questions/AnswersQuestions.ts +4 -4
- package/src/screenplay/questions/ChainableMetaQuestion.ts +6 -6
- package/src/screenplay/questions/Check.ts +2 -2
- package/src/screenplay/questions/DescriptionFormattingOptions.ts +2 -2
- package/src/screenplay/questions/Expectation.ts +17 -14
- package/src/screenplay/questions/List.ts +5 -5
- package/src/screenplay/questions/Masked.ts +4 -2
- package/src/screenplay/questions/MetaQuestion.ts +9 -9
- package/src/screenplay/questions/Unanswered.ts +2 -2
- package/src/screenplay/questions/expectations/ExpectationDetails.ts +1 -1
- package/src/screenplay/questions/expectations/ExpectationMet.ts +1 -1
- package/src/screenplay/questions/expectations/ExpectationNotMet.ts +1 -1
- package/src/screenplay/questions/expectations/ExpectationOutcome.ts +2 -2
- package/src/screenplay/questions/tag-functions.ts +23 -21
- package/src/screenplay/time/TellsTime.ts +4 -4
- package/src/screenplay/time/abilities/ScheduleWork.ts +2 -2
- package/src/screenplay/time/activities/Wait.ts +29 -27
- package/src/screenplay/time/models/Clock.ts +4 -4
- package/src/screenplay/time/models/Duration.ts +1 -1
- package/src/screenplay/time/models/Timestamp.ts +2 -2
- package/src/stage/Cast.ts +21 -21
- package/src/stage/Extras.ts +1 -1
- package/src/stage/ListensToDomainEvents.ts +7 -7
- package/src/stage/Stage.ts +30 -30
- package/src/stage/StageCrewMember.ts +11 -11
- package/src/stage/StageCrewMemberBuilder.ts +7 -7
- package/src/stage/StageCrewMemberBuilderDependencies.ts +2 -2
- package/src/stage/crew/artifact-archiver/ArtifactArchiver.ts +4 -4
- package/src/stage/crew/stream-reporter/StreamReporter.ts +7 -7
package/src/stage/Stage.ts
CHANGED
|
@@ -22,17 +22,18 @@ import type { Cast } from './Cast';
|
|
|
22
22
|
import type { StageManager } from './StageManager';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
-
* Stage is the place where
|
|
25
|
+
* Stage is the place where [actors](https://serenity-js.org/api/core/class/Actor/) perform.
|
|
26
26
|
*
|
|
27
|
-
* In more technical terms, the Stage is the main event bus propagating
|
|
28
|
-
* to
|
|
27
|
+
* In more technical terms, the Stage is the main event bus propagating [Serenity/JS domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
28
|
+
* to [actors](https://serenity-js.org/api/core/class/Actor/) it instantiates and [stage crew members](https://serenity-js.org/api/core/interface/StageCrewMember/) that have been registered with it.
|
|
29
29
|
*
|
|
30
30
|
* It is unlikely that you'll ever need to interact with the `Stage` directly in your tests. Instead, you'll use functions like
|
|
31
|
-
*
|
|
31
|
+
* [`actorCalled`](https://serenity-js.org/api/core/function/actorCalled/) and [`actorInTheSpotlight`](https://serenity-js.org/api/core/function/actorInTheSpotlight/).
|
|
32
32
|
*
|
|
33
33
|
* ## Learn more
|
|
34
|
-
* -
|
|
35
|
-
* -
|
|
34
|
+
* - [`configure`](https://serenity-js.org/api/core/function/configure/)
|
|
35
|
+
* - [`engage`](https://serenity-js.org/api/core/function/engage/)
|
|
36
|
+
* - [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/)
|
|
36
37
|
*
|
|
37
38
|
* @group Stage
|
|
38
39
|
*/
|
|
@@ -55,7 +56,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
55
56
|
private actorsOnStage: Map<string, Actor> = this.actorsOnBackstage;
|
|
56
57
|
|
|
57
58
|
/**
|
|
58
|
-
* The most recent actor referenced via the
|
|
59
|
+
* The most recent actor referenced via the [`Actor`](https://serenity-js.org/api/core/class/Actor/) method
|
|
59
60
|
*/
|
|
60
61
|
private actorInTheSpotlight: Actor = undefined;
|
|
61
62
|
|
|
@@ -85,7 +86,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
/**
|
|
88
|
-
* An alias for
|
|
89
|
+
* An alias for [`Stage.actor`](https://serenity-js.org/api/core/class/Stage/#actor)
|
|
89
90
|
*
|
|
90
91
|
* @param name
|
|
91
92
|
*/
|
|
@@ -94,7 +95,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
94
95
|
}
|
|
95
96
|
|
|
96
97
|
/**
|
|
97
|
-
* Instantiates a new
|
|
98
|
+
* Instantiates a new [`Actor`](https://serenity-js.org/api/core/class/Actor/) or fetches an existing one
|
|
98
99
|
* identified by their name if they've already been instantiated.
|
|
99
100
|
*
|
|
100
101
|
* @param name
|
|
@@ -131,11 +132,11 @@ export class Stage implements EmitsDomainEvents {
|
|
|
131
132
|
}
|
|
132
133
|
|
|
133
134
|
/**
|
|
134
|
-
* Returns the last
|
|
135
|
+
* Returns the last [`Actor`](https://serenity-js.org/api/core/class/Actor/) instantiated via [`Stage.actor`](https://serenity-js.org/api/core/class/Stage/#actor).
|
|
135
136
|
* Useful when you don't can't or choose not to reference the actor by their name.
|
|
136
137
|
*
|
|
137
|
-
* @throws
|
|
138
|
-
* If no
|
|
138
|
+
* @throws [`LogicError`](https://serenity-js.org/api/core/class/LogicError/)
|
|
139
|
+
* If no [`Actor`](https://serenity-js.org/api/core/class/Actor/) has been activated yet
|
|
139
140
|
*/
|
|
140
141
|
theActorInTheSpotlight(): Actor {
|
|
141
142
|
if (! this.actorInTheSpotlight) {
|
|
@@ -146,15 +147,15 @@ export class Stage implements EmitsDomainEvents {
|
|
|
146
147
|
}
|
|
147
148
|
|
|
148
149
|
/**
|
|
149
|
-
* Returns `true` if there is an
|
|
150
|
+
* Returns `true` if there is an [`Actor`](https://serenity-js.org/api/core/class/Actor/) in the spotlight, `false` otherwise.
|
|
150
151
|
*/
|
|
151
152
|
theShowHasStarted(): boolean {
|
|
152
153
|
return !! this.actorInTheSpotlight;
|
|
153
154
|
}
|
|
154
155
|
|
|
155
156
|
/**
|
|
156
|
-
* Configures the Stage to prepare
|
|
157
|
-
* instantiated via
|
|
157
|
+
* Configures the Stage to prepare [actors](https://serenity-js.org/api/core/class/Actor/)
|
|
158
|
+
* instantiated via [`Stage.actor`](https://serenity-js.org/api/core/class/Stage/#actor) using the provided [cast](https://serenity-js.org/api/core/class/Cast/).
|
|
158
159
|
*
|
|
159
160
|
* @param actors
|
|
160
161
|
*/
|
|
@@ -165,8 +166,8 @@ export class Stage implements EmitsDomainEvents {
|
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
/**
|
|
168
|
-
* Assigns listeners to be notified of
|
|
169
|
-
* emitted via
|
|
169
|
+
* Assigns listeners to be notified of [Serenity/JS domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
170
|
+
* emitted via [`Stage.announce`](https://serenity-js.org/api/core/class/Stage/#announce).s
|
|
170
171
|
*
|
|
171
172
|
* @param listeners
|
|
172
173
|
*/
|
|
@@ -206,22 +207,21 @@ export class Stage implements EmitsDomainEvents {
|
|
|
206
207
|
|
|
207
208
|
/**
|
|
208
209
|
* Returns current time. This method should be used whenever
|
|
209
|
-
*
|
|
210
|
+
* [`DomainEvent`](https://serenity-js.org/api/core-events/class/DomainEvent/) objects are instantiated by you programmatically.
|
|
210
211
|
*/
|
|
211
212
|
currentTime(): Timestamp {
|
|
212
213
|
return this.manager.currentTime();
|
|
213
214
|
}
|
|
214
215
|
|
|
215
216
|
/**
|
|
216
|
-
* Generates and remembers a
|
|
217
|
+
* Generates and remembers a `CorrelationId`
|
|
217
218
|
* for the current scene.
|
|
218
219
|
*
|
|
219
220
|
* This method should be used in custom test runner adapters
|
|
220
|
-
* when instantiating a
|
|
221
|
+
* when instantiating a [SceneStarts](https://serenity-js.org/api/core-events/class/SceneStarts/) event.
|
|
221
222
|
*
|
|
222
223
|
* #### Learn more
|
|
223
|
-
* -
|
|
224
|
-
* - {@apilink CorrelationId}
|
|
224
|
+
* - [`Stage.currentSceneId`](https://serenity-js.org/api/core/class/Stage/#currentSceneId)
|
|
225
225
|
*/
|
|
226
226
|
assignNewSceneId(): CorrelationId {
|
|
227
227
|
// todo: inject an id factory to make it easier to test
|
|
@@ -231,24 +231,24 @@ export class Stage implements EmitsDomainEvents {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
/**
|
|
234
|
-
* Returns the
|
|
234
|
+
* Returns the `CorrelationId` for the current scene.
|
|
235
235
|
*
|
|
236
236
|
* #### Learn more
|
|
237
|
-
* -
|
|
237
|
+
* - [`Stage.assignNewSceneId`](https://serenity-js.org/api/core/class/Stage/#assignNewSceneId)
|
|
238
238
|
*/
|
|
239
239
|
currentSceneId(): CorrelationId {
|
|
240
240
|
return this.currentScene;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
/**
|
|
244
|
-
* Generates and remembers a
|
|
245
|
-
* for the current
|
|
244
|
+
* Generates and remembers a `CorrelationId`
|
|
245
|
+
* for the current [`Activity`](https://serenity-js.org/api/core/class/Activity/).
|
|
246
246
|
*
|
|
247
247
|
* This method should be used in custom test runner adapters
|
|
248
|
-
* when instantiating the
|
|
248
|
+
* when instantiating the [ActivityStarts](https://serenity-js.org/api/core-events/class/ActivityStarts/) event.
|
|
249
249
|
*
|
|
250
250
|
* #### Learn more
|
|
251
|
-
* -
|
|
251
|
+
* - [`Stage.currentActivityId`](https://serenity-js.org/api/core/class/Stage/#currentActivityId)
|
|
252
252
|
*/
|
|
253
253
|
assignNewActivityId(activityDetails: ActivityDetails): CorrelationId {
|
|
254
254
|
this.currentActivity = {
|
|
@@ -260,10 +260,10 @@ export class Stage implements EmitsDomainEvents {
|
|
|
260
260
|
}
|
|
261
261
|
|
|
262
262
|
/**
|
|
263
|
-
* Returns the
|
|
263
|
+
* Returns the `CorrelationId` for the current [`Activity`](https://serenity-js.org/api/core/class/Activity/).
|
|
264
264
|
*
|
|
265
265
|
* #### Learn more
|
|
266
|
-
* -
|
|
266
|
+
* - [`Stage.assignNewSceneId`](https://serenity-js.org/api/core/class/Stage/#assignNewSceneId)
|
|
267
267
|
*/
|
|
268
268
|
currentActivityId(): CorrelationId {
|
|
269
269
|
if (! this.currentActivity) {
|
|
@@ -2,12 +2,12 @@ import type { ListensToDomainEvents } from './ListensToDomainEvents';
|
|
|
2
2
|
import type { Stage } from './Stage';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* You can think of the
|
|
6
|
-
* published by the
|
|
7
|
-
* test runner adapters notifying the framework about test scenario-specific events like
|
|
5
|
+
* You can think of the [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/) as an in-memory microservice that reacts to [Serenity/JS domain events](https://serenity-js.org/api/core-events/class/DomainEvent/),
|
|
6
|
+
* published by the [`StageManager`](https://serenity-js.org/api/core/class/StageManager/), and originally emitted by [actors](https://serenity-js.org/api/core/class/Actor/) performing activities and Serenity/JS
|
|
7
|
+
* test runner adapters notifying the framework about test scenario-specific events like [SceneStarts](https://serenity-js.org/api/core-events/class/SceneStarts/) or [SceneFinishes](https://serenity-js.org/api/core-events/class/SceneFinishes/).
|
|
8
8
|
*
|
|
9
|
-
* Every
|
|
10
|
-
* and therefore
|
|
9
|
+
* Every [stage crew member](https://serenity-js.org/api/core/interface/StageCrewMember/) receives a reference to the [stage](https://serenity-js.org/api/core/class/Stage/),
|
|
10
|
+
* and therefore the [stage manager](https://serenity-js.org/api/core/class/StageManager/), which enables them to emit [domain events](https://serenity-js.org/api/core-events/class/DomainEvent/) back.
|
|
11
11
|
*
|
|
12
12
|
* This interface is useful when you're interested in implementing custom Serenity/JS reporters or supporting services.
|
|
13
13
|
*
|
|
@@ -62,18 +62,18 @@ import type { Stage } from './Stage';
|
|
|
62
62
|
* ```
|
|
63
63
|
*
|
|
64
64
|
* ## Learn more
|
|
65
|
-
* -
|
|
66
|
-
* -
|
|
67
|
-
* -
|
|
68
|
-
* -
|
|
69
|
-
* -
|
|
65
|
+
* - [`SerenityConfig.crew`](https://serenity-js.org/api/core/class/SerenityConfig/#crew)
|
|
66
|
+
* - [`configure`](https://serenity-js.org/api/core/function/configure/)
|
|
67
|
+
* - [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMemberBuilder/)
|
|
68
|
+
* - [`ListensToDomainEvents`](https://serenity-js.org/api/core/interface/ListensToDomainEvents/)
|
|
69
|
+
* - [`DomainEvent`](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
70
70
|
*
|
|
71
71
|
* @group Stage
|
|
72
72
|
*/
|
|
73
73
|
export interface StageCrewMember extends ListensToDomainEvents {
|
|
74
74
|
|
|
75
75
|
/**
|
|
76
|
-
* Assigns a
|
|
76
|
+
* Assigns a [`Stage`](https://serenity-js.org/api/core/class/Stage/) to this [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/)
|
|
77
77
|
*/
|
|
78
78
|
assignedTo(stage: Stage): StageCrewMember;
|
|
79
79
|
}
|
|
@@ -2,23 +2,23 @@ import type { ListensToDomainEvents } from './ListensToDomainEvents';
|
|
|
2
2
|
import type { StageCrewMemberBuilderDependencies } from './StageCrewMemberBuilderDependencies';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Use a
|
|
5
|
+
* Use a [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMemberBuilder/) to configure complex [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/) objects.
|
|
6
6
|
*
|
|
7
7
|
* Useful when you're interested in implementing custom reporters with multiple configuration options.
|
|
8
|
-
* See
|
|
8
|
+
* See [`ConsoleReporter`](https://serenity-js.org/api/console-reporter/class/ConsoleReporter/) for an example.
|
|
9
9
|
*
|
|
10
10
|
* ## Learn more
|
|
11
|
-
* -
|
|
12
|
-
* -
|
|
13
|
-
* -
|
|
11
|
+
* - [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/)
|
|
12
|
+
* - [`StageCrewMemberBuilderDependencies`](https://serenity-js.org/api/core/interface/StageCrewMemberBuilderDependencies/)
|
|
13
|
+
* - [`SerenityConfig.crew`](https://serenity-js.org/api/core/class/SerenityConfig/#crew)
|
|
14
14
|
*
|
|
15
15
|
* @group Stage
|
|
16
16
|
*/
|
|
17
17
|
export interface StageCrewMemberBuilder<T extends ListensToDomainEvents = ListensToDomainEvents> {
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* Instantiates a
|
|
21
|
-
* such as
|
|
20
|
+
* Instantiates a [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/), giving it access to shared dependencies
|
|
21
|
+
* such as [`Stage`](https://serenity-js.org/api/core/class/Stage/) or [`OutputStream`](https://serenity-js.org/api/core-adapter/interface/OutputStream/)
|
|
22
22
|
*/
|
|
23
23
|
build(dependencies: StageCrewMemberBuilderDependencies): T;
|
|
24
24
|
}
|
|
@@ -3,10 +3,10 @@ import type { FileSystem } from '../io';
|
|
|
3
3
|
import type { Stage } from './Stage';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Dependencies injected by
|
|
6
|
+
* Dependencies injected by [`Serenity.configure`](https://serenity-js.org/api/core/class/Serenity/#configure) into [`StageCrewMemberBuilder.build`](https://serenity-js.org/api/core/interface/StageCrewMemberBuilder/#build)
|
|
7
7
|
*
|
|
8
8
|
* ## Learn more
|
|
9
|
-
* -
|
|
9
|
+
* - [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMemberBuilder/)
|
|
10
10
|
*
|
|
11
11
|
* @group Stage
|
|
12
12
|
*/
|
|
@@ -20,7 +20,7 @@ import type { StageCrewMember } from '../../StageCrewMember';
|
|
|
20
20
|
import { Hash } from './Hash';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Stores any
|
|
23
|
+
* Stores any artifacts emitted via [`ArtifactGenerated`](https://serenity-js.org/api/core-events/class/ArtifactGenerated/) events on the file system.
|
|
24
24
|
*
|
|
25
25
|
* ## Registering Artifact Archiver programmatically
|
|
26
26
|
*
|
|
@@ -130,7 +130,7 @@ export class ArtifactArchiver implements StageCrewMember {
|
|
|
130
130
|
/**
|
|
131
131
|
* @param {FileSystem} fileSystem
|
|
132
132
|
* @param {Stage} [stage]
|
|
133
|
-
* The stage this
|
|
133
|
+
* The stage this [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/) should be assigned to
|
|
134
134
|
*/
|
|
135
135
|
constructor(
|
|
136
136
|
private readonly fileSystem: FileSystem,
|
|
@@ -144,9 +144,9 @@ export class ArtifactArchiver implements StageCrewMember {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
|
-
* Handles
|
|
147
|
+
* Handles [`DomainEvent`](https://serenity-js.org/api/core-events/class/DomainEvent/) objects emitted by the [`StageManager`](https://serenity-js.org/api/core/class/StageManager/).
|
|
148
148
|
*
|
|
149
|
-
* @see
|
|
149
|
+
* @see [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/)
|
|
150
150
|
*
|
|
151
151
|
* @listens {ArtifactGenerated}
|
|
152
152
|
* @emits {ArtifactArchived}
|
|
@@ -7,7 +7,7 @@ import type { Stage } from '../../Stage';
|
|
|
7
7
|
import type { StageCrewMember } from '../../StageCrewMember';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Serialises all the
|
|
10
|
+
* Serialises all the [`DomainEvent`](https://serenity-js.org/api/core-events/class/DomainEvent/) objects it receives and streams
|
|
11
11
|
* them as [ndjson](http://ndjson.org/) to the output stream or file.
|
|
12
12
|
*
|
|
13
13
|
* Useful when debugging issues related to custom Serenity/JS test runner adapters.
|
|
@@ -101,7 +101,7 @@ import type { StageCrewMember } from '../../StageCrewMember';
|
|
|
101
101
|
export class StreamReporter implements StageCrewMember {
|
|
102
102
|
|
|
103
103
|
/**
|
|
104
|
-
* Instantiates a `StreamReporter` outputting a stream of
|
|
104
|
+
* Instantiates a `StreamReporter` outputting a stream of [Serenity/JS domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
105
105
|
* to an `outputFile` at the given location.
|
|
106
106
|
*
|
|
107
107
|
* @param config
|
|
@@ -120,7 +120,7 @@ export class StreamReporter implements StageCrewMember {
|
|
|
120
120
|
* A Writable stream that should receive the output
|
|
121
121
|
*
|
|
122
122
|
* @param {Stage} [stage]
|
|
123
|
-
* The stage this
|
|
123
|
+
* The stage this [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/) should be assigned to
|
|
124
124
|
*/
|
|
125
125
|
constructor(
|
|
126
126
|
private readonly output: Writable = process.stdout,
|
|
@@ -129,20 +129,20 @@ export class StreamReporter implements StageCrewMember {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
/**
|
|
132
|
-
* Creates a new instance of this
|
|
132
|
+
* Creates a new instance of this [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/) and assigns it to a given [`Stage`](https://serenity-js.org/api/core/class/Stage/).
|
|
133
133
|
*
|
|
134
134
|
* @param stage
|
|
135
|
-
* An instance of a
|
|
135
|
+
* An instance of a [`Stage`](https://serenity-js.org/api/core/class/Stage/) this [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/) will be assigned to
|
|
136
136
|
*
|
|
137
137
|
* @returns {StageCrewMember}
|
|
138
|
-
* A new instance of this
|
|
138
|
+
* A new instance of this [`StageCrewMember`](https://serenity-js.org/api/core/interface/StageCrewMember/)
|
|
139
139
|
*/
|
|
140
140
|
assignedTo(stage: Stage): StageCrewMember {
|
|
141
141
|
return new StreamReporter(this.output, stage);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
|
-
* Handles
|
|
145
|
+
* Handles [`DomainEvent`](https://serenity-js.org/api/core-events/class/DomainEvent/) objects emitted by the [`StageManager`](https://serenity-js.org/api/core/class/StageManager/).
|
|
146
146
|
*
|
|
147
147
|
* @listens {DomainEvent}
|
|
148
148
|
*
|