@serenity-js/core 3.42.2 → 3.43.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.
Files changed (104) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/esm/Serenity.d.ts +3 -1
  3. package/esm/Serenity.d.ts.map +1 -1
  4. package/esm/Serenity.js +4 -3
  5. package/esm/Serenity.js.map +1 -1
  6. package/esm/config/SerenityConfig.d.ts +1 -1
  7. package/esm/config/SerenityConfig.js +1 -1
  8. package/esm/events/SceneFinishes.d.ts +1 -1
  9. package/esm/events/SceneFinishes.js +1 -1
  10. package/esm/events/actor/ActorStageExitCompleted.d.ts +1 -1
  11. package/esm/events/actor/ActorStageExitCompleted.js +1 -1
  12. package/esm/events/actor/ActorStageExitFailed.d.ts +1 -1
  13. package/esm/events/actor/ActorStageExitFailed.js +1 -1
  14. package/esm/events/actor/ActorStageExitStarts.d.ts +1 -1
  15. package/esm/events/actor/ActorStageExitStarts.js +1 -1
  16. package/esm/screenplay/Actor.d.ts +3 -3
  17. package/esm/screenplay/Actor.d.ts.map +1 -1
  18. package/esm/screenplay/Actor.js +7 -8
  19. package/esm/screenplay/Actor.js.map +1 -1
  20. package/esm/screenplay/abilities/Ability.d.ts +6 -6
  21. package/esm/screenplay/abilities/Ability.js +6 -6
  22. package/esm/screenplay/abilities/Discardable.d.ts +5 -4
  23. package/esm/screenplay/abilities/Discardable.d.ts.map +1 -1
  24. package/esm/screenplay/abilities/Discardable.js +25 -1
  25. package/esm/screenplay/abilities/Discardable.js.map +1 -1
  26. package/esm/screenplay/abilities/Initialisable.d.ts +9 -8
  27. package/esm/screenplay/abilities/Initialisable.d.ts.map +1 -1
  28. package/esm/screenplay/abilities/Initialisable.js +22 -1
  29. package/esm/screenplay/abilities/Initialisable.js.map +1 -1
  30. package/esm/stage/ActorLifecycleManager.d.ts +191 -0
  31. package/esm/stage/ActorLifecycleManager.d.ts.map +1 -0
  32. package/esm/stage/ActorLifecycleManager.js +255 -0
  33. package/esm/stage/ActorLifecycleManager.js.map +1 -0
  34. package/esm/stage/Stage.d.ts +22 -38
  35. package/esm/stage/Stage.d.ts.map +1 -1
  36. package/esm/stage/Stage.js +61 -117
  37. package/esm/stage/Stage.js.map +1 -1
  38. package/esm/stage/StageManager.d.ts +2 -4
  39. package/esm/stage/StageManager.d.ts.map +1 -1
  40. package/esm/stage/StageManager.js +0 -5
  41. package/esm/stage/StageManager.js.map +1 -1
  42. package/esm/stage/index.d.ts +1 -0
  43. package/esm/stage/index.d.ts.map +1 -1
  44. package/esm/stage/index.js +1 -0
  45. package/esm/stage/index.js.map +1 -1
  46. package/lib/Serenity.d.ts +3 -1
  47. package/lib/Serenity.d.ts.map +1 -1
  48. package/lib/Serenity.js +4 -3
  49. package/lib/Serenity.js.map +1 -1
  50. package/lib/config/SerenityConfig.d.ts +1 -1
  51. package/lib/config/SerenityConfig.js +1 -1
  52. package/lib/events/SceneFinishes.d.ts +1 -1
  53. package/lib/events/SceneFinishes.js +1 -1
  54. package/lib/events/actor/ActorStageExitCompleted.d.ts +1 -1
  55. package/lib/events/actor/ActorStageExitCompleted.js +1 -1
  56. package/lib/events/actor/ActorStageExitFailed.d.ts +1 -1
  57. package/lib/events/actor/ActorStageExitFailed.js +1 -1
  58. package/lib/events/actor/ActorStageExitStarts.d.ts +1 -1
  59. package/lib/events/actor/ActorStageExitStarts.js +1 -1
  60. package/lib/screenplay/Actor.d.ts +3 -3
  61. package/lib/screenplay/Actor.d.ts.map +1 -1
  62. package/lib/screenplay/Actor.js +6 -7
  63. package/lib/screenplay/Actor.js.map +1 -1
  64. package/lib/screenplay/abilities/Ability.d.ts +6 -6
  65. package/lib/screenplay/abilities/Ability.js +6 -6
  66. package/lib/screenplay/abilities/Discardable.d.ts +5 -4
  67. package/lib/screenplay/abilities/Discardable.d.ts.map +1 -1
  68. package/lib/screenplay/abilities/Discardable.js +27 -0
  69. package/lib/screenplay/abilities/Discardable.js.map +1 -1
  70. package/lib/screenplay/abilities/Initialisable.d.ts +9 -8
  71. package/lib/screenplay/abilities/Initialisable.d.ts.map +1 -1
  72. package/lib/screenplay/abilities/Initialisable.js +24 -0
  73. package/lib/screenplay/abilities/Initialisable.js.map +1 -1
  74. package/lib/stage/ActorLifecycleManager.d.ts +191 -0
  75. package/lib/stage/ActorLifecycleManager.d.ts.map +1 -0
  76. package/lib/stage/ActorLifecycleManager.js +259 -0
  77. package/lib/stage/ActorLifecycleManager.js.map +1 -0
  78. package/lib/stage/Stage.d.ts +22 -38
  79. package/lib/stage/Stage.d.ts.map +1 -1
  80. package/lib/stage/Stage.js +57 -113
  81. package/lib/stage/Stage.js.map +1 -1
  82. package/lib/stage/StageManager.d.ts +2 -4
  83. package/lib/stage/StageManager.d.ts.map +1 -1
  84. package/lib/stage/StageManager.js +0 -5
  85. package/lib/stage/StageManager.js.map +1 -1
  86. package/lib/stage/index.d.ts +1 -0
  87. package/lib/stage/index.d.ts.map +1 -1
  88. package/lib/stage/index.js +1 -0
  89. package/lib/stage/index.js.map +1 -1
  90. package/package.json +3 -3
  91. package/src/Serenity.ts +5 -2
  92. package/src/config/SerenityConfig.ts +1 -1
  93. package/src/events/SceneFinishes.ts +1 -1
  94. package/src/events/actor/ActorStageExitCompleted.ts +1 -1
  95. package/src/events/actor/ActorStageExitFailed.ts +1 -1
  96. package/src/events/actor/ActorStageExitStarts.ts +1 -1
  97. package/src/screenplay/Actor.ts +8 -11
  98. package/src/screenplay/abilities/Ability.ts +6 -6
  99. package/src/screenplay/abilities/Discardable.ts +9 -4
  100. package/src/screenplay/abilities/Initialisable.ts +15 -8
  101. package/src/stage/ActorLifecycleManager.ts +314 -0
  102. package/src/stage/Stage.ts +87 -165
  103. package/src/stage/StageManager.ts +3 -7
  104. package/src/stage/index.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,29 @@
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.43.1](https://github.com/serenity-js/serenity-js/compare/v3.43.0...v3.43.1) (2026-05-11)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **core:** updated API docs ([38b86f4](https://github.com/serenity-js/serenity-js/commit/38b86f4190b5d3c6a64fd0042c87ac187f847f89))
12
+
13
+
14
+
15
+
16
+
17
+ # [3.43.0](https://github.com/serenity-js/serenity-js/compare/v3.42.2...v3.43.0) (2026-05-11)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **core:** introduced Initialisable.isInitialisable and Discardable.isDiscardable ([a8c260d](https://github.com/serenity-js/serenity-js/commit/a8c260db850f8d50f8b289d123fe95c9aa859a5e))
23
+ * **deps:** update dependency semver to v7.8.0 ([c76c7ea](https://github.com/serenity-js/serenity-js/commit/c76c7eaef92c840859fa080494f702f8d32372bc))
24
+
25
+
26
+
27
+
28
+
6
29
  ## [3.42.2](https://github.com/serenity-js/serenity-js/compare/v3.42.1...v3.42.2) (2026-04-26)
7
30
 
8
31
  **Note:** Version bump only for package @serenity-js/core
package/esm/Serenity.d.ts CHANGED
@@ -6,6 +6,7 @@ import { type ActivityDetails, CorrelationId, type CorrelationIdFactory } from '
6
6
  import type { Actor, Timestamp } from './screenplay/index.js';
7
7
  import { Clock } from './screenplay/index.js';
8
8
  import type { Cast } from './stage/Cast.js';
9
+ import type { ActorLifecycleManager } from './stage/index.js';
9
10
  /**
10
11
  * @group Serenity
11
12
  */
@@ -22,8 +23,9 @@ export declare class Serenity implements EmitsDomainEvents {
22
23
  * @param clock
23
24
  * @param cwd
24
25
  * @param sceneIdFactory
26
+ * @param actorLifecycleManager - Optional custom ActorLifecycleManager instance
25
27
  */
26
- constructor(clock?: Clock, cwd?: string, sceneIdFactory?: CorrelationIdFactory);
28
+ constructor(clock?: Clock, cwd?: string, sceneIdFactory?: CorrelationIdFactory, actorLifecycleManager?: ActorLifecycleManager);
27
29
  /**
28
30
  * Configures Serenity/JS. Every call to this function
29
31
  * replaces the previous configuration provided,
@@ -1 +1 @@
1
- {"version":3,"file":"Serenity.d.ts","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAyE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAY,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAM5C;;GAEG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAC9C,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAoC;IACpE,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAA4B;IACpE,OAAO,CAAC,MAAM,CAAC,aAAa,CAA+B;IAE3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,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;gBAEC,KAAK,GAAE,KAAmB,EAC1B,GAAG,GAAE,MAAsB,EAC3B,cAAc,GAAE,oBAAoC;IAqBxD;;;;;;;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"}
1
+ {"version":3,"file":"Serenity.d.ts","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAyE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,KAAK,eAAe,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAY,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,qBAAqB,EAA2C,MAAM,kBAAkB,CAAC;AAIvG;;GAEG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAC9C,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAoC;IACpE,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAA4B;IACpE,OAAO,CAAC,MAAM,CAAC,aAAa,CAA+B;IAE3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,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;;;;;OAKG;gBAEC,KAAK,GAAE,KAAmB,EAC1B,GAAG,GAAE,MAAsB,EAC3B,cAAc,GAAE,oBAAoC,EACpD,qBAAqB,CAAC,EAAE,qBAAqB;IAsBjD;;;;;;;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/esm/Serenity.js CHANGED
@@ -4,8 +4,8 @@ import { ClassDescriptionParser, ClassLoader, d, FileSystem, has, ModuleLoader,
4
4
  import { CorrelationId } from './model/index.js';
5
5
  import { Clock, Duration } from './screenplay/index.js';
6
6
  import { Extras } from './stage/Extras.js';
7
+ import { StageManager } from './stage/index.js';
7
8
  import { Stage } from './stage/Stage.js';
8
- import { StageManager } from './stage/StageManager.js';
9
9
  /**
10
10
  * @group Serenity
11
11
  */
@@ -22,9 +22,10 @@ export class Serenity {
22
22
  * @param clock
23
23
  * @param cwd
24
24
  * @param sceneIdFactory
25
+ * @param actorLifecycleManager - Optional custom ActorLifecycleManager instance
25
26
  */
26
- constructor(clock = new Clock(), cwd = process.cwd(), sceneIdFactory = CorrelationId) {
27
- this.stage = new Stage(Serenity.defaultActors, new StageManager(Serenity.defaultCueTimeout, clock), new ErrorFactory(), clock, Serenity.defaultInteractionTimeout, sceneIdFactory);
27
+ constructor(clock = new Clock(), cwd = process.cwd(), sceneIdFactory = CorrelationId, actorLifecycleManager) {
28
+ this.stage = new Stage(Serenity.defaultActors, new StageManager(Serenity.defaultCueTimeout, clock), new ErrorFactory(), clock, Serenity.defaultInteractionTimeout, sceneIdFactory, actorLifecycleManager);
28
29
  this.classLoader = new ClassLoader(new ModuleLoader(cwd), new ClassDescriptionParser());
29
30
  this.workingDirectory = new Path(cwd);
30
31
  this.fileSystem = new FileSystem(this.workingDirectory);
@@ -1 +1 @@
1
- {"version":3,"file":"Serenity.js","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Serenity.js","sourceRoot":"","sources":["../src/Serenity.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export declare abstract class SerenityConfig {
35
35
  * The maximum amount of time between [SceneFinishes](https://serenity-js.org/api/core-events/class/SceneFinishes/) and [SceneFinished](https://serenity-js.org/api/core-events/class/SceneFinished/) events
36
36
  * that Serenity/JS should wait for any post-scenario
37
37
  * async operations to complete. Those include generating the screenshots,
38
- * saving reports to disk, [dismissing the actors](https://serenity-js.org/api/core/interface/Discardable/), and so on.
38
+ * saving reports to disk, [dismissing the actors](https://serenity-js.org/api/core/class/Discardable/), and so on.
39
39
  *
40
40
  * Defaults to 5 seconds.
41
41
  *
@@ -30,7 +30,7 @@ export class SerenityConfig {
30
30
  * The maximum amount of time between [SceneFinishes](https://serenity-js.org/api/core-events/class/SceneFinishes/) and [SceneFinished](https://serenity-js.org/api/core-events/class/SceneFinished/) events
31
31
  * that Serenity/JS should wait for any post-scenario
32
32
  * async operations to complete. Those include generating the screenshots,
33
- * saving reports to disk, [dismissing the actors](https://serenity-js.org/api/core/interface/Discardable/), and so on.
33
+ * saving reports to disk, [dismissing the actors](https://serenity-js.org/api/core/class/Discardable/), and so on.
34
34
  *
35
35
  * Defaults to 5 seconds.
36
36
  *
@@ -5,7 +5,7 @@ import { DomainEvent } from './DomainEvent.js';
5
5
  /**
6
6
  * Emitted by a Serenity/JS test runner adapter, right before a test and all its associated test hooks finish.
7
7
  * Triggers any clean-up operations that might be required, such as discarding of
8
- * the [discardable](https://serenity-js.org/api/core/interface/Discardable/) abilities.
8
+ * the [discardable](https://serenity-js.org/api/core/class/Discardable/) abilities.
9
9
  *
10
10
  * The `outcome` property contains the test outcome determined so far, before any cleanup operations.
11
11
  * This allows stage crew members like the WebdriverIO notifier to invoke hooks with the test result
@@ -5,7 +5,7 @@ import { DomainEvent } from './DomainEvent.js';
5
5
  /**
6
6
  * Emitted by a Serenity/JS test runner adapter, right before a test and all its associated test hooks finish.
7
7
  * Triggers any clean-up operations that might be required, such as discarding of
8
- * the [discardable](https://serenity-js.org/api/core/interface/Discardable/) abilities.
8
+ * the [discardable](https://serenity-js.org/api/core/class/Discardable/) abilities.
9
9
  *
10
10
  * The `outcome` property contains the test outcome determined so far, before any cleanup operations.
11
11
  * This allows stage crew members like the WebdriverIO notifier to invoke hooks with the test result
@@ -4,7 +4,7 @@ import { Timestamp } from '../../screenplay/index.js';
4
4
  import { AsyncOperationCompleted } from '../AsyncOperationCompleted.js';
5
5
  /**
6
6
  * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) and its abilities
7
- * are correctly [released](https://serenity-js.org/api/core/interface/Discardable/) either
7
+ * are correctly [released](https://serenity-js.org/api/core/class/Discardable/) either
8
8
  * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
9
9
  * for actors initialised within the scope of a test scenario,
10
10
  * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
@@ -4,7 +4,7 @@ import { Timestamp } from '../../screenplay/index.js';
4
4
  import { AsyncOperationCompleted } from '../AsyncOperationCompleted.js';
5
5
  /**
6
6
  * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) and its abilities
7
- * are correctly [released](https://serenity-js.org/api/core/interface/Discardable/) either
7
+ * are correctly [released](https://serenity-js.org/api/core/class/Discardable/) either
8
8
  * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
9
9
  * for actors initialised within the scope of a test scenario,
10
10
  * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
@@ -1,7 +1,7 @@
1
1
  import type { JSONObject } from 'tiny-types';
2
2
  import { AsyncOperationFailed } from '../AsyncOperationFailed.js';
3
3
  /**
4
- * Emitted when [releasing](https://serenity-js.org/api/core/interface/Discardable/) an
4
+ * Emitted when [releasing](https://serenity-js.org/api/core/class/Discardable/) an
5
5
  * [`Actor`](https://serenity-js.org/api/core/class/Actor/) or its abilities
6
6
  * resulted in an error either
7
7
  * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
@@ -3,7 +3,7 @@ import { CorrelationId } from '../../model/index.js';
3
3
  import { Timestamp } from '../../screenplay/index.js';
4
4
  import { AsyncOperationFailed } from '../AsyncOperationFailed.js';
5
5
  /**
6
- * Emitted when [releasing](https://serenity-js.org/api/core/interface/Discardable/) an
6
+ * Emitted when [releasing](https://serenity-js.org/api/core/class/Discardable/) an
7
7
  * [`Actor`](https://serenity-js.org/api/core/class/Actor/) or its abilities
8
8
  * resulted in an error either
9
9
  * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
@@ -7,7 +7,7 @@ import { DomainEvent } from '../DomainEvent.js';
7
7
  * [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) events
8
8
  * to notify the [stage crew members](https://serenity-js.org/api/core/interface/StageCrewMember/)
9
9
  * about the final state of the [actors](https://serenity-js.org/api/core/class/Actor/) and their abilities
10
- * before they're [released](https://serenity-js.org/api/core/interface/Discardable/).
10
+ * before they're [released](https://serenity-js.org/api/core/class/Discardable/).
11
11
  *
12
12
  * @group Events
13
13
  */
@@ -7,7 +7,7 @@ import { DomainEvent } from '../DomainEvent.js';
7
7
  * [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) events
8
8
  * to notify the [stage crew members](https://serenity-js.org/api/core/interface/StageCrewMember/)
9
9
  * about the final state of the [actors](https://serenity-js.org/api/core/class/Actor/) and their abilities
10
- * before they're [released](https://serenity-js.org/api/core/interface/Discardable/).
10
+ * before they're [released](https://serenity-js.org/api/core/class/Discardable/).
11
11
  *
12
12
  * @group Events
13
13
  */
@@ -130,8 +130,8 @@ export declare class Actor implements PerformsActivities, UsesAbilities, CanHave
130
130
  */
131
131
  currentTime(): Timestamp;
132
132
  /**
133
- * Instructs the actor to invoke [`Discardable.discard`](https://serenity-js.org/api/core/interface/Discardable/#discard) method on any
134
- * [discardable](https://serenity-js.org/api/core/interface/Discardable/) [ability](https://serenity-js.org/api/core/class/Ability/) it's been configured with.
133
+ * Instructs the actor to invoke [`Discardable.discard`](https://serenity-js.org/api/core/class/Discardable/#discard) method on any
134
+ * [discardable](https://serenity-js.org/api/core/class/Discardable/) [ability](https://serenity-js.org/api/core/class/Ability/) it's been configured with.
135
135
  */
136
136
  dismiss(): Promise<void>;
137
137
  /**
@@ -148,7 +148,7 @@ export declare class Actor implements PerformsActivities, UsesAbilities, CanHave
148
148
  */
149
149
  toJSON(): SerialisedActor;
150
150
  private initialiseAbilities;
151
- private findAbilitiesOfType;
151
+ private findAbilitiesWhere;
152
152
  private findAbilityTo;
153
153
  private acquireAbility;
154
154
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAG,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAA8B,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrH,OAAO,EAAE,OAAO,EAAsC,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBAAa,KAAM,YAAW,kBAAkB,EAC5C,aAAa,EACb,gBAAgB,CAAC,KAAK,CAAC,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS;aAUW,IAAI,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAT1B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoD;gBAG1D,IAAI,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EAC7B,SAAS,GAAE,OAAO,EAAO;IAS7B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAc5D;;;;;;OAMG;IACH,UAAU,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK;IAMtC;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUvD;;OAEG;IACH,WAAW,IAAI,SAAS;IAIxB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASxB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;;;OAKG;IACH,MAAM,IAAI,eAAe;IAOzB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAQtB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKnB"}
1
+ {"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAG,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAkE,MAAM,sBAAsB,CAAC;AAC/G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBAAa,KAAM,YAAW,kBAAkB,EAC5C,aAAa,EACb,gBAAgB,CAAC,KAAK,CAAC,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS;aAUW,IAAI,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAT1B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoD;gBAG1D,IAAI,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EAC7B,SAAS,GAAE,OAAO,EAAO;IAS7B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;IAc5D;;;;;;OAMG;IACH,UAAU,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK;IAMtC;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUvD;;OAEG;IACH,WAAW,IAAI,SAAS;IAIxB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASxB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;;;OAKG;IACH,MAAM,IAAI,eAAe;IAOzB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAQtB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKnB"}
@@ -2,7 +2,7 @@ import { ConfigurationError, TestCompromisedError } from '../errors/index.js';
2
2
  import { ActivityRelatedArtifactGenerated } from '../events/index.js';
3
3
  import { ValueInspector } from '../io/index.js';
4
4
  import { Name, } from '../model/index.js';
5
- import { Ability, AnswerQuestions, PerformActivities } from './abilities/index.js';
5
+ import { Ability, AnswerQuestions, Discardable, Initialisable, PerformActivities } from './abilities/index.js';
6
6
  /**
7
7
  * **Actors** represent **people** and **external systems** interacting with the system under test.
8
8
  * Their role is to perform [activities](https://serenity-js.org/api/core/class/Activity/) that demonstrate how to accomplish a given goal.
@@ -154,11 +154,11 @@ export class Actor {
154
154
  return this.stage.currentTime();
155
155
  }
156
156
  /**
157
- * Instructs the actor to invoke [`Discardable.discard`](https://serenity-js.org/api/core/interface/Discardable/#discard) method on any
158
- * [discardable](https://serenity-js.org/api/core/interface/Discardable/) [ability](https://serenity-js.org/api/core/class/Ability/) it's been configured with.
157
+ * Instructs the actor to invoke [`Discardable.discard`](https://serenity-js.org/api/core/class/Discardable/#discard) method on any
158
+ * [discardable](https://serenity-js.org/api/core/class/Discardable/) [ability](https://serenity-js.org/api/core/class/Ability/) it's been configured with.
159
159
  */
160
160
  dismiss() {
161
- return this.findAbilitiesOfType('discard')
161
+ return this.findAbilitiesWhere(Discardable.isDiscardable)
162
162
  .reduce((previous, ability) => previous.then(() => ability.discard()), Promise.resolve(void 0));
163
163
  }
164
164
  /**
@@ -183,7 +183,7 @@ export class Actor {
183
183
  };
184
184
  }
185
185
  initialiseAbilities() {
186
- return this.findAbilitiesOfType('initialise', 'isInitialised')
186
+ return this.findAbilitiesWhere(Initialisable.isInitialisable)
187
187
  .filter(ability => !ability.isInitialised())
188
188
  .reduce((previous, ability) => previous
189
189
  .then(() => ability.initialise())
@@ -191,11 +191,10 @@ export class Actor {
191
191
  throw new TestCompromisedError(`${this.name} couldn't initialise the ability to ${ability.constructor.name}`, error);
192
192
  }), Promise.resolve(void 0));
193
193
  }
194
- findAbilitiesOfType(...methodNames) {
194
+ findAbilitiesWhere(filter) {
195
195
  const abilitiesFrom = (map) => Array.from(map.values());
196
- const abilitiesWithDesiredMethods = (ability) => methodNames.every(methodName => typeof (ability[methodName]) === 'function');
197
196
  return abilitiesFrom(this.abilities)
198
- .filter(abilitiesWithDesiredMethods);
197
+ .filter(filter);
199
198
  }
200
199
  findAbilityTo(doSomething) {
201
200
  return this.abilities.get(doSomething.abilityType().name);
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/screenplay/Actor.ts"],"names":[],"mappings":"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"}
@@ -42,8 +42,8 @@ import type { UsesAbilities } from './UsesAbilities.js';
42
42
  * From the technical perspective, an **ability** is an [adapter](https://en.wikipedia.org/wiki/Adapter_pattern)
43
43
  * around an interface-specific integration library, such as a web browser driver, an HTTP client, a database client, and so on.
44
44
  * You give an actor an ability, and it's the ability's responsibility to provide a consistent API around the integration library and deal with any of its quirks.
45
- * Abilities **encapsulate integration libraries** and handle their [configuration and initialisation](https://serenity-js.org/api/core/interface/Initialisable/),
46
- * the process of [freeing up any resources](https://serenity-js.org/api/core/interface/Discardable/) they hold,
45
+ * Abilities **encapsulate integration libraries** and handle their [configuration and initialisation](https://serenity-js.org/api/core/class/Initialisable/),
46
+ * the process of [freeing up any resources](https://serenity-js.org/api/core/class/Discardable/) they hold,
47
47
  * as well as managing any state associated with the library.
48
48
  *
49
49
  * ### Portable interactions with web interfaces
@@ -268,8 +268,8 @@ import type { UsesAbilities } from './UsesAbilities.js';
268
268
  *
269
269
  * Abilities that rely on resources that need to be initialised before they can be used,
270
270
  * or discarded before the actor is dismissed can implement
271
- * the [`Initialisable`](https://serenity-js.org/api/core/interface/Initialisable/)
272
- * or [`Discardable`](https://serenity-js.org/api/core/interface/Discardable/) interfaces, respectively.
271
+ * the [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
272
+ * or [`Discardable`](https://serenity-js.org/api/core/class/Discardable/) interfaces, respectively.
273
273
  *
274
274
  * ### Defining a custom ability to `QueryPostgresDB`
275
275
  *
@@ -351,8 +351,8 @@ import type { UsesAbilities } from './UsesAbilities.js';
351
351
  *
352
352
  * ## Learn more
353
353
  * - [`AbilityType`](https://serenity-js.org/api/core/#AbilityType)
354
- * - [`Initialisable`](https://serenity-js.org/api/core/interface/Initialisable/)
355
- * - [`Discardable`](https://serenity-js.org/api/core/interface/Discardable/)
354
+ * - [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
355
+ * - [`Discardable`](https://serenity-js.org/api/core/class/Discardable/)
356
356
  * - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
357
357
  * - [`CallAnApi`](https://serenity-js.org/api/rest/class/CallAnApi/)
358
358
  * - [`TakeNotes`](https://serenity-js.org/api/core/class/TakeNotes/)
@@ -39,8 +39,8 @@
39
39
  * From the technical perspective, an **ability** is an [adapter](https://en.wikipedia.org/wiki/Adapter_pattern)
40
40
  * around an interface-specific integration library, such as a web browser driver, an HTTP client, a database client, and so on.
41
41
  * You give an actor an ability, and it's the ability's responsibility to provide a consistent API around the integration library and deal with any of its quirks.
42
- * Abilities **encapsulate integration libraries** and handle their [configuration and initialisation](https://serenity-js.org/api/core/interface/Initialisable/),
43
- * the process of [freeing up any resources](https://serenity-js.org/api/core/interface/Discardable/) they hold,
42
+ * Abilities **encapsulate integration libraries** and handle their [configuration and initialisation](https://serenity-js.org/api/core/class/Initialisable/),
43
+ * the process of [freeing up any resources](https://serenity-js.org/api/core/class/Discardable/) they hold,
44
44
  * as well as managing any state associated with the library.
45
45
  *
46
46
  * ### Portable interactions with web interfaces
@@ -265,8 +265,8 @@
265
265
  *
266
266
  * Abilities that rely on resources that need to be initialised before they can be used,
267
267
  * or discarded before the actor is dismissed can implement
268
- * the [`Initialisable`](https://serenity-js.org/api/core/interface/Initialisable/)
269
- * or [`Discardable`](https://serenity-js.org/api/core/interface/Discardable/) interfaces, respectively.
268
+ * the [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
269
+ * or [`Discardable`](https://serenity-js.org/api/core/class/Discardable/) interfaces, respectively.
270
270
  *
271
271
  * ### Defining a custom ability to `QueryPostgresDB`
272
272
  *
@@ -348,8 +348,8 @@
348
348
  *
349
349
  * ## Learn more
350
350
  * - [`AbilityType`](https://serenity-js.org/api/core/#AbilityType)
351
- * - [`Initialisable`](https://serenity-js.org/api/core/interface/Initialisable/)
352
- * - [`Discardable`](https://serenity-js.org/api/core/interface/Discardable/)
351
+ * - [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
352
+ * - [`Discardable`](https://serenity-js.org/api/core/class/Discardable/)
353
353
  * - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
354
354
  * - [`CallAnApi`](https://serenity-js.org/api/rest/class/CallAnApi/)
355
355
  * - [`TakeNotes`](https://serenity-js.org/api/core/class/TakeNotes/)
@@ -2,7 +2,7 @@
2
2
  * An interface to be implemented by any [`Ability`](https://serenity-js.org/api/core/class/Ability/) that needs to free up
3
3
  * the resources it uses, e.g. disconnect from a database.
4
4
  *
5
- * This [`Discardable.discard`](https://serenity-js.org/api/core/interface/Discardable/#discard) method is invoked directly by the [actor](https://serenity-js.org/api/core/class/Actor/), and indirectly by the [stage](https://serenity-js.org/api/core/class/Stage/):
5
+ * This [`Discardable.discard`](https://serenity-js.org/api/core/class/Discardable/#discard) method is invoked directly by the [actor](https://serenity-js.org/api/core/class/Actor/), and indirectly by the [stage](https://serenity-js.org/api/core/class/Stage/):
6
6
  * - when [SceneFinishes](https://serenity-js.org/api/core-events/class/SceneFinishes/), for actors instantiated after [SceneStarts](https://serenity-js.org/api/core-events/class/SceneStarts/) - e.g. within a test scenario or in a "before each" hook
7
7
  * - when [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/), for actors instantiated before [SceneStarts](https://serenity-js.org/api/core-events/class/SceneStarts/) - e.g. in a "before all" hook
8
8
  *
@@ -13,14 +13,15 @@
13
13
  * ## Learn more
14
14
  * - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
15
15
  * - [`AbilityType`](https://serenity-js.org/api/core/#AbilityType)
16
- * - [`Initialisable`](https://serenity-js.org/api/core/interface/Initialisable/)
16
+ * - [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
17
17
  *
18
18
  * @group Abilities
19
19
  */
20
- export interface Discardable {
20
+ export declare abstract class Discardable {
21
+ static isDiscardable<T>(value: T): value is T & Discardable;
21
22
  /**
22
23
  * Discards the resources associated with this ability.
23
24
  */
24
- discard(): Promise<void> | void;
25
+ abstract discard(): Promise<void> | void;
25
26
  }
26
27
  //# sourceMappingURL=Discardable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Discardable.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/Discardable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,WAAW;IAExB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACnC"}
1
+ {"version":3,"file":"Discardable.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/Discardable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAAsB,WAAW;IAE7B,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,WAAW;IAK3D;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAC3C"}
@@ -1,2 +1,26 @@
1
- export {};
1
+ /**
2
+ * An interface to be implemented by any [`Ability`](https://serenity-js.org/api/core/class/Ability/) that needs to free up
3
+ * the resources it uses, e.g. disconnect from a database.
4
+ *
5
+ * This [`Discardable.discard`](https://serenity-js.org/api/core/class/Discardable/#discard) method is invoked directly by the [actor](https://serenity-js.org/api/core/class/Actor/), and indirectly by the [stage](https://serenity-js.org/api/core/class/Stage/):
6
+ * - when [SceneFinishes](https://serenity-js.org/api/core-events/class/SceneFinishes/), for actors instantiated after [SceneStarts](https://serenity-js.org/api/core-events/class/SceneStarts/) - e.g. within a test scenario or in a "before each" hook
7
+ * - when [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/), for actors instantiated before [SceneStarts](https://serenity-js.org/api/core-events/class/SceneStarts/) - e.g. in a "before all" hook
8
+ *
9
+ * Note that events such as [SceneFinishes](https://serenity-js.org/api/core-events/class/SceneFinishes/) and [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) are emitted by Serenity/JS test runner adapters,
10
+ * such as `@serenity-js/cucumber`, `@serenity-js/mocha`, `@serenity-js/jasmine`, and so on.
11
+ * Consult their respective readmes to learn how to register them with your test runner of choice.
12
+ *
13
+ * ## Learn more
14
+ * - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
15
+ * - [`AbilityType`](https://serenity-js.org/api/core/#AbilityType)
16
+ * - [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
17
+ *
18
+ * @group Abilities
19
+ */
20
+ export class Discardable {
21
+ static isDiscardable(value) {
22
+ return typeof (value['discard']) === 'function'
23
+ && value['discard'].length === 0;
24
+ }
25
+ }
2
26
  //# sourceMappingURL=Discardable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Discardable.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/Discardable.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Discardable.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/Discardable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAgB,WAAW;IAE7B,MAAM,CAAC,aAAa,CAAI,KAAQ;QAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,UAAU;eACxC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACzC,CAAC;CAMJ"}
@@ -2,25 +2,26 @@
2
2
  * An interface to be implemented by any [`Ability`](https://serenity-js.org/api/core/class/Ability/) that needs to initialise
3
3
  * the resources it uses, e.g. establish a database connection.
4
4
  *
5
- * The [`Initialisable.initialise`](https://serenity-js.org/api/core/interface/Initialisable/#initialise) method is invoked whenever [`Actor.attemptsTo`](https://serenity-js.org/api/core/class/Actor/#attemptsTo) method is called,
6
- * but **only when** [`Initialisable.isInitialised`](https://serenity-js.org/api/core/interface/Initialisable/#isInitialised) returns false. This is to avoid initialising abilities more than once.
5
+ * The [`Initialisable.initialise`](https://serenity-js.org/api/core/class/Initialisable/#initialise) method is invoked whenever [`Actor.attemptsTo`](https://serenity-js.org/api/core/class/Actor/#attemptsTo) method is called,
6
+ * but **only when** [`Initialisable.isInitialised`](https://serenity-js.org/api/core/class/Initialisable/#isInitialised) returns false. This is to avoid initialising abilities more than once.
7
7
  *
8
8
  * ## Learn more
9
9
  * - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
10
10
  * - [`AbilityType`](https://serenity-js.org/api/core/#AbilityType)
11
- * - [`Discardable`](https://serenity-js.org/api/core/interface/Discardable/)
11
+ * - [`Discardable`](https://serenity-js.org/api/core/class/Discardable/)
12
12
  *
13
13
  * @group Abilities
14
14
  */
15
- export interface Initialisable {
15
+ export declare abstract class Initialisable {
16
+ static isInitialisable<T>(value: T): value is T & Initialisable;
16
17
  /**
17
18
  * Initialises the ability. Invoked whenever [`Actor.attemptsTo`](https://serenity-js.org/api/core/class/Actor/#attemptsTo) method is called,
18
- * but **only when** [`Initialisable.isInitialised`](https://serenity-js.org/api/core/interface/Initialisable/#isInitialised) returns false.
19
+ * but **only when** [`Initialisable.isInitialised`](https://serenity-js.org/api/core/class/Initialisable/#isInitialised) returns false.
19
20
  *
20
- * Make sure to implement [`Initialisable.isInitialised`](https://serenity-js.org/api/core/interface/Initialisable/#isInitialised) so that it returns `true`
21
+ * Make sure to implement [`Initialisable.isInitialised`](https://serenity-js.org/api/core/class/Initialisable/#isInitialised) so that it returns `true`
21
22
  * when the ability has been successfully initialised.
22
23
  */
23
- initialise(): Promise<void> | void;
24
+ abstract initialise(): Promise<void> | void;
24
25
  /**
25
26
  * Should return `true` when all the resources that the given ability needs
26
27
  * have been initialised. Should return `false` if the [`Actor`](https://serenity-js.org/api/core/class/Actor/) should
@@ -28,6 +29,6 @@ export interface Initialisable {
28
29
  *
29
30
  * @returns {boolean}
30
31
  */
31
- isInitialised(): boolean;
32
+ abstract isInitialised(): boolean;
32
33
  }
33
34
  //# sourceMappingURL=Initialisable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Initialisable.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/Initialisable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,aAAa;IAE1B;;;;;;OAMG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEnC;;;;;;OAMG;IACH,aAAa,IAAI,OAAO,CAAC;CAC5B"}
1
+ {"version":3,"file":"Initialisable.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/Initialisable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,8BAAsB,aAAa;IAE/B,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,aAAa;IAO/D;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAE3C;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,IAAI,OAAO;CACpC"}
@@ -1,2 +1,23 @@
1
- export {};
1
+ /**
2
+ * An interface to be implemented by any [`Ability`](https://serenity-js.org/api/core/class/Ability/) that needs to initialise
3
+ * the resources it uses, e.g. establish a database connection.
4
+ *
5
+ * The [`Initialisable.initialise`](https://serenity-js.org/api/core/class/Initialisable/#initialise) method is invoked whenever [`Actor.attemptsTo`](https://serenity-js.org/api/core/class/Actor/#attemptsTo) method is called,
6
+ * but **only when** [`Initialisable.isInitialised`](https://serenity-js.org/api/core/class/Initialisable/#isInitialised) returns false. This is to avoid initialising abilities more than once.
7
+ *
8
+ * ## Learn more
9
+ * - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
10
+ * - [`AbilityType`](https://serenity-js.org/api/core/#AbilityType)
11
+ * - [`Discardable`](https://serenity-js.org/api/core/class/Discardable/)
12
+ *
13
+ * @group Abilities
14
+ */
15
+ export class Initialisable {
16
+ static isInitialisable(value) {
17
+ return typeof (value['initialise']) === 'function'
18
+ && value['initialise'].length === 0
19
+ && typeof value['isInitialised'] === 'function'
20
+ && value['isInitialised'].length === 0;
21
+ }
22
+ }
2
23
  //# sourceMappingURL=Initialisable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Initialisable.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/Initialisable.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Initialisable.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/Initialisable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAgB,aAAa;IAE/B,MAAM,CAAC,eAAe,CAAI,KAAQ;QAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,UAAU;eAC3C,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC;eAChC,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,UAAU;eAC5C,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAC/C,CAAC;CAmBJ"}