@serenity-js/playwright-test 3.42.1 → 3.43.0
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 +24 -0
- package/esm/api/serenity-fixtures.d.ts +88 -12
- package/esm/api/serenity-fixtures.d.ts.map +1 -1
- package/esm/api/test-api.d.ts +5 -0
- package/esm/api/test-api.d.ts.map +1 -1
- package/esm/api/test-api.js +55 -10
- package/esm/api/test-api.js.map +1 -1
- package/lib/api/serenity-fixtures.d.ts +88 -12
- package/lib/api/serenity-fixtures.d.ts.map +1 -1
- package/lib/api/test-api.d.ts +5 -0
- package/lib/api/test-api.d.ts.map +1 -1
- package/lib/api/test-api.js +55 -10
- package/lib/api/test-api.js.map +1 -1
- package/package.json +63 -28
- package/src/api/serenity-fixtures.ts +90 -13
- package/src/api/test-api.ts +82 -14
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
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.0](https://github.com/serenity-js/serenity-js/compare/v3.42.2...v3.43.0) (2026-05-11)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **deps:** update rest dependencies ([a933e10](https://github.com/serenity-js/serenity-js/commit/a933e1060a0298104ac1ab7843c386e06277f070))
|
|
12
|
+
* **playwright-test:** ensure actors are dismissed between tests ([eda4f3a](https://github.com/serenity-js/serenity-js/commit/eda4f3a82a4f06b0cecb7fe981d1128429c3dfaf))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [3.42.2](https://github.com/serenity-js/serenity-js/compare/v3.42.1...v3.42.2) (2026-04-26)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **deps:** update rest dependencies ([525abcb](https://github.com/serenity-js/serenity-js/commit/525abcb26ad45e1963f883e86ccf650bd2229c20))
|
|
24
|
+
* **playwright:** aligned package.json exports to use conditional import/require types ([a8966e9](https://github.com/serenity-js/serenity-js/commit/a8966e94d74c24b3d2821e99e51bf3b24121b55e))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [3.42.1](https://github.com/serenity-js/serenity-js/compare/v3.42.0...v3.42.1) (2026-04-08)
|
|
7
31
|
|
|
8
32
|
|
|
@@ -108,6 +108,8 @@ export interface SerenityFixtures {
|
|
|
108
108
|
* Configures the name given to the default Serenity/JS [`actor`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actor)
|
|
109
109
|
* injected into a [test scenario](https://serenity-js.org/api/playwright-test/function/it/).
|
|
110
110
|
*
|
|
111
|
+
* Defaults to `'Serena'`.
|
|
112
|
+
*
|
|
111
113
|
* #### Learn more
|
|
112
114
|
* - Declaring a Serenity/JS [test scenario](https://serenity-js.org/api/playwright-test/function/it/)
|
|
113
115
|
* - [`SerenityFixtures`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/)
|
|
@@ -155,16 +157,6 @@ export interface SerenityFixtures {
|
|
|
155
157
|
* - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
|
|
156
158
|
*/
|
|
157
159
|
cueTimeout: number | Duration;
|
|
158
|
-
/**
|
|
159
|
-
* The maximum default amount of time allowed for interactions such as [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
160
|
-
* to complete.
|
|
161
|
-
*
|
|
162
|
-
* Defaults to **5 seconds**, can be overridden per interaction.
|
|
163
|
-
*
|
|
164
|
-
* #### Learn more
|
|
165
|
-
* - [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
166
|
-
*/
|
|
167
|
-
interactionTimeout: number | Duration;
|
|
168
160
|
/**
|
|
169
161
|
* Convenience properties to be used with the [ability](https://serenity-js.org/api/core/class/Ability/)
|
|
170
162
|
* to [`BrowseTheWebWithPlaywright`](https://serenity-js.org/api/playwright/class/BrowseTheWebWithPlaywright/),
|
|
@@ -423,14 +415,35 @@ export interface SerenityFixtures {
|
|
|
423
415
|
*/
|
|
424
416
|
export interface SerenityWorkerFixtures {
|
|
425
417
|
/**
|
|
426
|
-
*
|
|
418
|
+
* Information about the operating system platform where the Playwright Test worker process runs.
|
|
419
|
+
*
|
|
420
|
+
* Returns an object with:
|
|
421
|
+
* - `name` - The platform name: `'Windows'`, `'macOS'`, or `'Linux'`
|
|
422
|
+
* - `version` - The OS version string from `os.release()`
|
|
423
|
+
*
|
|
424
|
+
* This information is used to tag test scenarios with platform metadata
|
|
425
|
+
* for reporting purposes.
|
|
427
426
|
*/
|
|
428
427
|
platform: {
|
|
429
428
|
name: string;
|
|
430
429
|
version: string;
|
|
431
430
|
};
|
|
432
431
|
/**
|
|
433
|
-
*
|
|
432
|
+
* The root [`Serenity`](https://serenity-js.org/api/core/class/Serenity/) instance for this worker.
|
|
433
|
+
*
|
|
434
|
+
* Provides access to the Serenity/JS framework for advanced use cases, such as:
|
|
435
|
+
* - Announcing custom [domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
436
|
+
* - Accessing the current time via [`serenity.currentTime()`](https://serenity-js.org/api/core/class/Serenity/#currentTime)
|
|
437
|
+
* - Configuring the framework programmatically
|
|
438
|
+
*
|
|
439
|
+
* :::tip
|
|
440
|
+
* In most test scenarios, you won't need to interact with the `serenity` fixture directly.
|
|
441
|
+
* Instead, use the [`actor`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actor)
|
|
442
|
+
* or [`actorCalled`](https://serenity-js.org/api/playwright-test/interface/SerenityWorkerFixtures/#actorCalled) fixtures.
|
|
443
|
+
* :::
|
|
444
|
+
*
|
|
445
|
+
* #### Learn more
|
|
446
|
+
* - [`Serenity`](https://serenity-js.org/api/core/class/Serenity/)
|
|
434
447
|
*/
|
|
435
448
|
serenity: Serenity;
|
|
436
449
|
/**
|
|
@@ -448,5 +461,68 @@ export interface SerenityWorkerFixtures {
|
|
|
448
461
|
* @param name
|
|
449
462
|
*/
|
|
450
463
|
actorCalled: (name: string) => Actor;
|
|
464
|
+
/**
|
|
465
|
+
* The maximum default amount of time allowed for interactions such as [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
466
|
+
* to complete.
|
|
467
|
+
*
|
|
468
|
+
* Defaults to **5 seconds**, can be overridden per interaction.
|
|
469
|
+
*
|
|
470
|
+
* #### Learn more
|
|
471
|
+
* - [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
472
|
+
*/
|
|
473
|
+
interactionTimeout: number | Duration;
|
|
474
|
+
/**
|
|
475
|
+
* Extra abilities given to actors at the worker scope, on top of the default ones
|
|
476
|
+
* provided by the [`actors`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actors) fixture.
|
|
477
|
+
*
|
|
478
|
+
* Unlike [`extraAbilities`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#extraAbilities),
|
|
479
|
+
* which are test-scoped, `extraWorkerAbilities` persist across all tests within the same worker process.
|
|
480
|
+
* This is useful for abilities that are expensive to create or that maintain state across tests.
|
|
481
|
+
*
|
|
482
|
+
* #### Extra abilities for all actors
|
|
483
|
+
*
|
|
484
|
+
* To give the same set of extra abilities to all the actors, provide an array of
|
|
485
|
+
* [`Ability`](https://serenity-js.org/api/core/class/Ability/) objects:
|
|
486
|
+
*
|
|
487
|
+
* ```typescript
|
|
488
|
+
* // playwright.config.ts
|
|
489
|
+
* import type { SerenityFixtures, SerenityWorkerFixtures } from '@serenity-js/playwright-test'
|
|
490
|
+
* import { defineConfig } from '@playwright/test'
|
|
491
|
+
* import { MySharedAbility } from './MySharedAbility'
|
|
492
|
+
*
|
|
493
|
+
* export default defineConfig<SerenityFixtures, SerenityWorkerFixtures>({
|
|
494
|
+
* use: {
|
|
495
|
+
* extraWorkerAbilities: [ new MySharedAbility() ],
|
|
496
|
+
* },
|
|
497
|
+
* })
|
|
498
|
+
* ```
|
|
499
|
+
*
|
|
500
|
+
* #### Extra abilities for selected actors
|
|
501
|
+
*
|
|
502
|
+
* To give extra abilities only to selected actors, provide a function that maps
|
|
503
|
+
* the actor name to an array of [`Ability`](https://serenity-js.org/api/core/class/Ability/) objects:
|
|
504
|
+
*
|
|
505
|
+
* ```typescript
|
|
506
|
+
* // playwright.config.ts
|
|
507
|
+
* import type { SerenityFixtures, SerenityWorkerFixtures } from '@serenity-js/playwright-test'
|
|
508
|
+
* import { defineConfig } from '@playwright/test'
|
|
509
|
+
* import { MySharedAbility } from './MySharedAbility'
|
|
510
|
+
*
|
|
511
|
+
* export default defineConfig<SerenityFixtures, SerenityWorkerFixtures>({
|
|
512
|
+
* use: {
|
|
513
|
+
* extraWorkerAbilities: (actorName: string) => {
|
|
514
|
+
* return actorName === 'Admin'
|
|
515
|
+
* ? [ new MySharedAbility() ]
|
|
516
|
+
* : [];
|
|
517
|
+
* },
|
|
518
|
+
* },
|
|
519
|
+
* })
|
|
520
|
+
* ```
|
|
521
|
+
*
|
|
522
|
+
* #### Learn more
|
|
523
|
+
* - [`extraAbilities`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#extraAbilities) - test-scoped extra abilities
|
|
524
|
+
* - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
|
|
525
|
+
*/
|
|
526
|
+
extraWorkerAbilities: ((actorName: string) => Ability[]) | Ability[];
|
|
451
527
|
}
|
|
452
528
|
//# sourceMappingURL=serenity-fixtures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serenity-fixtures.d.ts","sourceRoot":"","sources":["../../src/api/serenity-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,sBAAsB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,MAAM,WAAW,gBAAgB;IAE7B
|
|
1
|
+
{"version":3,"file":"serenity-fixtures.d.ts","sourceRoot":"","sources":["../../src/api/serenity-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,sBAAsB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,MAAM,WAAW,gBAAgB;IAE7B;;;;;;;;;OASG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,IAAI,EAAE,KAAK,CAAC,gBAAgB,GAAG,eAAe,GAAG,sBAAsB,CAAC,CAAC;IAEzE;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6DG;IACH,mBAAmB,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC;IAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+EG;IACH,MAAM,EAAE,IAAI,CAAC;IAEb;;;;;;;;;;OAUG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;;;;;;;;OASG;IACH,KAAK,EAAE,aAAa,GAAG,0BAA0B,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;;;;;OASG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5C;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;IAErC;;;;;;;;OAQG;IACH,kBAAkB,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,oBAAoB,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC;CACxE"}
|
package/esm/api/test-api.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Expect, Fixtures, PlaywrightTestArgs, PlaywrightTestOptions, PlaywrightWorkerArgs, PlaywrightWorkerOptions, TestInfo, TestType } from '@playwright/test';
|
|
2
2
|
import type { DiffFormatter } from '@serenity-js/core';
|
|
3
|
+
import { Cast, Clock } from '@serenity-js/core';
|
|
4
|
+
import { ActorLifecycleManager } from '@serenity-js/core/stage';
|
|
3
5
|
import { PlaywrightTestSceneIdFactory } from '../reporter/PlaywrightTestSceneIdFactory.js';
|
|
4
6
|
import type { SerenityFixtures, SerenityWorkerFixtures } from './serenity-fixtures.js';
|
|
5
7
|
import { WorkerEventStreamWriter } from './WorkerEventStreamWriter.js';
|
|
@@ -7,10 +9,13 @@ interface SerenityInternalFixtures {
|
|
|
7
9
|
configureScenarioInternal: void;
|
|
8
10
|
}
|
|
9
11
|
interface SerenityInternalWorkerFixtures {
|
|
12
|
+
clockInternal: Clock;
|
|
10
13
|
configureWorkerInternal: void;
|
|
11
14
|
sceneIdFactoryInternal: PlaywrightTestSceneIdFactory;
|
|
12
15
|
diffFormatterInternal: DiffFormatter;
|
|
13
16
|
eventStreamWriterInternal: WorkerEventStreamWriter;
|
|
17
|
+
workerCastInternal: Cast;
|
|
18
|
+
actorLifecycleManagerInternal: ActorLifecycleManager;
|
|
14
19
|
}
|
|
15
20
|
export declare const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, SerenityWorkerFixtures & SerenityInternalWorkerFixtures, PlaywrightTestArgs & PlaywrightTestOptions, PlaywrightWorkerArgs & PlaywrightWorkerOptions>;
|
|
16
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACR,QAAQ,EAEX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":"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"}
|
package/esm/api/test-api.js
CHANGED
|
@@ -5,6 +5,7 @@ import { mergeTests, test as playwrightBaseTest } from '@playwright/test';
|
|
|
5
5
|
import { AnsiDiffFormatter, Cast, Clock, Duration, Serenity, TakeNotes } from '@serenity-js/core';
|
|
6
6
|
import { SceneFinishes, SceneTagged } from '@serenity-js/core/events';
|
|
7
7
|
import { BrowserTag, ExecutionSuccessful, PlatformTag } from '@serenity-js/core/model';
|
|
8
|
+
import { ActorLifecycleManager } from '@serenity-js/core/stage';
|
|
8
9
|
import { BrowseTheWebWithPlaywright, SerenitySelectorEngines } from '@serenity-js/playwright';
|
|
9
10
|
import { CallAnApi } from '@serenity-js/rest';
|
|
10
11
|
import { Photographer, TakePhotosOfFailures } from '@serenity-js/web';
|
|
@@ -29,7 +30,7 @@ export const fixtures = {
|
|
|
29
30
|
],
|
|
30
31
|
interactionTimeout: [
|
|
31
32
|
Duration.ofSeconds(5),
|
|
32
|
-
{ option: true },
|
|
33
|
+
{ scope: 'worker', option: true },
|
|
33
34
|
],
|
|
34
35
|
crew: [
|
|
35
36
|
[Photographer.whoWill(TakePhotosOfFailures)],
|
|
@@ -46,12 +47,15 @@ export const fixtures = {
|
|
|
46
47
|
},
|
|
47
48
|
actors: [
|
|
48
49
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
49
|
-
async ({ axios, extraAbilities, extraContextOptions, page }, use) => {
|
|
50
|
+
async ({ axios, extraAbilities, extraContextOptions, extraWorkerAbilities, page }, use) => {
|
|
50
51
|
await use(Cast.where(actor => {
|
|
51
|
-
const
|
|
52
|
+
const extraTestScopeAbilities = Array.isArray(extraAbilities)
|
|
52
53
|
? extraAbilities
|
|
53
54
|
: extraAbilities(actor.name);
|
|
54
|
-
|
|
55
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
56
|
+
? extraWorkerAbilities
|
|
57
|
+
: extraWorkerAbilities(actor.name);
|
|
58
|
+
return actor.whoCan(BrowseTheWebWithPlaywright.usingPage(page, extraContextOptions), TakeNotes.usingAnEmptyNotepad(), CallAnApi.using(axios), ...extraWorkerScopeAbilities, ...extraTestScopeAbilities);
|
|
55
59
|
}));
|
|
56
60
|
},
|
|
57
61
|
{ option: true },
|
|
@@ -80,12 +84,40 @@ export const fixtures = {
|
|
|
80
84
|
},
|
|
81
85
|
{ scope: 'worker', box: true },
|
|
82
86
|
],
|
|
87
|
+
workerCastInternal: [
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
89
|
+
async ({ extraWorkerAbilities, browser }, use) => {
|
|
90
|
+
const cast = Cast.where(actor => {
|
|
91
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
92
|
+
? extraWorkerAbilities
|
|
93
|
+
: extraWorkerAbilities(actor.name);
|
|
94
|
+
return actor.whoCan(BrowseTheWebWithPlaywright.using(browser), TakeNotes.usingAnEmptyNotepad(), ...extraWorkerScopeAbilities);
|
|
95
|
+
});
|
|
96
|
+
await use(cast);
|
|
97
|
+
},
|
|
98
|
+
{ scope: 'worker', box: true },
|
|
99
|
+
],
|
|
100
|
+
clockInternal: [
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
102
|
+
async ({}, use) => {
|
|
103
|
+
await use(new Clock());
|
|
104
|
+
},
|
|
105
|
+
{ scope: 'worker', box: true },
|
|
106
|
+
],
|
|
107
|
+
actorLifecycleManagerInternal: [
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
109
|
+
async ({ clockInternal, workerCastInternal, interactionTimeout }, use) => {
|
|
110
|
+
const actorLifecycleManager = new ActorLifecycleManager(workerCastInternal, clockInternal, asDuration(interactionTimeout));
|
|
111
|
+
await use(actorLifecycleManager);
|
|
112
|
+
},
|
|
113
|
+
{ scope: 'worker', box: true },
|
|
114
|
+
],
|
|
83
115
|
serenity: [
|
|
84
116
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
85
|
-
async ({ playwright, sceneIdFactoryInternal }, use, workerInfo) => {
|
|
117
|
+
async ({ actorLifecycleManagerInternal, playwright, sceneIdFactoryInternal }, use, workerInfo) => {
|
|
86
118
|
const clock = new Clock();
|
|
87
119
|
const cwd = process.cwd();
|
|
88
|
-
const serenity = new Serenity(clock, cwd, sceneIdFactoryInternal);
|
|
120
|
+
const serenity = new Serenity(clock, cwd, sceneIdFactoryInternal, actorLifecycleManagerInternal);
|
|
89
121
|
const serenitySelectorEngines = new SerenitySelectorEngines();
|
|
90
122
|
await serenitySelectorEngines.ensureRegisteredWith(playwright.selectors);
|
|
91
123
|
await use(serenity);
|
|
@@ -103,9 +135,14 @@ export const fixtures = {
|
|
|
103
135
|
],
|
|
104
136
|
configureWorkerInternal: [
|
|
105
137
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
106
|
-
async ({ diffFormatterInternal, eventStreamWriterInternal, sceneIdFactoryInternal, serenity, browser }, use, info) => {
|
|
138
|
+
async ({ diffFormatterInternal, eventStreamWriterInternal, extraWorkerAbilities, sceneIdFactoryInternal, serenity, browser }, use, info) => {
|
|
107
139
|
serenity.configure({
|
|
108
|
-
actors: Cast.where(actor =>
|
|
140
|
+
actors: Cast.where(actor => {
|
|
141
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
142
|
+
? extraWorkerAbilities
|
|
143
|
+
: extraWorkerAbilities(actor.name);
|
|
144
|
+
return actor.whoCan(BrowseTheWebWithPlaywright.using(browser), TakeNotes.usingAnEmptyNotepad(), ...extraWorkerScopeAbilities);
|
|
145
|
+
}),
|
|
109
146
|
crew: [
|
|
110
147
|
eventStreamWriterInternal,
|
|
111
148
|
],
|
|
@@ -120,7 +157,7 @@ export const fixtures = {
|
|
|
120
157
|
],
|
|
121
158
|
configureScenarioInternal: [
|
|
122
159
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
123
|
-
async ({ actors, browser, browserName, crew, cueTimeout, diffFormatterInternal, eventStreamWriterInternal, interactionTimeout, platform, sceneIdFactoryInternal, serenity }, use, info) => {
|
|
160
|
+
async ({ actorLifecycleManagerInternal, actors, browser, browserName, crew, cueTimeout, diffFormatterInternal, eventStreamWriterInternal, interactionTimeout, platform, sceneIdFactoryInternal, serenity }, use, info) => {
|
|
124
161
|
serenity.configure({
|
|
125
162
|
actors: asCast(actors),
|
|
126
163
|
diffFormatter: diffFormatterInternal,
|
|
@@ -134,9 +171,13 @@ export const fixtures = {
|
|
|
134
171
|
const playwrightSceneId = PlaywrightSceneId.from(info.project.name, { id: info.testId, repeatEachIndex: info.repeatEachIndex }, { retry: info.retry });
|
|
135
172
|
sceneIdFactoryInternal.setTestId(playwrightSceneId.value);
|
|
136
173
|
const sceneId = serenity.assignNewSceneId();
|
|
174
|
+
// Switch focus to foreground at the start of each test
|
|
175
|
+
// This ensures actors created during the test are added to the foreground
|
|
176
|
+
actorLifecycleManagerInternal.switchFocus('foreground');
|
|
137
177
|
serenity.announce(new SceneTagged(sceneId, new PlatformTag(platform.name, platform.version), serenity.currentTime()), new SceneTagged(sceneId, new BrowserTag(browserName, browser.version()), serenity.currentTime()));
|
|
138
178
|
await use(void 0);
|
|
139
179
|
try {
|
|
180
|
+
// SceneFinishes will trigger dismissActorsIn('foreground') and switchFocus('background')
|
|
140
181
|
serenity.announce(new SceneFinishes(sceneId, new ExecutionSuccessful(), serenity.currentTime()));
|
|
141
182
|
await serenity.waitForNextCue();
|
|
142
183
|
}
|
|
@@ -148,7 +189,11 @@ export const fixtures = {
|
|
|
148
189
|
],
|
|
149
190
|
extraAbilities: [
|
|
150
191
|
[],
|
|
151
|
-
{ option: true },
|
|
192
|
+
{ option: true, scope: 'test' },
|
|
193
|
+
],
|
|
194
|
+
extraWorkerAbilities: [
|
|
195
|
+
[],
|
|
196
|
+
{ option: true, scope: 'worker' },
|
|
152
197
|
],
|
|
153
198
|
actorCalled: [
|
|
154
199
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
package/esm/api/test-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-api.js","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-api.js","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,6 +108,8 @@ export interface SerenityFixtures {
|
|
|
108
108
|
* Configures the name given to the default Serenity/JS [`actor`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actor)
|
|
109
109
|
* injected into a [test scenario](https://serenity-js.org/api/playwright-test/function/it/).
|
|
110
110
|
*
|
|
111
|
+
* Defaults to `'Serena'`.
|
|
112
|
+
*
|
|
111
113
|
* #### Learn more
|
|
112
114
|
* - Declaring a Serenity/JS [test scenario](https://serenity-js.org/api/playwright-test/function/it/)
|
|
113
115
|
* - [`SerenityFixtures`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/)
|
|
@@ -155,16 +157,6 @@ export interface SerenityFixtures {
|
|
|
155
157
|
* - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
|
|
156
158
|
*/
|
|
157
159
|
cueTimeout: number | Duration;
|
|
158
|
-
/**
|
|
159
|
-
* The maximum default amount of time allowed for interactions such as [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
160
|
-
* to complete.
|
|
161
|
-
*
|
|
162
|
-
* Defaults to **5 seconds**, can be overridden per interaction.
|
|
163
|
-
*
|
|
164
|
-
* #### Learn more
|
|
165
|
-
* - [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
166
|
-
*/
|
|
167
|
-
interactionTimeout: number | Duration;
|
|
168
160
|
/**
|
|
169
161
|
* Convenience properties to be used with the [ability](https://serenity-js.org/api/core/class/Ability/)
|
|
170
162
|
* to [`BrowseTheWebWithPlaywright`](https://serenity-js.org/api/playwright/class/BrowseTheWebWithPlaywright/),
|
|
@@ -423,14 +415,35 @@ export interface SerenityFixtures {
|
|
|
423
415
|
*/
|
|
424
416
|
export interface SerenityWorkerFixtures {
|
|
425
417
|
/**
|
|
426
|
-
*
|
|
418
|
+
* Information about the operating system platform where the Playwright Test worker process runs.
|
|
419
|
+
*
|
|
420
|
+
* Returns an object with:
|
|
421
|
+
* - `name` - The platform name: `'Windows'`, `'macOS'`, or `'Linux'`
|
|
422
|
+
* - `version` - The OS version string from `os.release()`
|
|
423
|
+
*
|
|
424
|
+
* This information is used to tag test scenarios with platform metadata
|
|
425
|
+
* for reporting purposes.
|
|
427
426
|
*/
|
|
428
427
|
platform: {
|
|
429
428
|
name: string;
|
|
430
429
|
version: string;
|
|
431
430
|
};
|
|
432
431
|
/**
|
|
433
|
-
*
|
|
432
|
+
* The root [`Serenity`](https://serenity-js.org/api/core/class/Serenity/) instance for this worker.
|
|
433
|
+
*
|
|
434
|
+
* Provides access to the Serenity/JS framework for advanced use cases, such as:
|
|
435
|
+
* - Announcing custom [domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
436
|
+
* - Accessing the current time via [`serenity.currentTime()`](https://serenity-js.org/api/core/class/Serenity/#currentTime)
|
|
437
|
+
* - Configuring the framework programmatically
|
|
438
|
+
*
|
|
439
|
+
* :::tip
|
|
440
|
+
* In most test scenarios, you won't need to interact with the `serenity` fixture directly.
|
|
441
|
+
* Instead, use the [`actor`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actor)
|
|
442
|
+
* or [`actorCalled`](https://serenity-js.org/api/playwright-test/interface/SerenityWorkerFixtures/#actorCalled) fixtures.
|
|
443
|
+
* :::
|
|
444
|
+
*
|
|
445
|
+
* #### Learn more
|
|
446
|
+
* - [`Serenity`](https://serenity-js.org/api/core/class/Serenity/)
|
|
434
447
|
*/
|
|
435
448
|
serenity: Serenity;
|
|
436
449
|
/**
|
|
@@ -448,5 +461,68 @@ export interface SerenityWorkerFixtures {
|
|
|
448
461
|
* @param name
|
|
449
462
|
*/
|
|
450
463
|
actorCalled: (name: string) => Actor;
|
|
464
|
+
/**
|
|
465
|
+
* The maximum default amount of time allowed for interactions such as [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
466
|
+
* to complete.
|
|
467
|
+
*
|
|
468
|
+
* Defaults to **5 seconds**, can be overridden per interaction.
|
|
469
|
+
*
|
|
470
|
+
* #### Learn more
|
|
471
|
+
* - [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
472
|
+
*/
|
|
473
|
+
interactionTimeout: number | Duration;
|
|
474
|
+
/**
|
|
475
|
+
* Extra abilities given to actors at the worker scope, on top of the default ones
|
|
476
|
+
* provided by the [`actors`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actors) fixture.
|
|
477
|
+
*
|
|
478
|
+
* Unlike [`extraAbilities`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#extraAbilities),
|
|
479
|
+
* which are test-scoped, `extraWorkerAbilities` persist across all tests within the same worker process.
|
|
480
|
+
* This is useful for abilities that are expensive to create or that maintain state across tests.
|
|
481
|
+
*
|
|
482
|
+
* #### Extra abilities for all actors
|
|
483
|
+
*
|
|
484
|
+
* To give the same set of extra abilities to all the actors, provide an array of
|
|
485
|
+
* [`Ability`](https://serenity-js.org/api/core/class/Ability/) objects:
|
|
486
|
+
*
|
|
487
|
+
* ```typescript
|
|
488
|
+
* // playwright.config.ts
|
|
489
|
+
* import type { SerenityFixtures, SerenityWorkerFixtures } from '@serenity-js/playwright-test'
|
|
490
|
+
* import { defineConfig } from '@playwright/test'
|
|
491
|
+
* import { MySharedAbility } from './MySharedAbility'
|
|
492
|
+
*
|
|
493
|
+
* export default defineConfig<SerenityFixtures, SerenityWorkerFixtures>({
|
|
494
|
+
* use: {
|
|
495
|
+
* extraWorkerAbilities: [ new MySharedAbility() ],
|
|
496
|
+
* },
|
|
497
|
+
* })
|
|
498
|
+
* ```
|
|
499
|
+
*
|
|
500
|
+
* #### Extra abilities for selected actors
|
|
501
|
+
*
|
|
502
|
+
* To give extra abilities only to selected actors, provide a function that maps
|
|
503
|
+
* the actor name to an array of [`Ability`](https://serenity-js.org/api/core/class/Ability/) objects:
|
|
504
|
+
*
|
|
505
|
+
* ```typescript
|
|
506
|
+
* // playwright.config.ts
|
|
507
|
+
* import type { SerenityFixtures, SerenityWorkerFixtures } from '@serenity-js/playwright-test'
|
|
508
|
+
* import { defineConfig } from '@playwright/test'
|
|
509
|
+
* import { MySharedAbility } from './MySharedAbility'
|
|
510
|
+
*
|
|
511
|
+
* export default defineConfig<SerenityFixtures, SerenityWorkerFixtures>({
|
|
512
|
+
* use: {
|
|
513
|
+
* extraWorkerAbilities: (actorName: string) => {
|
|
514
|
+
* return actorName === 'Admin'
|
|
515
|
+
* ? [ new MySharedAbility() ]
|
|
516
|
+
* : [];
|
|
517
|
+
* },
|
|
518
|
+
* },
|
|
519
|
+
* })
|
|
520
|
+
* ```
|
|
521
|
+
*
|
|
522
|
+
* #### Learn more
|
|
523
|
+
* - [`extraAbilities`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#extraAbilities) - test-scoped extra abilities
|
|
524
|
+
* - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
|
|
525
|
+
*/
|
|
526
|
+
extraWorkerAbilities: ((actorName: string) => Ability[]) | Ability[];
|
|
451
527
|
}
|
|
452
528
|
//# sourceMappingURL=serenity-fixtures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serenity-fixtures.d.ts","sourceRoot":"","sources":["../../src/api/serenity-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,sBAAsB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,MAAM,WAAW,gBAAgB;IAE7B
|
|
1
|
+
{"version":3,"file":"serenity-fixtures.d.ts","sourceRoot":"","sources":["../../src/api/serenity-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,sBAAsB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,MAAM,WAAW,gBAAgB;IAE7B;;;;;;;;;OASG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,IAAI,EAAE,KAAK,CAAC,gBAAgB,GAAG,eAAe,GAAG,sBAAsB,CAAC,CAAC;IAEzE;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6DG;IACH,mBAAmB,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC;IAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+EG;IACH,MAAM,EAAE,IAAI,CAAC;IAEb;;;;;;;;;;OAUG;IACH,KAAK,EAAE,KAAK,CAAC;IAEb;;;;;;;;;OASG;IACH,KAAK,EAAE,aAAa,GAAG,0BAA0B,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;;;;;OASG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5C;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;IAErC;;;;;;;;OAQG;IACH,kBAAkB,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,oBAAoB,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC;CACxE"}
|
package/lib/api/test-api.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Expect, Fixtures, PlaywrightTestArgs, PlaywrightTestOptions, PlaywrightWorkerArgs, PlaywrightWorkerOptions, TestInfo, TestType } from '@playwright/test';
|
|
2
2
|
import type { DiffFormatter } from '@serenity-js/core';
|
|
3
|
+
import { Cast, Clock } from '@serenity-js/core';
|
|
4
|
+
import { ActorLifecycleManager } from '@serenity-js/core/stage';
|
|
3
5
|
import { PlaywrightTestSceneIdFactory } from '../reporter/PlaywrightTestSceneIdFactory.js';
|
|
4
6
|
import type { SerenityFixtures, SerenityWorkerFixtures } from './serenity-fixtures.js';
|
|
5
7
|
import { WorkerEventStreamWriter } from './WorkerEventStreamWriter.js';
|
|
@@ -7,10 +9,13 @@ interface SerenityInternalFixtures {
|
|
|
7
9
|
configureScenarioInternal: void;
|
|
8
10
|
}
|
|
9
11
|
interface SerenityInternalWorkerFixtures {
|
|
12
|
+
clockInternal: Clock;
|
|
10
13
|
configureWorkerInternal: void;
|
|
11
14
|
sceneIdFactoryInternal: PlaywrightTestSceneIdFactory;
|
|
12
15
|
diffFormatterInternal: DiffFormatter;
|
|
13
16
|
eventStreamWriterInternal: WorkerEventStreamWriter;
|
|
17
|
+
workerCastInternal: Cast;
|
|
18
|
+
actorLifecycleManagerInternal: ActorLifecycleManager;
|
|
14
19
|
}
|
|
15
20
|
export declare const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, SerenityWorkerFixtures & SerenityInternalWorkerFixtures, PlaywrightTestArgs & PlaywrightTestOptions, PlaywrightWorkerArgs & PlaywrightWorkerOptions>;
|
|
16
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,QAAQ,EACR,QAAQ,EAEX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":"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"}
|
package/lib/api/test-api.js
CHANGED
|
@@ -12,6 +12,7 @@ const test_1 = require("@playwright/test");
|
|
|
12
12
|
const core_1 = require("@serenity-js/core");
|
|
13
13
|
const events_1 = require("@serenity-js/core/events");
|
|
14
14
|
const model_1 = require("@serenity-js/core/model");
|
|
15
|
+
const stage_1 = require("@serenity-js/core/stage");
|
|
15
16
|
const playwright_1 = require("@serenity-js/playwright");
|
|
16
17
|
const rest_1 = require("@serenity-js/rest");
|
|
17
18
|
const web_1 = require("@serenity-js/web");
|
|
@@ -36,7 +37,7 @@ exports.fixtures = {
|
|
|
36
37
|
],
|
|
37
38
|
interactionTimeout: [
|
|
38
39
|
core_1.Duration.ofSeconds(5),
|
|
39
|
-
{ option: true },
|
|
40
|
+
{ scope: 'worker', option: true },
|
|
40
41
|
],
|
|
41
42
|
crew: [
|
|
42
43
|
[web_1.Photographer.whoWill(web_1.TakePhotosOfFailures)],
|
|
@@ -53,12 +54,15 @@ exports.fixtures = {
|
|
|
53
54
|
},
|
|
54
55
|
actors: [
|
|
55
56
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
56
|
-
async ({ axios, extraAbilities, extraContextOptions, page }, use) => {
|
|
57
|
+
async ({ axios, extraAbilities, extraContextOptions, extraWorkerAbilities, page }, use) => {
|
|
57
58
|
await use(core_1.Cast.where(actor => {
|
|
58
|
-
const
|
|
59
|
+
const extraTestScopeAbilities = Array.isArray(extraAbilities)
|
|
59
60
|
? extraAbilities
|
|
60
61
|
: extraAbilities(actor.name);
|
|
61
|
-
|
|
62
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
63
|
+
? extraWorkerAbilities
|
|
64
|
+
: extraWorkerAbilities(actor.name);
|
|
65
|
+
return actor.whoCan(playwright_1.BrowseTheWebWithPlaywright.usingPage(page, extraContextOptions), core_1.TakeNotes.usingAnEmptyNotepad(), rest_1.CallAnApi.using(axios), ...extraWorkerScopeAbilities, ...extraTestScopeAbilities);
|
|
62
66
|
}));
|
|
63
67
|
},
|
|
64
68
|
{ option: true },
|
|
@@ -87,12 +91,40 @@ exports.fixtures = {
|
|
|
87
91
|
},
|
|
88
92
|
{ scope: 'worker', box: true },
|
|
89
93
|
],
|
|
94
|
+
workerCastInternal: [
|
|
95
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
96
|
+
async ({ extraWorkerAbilities, browser }, use) => {
|
|
97
|
+
const cast = core_1.Cast.where(actor => {
|
|
98
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
99
|
+
? extraWorkerAbilities
|
|
100
|
+
: extraWorkerAbilities(actor.name);
|
|
101
|
+
return actor.whoCan(playwright_1.BrowseTheWebWithPlaywright.using(browser), core_1.TakeNotes.usingAnEmptyNotepad(), ...extraWorkerScopeAbilities);
|
|
102
|
+
});
|
|
103
|
+
await use(cast);
|
|
104
|
+
},
|
|
105
|
+
{ scope: 'worker', box: true },
|
|
106
|
+
],
|
|
107
|
+
clockInternal: [
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
109
|
+
async ({}, use) => {
|
|
110
|
+
await use(new core_1.Clock());
|
|
111
|
+
},
|
|
112
|
+
{ scope: 'worker', box: true },
|
|
113
|
+
],
|
|
114
|
+
actorLifecycleManagerInternal: [
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
116
|
+
async ({ clockInternal, workerCastInternal, interactionTimeout }, use) => {
|
|
117
|
+
const actorLifecycleManager = new stage_1.ActorLifecycleManager(workerCastInternal, clockInternal, asDuration(interactionTimeout));
|
|
118
|
+
await use(actorLifecycleManager);
|
|
119
|
+
},
|
|
120
|
+
{ scope: 'worker', box: true },
|
|
121
|
+
],
|
|
90
122
|
serenity: [
|
|
91
123
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
92
|
-
async ({ playwright, sceneIdFactoryInternal }, use, workerInfo) => {
|
|
124
|
+
async ({ actorLifecycleManagerInternal, playwright, sceneIdFactoryInternal }, use, workerInfo) => {
|
|
93
125
|
const clock = new core_1.Clock();
|
|
94
126
|
const cwd = node_process_1.default.cwd();
|
|
95
|
-
const serenity = new core_1.Serenity(clock, cwd, sceneIdFactoryInternal);
|
|
127
|
+
const serenity = new core_1.Serenity(clock, cwd, sceneIdFactoryInternal, actorLifecycleManagerInternal);
|
|
96
128
|
const serenitySelectorEngines = new playwright_1.SerenitySelectorEngines();
|
|
97
129
|
await serenitySelectorEngines.ensureRegisteredWith(playwright.selectors);
|
|
98
130
|
await use(serenity);
|
|
@@ -110,9 +142,14 @@ exports.fixtures = {
|
|
|
110
142
|
],
|
|
111
143
|
configureWorkerInternal: [
|
|
112
144
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
113
|
-
async ({ diffFormatterInternal, eventStreamWriterInternal, sceneIdFactoryInternal, serenity, browser }, use, info) => {
|
|
145
|
+
async ({ diffFormatterInternal, eventStreamWriterInternal, extraWorkerAbilities, sceneIdFactoryInternal, serenity, browser }, use, info) => {
|
|
114
146
|
serenity.configure({
|
|
115
|
-
actors: core_1.Cast.where(actor =>
|
|
147
|
+
actors: core_1.Cast.where(actor => {
|
|
148
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
149
|
+
? extraWorkerAbilities
|
|
150
|
+
: extraWorkerAbilities(actor.name);
|
|
151
|
+
return actor.whoCan(playwright_1.BrowseTheWebWithPlaywright.using(browser), core_1.TakeNotes.usingAnEmptyNotepad(), ...extraWorkerScopeAbilities);
|
|
152
|
+
}),
|
|
116
153
|
crew: [
|
|
117
154
|
eventStreamWriterInternal,
|
|
118
155
|
],
|
|
@@ -127,7 +164,7 @@ exports.fixtures = {
|
|
|
127
164
|
],
|
|
128
165
|
configureScenarioInternal: [
|
|
129
166
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
130
|
-
async ({ actors, browser, browserName, crew, cueTimeout, diffFormatterInternal, eventStreamWriterInternal, interactionTimeout, platform, sceneIdFactoryInternal, serenity }, use, info) => {
|
|
167
|
+
async ({ actorLifecycleManagerInternal, actors, browser, browserName, crew, cueTimeout, diffFormatterInternal, eventStreamWriterInternal, interactionTimeout, platform, sceneIdFactoryInternal, serenity }, use, info) => {
|
|
131
168
|
serenity.configure({
|
|
132
169
|
actors: asCast(actors),
|
|
133
170
|
diffFormatter: diffFormatterInternal,
|
|
@@ -141,9 +178,13 @@ exports.fixtures = {
|
|
|
141
178
|
const playwrightSceneId = index_js_1.PlaywrightSceneId.from(info.project.name, { id: info.testId, repeatEachIndex: info.repeatEachIndex }, { retry: info.retry });
|
|
142
179
|
sceneIdFactoryInternal.setTestId(playwrightSceneId.value);
|
|
143
180
|
const sceneId = serenity.assignNewSceneId();
|
|
181
|
+
// Switch focus to foreground at the start of each test
|
|
182
|
+
// This ensures actors created during the test are added to the foreground
|
|
183
|
+
actorLifecycleManagerInternal.switchFocus('foreground');
|
|
144
184
|
serenity.announce(new events_1.SceneTagged(sceneId, new model_1.PlatformTag(platform.name, platform.version), serenity.currentTime()), new events_1.SceneTagged(sceneId, new model_1.BrowserTag(browserName, browser.version()), serenity.currentTime()));
|
|
145
185
|
await use(void 0);
|
|
146
186
|
try {
|
|
187
|
+
// SceneFinishes will trigger dismissActorsIn('foreground') and switchFocus('background')
|
|
147
188
|
serenity.announce(new events_1.SceneFinishes(sceneId, new model_1.ExecutionSuccessful(), serenity.currentTime()));
|
|
148
189
|
await serenity.waitForNextCue();
|
|
149
190
|
}
|
|
@@ -155,7 +196,11 @@ exports.fixtures = {
|
|
|
155
196
|
],
|
|
156
197
|
extraAbilities: [
|
|
157
198
|
[],
|
|
158
|
-
{ option: true },
|
|
199
|
+
{ option: true, scope: 'test' },
|
|
200
|
+
],
|
|
201
|
+
extraWorkerAbilities: [
|
|
202
|
+
[],
|
|
203
|
+
{ option: true, scope: 'worker' },
|
|
159
204
|
],
|
|
160
205
|
actorCalled: [
|
|
161
206
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
package/lib/api/test-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-api.js","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"test-api.js","sourceRoot":"","sources":["../../src/api/test-api.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/playwright-test",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.43.0",
|
|
4
4
|
"description": "Serenity/JS test runner adapter for Playwright Test, combining Playwright's developer experience with the advanced reporting and automation capabilities of Serenity/JS",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -22,39 +22,74 @@
|
|
|
22
22
|
"module": "./esm/index.js",
|
|
23
23
|
"exports": {
|
|
24
24
|
".": {
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
"import": {
|
|
26
|
+
"types": "./esm/index.d.ts",
|
|
27
|
+
"default": "./esm/index.js"
|
|
28
|
+
},
|
|
29
|
+
"require": {
|
|
30
|
+
"types": "./lib/index.d.ts",
|
|
31
|
+
"default": "./lib/index.js"
|
|
32
|
+
}
|
|
28
33
|
},
|
|
29
34
|
"./events": {
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
"import": {
|
|
36
|
+
"types": "./esm/events/index.d.ts",
|
|
37
|
+
"default": "./esm/events/index.js"
|
|
38
|
+
},
|
|
39
|
+
"require": {
|
|
40
|
+
"types": "./lib/events/index.d.ts",
|
|
41
|
+
"default": "./lib/events/index.js"
|
|
42
|
+
}
|
|
33
43
|
},
|
|
34
44
|
"./reporter": {
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
45
|
+
"import": {
|
|
46
|
+
"types": "./esm/reporter/index.d.ts",
|
|
47
|
+
"default": "./esm/reporter/index.js"
|
|
48
|
+
},
|
|
49
|
+
"require": {
|
|
50
|
+
"types": "./lib/reporter/index.d.ts",
|
|
51
|
+
"default": "./lib/reporter/index.js"
|
|
52
|
+
}
|
|
38
53
|
},
|
|
39
54
|
"./api": {
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
55
|
+
"import": {
|
|
56
|
+
"types": "./esm/api/index.d.ts",
|
|
57
|
+
"default": "./esm/api/index.js"
|
|
58
|
+
},
|
|
59
|
+
"require": {
|
|
60
|
+
"types": "./lib/api/index.d.ts",
|
|
61
|
+
"default": "./lib/api/index.js"
|
|
62
|
+
}
|
|
43
63
|
},
|
|
44
64
|
"./lib/events": {
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
65
|
+
"import": {
|
|
66
|
+
"types": "./esm/events/index.d.ts",
|
|
67
|
+
"default": "./esm/events/index.js"
|
|
68
|
+
},
|
|
69
|
+
"require": {
|
|
70
|
+
"types": "./lib/events/index.d.ts",
|
|
71
|
+
"default": "./lib/events/index.js"
|
|
72
|
+
}
|
|
48
73
|
},
|
|
49
74
|
"./lib/reporter": {
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
75
|
+
"import": {
|
|
76
|
+
"types": "./esm/reporter/index.d.ts",
|
|
77
|
+
"default": "./esm/reporter/index.js"
|
|
78
|
+
},
|
|
79
|
+
"require": {
|
|
80
|
+
"types": "./lib/reporter/index.d.ts",
|
|
81
|
+
"default": "./lib/reporter/index.js"
|
|
82
|
+
}
|
|
53
83
|
},
|
|
54
84
|
"./lib/api": {
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
85
|
+
"import": {
|
|
86
|
+
"types": "./esm/api/index.d.ts",
|
|
87
|
+
"default": "./esm/api/index.js"
|
|
88
|
+
},
|
|
89
|
+
"require": {
|
|
90
|
+
"types": "./lib/api/index.d.ts",
|
|
91
|
+
"default": "./lib/api/index.js"
|
|
92
|
+
}
|
|
58
93
|
},
|
|
59
94
|
"./lib/*.js": "./lib/*.js",
|
|
60
95
|
"./lib/*": "./lib/*",
|
|
@@ -107,11 +142,11 @@
|
|
|
107
142
|
"node": "^20 || ^22 || ^24"
|
|
108
143
|
},
|
|
109
144
|
"dependencies": {
|
|
110
|
-
"@serenity-js/core": "3.
|
|
111
|
-
"@serenity-js/playwright": "3.
|
|
112
|
-
"@serenity-js/rest": "3.
|
|
113
|
-
"@serenity-js/web": "3.
|
|
114
|
-
"axios": "1.
|
|
145
|
+
"@serenity-js/core": "3.43.0",
|
|
146
|
+
"@serenity-js/playwright": "3.43.0",
|
|
147
|
+
"@serenity-js/rest": "3.43.0",
|
|
148
|
+
"@serenity-js/web": "3.43.0",
|
|
149
|
+
"axios": "1.16.0",
|
|
115
150
|
"deepmerge": "4.3.1",
|
|
116
151
|
"tiny-types": "2.0.5"
|
|
117
152
|
},
|
|
@@ -129,5 +164,5 @@
|
|
|
129
164
|
"ts-node": "10.9.2",
|
|
130
165
|
"typescript": "5.9.3"
|
|
131
166
|
},
|
|
132
|
-
"gitHead": "
|
|
167
|
+
"gitHead": "96ffb7ecba111082c92d7b107fef007d9f56bb83"
|
|
133
168
|
}
|
|
@@ -119,6 +119,8 @@ export interface SerenityFixtures {
|
|
|
119
119
|
* Configures the name given to the default Serenity/JS [`actor`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actor)
|
|
120
120
|
* injected into a [test scenario](https://serenity-js.org/api/playwright-test/function/it/).
|
|
121
121
|
*
|
|
122
|
+
* Defaults to `'Serena'`.
|
|
123
|
+
*
|
|
122
124
|
* #### Learn more
|
|
123
125
|
* - Declaring a Serenity/JS [test scenario](https://serenity-js.org/api/playwright-test/function/it/)
|
|
124
126
|
* - [`SerenityFixtures`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/)
|
|
@@ -169,17 +171,6 @@ export interface SerenityFixtures {
|
|
|
169
171
|
*/
|
|
170
172
|
cueTimeout: number | Duration;
|
|
171
173
|
|
|
172
|
-
/**
|
|
173
|
-
* The maximum default amount of time allowed for interactions such as [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
174
|
-
* to complete.
|
|
175
|
-
*
|
|
176
|
-
* Defaults to **5 seconds**, can be overridden per interaction.
|
|
177
|
-
*
|
|
178
|
-
* #### Learn more
|
|
179
|
-
* - [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
180
|
-
*/
|
|
181
|
-
interactionTimeout: number | Duration;
|
|
182
|
-
|
|
183
174
|
/**
|
|
184
175
|
* Convenience properties to be used with the [ability](https://serenity-js.org/api/core/class/Ability/)
|
|
185
176
|
* to [`BrowseTheWebWithPlaywright`](https://serenity-js.org/api/playwright/class/BrowseTheWebWithPlaywright/),
|
|
@@ -443,12 +434,33 @@ export interface SerenityFixtures {
|
|
|
443
434
|
*/
|
|
444
435
|
export interface SerenityWorkerFixtures {
|
|
445
436
|
/**
|
|
446
|
-
*
|
|
437
|
+
* Information about the operating system platform where the Playwright Test worker process runs.
|
|
438
|
+
*
|
|
439
|
+
* Returns an object with:
|
|
440
|
+
* - `name` - The platform name: `'Windows'`, `'macOS'`, or `'Linux'`
|
|
441
|
+
* - `version` - The OS version string from `os.release()`
|
|
442
|
+
*
|
|
443
|
+
* This information is used to tag test scenarios with platform metadata
|
|
444
|
+
* for reporting purposes.
|
|
447
445
|
*/
|
|
448
446
|
platform: { name: string, version: string };
|
|
449
447
|
|
|
450
448
|
/**
|
|
451
|
-
*
|
|
449
|
+
* The root [`Serenity`](https://serenity-js.org/api/core/class/Serenity/) instance for this worker.
|
|
450
|
+
*
|
|
451
|
+
* Provides access to the Serenity/JS framework for advanced use cases, such as:
|
|
452
|
+
* - Announcing custom [domain events](https://serenity-js.org/api/core-events/class/DomainEvent/)
|
|
453
|
+
* - Accessing the current time via [`serenity.currentTime()`](https://serenity-js.org/api/core/class/Serenity/#currentTime)
|
|
454
|
+
* - Configuring the framework programmatically
|
|
455
|
+
*
|
|
456
|
+
* :::tip
|
|
457
|
+
* In most test scenarios, you won't need to interact with the `serenity` fixture directly.
|
|
458
|
+
* Instead, use the [`actor`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actor)
|
|
459
|
+
* or [`actorCalled`](https://serenity-js.org/api/playwright-test/interface/SerenityWorkerFixtures/#actorCalled) fixtures.
|
|
460
|
+
* :::
|
|
461
|
+
*
|
|
462
|
+
* #### Learn more
|
|
463
|
+
* - [`Serenity`](https://serenity-js.org/api/core/class/Serenity/)
|
|
452
464
|
*/
|
|
453
465
|
serenity: Serenity;
|
|
454
466
|
|
|
@@ -467,5 +479,70 @@ export interface SerenityWorkerFixtures {
|
|
|
467
479
|
* @param name
|
|
468
480
|
*/
|
|
469
481
|
actorCalled: (name: string) => Actor;
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* The maximum default amount of time allowed for interactions such as [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
485
|
+
* to complete.
|
|
486
|
+
*
|
|
487
|
+
* Defaults to **5 seconds**, can be overridden per interaction.
|
|
488
|
+
*
|
|
489
|
+
* #### Learn more
|
|
490
|
+
* - [`Wait.until`](https://serenity-js.org/api/core/class/Wait/#until)
|
|
491
|
+
*/
|
|
492
|
+
interactionTimeout: number | Duration;
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Extra abilities given to actors at the worker scope, on top of the default ones
|
|
496
|
+
* provided by the [`actors`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#actors) fixture.
|
|
497
|
+
*
|
|
498
|
+
* Unlike [`extraAbilities`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#extraAbilities),
|
|
499
|
+
* which are test-scoped, `extraWorkerAbilities` persist across all tests within the same worker process.
|
|
500
|
+
* This is useful for abilities that are expensive to create or that maintain state across tests.
|
|
501
|
+
*
|
|
502
|
+
* #### Extra abilities for all actors
|
|
503
|
+
*
|
|
504
|
+
* To give the same set of extra abilities to all the actors, provide an array of
|
|
505
|
+
* [`Ability`](https://serenity-js.org/api/core/class/Ability/) objects:
|
|
506
|
+
*
|
|
507
|
+
* ```typescript
|
|
508
|
+
* // playwright.config.ts
|
|
509
|
+
* import type { SerenityFixtures, SerenityWorkerFixtures } from '@serenity-js/playwright-test'
|
|
510
|
+
* import { defineConfig } from '@playwright/test'
|
|
511
|
+
* import { MySharedAbility } from './MySharedAbility'
|
|
512
|
+
*
|
|
513
|
+
* export default defineConfig<SerenityFixtures, SerenityWorkerFixtures>({
|
|
514
|
+
* use: {
|
|
515
|
+
* extraWorkerAbilities: [ new MySharedAbility() ],
|
|
516
|
+
* },
|
|
517
|
+
* })
|
|
518
|
+
* ```
|
|
519
|
+
*
|
|
520
|
+
* #### Extra abilities for selected actors
|
|
521
|
+
*
|
|
522
|
+
* To give extra abilities only to selected actors, provide a function that maps
|
|
523
|
+
* the actor name to an array of [`Ability`](https://serenity-js.org/api/core/class/Ability/) objects:
|
|
524
|
+
*
|
|
525
|
+
* ```typescript
|
|
526
|
+
* // playwright.config.ts
|
|
527
|
+
* import type { SerenityFixtures, SerenityWorkerFixtures } from '@serenity-js/playwright-test'
|
|
528
|
+
* import { defineConfig } from '@playwright/test'
|
|
529
|
+
* import { MySharedAbility } from './MySharedAbility'
|
|
530
|
+
*
|
|
531
|
+
* export default defineConfig<SerenityFixtures, SerenityWorkerFixtures>({
|
|
532
|
+
* use: {
|
|
533
|
+
* extraWorkerAbilities: (actorName: string) => {
|
|
534
|
+
* return actorName === 'Admin'
|
|
535
|
+
* ? [ new MySharedAbility() ]
|
|
536
|
+
* : [];
|
|
537
|
+
* },
|
|
538
|
+
* },
|
|
539
|
+
* })
|
|
540
|
+
* ```
|
|
541
|
+
*
|
|
542
|
+
* #### Learn more
|
|
543
|
+
* - [`extraAbilities`](https://serenity-js.org/api/playwright-test/interface/SerenityFixtures/#extraAbilities) - test-scoped extra abilities
|
|
544
|
+
* - [`Ability`](https://serenity-js.org/api/core/class/Ability/)
|
|
545
|
+
*/
|
|
546
|
+
extraWorkerAbilities: ((actorName: string) => Ability[]) | Ability[];
|
|
470
547
|
}
|
|
471
548
|
|
package/src/api/test-api.ts
CHANGED
|
@@ -18,6 +18,7 @@ import type { DiffFormatter } from '@serenity-js/core';
|
|
|
18
18
|
import { AnsiDiffFormatter, Cast, Clock, Duration, Serenity, TakeNotes } from '@serenity-js/core';
|
|
19
19
|
import { SceneFinishes, SceneTagged } from '@serenity-js/core/events';
|
|
20
20
|
import { BrowserTag, ExecutionSuccessful, PlatformTag } from '@serenity-js/core/model';
|
|
21
|
+
import { ActorLifecycleManager } from '@serenity-js/core/stage';
|
|
21
22
|
import { BrowseTheWebWithPlaywright, SerenitySelectorEngines } from '@serenity-js/playwright';
|
|
22
23
|
import { CallAnApi } from '@serenity-js/rest';
|
|
23
24
|
import { Photographer, TakePhotosOfFailures } from '@serenity-js/web';
|
|
@@ -35,10 +36,13 @@ interface SerenityInternalFixtures {
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
interface SerenityInternalWorkerFixtures {
|
|
39
|
+
clockInternal: Clock;
|
|
38
40
|
configureWorkerInternal: void;
|
|
39
41
|
sceneIdFactoryInternal: PlaywrightTestSceneIdFactory;
|
|
40
42
|
diffFormatterInternal: DiffFormatter;
|
|
41
43
|
eventStreamWriterInternal: WorkerEventStreamWriter;
|
|
44
|
+
workerCastInternal: Cast;
|
|
45
|
+
actorLifecycleManagerInternal: ActorLifecycleManager;
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, SerenityWorkerFixtures & SerenityInternalWorkerFixtures, PlaywrightTestArgs & PlaywrightTestOptions, PlaywrightWorkerArgs & PlaywrightWorkerOptions> = {
|
|
@@ -60,7 +64,7 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
60
64
|
|
|
61
65
|
interactionTimeout: [
|
|
62
66
|
Duration.ofSeconds(5),
|
|
63
|
-
{ option: true },
|
|
67
|
+
{ scope: 'worker', option: true },
|
|
64
68
|
],
|
|
65
69
|
|
|
66
70
|
crew: [
|
|
@@ -80,18 +84,23 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
80
84
|
|
|
81
85
|
actors: [
|
|
82
86
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
83
|
-
async ({ axios, extraAbilities, extraContextOptions, page }, use): Promise<void> => {
|
|
87
|
+
async ({ axios, extraAbilities, extraContextOptions, extraWorkerAbilities, page }, use): Promise<void> => {
|
|
84
88
|
await use(Cast.where(actor => {
|
|
85
89
|
|
|
86
|
-
const
|
|
90
|
+
const extraTestScopeAbilities = Array.isArray(extraAbilities)
|
|
87
91
|
? extraAbilities
|
|
88
92
|
: extraAbilities(actor.name);
|
|
89
93
|
|
|
94
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
95
|
+
? extraWorkerAbilities
|
|
96
|
+
: extraWorkerAbilities(actor.name);
|
|
97
|
+
|
|
90
98
|
return actor.whoCan(
|
|
91
99
|
BrowseTheWebWithPlaywright.usingPage(page, extraContextOptions),
|
|
92
100
|
TakeNotes.usingAnEmptyNotepad(),
|
|
93
101
|
CallAnApi.using(axios),
|
|
94
|
-
...
|
|
102
|
+
...extraWorkerScopeAbilities,
|
|
103
|
+
...extraTestScopeAbilities,
|
|
95
104
|
);
|
|
96
105
|
}));
|
|
97
106
|
},
|
|
@@ -127,12 +136,54 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
127
136
|
{ scope: 'worker', box: true },
|
|
128
137
|
],
|
|
129
138
|
|
|
139
|
+
workerCastInternal: [
|
|
140
|
+
|
|
141
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
142
|
+
async ({ extraWorkerAbilities, browser }, use) => {
|
|
143
|
+
const cast = Cast.where(actor => {
|
|
144
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
145
|
+
? extraWorkerAbilities
|
|
146
|
+
: extraWorkerAbilities(actor.name);
|
|
147
|
+
|
|
148
|
+
return actor.whoCan(
|
|
149
|
+
BrowseTheWebWithPlaywright.using(browser),
|
|
150
|
+
TakeNotes.usingAnEmptyNotepad(),
|
|
151
|
+
...extraWorkerScopeAbilities,
|
|
152
|
+
// todo: consider making `axios` a fixture and injecting an ability to CallAnApi
|
|
153
|
+
);
|
|
154
|
+
});
|
|
155
|
+
await use(cast);
|
|
156
|
+
},
|
|
157
|
+
{ scope: 'worker', box: true },
|
|
158
|
+
],
|
|
159
|
+
|
|
160
|
+
clockInternal: [
|
|
161
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
162
|
+
async ({}, use) => {
|
|
163
|
+
await use(new Clock());
|
|
164
|
+
},
|
|
165
|
+
{ scope: 'worker', box: true },
|
|
166
|
+
],
|
|
167
|
+
|
|
168
|
+
actorLifecycleManagerInternal: [
|
|
169
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
170
|
+
async ({ clockInternal, workerCastInternal, interactionTimeout }, use) => {
|
|
171
|
+
const actorLifecycleManager = new ActorLifecycleManager(
|
|
172
|
+
workerCastInternal,
|
|
173
|
+
clockInternal,
|
|
174
|
+
asDuration(interactionTimeout),
|
|
175
|
+
);
|
|
176
|
+
await use(actorLifecycleManager);
|
|
177
|
+
},
|
|
178
|
+
{ scope: 'worker', box: true },
|
|
179
|
+
],
|
|
180
|
+
|
|
130
181
|
serenity: [
|
|
131
182
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
132
|
-
async ({ playwright, sceneIdFactoryInternal }, use, workerInfo) => {
|
|
183
|
+
async ({ actorLifecycleManagerInternal, playwright, sceneIdFactoryInternal }, use, workerInfo) => {
|
|
133
184
|
const clock = new Clock();
|
|
134
185
|
const cwd = process.cwd();
|
|
135
|
-
const serenity = new Serenity(clock, cwd, sceneIdFactoryInternal);
|
|
186
|
+
const serenity = new Serenity(clock, cwd, sceneIdFactoryInternal, actorLifecycleManagerInternal);
|
|
136
187
|
|
|
137
188
|
const serenitySelectorEngines = new SerenitySelectorEngines();
|
|
138
189
|
await serenitySelectorEngines.ensureRegisteredWith(playwright.selectors);
|
|
@@ -160,14 +211,21 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
160
211
|
|
|
161
212
|
configureWorkerInternal: [
|
|
162
213
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
163
|
-
async ({ diffFormatterInternal, eventStreamWriterInternal, sceneIdFactoryInternal, serenity, browser }, use, info: WorkerInfo) => {
|
|
214
|
+
async ({ diffFormatterInternal, eventStreamWriterInternal, extraWorkerAbilities, sceneIdFactoryInternal, serenity, browser }, use, info: WorkerInfo) => {
|
|
164
215
|
|
|
165
216
|
serenity.configure({
|
|
166
|
-
actors: Cast.where(actor =>
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
217
|
+
actors: Cast.where(actor => {
|
|
218
|
+
const extraWorkerScopeAbilities = Array.isArray(extraWorkerAbilities)
|
|
219
|
+
? extraWorkerAbilities
|
|
220
|
+
: extraWorkerAbilities(actor.name);
|
|
221
|
+
|
|
222
|
+
return actor.whoCan(
|
|
223
|
+
BrowseTheWebWithPlaywright.using(browser),
|
|
224
|
+
TakeNotes.usingAnEmptyNotepad(),
|
|
225
|
+
...extraWorkerScopeAbilities,
|
|
226
|
+
// todo: consider making `axios` a fixture and injecting an ability to CallAnApi
|
|
227
|
+
);
|
|
228
|
+
}),
|
|
171
229
|
crew: [
|
|
172
230
|
eventStreamWriterInternal,
|
|
173
231
|
],
|
|
@@ -186,7 +244,7 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
186
244
|
|
|
187
245
|
configureScenarioInternal: [
|
|
188
246
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
189
|
-
async ({ actors, browser, browserName, crew, cueTimeout, diffFormatterInternal, eventStreamWriterInternal, interactionTimeout, platform, sceneIdFactoryInternal, serenity }, use, info: TestInfo) => {
|
|
247
|
+
async ({ actorLifecycleManagerInternal, actors, browser, browserName, crew, cueTimeout, diffFormatterInternal, eventStreamWriterInternal, interactionTimeout, platform, sceneIdFactoryInternal, serenity }, use, info: TestInfo) => {
|
|
190
248
|
|
|
191
249
|
serenity.configure({
|
|
192
250
|
actors: asCast(actors),
|
|
@@ -208,6 +266,10 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
208
266
|
sceneIdFactoryInternal.setTestId(playwrightSceneId.value);
|
|
209
267
|
const sceneId = serenity.assignNewSceneId();
|
|
210
268
|
|
|
269
|
+
// Switch focus to foreground at the start of each test
|
|
270
|
+
// This ensures actors created during the test are added to the foreground
|
|
271
|
+
actorLifecycleManagerInternal.switchFocus('foreground');
|
|
272
|
+
|
|
211
273
|
serenity.announce(
|
|
212
274
|
new SceneTagged(
|
|
213
275
|
sceneId,
|
|
@@ -224,6 +286,7 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
224
286
|
await use(void 0);
|
|
225
287
|
|
|
226
288
|
try {
|
|
289
|
+
// SceneFinishes will trigger dismissActorsIn('foreground') and switchFocus('background')
|
|
227
290
|
serenity.announce(
|
|
228
291
|
new SceneFinishes(sceneId, new ExecutionSuccessful(), serenity.currentTime()),
|
|
229
292
|
);
|
|
@@ -239,7 +302,12 @@ export const fixtures: Fixtures<SerenityFixtures & SerenityInternalFixtures, Ser
|
|
|
239
302
|
|
|
240
303
|
extraAbilities: [
|
|
241
304
|
[],
|
|
242
|
-
{ option: true },
|
|
305
|
+
{ option: true, scope: 'test' },
|
|
306
|
+
],
|
|
307
|
+
|
|
308
|
+
extraWorkerAbilities: [
|
|
309
|
+
[],
|
|
310
|
+
{ option: true, scope: 'worker' },
|
|
243
311
|
],
|
|
244
312
|
|
|
245
313
|
actorCalled: [
|