@serenity-js/core 3.25.0 → 3.25.1
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 +11 -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 +29 -30
- package/lib/stage/Stage.d.ts.map +1 -1
- package/lib/stage/Stage.js +29 -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 +2 -2
- 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 +29 -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,17 @@ 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
36
|
*
|
|
37
37
|
* @group Stage
|
|
38
38
|
*/
|
|
@@ -55,7 +55,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
55
55
|
private actorsOnStage: Map<string, Actor> = this.actorsOnBackstage;
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
|
-
* The most recent actor referenced via the
|
|
58
|
+
* The most recent actor referenced via the [`Actor`](https://serenity-js.org/api/core/class/Actor/) method
|
|
59
59
|
*/
|
|
60
60
|
private actorInTheSpotlight: Actor = undefined;
|
|
61
61
|
|
|
@@ -85,7 +85,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
|
-
* An alias for
|
|
88
|
+
* An alias for [`Stage.actor`](https://serenity-js.org/api/core/class/Stage/#actor)
|
|
89
89
|
*
|
|
90
90
|
* @param name
|
|
91
91
|
*/
|
|
@@ -94,7 +94,7 @@ export class Stage implements EmitsDomainEvents {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
/**
|
|
97
|
-
* Instantiates a new
|
|
97
|
+
* Instantiates a new [`Actor`](https://serenity-js.org/api/core/class/Actor/) or fetches an existing one
|
|
98
98
|
* identified by their name if they've already been instantiated.
|
|
99
99
|
*
|
|
100
100
|
* @param name
|
|
@@ -131,11 +131,11 @@ export class Stage implements EmitsDomainEvents {
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
/**
|
|
134
|
-
* Returns the last
|
|
134
|
+
* 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
135
|
* Useful when you don't can't or choose not to reference the actor by their name.
|
|
136
136
|
*
|
|
137
|
-
* @throws
|
|
138
|
-
* If no
|
|
137
|
+
* @throws [`LogicError`](https://serenity-js.org/api/core/class/LogicError/)
|
|
138
|
+
* If no [`Actor`](https://serenity-js.org/api/core/class/Actor/) has been activated yet
|
|
139
139
|
*/
|
|
140
140
|
theActorInTheSpotlight(): Actor {
|
|
141
141
|
if (! this.actorInTheSpotlight) {
|
|
@@ -146,15 +146,15 @@ export class Stage implements EmitsDomainEvents {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
/**
|
|
149
|
-
* Returns `true` if there is an
|
|
149
|
+
* Returns `true` if there is an [`Actor`](https://serenity-js.org/api/core/class/Actor/) in the spotlight, `false` otherwise.
|
|
150
150
|
*/
|
|
151
151
|
theShowHasStarted(): boolean {
|
|
152
152
|
return !! this.actorInTheSpotlight;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
/**
|
|
156
|
-
* Configures the Stage to prepare
|
|
157
|
-
* instantiated via
|
|
156
|
+
* Configures the Stage to prepare [actors](https://serenity-js.org/api/core/class/Actor/)
|
|
157
|
+
* 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
158
|
*
|
|
159
159
|
* @param actors
|
|
160
160
|
*/
|
|
@@ -165,8 +165,8 @@ export class Stage implements EmitsDomainEvents {
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
/**
|
|
168
|
-
* Assigns listeners to be notified of
|
|
169
|
-
* emitted via
|
|
168
|
+
* Assigns listeners to be notified of [Serenity/JS domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
169
|
+
* emitted via [`Stage.announce`](https://serenity-js.org/api/core/class/Stage/#announce).s
|
|
170
170
|
*
|
|
171
171
|
* @param listeners
|
|
172
172
|
*/
|
|
@@ -206,22 +206,21 @@ export class Stage implements EmitsDomainEvents {
|
|
|
206
206
|
|
|
207
207
|
/**
|
|
208
208
|
* Returns current time. This method should be used whenever
|
|
209
|
-
*
|
|
209
|
+
* [`DomainEvent`](https://serenity-js.org/api/core-events/class/DomainEvent/) objects are instantiated by you programmatically.
|
|
210
210
|
*/
|
|
211
211
|
currentTime(): Timestamp {
|
|
212
212
|
return this.manager.currentTime();
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
/**
|
|
216
|
-
* Generates and remembers a
|
|
216
|
+
* Generates and remembers a `CorrelationId`
|
|
217
217
|
* for the current scene.
|
|
218
218
|
*
|
|
219
219
|
* This method should be used in custom test runner adapters
|
|
220
|
-
* when instantiating a
|
|
220
|
+
* when instantiating a [SceneStarts](https://serenity-js.org/api/core-events/class/SceneStarts/) event.
|
|
221
221
|
*
|
|
222
222
|
* #### Learn more
|
|
223
|
-
* -
|
|
224
|
-
* - {@apilink CorrelationId}
|
|
223
|
+
* - [`Stage.currentSceneId`](https://serenity-js.org/api/core/class/Stage/#currentSceneId)
|
|
225
224
|
*/
|
|
226
225
|
assignNewSceneId(): CorrelationId {
|
|
227
226
|
// todo: inject an id factory to make it easier to test
|
|
@@ -231,24 +230,24 @@ export class Stage implements EmitsDomainEvents {
|
|
|
231
230
|
}
|
|
232
231
|
|
|
233
232
|
/**
|
|
234
|
-
* Returns the
|
|
233
|
+
* Returns the `CorrelationId` for the current scene.
|
|
235
234
|
*
|
|
236
235
|
* #### Learn more
|
|
237
|
-
* -
|
|
236
|
+
* - [`Stage.assignNewSceneId`](https://serenity-js.org/api/core/class/Stage/#assignNewSceneId)
|
|
238
237
|
*/
|
|
239
238
|
currentSceneId(): CorrelationId {
|
|
240
239
|
return this.currentScene;
|
|
241
240
|
}
|
|
242
241
|
|
|
243
242
|
/**
|
|
244
|
-
* Generates and remembers a
|
|
245
|
-
* for the current
|
|
243
|
+
* Generates and remembers a `CorrelationId`
|
|
244
|
+
* for the current [`Activity`](https://serenity-js.org/api/core/class/Activity/).
|
|
246
245
|
*
|
|
247
246
|
* This method should be used in custom test runner adapters
|
|
248
|
-
* when instantiating the
|
|
247
|
+
* when instantiating the [ActivityStarts](https://serenity-js.org/api/core-events/class/ActivityStarts/) event.
|
|
249
248
|
*
|
|
250
249
|
* #### Learn more
|
|
251
|
-
* -
|
|
250
|
+
* - [`Stage.currentActivityId`](https://serenity-js.org/api/core/class/Stage/#currentActivityId)
|
|
252
251
|
*/
|
|
253
252
|
assignNewActivityId(activityDetails: ActivityDetails): CorrelationId {
|
|
254
253
|
this.currentActivity = {
|
|
@@ -260,10 +259,10 @@ export class Stage implements EmitsDomainEvents {
|
|
|
260
259
|
}
|
|
261
260
|
|
|
262
261
|
/**
|
|
263
|
-
* Returns the
|
|
262
|
+
* Returns the `CorrelationId` for the current [`Activity`](https://serenity-js.org/api/core/class/Activity/).
|
|
264
263
|
*
|
|
265
264
|
* #### Learn more
|
|
266
|
-
* -
|
|
265
|
+
* - [`Stage.assignNewSceneId`](https://serenity-js.org/api/core/class/Stage/#assignNewSceneId)
|
|
267
266
|
*/
|
|
268
267
|
currentActivityId(): CorrelationId {
|
|
269
268
|
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
|
*
|