@serenity-js/core 3.0.0-rc.12 → 3.0.0-rc.13

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 CHANGED
@@ -3,6 +3,14 @@
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.0.0-rc.13](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.12...v3.0.0-rc.13) (2022-03-02)
7
+
8
+ **Note:** Version bump only for package @serenity-js/core
9
+
10
+
11
+
12
+
13
+
6
14
  # [3.0.0-rc.12](https://github.com/serenity-js/serenity-js/compare/v2.33.2...v3.0.0-rc.12) (2022-02-23)
7
15
 
8
16
 
@@ -7,6 +7,17 @@ import { CanHaveAbilities } from './CanHaveAbilities';
7
7
  import { CollectsArtifacts } from './CollectsArtifacts';
8
8
  import { PerformsActivities } from './PerformsActivities';
9
9
  import { UsesAbilities } from './UsesAbilities';
10
+ /**
11
+ * @desc
12
+ * Core element of the [Screenplay Pattern](/handbook/design/screenplay-pattern.html),
13
+ * an {@link Actor} represents a user or an external system interacting with the system under test.
14
+ *
15
+ * @implements {PerformsActivities}
16
+ * @implements {UsesAbilities}
17
+ * @implements {CanHaveAbilities}
18
+ * @implements {AnswersQuestions}
19
+ * @implements {CollectsArtifacts}
20
+ */
10
21
  export declare class Actor implements PerformsActivities, UsesAbilities, CanHaveAbilities<Actor>, AnswersQuestions, CollectsArtifacts {
11
22
  readonly name: string;
12
23
  private readonly stage;
@@ -14,15 +25,17 @@ export declare class Actor implements PerformsActivities, UsesAbilities, CanHave
14
25
  constructor(name: string, stage: Stage, abilities?: Map<AbilityType<Ability>, Ability>);
15
26
  /**
16
27
  * @desc
17
- * Retrieves actor's {@link Ability} to `doSomething`.
28
+ * Retrieves actor's {@link Ability} of `abilityType`, or one that extends `abilityType`.
18
29
  *
19
- * Please note that this method performs an [`instancepf`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof)
20
- * check against abilities given to this actor via {@link Actor#whoCan}. Please also note that {@link Actor#whoCan} performs
21
- * the same check when abilities are assigned to the actor to ensure the actor has at most one instance of a given ability type.
30
+ * Please note that this method performs an {@link instanceof} check against abilities
31
+ * given to this actor via {@link Actor#whoCan}.
32
+ * Please also note that {@link Actor#whoCan} performs the same check when abilities are assigned to the actor
33
+ * to ensure the actor has at most one instance of a given ability type.
22
34
  *
23
- * @param doSomething
35
+ * @param {AbilityType<T>} abilityType
36
+ * @returns {T}
24
37
  */
25
- abilityTo<T extends Ability>(doSomething: AbilityType<T>): T;
38
+ abilityTo<T extends Ability>(abilityType: AbilityType<T>): T;
26
39
  /**
27
40
  * @desc
28
41
  * Instructs the actor to attempt to perform a number of activities
@@ -6,6 +6,17 @@ const events_1 = require("../../events");
6
6
  const model_1 = require("../../model");
7
7
  const activities_1 = require("../activities");
8
8
  const Question_1 = require("../Question");
9
+ /**
10
+ * @desc
11
+ * Core element of the [Screenplay Pattern](/handbook/design/screenplay-pattern.html),
12
+ * an {@link Actor} represents a user or an external system interacting with the system under test.
13
+ *
14
+ * @implements {PerformsActivities}
15
+ * @implements {UsesAbilities}
16
+ * @implements {CanHaveAbilities}
17
+ * @implements {AnswersQuestions}
18
+ * @implements {CollectsArtifacts}
19
+ */
9
20
  class Actor {
10
21
  // todo: Actor should have execution strategies
11
22
  // todo: the default one executes every activity
@@ -17,18 +28,20 @@ class Actor {
17
28
  }
18
29
  /**
19
30
  * @desc
20
- * Retrieves actor's {@link Ability} to `doSomething`.
31
+ * Retrieves actor's {@link Ability} of `abilityType`, or one that extends `abilityType`.
21
32
  *
22
- * Please note that this method performs an [`instancepf`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof)
23
- * check against abilities given to this actor via {@link Actor#whoCan}. Please also note that {@link Actor#whoCan} performs
24
- * the same check when abilities are assigned to the actor to ensure the actor has at most one instance of a given ability type.
33
+ * Please note that this method performs an {@link instanceof} check against abilities
34
+ * given to this actor via {@link Actor#whoCan}.
35
+ * Please also note that {@link Actor#whoCan} performs the same check when abilities are assigned to the actor
36
+ * to ensure the actor has at most one instance of a given ability type.
25
37
  *
26
- * @param doSomething
38
+ * @param {AbilityType<T>} abilityType
39
+ * @returns {T}
27
40
  */
28
- abilityTo(doSomething) {
29
- const found = this.findAbilityTo(doSomething);
41
+ abilityTo(abilityType) {
42
+ const found = this.findAbilityTo(abilityType);
30
43
  if (!found) {
31
- throw new errors_1.ConfigurationError(`${this.name} can't ${doSomething.name} yet. ` +
44
+ throw new errors_1.ConfigurationError(`${this.name} can't ${abilityType.name} yet. ` +
32
45
  `Did you give them the ability to do so?`);
33
46
  }
34
47
  return found;
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../../src/screenplay/actor/Actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../../src/screenplay/actor/Actor.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,12 @@ import { Answerable } from '../Answerable';
6
6
  * @public
7
7
  */
8
8
  export interface AnswersQuestions {
9
- answer<T>(knownUnknown: Answerable<T>): Promise<T>;
9
+ /**
10
+ * @desc
11
+ * Makes the {@link Actor} evaluate an {@link Answerable}
12
+ * and return the value it holds.
13
+ *
14
+ * @type {function<T>>(answerable: Answerable<T>): Promise<T>}
15
+ */
16
+ answer: <T>(answerable: Answerable<T>) => Promise<T>;
10
17
  }
@@ -2,14 +2,16 @@ import { Ability } from '../Ability';
2
2
  import { UsesAbilities } from './UsesAbilities';
3
3
  /**
4
4
  * @desc
5
- * Enables the {@link Actor} to have an {@link Ability} or Abilities to perform some {@link Activity}.
5
+ * Enables the {@link Actor} to have an {@link Ability} or abilities to perform some {@link Activity}.
6
6
  *
7
7
  * @public
8
8
  */
9
9
  export interface CanHaveAbilities<Returned_Type = UsesAbilities> {
10
10
  /**
11
- * @param {Ability[]} abilities
12
- * @returns {Actor}
11
+ * @desc
12
+ * Assigns an {@link Ability} or several abilities to the {@link Actor}
13
+ *
14
+ * @type {function(...abilities: Ability[]): Returned_Type}
13
15
  */
14
- whoCan(...abilities: Ability[]): Returned_Type;
16
+ whoCan: (...abilities: Ability[]) => Returned_Type;
15
17
  }
@@ -8,10 +8,12 @@ import { Artifact, Name } from '../../model';
8
8
  export interface CollectsArtifacts {
9
9
  /**
10
10
  * @desc
11
- * Makes the {@link Actor} collect an {@link Artifact} so that it's included in the test report.
11
+ * Makes the {@link Actor} collect an {@link Artifact} so that it can be included in the test report.
12
12
  *
13
- * @param {Artifact} artifact - The artifact to be collected, such as {@link JSONData}
14
- * @param {Name} [name] - The name of the artifact to make it easy to recognise in the test report
13
+ * @type {function(artifact: Artifact, name?: Name): void}
14
+ *
15
+ * @see {@link Artifact} - The artifact to be collected, such as {@link JSONData}
16
+ * @see {@link Name} - The name of the artifact to make it easy to recognise in the test report
15
17
  */
16
- collect(artifact: Artifact, name?: Name): void;
18
+ collect: (artifact: Artifact, name?: Name) => void;
17
19
  }
@@ -1,10 +1,18 @@
1
1
  import { Activity } from '../Activity';
2
2
  /**
3
3
  * @desc
4
- * Enables the {@link Actor} to perform an {@link Activity}, such as a {@link Task} or an {@link Interaction}
4
+ * Enables the {@link Actor} to perform an {@link Activity},
5
+ * such as a {@link Task} or an {@link Interaction}
5
6
  *
6
7
  * @public
7
8
  */
8
9
  export interface PerformsActivities {
9
- attemptsTo(...tasks: Activity[]): Promise<void>;
10
+ /**
11
+ * @desc
12
+ * Makes the {@link Actor} attempt to perform a sequence of activities.
13
+ *
14
+ * @type {function(...activities: Activity[]): Promise<void>}
15
+ * @public
16
+ */
17
+ attemptsTo: (...activities: Activity[]) => Promise<void>;
10
18
  }
@@ -9,10 +9,10 @@ import { AbilityType } from '../AbilityType';
9
9
  export interface UsesAbilities {
10
10
  /**
11
11
  * @desc
12
- * Grants access to the Actor's ability
12
+ * Provides access to the {@link Actor}'s {@link Ability} to do something
13
13
  *
14
- * @param {AbilityType<T extends Ability>} doSomething
15
- * @returns {T}
14
+ * @type {function<T extends Ability>(doSomething: AbilityType<T>): T}
15
+ * @public
16
16
  */
17
- abilityTo<T extends Ability>(doSomething: AbilityType<T>): T;
17
+ abilityTo: <T extends Ability>(doSomething: AbilityType<T>) => T;
18
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serenity-js/core",
3
- "version": "3.0.0-rc.12",
3
+ "version": "3.0.0-rc.13",
4
4
  "description": "Serenity/JS Screenplay, reporting engine and core interfaces.",
5
5
  "author": {
6
6
  "name": "Jan Molak",
@@ -29,7 +29,7 @@
29
29
  "clean": "rimraf .nyc_output lib target",
30
30
  "lint": "eslint --ext ts --config ../../.eslintrc.yml .",
31
31
  "lint:fix": "npm run lint -- --fix",
32
- "test": "nyc --report-dir ../../target/coverage/core mocha --config ../../.mocharc.yml 'spec/**/*.spec.*'",
32
+ "test": "nyc mocha --config ../../.mocharc.yml 'spec/**/*.spec.*'",
33
33
  "compile": "tsc --project tsconfig.json",
34
34
  "site": "esdoc -c .esdoc.js"
35
35
  },
@@ -62,7 +62,8 @@
62
62
  },
63
63
  "repository": {
64
64
  "type": "git",
65
- "url": "https://github.com/serenity-js/serenity-js.git"
65
+ "url": "https://github.com/serenity-js/serenity-js.git",
66
+ "directory": "packages/core"
66
67
  },
67
68
  "bugs": {
68
69
  "url": "https://github.com/serenity-js/serenity-js/issues"
@@ -71,27 +72,5 @@
71
72
  "node": "^14 || ^16",
72
73
  "npm": "^6 || ^7 || ^8"
73
74
  },
74
- "nyc": {
75
- "include": [
76
- "src/**/*.ts"
77
- ],
78
- "exclude": [
79
- "src/**/*.d.ts",
80
- "lib",
81
- "spec",
82
- "node_modules"
83
- ],
84
- "extension": [
85
- ".ts"
86
- ],
87
- "require": [
88
- "ts-node/register"
89
- ],
90
- "reporter": [
91
- "json"
92
- ],
93
- "cache": true,
94
- "all": true
95
- },
96
- "gitHead": "5bb8519ef9a91180860675384cfb99ad793a4263"
75
+ "gitHead": "9fb7df72c7f33cb10504843db890f7855b8c355a"
97
76
  }
@@ -12,6 +12,17 @@ import { CollectsArtifacts } from './CollectsArtifacts';
12
12
  import { PerformsActivities } from './PerformsActivities';
13
13
  import { UsesAbilities } from './UsesAbilities';
14
14
 
15
+ /**
16
+ * @desc
17
+ * Core element of the [Screenplay Pattern](/handbook/design/screenplay-pattern.html),
18
+ * an {@link Actor} represents a user or an external system interacting with the system under test.
19
+ *
20
+ * @implements {PerformsActivities}
21
+ * @implements {UsesAbilities}
22
+ * @implements {CanHaveAbilities}
23
+ * @implements {AnswersQuestions}
24
+ * @implements {CollectsArtifacts}
25
+ */
15
26
  export class Actor implements
16
27
  PerformsActivities,
17
28
  UsesAbilities,
@@ -32,19 +43,21 @@ export class Actor implements
32
43
 
33
44
  /**
34
45
  * @desc
35
- * Retrieves actor's {@link Ability} to `doSomething`.
46
+ * Retrieves actor's {@link Ability} of `abilityType`, or one that extends `abilityType`.
36
47
  *
37
- * Please note that this method performs an [`instancepf`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof)
38
- * check against abilities given to this actor via {@link Actor#whoCan}. Please also note that {@link Actor#whoCan} performs
39
- * the same check when abilities are assigned to the actor to ensure the actor has at most one instance of a given ability type.
48
+ * Please note that this method performs an {@link instanceof} check against abilities
49
+ * given to this actor via {@link Actor#whoCan}.
50
+ * Please also note that {@link Actor#whoCan} performs the same check when abilities are assigned to the actor
51
+ * to ensure the actor has at most one instance of a given ability type.
40
52
  *
41
- * @param doSomething
53
+ * @param {AbilityType<T>} abilityType
54
+ * @returns {T}
42
55
  */
43
- abilityTo<T extends Ability>(doSomething: AbilityType<T>): T {
44
- const found = this.findAbilityTo(doSomething);
56
+ abilityTo<T extends Ability>(abilityType: AbilityType<T>): T {
57
+ const found = this.findAbilityTo(abilityType);
45
58
 
46
59
  if (! found) {
47
- throw new ConfigurationError(`${ this.name } can't ${ doSomething.name } yet. ` +
60
+ throw new ConfigurationError(`${ this.name } can't ${ abilityType.name } yet. ` +
48
61
  `Did you give them the ability to do so?`);
49
62
  }
50
63
 
@@ -7,5 +7,13 @@ import { Answerable } from '../Answerable';
7
7
  * @public
8
8
  */
9
9
  export interface AnswersQuestions {
10
- answer<T>(knownUnknown: Answerable<T>): Promise<T>;
10
+
11
+ /**
12
+ * @desc
13
+ * Makes the {@link Actor} evaluate an {@link Answerable}
14
+ * and return the value it holds.
15
+ *
16
+ * @type {function<T>>(answerable: Answerable<T>): Promise<T>}
17
+ */
18
+ answer: <T>(answerable: Answerable<T>) => Promise<T>;
11
19
  }
@@ -3,14 +3,16 @@ import { UsesAbilities } from './UsesAbilities';
3
3
 
4
4
  /**
5
5
  * @desc
6
- * Enables the {@link Actor} to have an {@link Ability} or Abilities to perform some {@link Activity}.
6
+ * Enables the {@link Actor} to have an {@link Ability} or abilities to perform some {@link Activity}.
7
7
  *
8
8
  * @public
9
9
  */
10
10
  export interface CanHaveAbilities<Returned_Type = UsesAbilities> {
11
11
  /**
12
- * @param {Ability[]} abilities
13
- * @returns {Actor}
12
+ * @desc
13
+ * Assigns an {@link Ability} or several abilities to the {@link Actor}
14
+ *
15
+ * @type {function(...abilities: Ability[]): Returned_Type}
14
16
  */
15
- whoCan(...abilities: Ability[]): Returned_Type;
17
+ whoCan: (...abilities: Ability[]) => Returned_Type;
16
18
  }
@@ -7,12 +7,15 @@ import { Artifact, Name } from '../../model';
7
7
  * @public
8
8
  */
9
9
  export interface CollectsArtifacts {
10
+
10
11
  /**
11
12
  * @desc
12
- * Makes the {@link Actor} collect an {@link Artifact} so that it's included in the test report.
13
+ * Makes the {@link Actor} collect an {@link Artifact} so that it can be included in the test report.
14
+ *
15
+ * @type {function(artifact: Artifact, name?: Name): void}
13
16
  *
14
- * @param {Artifact} artifact - The artifact to be collected, such as {@link JSONData}
15
- * @param {Name} [name] - The name of the artifact to make it easy to recognise in the test report
17
+ * @see {@link Artifact} - The artifact to be collected, such as {@link JSONData}
18
+ * @see {@link Name} - The name of the artifact to make it easy to recognise in the test report
16
19
  */
17
- collect(artifact: Artifact, name?: Name): void;
20
+ collect: (artifact: Artifact, name?: Name) => void;
18
21
  }
@@ -2,10 +2,19 @@ import { Activity } from '../Activity';
2
2
 
3
3
  /**
4
4
  * @desc
5
- * Enables the {@link Actor} to perform an {@link Activity}, such as a {@link Task} or an {@link Interaction}
5
+ * Enables the {@link Actor} to perform an {@link Activity},
6
+ * such as a {@link Task} or an {@link Interaction}
6
7
  *
7
8
  * @public
8
9
  */
9
10
  export interface PerformsActivities {
10
- attemptsTo(...tasks: Activity[]): Promise<void>;
11
+
12
+ /**
13
+ * @desc
14
+ * Makes the {@link Actor} attempt to perform a sequence of activities.
15
+ *
16
+ * @type {function(...activities: Activity[]): Promise<void>}
17
+ * @public
18
+ */
19
+ attemptsTo: (...activities: Activity[]) => Promise<void>;
11
20
  }
@@ -11,10 +11,10 @@ export interface UsesAbilities {
11
11
 
12
12
  /**
13
13
  * @desc
14
- * Grants access to the Actor's ability
14
+ * Provides access to the {@link Actor}'s {@link Ability} to do something
15
15
  *
16
- * @param {AbilityType<T extends Ability>} doSomething
17
- * @returns {T}
16
+ * @type {function<T extends Ability>(doSomething: AbilityType<T>): T}
17
+ * @public
18
18
  */
19
- abilityTo<T extends Ability>(doSomething: AbilityType<T>): T;
19
+ abilityTo: <T extends Ability>(doSomething: AbilityType<T>) => T;
20
20
  }