@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
@@ -1 +1 @@
1
- {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stage.js","sourceRoot":"","sources":["../../src/stage/Stage.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  import type { DomainEvent } from '../events/index.js';
2
- import type { Clock, Duration, TellsTime, Timestamp } from '../screenplay/index.js';
2
+ import type { Clock, Duration } from '../screenplay/index.js';
3
3
  import type { ListensToDomainEvents } from '../stage/index.js';
4
4
  /**
5
5
  * @group Stage
6
6
  */
7
- export declare class StageManager implements TellsTime {
7
+ export declare class StageManager {
8
8
  private cueTimeout;
9
- private readonly clock;
10
9
  private readonly subscribers;
11
10
  private readonly wip;
12
11
  constructor(cueTimeout: Duration, clock: Clock);
@@ -18,6 +17,5 @@ export declare class StageManager implements TellsTime {
18
17
  notifyOf(event: DomainEvent): void;
19
18
  waitForAsyncOperationsToComplete(): Promise<void>;
20
19
  waitForNextCue(): Promise<void>;
21
- currentTime(): Timestamp;
22
20
  }
23
21
  //# sourceMappingURL=StageManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StageManager.d.ts","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAI9B,OAAO,CAAC,UAAU;IAAY,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHhE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;gBAEN,UAAU,EAAE,QAAQ,EAAmB,KAAK,EAAE,KAAK;IAIvE,SAAS,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI;IAKlD,QAAQ,CAAC,GAAG,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAIvD,UAAU,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAInD,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAMlC,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrC,WAAW,IAAI,SAAS;CAG3B"}
1
+ {"version":3,"file":"StageManager.d.ts","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAa,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;GAEG;AACH,qBAAa,YAAY;IAIT,OAAO,CAAC,UAAU;IAH9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;gBAEN,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;IAItD,SAAS,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI;IAKlD,QAAQ,CAAC,GAAG,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAIvD,UAAU,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAInD,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAMlC,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBxC"}
@@ -7,12 +7,10 @@ const index_js_1 = require("../events/index.js");
7
7
  */
8
8
  class StageManager {
9
9
  cueTimeout;
10
- clock;
11
10
  subscribers = [];
12
11
  wip;
13
12
  constructor(cueTimeout, clock) {
14
13
  this.cueTimeout = cueTimeout;
15
- this.clock = clock;
16
14
  this.wip = new WIP(cueTimeout, clock);
17
15
  }
18
16
  configure(options) {
@@ -55,9 +53,6 @@ class StageManager {
55
53
  throw new Error(this.wip.descriptionOfTimedOutOperations());
56
54
  }
57
55
  }
58
- currentTime() {
59
- return this.clock.now();
60
- }
61
56
  }
62
57
  exports.StageManager = StageManager;
63
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"StageManager.js","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StageManager.js","sourceRoot":"","sources":["../../src/stage/StageManager.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export * from './ActorLifecycleManager.js';
1
2
  export * from './Cast.js';
2
3
  export * from './crew/index.js';
3
4
  export * from './Extras.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,mBAAmB,CAAC"}
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ActorLifecycleManager.js"), exports);
17
18
  __exportStar(require("./Cast.js"), exports);
18
19
  __exportStar(require("./crew/index.js"), exports);
19
20
  __exportStar(require("./Extras.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,kDAAgC;AAChC,8CAA4B;AAC5B,6DAA2C;AAC3C,oDAAkC;AAClC,6CAA2B;AAC3B,uDAAqC;AACrC,8DAA4C;AAC5C,0EAAwD;AACxD,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,4CAA0B;AAC1B,kDAAgC;AAChC,8CAA4B;AAC5B,6DAA2C;AAC3C,oDAAkC;AAClC,6CAA2B;AAC3B,uDAAqC;AACrC,8DAA4C;AAC5C,0EAAwD;AACxD,oDAAkC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serenity-js/core",
3
- "version": "3.42.2",
3
+ "version": "3.43.1",
4
4
  "description": "The core Serenity/JS framework, providing the Screenplay Pattern interfaces, as well as the test reporting and integration infrastructure",
5
5
  "author": {
6
6
  "name": "Jan Molak",
@@ -315,7 +315,7 @@
315
315
  "fast-glob": "3.3.3",
316
316
  "filenamify": "4.3.0",
317
317
  "graceful-fs": "4.2.11",
318
- "semver": "7.7.4",
318
+ "semver": "7.8.0",
319
319
  "tiny-types": "2.0.5",
320
320
  "upath": "2.0.1",
321
321
  "validate-npm-package-name": "7.0.2"
@@ -345,5 +345,5 @@
345
345
  "engines": {
346
346
  "node": "^20 || ^22 || ^24"
347
347
  },
348
- "gitHead": "e0df1ddca37510fb3a9f64b1ed343a101cfa3a0d"
348
+ "gitHead": "b7cc8abc2e54e11707f1b3611df16c4bcdadcf62"
349
349
  }
package/src/Serenity.ts CHANGED
@@ -11,9 +11,9 @@ import type { Actor, Timestamp } from './screenplay/index.js';
11
11
  import { Clock, Duration } from './screenplay/index.js';
12
12
  import type { Cast } from './stage/Cast.js';
13
13
  import { Extras } from './stage/Extras.js';
14
- import type { StageCrewMember, StageCrewMemberBuilder } from './stage/index.js';
14
+ import type { ActorLifecycleManager, StageCrewMember, StageCrewMemberBuilder } from './stage/index.js';
15
+ import { StageManager } from './stage/index.js';
15
16
  import { Stage } from './stage/Stage.js';
16
- import { StageManager } from './stage/StageManager.js';
17
17
 
18
18
  /**
19
19
  * @group Serenity
@@ -34,11 +34,13 @@ export class Serenity implements EmitsDomainEvents {
34
34
  * @param clock
35
35
  * @param cwd
36
36
  * @param sceneIdFactory
37
+ * @param actorLifecycleManager - Optional custom ActorLifecycleManager instance
37
38
  */
38
39
  constructor(
39
40
  clock: Clock = new Clock(),
40
41
  cwd: string = process.cwd(),
41
42
  sceneIdFactory: CorrelationIdFactory = CorrelationId,
43
+ actorLifecycleManager?: ActorLifecycleManager,
42
44
  ) {
43
45
  this.stage = new Stage(
44
46
  Serenity.defaultActors,
@@ -47,6 +49,7 @@ export class Serenity implements EmitsDomainEvents {
47
49
  clock,
48
50
  Serenity.defaultInteractionTimeout,
49
51
  sceneIdFactory,
52
+ actorLifecycleManager,
50
53
  );
51
54
 
52
55
  this.classLoader = new ClassLoader(
@@ -39,7 +39,7 @@ export abstract class SerenityConfig {
39
39
  * 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
40
40
  * that Serenity/JS should wait for any post-scenario
41
41
  * async operations to complete. Those include generating the screenshots,
42
- * saving reports to disk, [dismissing the actors](https://serenity-js.org/api/core/interface/Discardable/), and so on.
42
+ * saving reports to disk, [dismissing the actors](https://serenity-js.org/api/core/class/Discardable/), and so on.
43
43
  *
44
44
  * Defaults to 5 seconds.
45
45
  *
@@ -9,7 +9,7 @@ import { DomainEvent } from './DomainEvent.js';
9
9
  /**
10
10
  * Emitted by a Serenity/JS test runner adapter, right before a test and all its associated test hooks finish.
11
11
  * Triggers any clean-up operations that might be required, such as discarding of
12
- * the [discardable](https://serenity-js.org/api/core/interface/Discardable/) abilities.
12
+ * the [discardable](https://serenity-js.org/api/core/class/Discardable/) abilities.
13
13
  *
14
14
  * The `outcome` property contains the test outcome determined so far, before any cleanup operations.
15
15
  * This allows stage crew members like the WebdriverIO notifier to invoke hooks with the test result
@@ -6,7 +6,7 @@ import { AsyncOperationCompleted } from '../AsyncOperationCompleted.js';
6
6
 
7
7
  /**
8
8
  * Emitted when an [`Actor`](https://serenity-js.org/api/core/class/Actor/) and its abilities
9
- * are correctly [released](https://serenity-js.org/api/core/interface/Discardable/) either
9
+ * are correctly [released](https://serenity-js.org/api/core/class/Discardable/) either
10
10
  * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
11
11
  * for actors initialised within the scope of a test scenario,
12
12
  * or upon the [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) event
@@ -6,7 +6,7 @@ import { Timestamp } from '../../screenplay/index.js';
6
6
  import { AsyncOperationFailed } from '../AsyncOperationFailed.js';
7
7
 
8
8
  /**
9
- * Emitted when [releasing](https://serenity-js.org/api/core/interface/Discardable/) an
9
+ * Emitted when [releasing](https://serenity-js.org/api/core/class/Discardable/) an
10
10
  * [`Actor`](https://serenity-js.org/api/core/class/Actor/) or its abilities
11
11
  * resulted in an error either
12
12
  * upon the [`SceneFinishes`](https://serenity-js.org/api/core-events/class/SceneFinishes/) event
@@ -10,7 +10,7 @@ import { DomainEvent } from '../DomainEvent.js';
10
10
  * [`TestRunFinishes`](https://serenity-js.org/api/core-events/class/TestRunFinishes/) events
11
11
  * to notify the [stage crew members](https://serenity-js.org/api/core/interface/StageCrewMember/)
12
12
  * about the final state of the [actors](https://serenity-js.org/api/core/class/Actor/) and their abilities
13
- * before they're [released](https://serenity-js.org/api/core/interface/Discardable/).
13
+ * before they're [released](https://serenity-js.org/api/core/class/Discardable/).
14
14
  *
15
15
  * @group Events
16
16
  */
@@ -4,8 +4,8 @@ import { ValueInspector } from '../io/index.js';
4
4
  import type { Artifact } from '../model/index.js';
5
5
  import { Name, } from '../model/index.js';
6
6
  import type { Stage } from '../stage/index.js';
7
- import type { AbilityType, CanHaveAbilities, Discardable, Initialisable, UsesAbilities } from './abilities/index.js';
8
- import { Ability, AnswerQuestions, PerformActivities } from './abilities/index.js';
7
+ import type { AbilityType, CanHaveAbilities, UsesAbilities } from './abilities/index.js';
8
+ import { Ability, AnswerQuestions, Discardable, Initialisable, PerformActivities } from './abilities/index.js';
9
9
  import type { PerformsActivities } from './activities/index.js';
10
10
  import type { Activity } from './Activity.js';
11
11
  import type { Answerable } from './Answerable.js';
@@ -190,11 +190,11 @@ export class Actor implements PerformsActivities,
190
190
  }
191
191
 
192
192
  /**
193
- * Instructs the actor to invoke [`Discardable.discard`](https://serenity-js.org/api/core/interface/Discardable/#discard) method on any
194
- * [discardable](https://serenity-js.org/api/core/interface/Discardable/) [ability](https://serenity-js.org/api/core/class/Ability/) it's been configured with.
193
+ * Instructs the actor to invoke [`Discardable.discard`](https://serenity-js.org/api/core/class/Discardable/#discard) method on any
194
+ * [discardable](https://serenity-js.org/api/core/class/Discardable/) [ability](https://serenity-js.org/api/core/class/Ability/) it's been configured with.
195
195
  */
196
196
  dismiss(): Promise<void> {
197
- return this.findAbilitiesOfType<Discardable>('discard')
197
+ return this.findAbilitiesWhere(Discardable.isDiscardable)
198
198
  .reduce(
199
199
  (previous: Promise<void>, ability: (Discardable & Ability)) =>
200
200
  previous.then(() => ability.discard()),
@@ -227,7 +227,7 @@ export class Actor implements PerformsActivities,
227
227
  }
228
228
 
229
229
  private initialiseAbilities(): Promise<void> {
230
- return this.findAbilitiesOfType<Initialisable>('initialise', 'isInitialised')
230
+ return this.findAbilitiesWhere(Initialisable.isInitialisable)
231
231
  .filter(ability => !ability.isInitialised())
232
232
  .reduce(
233
233
  (previous: Promise<void>, ability: (Initialisable & Ability)) =>
@@ -240,15 +240,12 @@ export class Actor implements PerformsActivities,
240
240
  )
241
241
  }
242
242
 
243
- private findAbilitiesOfType<T>(...methodNames: Array<keyof T>): Array<Ability & T> {
243
+ private findAbilitiesWhere<T>(filter: (ability: Ability) => ability is Ability & T): Array<Ability & T> {
244
244
  const abilitiesFrom = (map: Map<string, Ability>): Ability[] =>
245
245
  Array.from(map.values());
246
246
 
247
- const abilitiesWithDesiredMethods = (ability: Ability & T): boolean =>
248
- methodNames.every(methodName => typeof (ability[methodName]) === 'function');
249
-
250
247
  return abilitiesFrom(this.abilities)
251
- .filter(abilitiesWithDesiredMethods) as Array<Ability & T>;
248
+ .filter(filter) as Array<Ability & T>;
252
249
  }
253
250
 
254
251
  private findAbilityTo<T extends Ability>(doSomething: AbilityType<T>): T | undefined {
@@ -43,8 +43,8 @@ import type { UsesAbilities } from './UsesAbilities.js';
43
43
  * From the technical perspective, an **ability** is an [adapter](https://en.wikipedia.org/wiki/Adapter_pattern)
44
44
  * around an interface-specific integration library, such as a web browser driver, an HTTP client, a database client, and so on.
45
45
  * 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.
46
- * Abilities **encapsulate integration libraries** and handle their [configuration and initialisation](https://serenity-js.org/api/core/interface/Initialisable/),
47
- * the process of [freeing up any resources](https://serenity-js.org/api/core/interface/Discardable/) they hold,
46
+ * Abilities **encapsulate integration libraries** and handle their [configuration and initialisation](https://serenity-js.org/api/core/class/Initialisable/),
47
+ * the process of [freeing up any resources](https://serenity-js.org/api/core/class/Discardable/) they hold,
48
48
  * as well as managing any state associated with the library.
49
49
  *
50
50
  * ### Portable interactions with web interfaces
@@ -269,8 +269,8 @@ import type { UsesAbilities } from './UsesAbilities.js';
269
269
  *
270
270
  * Abilities that rely on resources that need to be initialised before they can be used,
271
271
  * or discarded before the actor is dismissed can implement
272
- * the [`Initialisable`](https://serenity-js.org/api/core/interface/Initialisable/)
273
- * or [`Discardable`](https://serenity-js.org/api/core/interface/Discardable/) interfaces, respectively.
272
+ * the [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
273
+ * or [`Discardable`](https://serenity-js.org/api/core/class/Discardable/) interfaces, respectively.
274
274
  *
275
275
  * ### Defining a custom ability to `QueryPostgresDB`
276
276
  *
@@ -352,8 +352,8 @@ import type { UsesAbilities } from './UsesAbilities.js';
352
352
  *
353
353
  * ## Learn more
354
354
  * - [`AbilityType`](https://serenity-js.org/api/core/#AbilityType)
355
- * - [`Initialisable`](https://serenity-js.org/api/core/interface/Initialisable/)
356
- * - [`Discardable`](https://serenity-js.org/api/core/interface/Discardable/)
355
+ * - [`Initialisable`](https://serenity-js.org/api/core/class/Initialisable/)
356
+ * - [`Discardable`](https://serenity-js.org/api/core/class/Discardable/)
357
357
  * - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
358
358
  * - [`CallAnApi`](https://serenity-js.org/api/rest/class/CallAnApi/)
359
359
  * - [`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,19 @@
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 abstract class Discardable {
21
+
22
+ static isDiscardable<T>(value: T): value is T & Discardable {
23
+ return typeof (value['discard']) === 'function'
24
+ && value['discard'].length === 0;
25
+ }
21
26
 
22
27
  /**
23
28
  * Discards the resources associated with this ability.
24
29
  */
25
- discard(): Promise<void> | void;
30
+ abstract discard(): Promise<void> | void;
26
31
  }
@@ -2,26 +2,33 @@
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 abstract class Initialisable {
16
+
17
+ static isInitialisable<T>(value: T): value is T & Initialisable {
18
+ return typeof (value['initialise']) === 'function'
19
+ && value['initialise'].length === 0
20
+ && typeof value['isInitialised'] === 'function'
21
+ && value['isInitialised'].length === 0;
22
+ }
16
23
 
17
24
  /**
18
25
  * Initialises the ability. Invoked whenever [`Actor.attemptsTo`](https://serenity-js.org/api/core/class/Actor/#attemptsTo) method is called,
19
- * but **only when** [`Initialisable.isInitialised`](https://serenity-js.org/api/core/interface/Initialisable/#isInitialised) returns false.
26
+ * but **only when** [`Initialisable.isInitialised`](https://serenity-js.org/api/core/class/Initialisable/#isInitialised) returns false.
20
27
  *
21
- * Make sure to implement [`Initialisable.isInitialised`](https://serenity-js.org/api/core/interface/Initialisable/#isInitialised) so that it returns `true`
28
+ * Make sure to implement [`Initialisable.isInitialised`](https://serenity-js.org/api/core/class/Initialisable/#isInitialised) so that it returns `true`
22
29
  * when the ability has been successfully initialised.
23
30
  */
24
- initialise(): Promise<void> | void;
31
+ abstract initialise(): Promise<void> | void;
25
32
 
26
33
  /**
27
34
  * Should return `true` when all the resources that the given ability needs
@@ -30,5 +37,5 @@ export interface Initialisable {
30
37
  *
31
38
  * @returns {boolean}
32
39
  */
33
- isInitialised(): boolean;
40
+ abstract isInitialised(): boolean;
34
41
  }