@serenity-js/playwright 3.14.1 → 3.14.2

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 (24) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.js +1 -1
  3. package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.js.map +1 -1
  4. package/lib/screenplay/models/PlaywrightBrowsingSession.d.ts +4 -2
  5. package/lib/screenplay/models/PlaywrightBrowsingSession.d.ts.map +1 -1
  6. package/lib/screenplay/models/PlaywrightBrowsingSession.js +6 -10
  7. package/lib/screenplay/models/PlaywrightBrowsingSession.js.map +1 -1
  8. package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.d.ts +2 -2
  9. package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.d.ts.map +1 -1
  10. package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.js +10 -6
  11. package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.js.map +1 -1
  12. package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.d.ts +8 -1
  13. package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.d.ts.map +1 -1
  14. package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.js +21 -3
  15. package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.js.map +1 -1
  16. package/lib/screenplay/models/PlaywrightPage.d.ts.map +1 -1
  17. package/lib/screenplay/models/PlaywrightPage.js +10 -2
  18. package/lib/screenplay/models/PlaywrightPage.js.map +1 -1
  19. package/package.json +4 -4
  20. package/src/screenplay/abilities/BrowseTheWebWithPlaywright.ts +1 -1
  21. package/src/screenplay/models/PlaywrightBrowsingSession.ts +7 -15
  22. package/src/screenplay/models/PlaywrightBrowsingSessionWithBrowser.ts +17 -6
  23. package/src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts +28 -3
  24. package/src/screenplay/models/PlaywrightPage.ts +17 -4
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
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.14.2](https://github.com/serenity-js/serenity-js/compare/v3.14.1...v3.14.2) (2023-12-12)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **playwright-test:** fixed switching between multiple pages ([375f3aa](https://github.com/serenity-js/serenity-js/commit/375f3aaac05843b71a88d56ae0f5e4d99522f10e))
12
+ * **playwright:** ignore taking the screenshot if the page is already closed ([fdedeb8](https://github.com/serenity-js/serenity-js/commit/fdedeb8d8ca5fe6406101be930c17ad281a8f26d))
13
+
14
+
15
+
16
+
17
+
6
18
  ## [3.14.1](https://github.com/serenity-js/serenity-js/compare/v3.14.0...v3.14.1) (2023-12-10)
7
19
 
8
20
 
@@ -125,7 +125,7 @@ class BrowseTheWebWithPlaywright extends web_1.BrowseTheWeb {
125
125
  return new BrowseTheWebWithPlaywright(new models_1.PlaywrightBrowsingSessionWithBrowser(browser, options, playwright.selectors));
126
126
  }
127
127
  static usingPage(page, options) {
128
- return new BrowseTheWebWithPlaywright(new models_1.PlaywrightBrowsingSessionWithPage(page, options));
128
+ return new BrowseTheWebWithPlaywright(new models_1.PlaywrightBrowsingSessionWithPage(page, options, playwright.selectors));
129
129
  }
130
130
  /**
131
131
  * Automatically closes any open {@apilink Page|Pages} when the {@apilink SceneFinishes}
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTheWebWithPlaywright.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithPlaywright.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAAgD;AAChD,4DAA8C;AAG9C,sCAGmB;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AACH,MAAa,0BAA2B,SAAQ,kBAAgC;IAE5E,MAAM,CAAC,KAAK,CAAC,OAA2B,EAAE,OAA2B;QACjE,OAAO,IAAI,0BAA0B,CAAC,IAAI,6CAAoC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5H,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAqB,EAAE,OAA2B;QAC/D,OAAO,IAAI,0BAA0B,CAAC,IAAI,0CAAiC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;CACJ;AApBD,gEAoBC"}
1
+ {"version":3,"file":"BrowseTheWebWithPlaywright.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithPlaywright.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0CAAgD;AAChD,4DAA8C;AAG9C,sCAGmB;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AACH,MAAa,0BAA2B,SAAQ,kBAAgC;IAE5E,MAAM,CAAC,KAAK,CAAC,OAA2B,EAAE,OAA2B;QACjE,OAAO,IAAI,0BAA0B,CAAC,IAAI,6CAAoC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5H,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAqB,EAAE,OAA2B;QAC/D,OAAO,IAAI,0BAA0B,CAAC,IAAI,0CAAiC,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;CACJ;AApBD,gEAoBC"}
@@ -2,6 +2,7 @@ import type { BrowserCapabilities } from '@serenity-js/web';
2
2
  import { BrowsingSession, type Cookie, type CookieData } from '@serenity-js/web';
3
3
  import type * as playwright from 'playwright-core';
4
4
  import { type PlaywrightOptions } from '../../PlaywrightOptions';
5
+ import { SerenitySelectorEngines } from '../../selector-engines';
5
6
  import { PlaywrightPage } from '../models';
6
7
  /**
7
8
  * Playwright-specific implementation of {@apilink BrowsingSession}.
@@ -10,8 +11,10 @@ import { PlaywrightPage } from '../models';
10
11
  */
11
12
  export declare abstract class PlaywrightBrowsingSession extends BrowsingSession<PlaywrightPage> {
12
13
  protected readonly browserContextOptions: PlaywrightOptions;
14
+ protected readonly selectors: playwright.Selectors;
15
+ protected readonly serenitySelectorEngines: SerenitySelectorEngines;
13
16
  private currentPlaywrightBrowserContext;
14
- protected constructor(browserContextOptions: PlaywrightOptions);
17
+ protected constructor(browserContextOptions: PlaywrightOptions, selectors: playwright.Selectors);
15
18
  /**
16
19
  * Returns {@apilink BrowserCapabilities|basic meta-data} about the browser associated with this ability.
17
20
  *
@@ -23,7 +26,6 @@ export declare abstract class PlaywrightBrowsingSession extends BrowsingSession<
23
26
  cookie(name: string): Promise<Cookie>;
24
27
  setCookie(cookie: CookieData): Promise<void>;
25
28
  deleteAllCookies(): Promise<void>;
26
- protected registerCurrentPage(): Promise<PlaywrightPage>;
27
29
  protected browserContext(): Promise<playwright.BrowserContext>;
28
30
  protected abstract createBrowserContext(options: PlaywrightOptions): Promise<playwright.BrowserContext>;
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightBrowsingSession.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSession.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAoB,cAAc,EAAE,MAAM,WAAW,CAAC;AAE7D;;;;GAIG;AACH,8BAAsB,yBAA0B,SAAQ,eAAe,CAAC,cAAc,CAAC;IAI7D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,iBAAiB;IAFjF,OAAO,CAAC,+BAA+B,CAA4B;IAEnE,SAAS,aAAgC,qBAAqB,EAAE,iBAAiB;IAIjF;;;;;;OAMG;aACa,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAE7D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;cAKd,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;cAcvD,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;IAsBpE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;CAC1G"}
1
+ {"version":3,"file":"PlaywrightBrowsingSession.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSession.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAoB,cAAc,EAAE,MAAM,WAAW,CAAC;AAE7D;;;;GAIG;AACH,8BAAsB,yBAA0B,SAAQ,eAAe,CAAC,cAAc,CAAC;IAM/E,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,iBAAiB;IAC3D,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS;IALtD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,0BAAiC;IAC3E,OAAO,CAAC,+BAA+B,CAA4B;IAEnE,SAAS,aACc,qBAAqB,EAAE,iBAAiB,EACxC,SAAS,EAAE,UAAU,CAAC,SAAS;IAKtD;;;;;;OAMG;aACa,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAE7D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;cAKvB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;IAuBpE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;CAC1G"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlaywrightBrowsingSession = void 0;
4
4
  const model_1 = require("@serenity-js/core/lib/model");
5
5
  const web_1 = require("@serenity-js/web");
6
+ const selector_engines_1 = require("../../selector-engines");
6
7
  const models_1 = require("../models");
7
8
  /**
8
9
  * Playwright-specific implementation of {@apilink BrowsingSession}.
@@ -11,10 +12,13 @@ const models_1 = require("../models");
11
12
  */
12
13
  class PlaywrightBrowsingSession extends web_1.BrowsingSession {
13
14
  browserContextOptions;
15
+ selectors;
16
+ serenitySelectorEngines = new selector_engines_1.SerenitySelectorEngines();
14
17
  currentPlaywrightBrowserContext;
15
- constructor(browserContextOptions) {
18
+ constructor(browserContextOptions, selectors) {
16
19
  super();
17
20
  this.browserContextOptions = browserContextOptions;
21
+ this.selectors = selectors;
18
22
  }
19
23
  async cookie(name) {
20
24
  const context = await this.browserContext();
@@ -28,17 +32,9 @@ class PlaywrightBrowsingSession extends web_1.BrowsingSession {
28
32
  const context = await this.browserContext();
29
33
  await context.clearCookies();
30
34
  }
31
- async registerCurrentPage() {
32
- const context = await this.browserContext();
33
- await context.newPage();
34
- // calling context.newPage() triggers a callback registered via browserContext(),
35
- // which wraps playwright.Page in PlaywrightPage and adds it to the list of pages
36
- // returned by this.allPages()
37
- const allPages = await this.allPages();
38
- return allPages.at(-1);
39
- }
40
35
  async browserContext() {
41
36
  if (!this.currentPlaywrightBrowserContext) {
37
+ await this.serenitySelectorEngines.ensureRegisteredWith(this.selectors);
42
38
  this.currentPlaywrightBrowserContext = await this.createBrowserContext(this.browserContextOptions);
43
39
  this.currentPlaywrightBrowserContext.on('page', async (page) => {
44
40
  this.register(new models_1.PlaywrightPage(this, page, this.browserContextOptions, model_1.CorrelationId.create()));
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightBrowsingSession.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSession.ts"],"names":[],"mappings":";;;AAAA,uDAA4D;AAE5D,0CAAiF;AAIjF,sCAA6D;AAE7D;;;;GAIG;AACH,MAAsB,yBAA0B,SAAQ,qBAA+B;IAI1C;IAFjC,+BAA+B,CAA4B;IAEnE,YAAyC,qBAAwC;QAC7E,KAAK,EAAE,CAAC;QAD6B,0BAAqB,GAArB,qBAAqB,CAAmB;IAEjF,CAAC;IAWD,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,OAAO,IAAI,yBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAkB;QAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5C,MAAM,OAAO,CAAC,UAAU,CAAC,CAAE,MAAM,CAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC3C,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC;IAEkB,KAAK,CAAC,mBAAmB;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAExB,iFAAiF;QACjF,iFAAiF;QACjF,8BAA8B;QAE9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEtC,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAES,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAE,IAAI,CAAC,+BAA+B,EAAE;YACxC,IAAI,CAAC,+BAA+B,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAEnG,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;gBACzD,IAAI,CAAC,QAAQ,CACT,IAAI,uBAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,qBAAa,CAAC,MAAM,EAAE,CAAC,CACrF,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,qBAAqB,EAAE,wBAAwB,EAAE;gBACtD,IAAI,CAAC,+BAA+B,CAAC,2BAA2B,CAAC,IAAI,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;aAC1H;YAED,IAAI,IAAI,CAAC,qBAAqB,EAAE,cAAc,EAAE;gBAC5C,IAAI,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;aACtG;SACJ;QAED,OAAO,IAAI,CAAC,+BAA+B,CAAC;IAChD,CAAC;CAGJ;AAtED,8DAsEC"}
1
+ {"version":3,"file":"PlaywrightBrowsingSession.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSession.ts"],"names":[],"mappings":";;;AAAA,uDAA4D;AAE5D,0CAAiF;AAIjF,6DAAiE;AACjE,sCAA6D;AAE7D;;;;GAIG;AACH,MAAsB,yBAA0B,SAAQ,qBAA+B;IAM5D;IACA;IALJ,uBAAuB,GAAG,IAAI,0CAAuB,EAAE,CAAC;IACnE,+BAA+B,CAA4B;IAEnE,YACuB,qBAAwC,EACxC,SAA+B;QAElD,KAAK,EAAE,CAAC;QAHW,0BAAqB,GAArB,qBAAqB,CAAmB;QACxC,cAAS,GAAT,SAAS,CAAsB;IAGtD,CAAC;IAWD,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,OAAO,IAAI,yBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAkB;QAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5C,MAAM,OAAO,CAAC,UAAU,CAAC,CAAE,MAAM,CAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC3C,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC;IAES,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAE,IAAI,CAAC,+BAA+B,EAAE;YACxC,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxE,IAAI,CAAC,+BAA+B,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAEnG,IAAI,CAAC,+BAA+B,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;gBACzD,IAAI,CAAC,QAAQ,CACT,IAAI,uBAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,qBAAa,CAAC,MAAM,EAAE,CAAC,CACrF,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,qBAAqB,EAAE,wBAAwB,EAAE;gBACtD,IAAI,CAAC,+BAA+B,CAAC,2BAA2B,CAAC,IAAI,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;aAC1H;YAED,IAAI,IAAI,CAAC,qBAAqB,EAAE,cAAc,EAAE;gBAC5C,IAAI,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;aACtG;SACJ;QAED,OAAO,IAAI,CAAC,+BAA+B,CAAC;IAChD,CAAC;CAGJ;AA7DD,8DA6DC"}
@@ -2,15 +2,15 @@ import type { BrowserCapabilities } from '@serenity-js/web';
2
2
  import type * as playwright from 'playwright-core';
3
3
  import type { PlaywrightOptions } from '../../PlaywrightOptions';
4
4
  import { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession';
5
+ import type { PlaywrightPage } from './PlaywrightPage';
5
6
  /**
6
7
  * @group Models
7
8
  */
8
9
  export declare class PlaywrightBrowsingSessionWithBrowser extends PlaywrightBrowsingSession {
9
10
  protected readonly browser: playwright.Browser;
10
- private readonly selectors;
11
- private readonly serenitySelectorEngines;
12
11
  constructor(browser: playwright.Browser, browserContextOptions: PlaywrightOptions, selectors: playwright.Selectors);
13
12
  protected createBrowserContext(options: PlaywrightOptions): Promise<playwright.BrowserContext>;
13
+ protected registerCurrentPage(): Promise<PlaywrightPage>;
14
14
  closeAllPages(): Promise<void>;
15
15
  browserCapabilities(): Promise<BrowserCapabilities>;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightBrowsingSessionWithBrowser.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;GAEG;AACH,qBAAa,oCAAqC,SAAQ,yBAAyB;IAI3E,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL9B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiC;gBAGlD,OAAO,EAAE,UAAU,CAAC,OAAO,EAC9C,qBAAqB,EAAE,iBAAiB,EACvB,SAAS,EAAE,UAAU,CAAC,SAAS;cAK3B,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;IAM9F,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAOrE"}
1
+ {"version":3,"file":"PlaywrightBrowsingSessionWithBrowser.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,qBAAa,oCAAqC,SAAQ,yBAAyB;IAG3E,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAA3B,OAAO,EAAE,UAAU,CAAC,OAAO,EAC9C,qBAAqB,EAAE,iBAAiB,EACxC,SAAS,EAAE,UAAU,CAAC,SAAS;cAKV,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;cAIpF,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;IAcxD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAOrE"}
@@ -1,24 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlaywrightBrowsingSessionWithBrowser = void 0;
4
- const selector_engines_1 = require("../../selector-engines");
5
4
  const PlaywrightBrowsingSession_1 = require("./PlaywrightBrowsingSession");
6
5
  /**
7
6
  * @group Models
8
7
  */
9
8
  class PlaywrightBrowsingSessionWithBrowser extends PlaywrightBrowsingSession_1.PlaywrightBrowsingSession {
10
9
  browser;
11
- selectors;
12
- serenitySelectorEngines = new selector_engines_1.SerenitySelectorEngines();
13
10
  constructor(browser, browserContextOptions, selectors) {
14
- super(browserContextOptions);
11
+ super(browserContextOptions, selectors);
15
12
  this.browser = browser;
16
- this.selectors = selectors;
17
13
  }
18
14
  async createBrowserContext(options) {
19
- await this.serenitySelectorEngines.ensureRegisteredWith(this.selectors);
20
15
  return this.browser.newContext(this.browserContextOptions);
21
16
  }
17
+ async registerCurrentPage() {
18
+ const context = await this.browserContext();
19
+ await context.newPage();
20
+ // calling context.newPage() triggers a callback registered via browserContext(),
21
+ // which wraps playwright.Page in PlaywrightPage and adds it to the list of pages
22
+ // returned by this.allPages()
23
+ const allPages = await this.allPages();
24
+ return allPages.at(-1);
25
+ }
22
26
  async closeAllPages() {
23
27
  await super.closeAllPages();
24
28
  const context = await this.browserContext();
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightBrowsingSessionWithBrowser.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithBrowser.ts"],"names":[],"mappings":";;;AAIA,6DAAiE;AACjE,2EAAwE;AAExE;;GAEG;AACH,MAAa,oCAAqC,SAAQ,qDAAyB;IAIxD;IAEF;IALJ,uBAAuB,GAAG,IAAI,0CAAuB,EAAE,CAAC;IAEzE,YACuB,OAA2B,EAC9C,qBAAwC,EACvB,SAA+B;QAEhD,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAJV,YAAO,GAAP,OAAO,CAAoB;QAE7B,cAAS,GAAT,SAAS,CAAsB;IAGpD,CAAC;IAEkB,KAAK,CAAC,oBAAoB,CAAC,OAA0B;QACpE,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAEQ,KAAK,CAAC,aAAa;QACxB,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEQ,KAAK,CAAC,mBAAmB;QAC9B,OAAO;YACH,WAAW,EAAG,IAAI,CAAC,OAAe,CAAC,YAAY,CAAC,IAAI;YACpD,YAAY,EAAE,OAAO,CAAC,QAAQ;YAC9B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;SACzC,CAAA;IACL,CAAC;CACJ;AA/BD,oFA+BC"}
1
+ {"version":3,"file":"PlaywrightBrowsingSessionWithBrowser.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithBrowser.ts"],"names":[],"mappings":";;;AAIA,2EAAwE;AAGxE;;GAEG;AACH,MAAa,oCAAqC,SAAQ,qDAAyB;IAGxD;IADvB,YACuB,OAA2B,EAC9C,qBAAwC,EACxC,SAA+B;QAE/B,KAAK,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;QAJrB,YAAO,GAAP,OAAO,CAAoB;IAKlD,CAAC;IAEkB,KAAK,CAAC,oBAAoB,CAAC,OAA0B;QACpE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAEkB,KAAK,CAAC,mBAAmB;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAExB,iFAAiF;QACjF,iFAAiF;QACjF,8BAA8B;QAE9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEtC,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,aAAa;QACxB,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEQ,KAAK,CAAC,mBAAmB;QAC9B,OAAO;YACH,WAAW,EAAG,IAAI,CAAC,OAAe,CAAC,YAAY,CAAC,IAAI;YACpD,YAAY,EAAE,OAAO,CAAC,QAAQ;YAC9B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;SACzC,CAAA;IACL,CAAC;CACJ;AA1CD,oFA0CC"}
@@ -2,13 +2,20 @@ import type { BrowserCapabilities } from '@serenity-js/web';
2
2
  import type * as playwright from 'playwright-core';
3
3
  import type { PlaywrightOptions } from '../../PlaywrightOptions';
4
4
  import { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession';
5
+ import { PlaywrightPage } from './PlaywrightPage';
5
6
  /**
6
7
  * @group Models
7
8
  */
8
9
  export declare class PlaywrightBrowsingSessionWithPage extends PlaywrightBrowsingSession {
9
10
  protected readonly page: playwright.Page;
10
- constructor(page: playwright.Page, browserContextOptions: PlaywrightOptions);
11
+ private readonly playwrightManagedPageId;
12
+ constructor(page: playwright.Page, browserContextOptions: PlaywrightOptions, selectors: playwright.Selectors);
13
+ protected registerCurrentPage(): Promise<PlaywrightPage>;
11
14
  protected createBrowserContext(options: PlaywrightOptions): Promise<playwright.BrowserContext>;
15
+ /**
16
+ * Closes any newly opened pages, leaving only the original one managed by Playwright Test.
17
+ */
18
+ closeAllPages(): Promise<void>;
12
19
  browserCapabilities(): Promise<BrowserCapabilities>;
13
20
  }
14
21
  //# sourceMappingURL=PlaywrightBrowsingSessionWithPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightBrowsingSessionWithPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,yBAAyB;IAExE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;gBAArB,IAAI,EAAE,UAAU,CAAC,IAAI,EACxC,qBAAqB,EAAE,iBAAiB;cAMnB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;IAI9F,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAQrE"}
1
+ {"version":3,"file":"PlaywrightBrowsingSessionWithPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,yBAAyB;IAIxE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAH5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAyC;gBAG1D,IAAI,EAAE,UAAU,CAAC,IAAI,EACxC,qBAAqB,EAAE,iBAAiB,EACxC,SAAS,EAAE,UAAU,CAAC,SAAS;cAKV,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;cAU9C,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;IAI7G;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAQrE"}
@@ -9,14 +9,32 @@ const PlaywrightPage_1 = require("./PlaywrightPage");
9
9
  */
10
10
  class PlaywrightBrowsingSessionWithPage extends PlaywrightBrowsingSession_1.PlaywrightBrowsingSession {
11
11
  page;
12
- constructor(page, browserContextOptions) {
13
- super(browserContextOptions);
12
+ playwrightManagedPageId = model_1.CorrelationId.create();
13
+ constructor(page, browserContextOptions, selectors) {
14
+ super(browserContextOptions, selectors);
14
15
  this.page = page;
15
- this.currentBrowserPage = new PlaywrightPage_1.PlaywrightPage(this, this.page, this.browserContextOptions, model_1.CorrelationId.create());
16
+ }
17
+ async registerCurrentPage() {
18
+ await this.browserContext();
19
+ const playwrightPage = new PlaywrightPage_1.PlaywrightPage(this, this.page, this.browserContextOptions, this.playwrightManagedPageId);
20
+ this.register(playwrightPage);
21
+ return playwrightPage;
16
22
  }
17
23
  async createBrowserContext(options) {
18
24
  return this.page.context();
19
25
  }
26
+ /**
27
+ * Closes any newly opened pages, leaving only the original one managed by Playwright Test.
28
+ */
29
+ async closeAllPages() {
30
+ for (const page of this.pages.values()) {
31
+ if (!page.id.equals(this.playwrightManagedPageId)) {
32
+ await page.close();
33
+ }
34
+ }
35
+ this.pages.clear();
36
+ this.currentBrowserPage = undefined;
37
+ }
20
38
  async browserCapabilities() {
21
39
  const browser = await this.page.context().browser();
22
40
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightBrowsingSessionWithPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts"],"names":[],"mappings":";;;AAAA,uDAA4D;AAK5D,2EAAwE;AACxE,qDAAkD;AAElD;;GAEG;AACH,MAAa,iCAAkC,SAAQ,qDAAyB;IAErD;IADvB,YACuB,IAAqB,EACxC,qBAAwC;QAExC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAHV,SAAI,GAAJ,IAAI,CAAiB;QAIxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,qBAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACtH,CAAC;IAEkB,KAAK,CAAC,oBAAoB,CAAC,OAA0B;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAEQ,KAAK,CAAC,mBAAmB;QAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO;YACH,WAAW,EAAG,OAAe,CAAC,YAAY,CAAC,IAAI;YAC/C,YAAY,EAAE,OAAO,CAAC,QAAQ;YAC9B,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE;SACpC,CAAA;IACL,CAAC;CACJ;AArBD,8EAqBC"}
1
+ {"version":3,"file":"PlaywrightBrowsingSessionWithPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts"],"names":[],"mappings":";;;AAAA,uDAA4D;AAK5D,2EAAwE;AACxE,qDAAkD;AAElD;;GAEG;AACH,MAAa,iCAAkC,SAAQ,qDAAyB;IAIrD;IAHN,uBAAuB,GAAkB,qBAAa,CAAC,MAAM,EAAE,CAAC;IAEjF,YACuB,IAAqB,EACxC,qBAAwC,EACxC,SAA+B;QAE/B,KAAK,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;QAJrB,SAAI,GAAJ,IAAI,CAAiB;IAK5C,CAAC;IAEkB,KAAK,CAAC,mBAAmB;QACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAErH,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9B,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEkB,KAAK,CAAC,oBAAoB,CAAC,OAA0B;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;YACpC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;gBAChD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;aACtB;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,mBAAmB;QAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO;YACH,WAAW,EAAG,OAAe,CAAC,YAAY,CAAC,IAAI;YAC/C,YAAY,EAAE,OAAO,CAAC,QAAQ;YAC9B,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE;SACpC,CAAA;IACL,CAAC;CACJ;AA/CD,8EA+CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaywrightPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPage.ts"],"names":[],"mappings":"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"}
@@ -102,8 +102,16 @@ class PlaywrightPage extends web_1.Page {
102
102
  return this.lastScriptExecutionSummary.result;
103
103
  }
104
104
  async takeScreenshot() {
105
- const screenshot = await this.page.screenshot();
106
- return screenshot.toString('base64');
105
+ try {
106
+ const screenshot = await this.page.screenshot();
107
+ return screenshot.toString('base64');
108
+ }
109
+ catch (error) {
110
+ if (error?.message.includes('Target page, context or browser has been closed')) {
111
+ throw new web_1.BrowserWindowClosedError(`Couldn't take screenshot since the browser window is already closed`, error);
112
+ }
113
+ throw error;
114
+ }
107
115
  }
108
116
  async cookie(name) {
109
117
  return this.session.cookie(name);
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaywrightPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serenity-js/playwright",
3
- "version": "3.14.1",
3
+ "version": "3.14.2",
4
4
  "description": "Serenity/JS Screenplay Pattern library for Playwright",
5
5
  "author": {
6
6
  "name": "Jan Molak",
@@ -44,8 +44,8 @@
44
44
  "node": "^16.13 || ^18.12 || ^20"
45
45
  },
46
46
  "dependencies": {
47
- "@serenity-js/core": "3.14.1",
48
- "@serenity-js/web": "3.14.1",
47
+ "@serenity-js/core": "3.14.2",
48
+ "@serenity-js/web": "3.14.2",
49
49
  "playwright-core": "1.40.1",
50
50
  "tiny-types": "1.21.0"
51
51
  },
@@ -59,5 +59,5 @@
59
59
  "ts-node": "10.9.2",
60
60
  "typescript": "5.1.6"
61
61
  },
62
- "gitHead": "27c466fdd19ebeb766b8517c847f1163e8ed8d6f"
62
+ "gitHead": "b2b052ea1120bf33c2848956f2f0ea5f0ffdfc24"
63
63
  }
@@ -108,7 +108,7 @@ export class BrowseTheWebWithPlaywright extends BrowseTheWeb<playwright.Locator>
108
108
  }
109
109
 
110
110
  static usingPage(page: playwright.Page, options?: PlaywrightOptions): BrowseTheWebWithPlaywright {
111
- return new BrowseTheWebWithPlaywright(new PlaywrightBrowsingSessionWithPage(page, options));
111
+ return new BrowseTheWebWithPlaywright(new PlaywrightBrowsingSessionWithPage(page, options, playwright.selectors));
112
112
  }
113
113
 
114
114
  /**
@@ -4,6 +4,7 @@ import { BrowsingSession, type Cookie, type CookieData } from '@serenity-js/web'
4
4
  import type * as playwright from 'playwright-core';
5
5
 
6
6
  import { type PlaywrightOptions } from '../../PlaywrightOptions';
7
+ import { SerenitySelectorEngines } from '../../selector-engines';
7
8
  import { PlaywrightCookie, PlaywrightPage } from '../models';
8
9
 
9
10
  /**
@@ -13,9 +14,13 @@ import { PlaywrightCookie, PlaywrightPage } from '../models';
13
14
  */
14
15
  export abstract class PlaywrightBrowsingSession extends BrowsingSession<PlaywrightPage> {
15
16
 
17
+ protected readonly serenitySelectorEngines = new SerenitySelectorEngines();
16
18
  private currentPlaywrightBrowserContext: playwright.BrowserContext;
17
19
 
18
- protected constructor(protected readonly browserContextOptions: PlaywrightOptions) {
20
+ protected constructor(
21
+ protected readonly browserContextOptions: PlaywrightOptions,
22
+ protected readonly selectors: playwright.Selectors
23
+ ) {
19
24
  super();
20
25
  }
21
26
 
@@ -44,22 +49,9 @@ export abstract class PlaywrightBrowsingSession extends BrowsingSession<Playwrig
44
49
  await context.clearCookies();
45
50
  }
46
51
 
47
- protected override async registerCurrentPage(): Promise<PlaywrightPage> {
48
- const context = await this.browserContext();
49
-
50
- await context.newPage();
51
-
52
- // calling context.newPage() triggers a callback registered via browserContext(),
53
- // which wraps playwright.Page in PlaywrightPage and adds it to the list of pages
54
- // returned by this.allPages()
55
-
56
- const allPages = await this.allPages()
57
-
58
- return allPages.at(-1);
59
- }
60
-
61
52
  protected async browserContext(): Promise<playwright.BrowserContext> {
62
53
  if (! this.currentPlaywrightBrowserContext) {
54
+ await this.serenitySelectorEngines.ensureRegisteredWith(this.selectors);
63
55
  this.currentPlaywrightBrowserContext = await this.createBrowserContext(this.browserContextOptions);
64
56
 
65
57
  this.currentPlaywrightBrowserContext.on('page', async page => {
@@ -2,29 +2,40 @@ import type { BrowserCapabilities } from '@serenity-js/web';
2
2
  import type * as playwright from 'playwright-core';
3
3
 
4
4
  import type { PlaywrightOptions } from '../../PlaywrightOptions';
5
- import { SerenitySelectorEngines } from '../../selector-engines';
6
5
  import { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession';
6
+ import type { PlaywrightPage } from './PlaywrightPage';
7
7
 
8
8
  /**
9
9
  * @group Models
10
10
  */
11
11
  export class PlaywrightBrowsingSessionWithBrowser extends PlaywrightBrowsingSession {
12
- private readonly serenitySelectorEngines = new SerenitySelectorEngines();
13
12
 
14
13
  constructor(
15
14
  protected readonly browser: playwright.Browser,
16
15
  browserContextOptions: PlaywrightOptions,
17
- private readonly selectors: playwright.Selectors,
16
+ selectors: playwright.Selectors,
18
17
  ) {
19
- super(browserContextOptions);
18
+ super(browserContextOptions, selectors);
20
19
  }
21
20
 
22
21
  protected override async createBrowserContext(options: PlaywrightOptions): Promise<playwright.BrowserContext> {
23
- await this.serenitySelectorEngines.ensureRegisteredWith(this.selectors);
24
-
25
22
  return this.browser.newContext(this.browserContextOptions);
26
23
  }
27
24
 
25
+ protected override async registerCurrentPage(): Promise<PlaywrightPage> {
26
+ const context = await this.browserContext();
27
+
28
+ await context.newPage();
29
+
30
+ // calling context.newPage() triggers a callback registered via browserContext(),
31
+ // which wraps playwright.Page in PlaywrightPage and adds it to the list of pages
32
+ // returned by this.allPages()
33
+
34
+ const allPages = await this.allPages()
35
+
36
+ return allPages.at(-1);
37
+ }
38
+
28
39
  override async closeAllPages(): Promise<void> {
29
40
  await super.closeAllPages();
30
41
 
@@ -10,18 +10,44 @@ import { PlaywrightPage } from './PlaywrightPage';
10
10
  * @group Models
11
11
  */
12
12
  export class PlaywrightBrowsingSessionWithPage extends PlaywrightBrowsingSession {
13
+ private readonly playwrightManagedPageId: CorrelationId = CorrelationId.create();
14
+
13
15
  constructor(
14
16
  protected readonly page: playwright.Page,
15
17
  browserContextOptions: PlaywrightOptions,
18
+ selectors: playwright.Selectors,
16
19
  ) {
17
- super(browserContextOptions);
18
- this.currentBrowserPage = new PlaywrightPage(this, this.page, this.browserContextOptions, CorrelationId.create());
20
+ super(browserContextOptions, selectors);
21
+ }
22
+
23
+ protected override async registerCurrentPage(): Promise<PlaywrightPage> {
24
+ await this.browserContext();
25
+
26
+ const playwrightPage = new PlaywrightPage(this, this.page, this.browserContextOptions, this.playwrightManagedPageId);
27
+
28
+ this.register(playwrightPage);
29
+
30
+ return playwrightPage;
19
31
  }
20
32
 
21
33
  protected override async createBrowserContext(options: PlaywrightOptions): Promise<playwright.BrowserContext> {
22
34
  return this.page.context();
23
35
  }
24
36
 
37
+ /**
38
+ * Closes any newly opened pages, leaving only the original one managed by Playwright Test.
39
+ */
40
+ async closeAllPages(): Promise<void> {
41
+ for (const page of this.pages.values()) {
42
+ if (! page.id.equals(this.playwrightManagedPageId)) {
43
+ await page.close();
44
+ }
45
+ }
46
+
47
+ this.pages.clear();
48
+ this.currentBrowserPage = undefined;
49
+ }
50
+
25
51
  override async browserCapabilities(): Promise<BrowserCapabilities> {
26
52
  const browser = await this.page.context().browser();
27
53
  return {
@@ -31,4 +57,3 @@ export class PlaywrightBrowsingSessionWithPage extends PlaywrightBrowsingSession
31
57
  }
32
58
  }
33
59
  }
34
-
@@ -1,8 +1,8 @@
1
1
  import { List, LogicError, type QuestionAdapter } from '@serenity-js/core';
2
2
  import { asyncMap } from '@serenity-js/core/lib/io';
3
3
  import type { CorrelationId } from '@serenity-js/core/lib/model';
4
- import type { Cookie, CookieData, PageElement, PageElements,Selector } from '@serenity-js/web';
5
- import { ByDeepCss, Key, Page, PageElementsLocator } from '@serenity-js/web';
4
+ import type { Cookie, CookieData, PageElement, PageElements, Selector } from '@serenity-js/web';
5
+ import { BrowserWindowClosedError, ByDeepCss, Key, Page, PageElementsLocator } from '@serenity-js/web';
6
6
  import type * as playwright from 'playwright-core';
7
7
  import { URL } from 'url';
8
8
 
@@ -174,9 +174,22 @@ export class PlaywrightPage extends Page<playwright.Locator> {
174
174
  }
175
175
 
176
176
  async takeScreenshot(): Promise<string> {
177
- const screenshot: Buffer = await this.page.screenshot();
177
+ try {
178
+ const screenshot: Buffer = await this.page.screenshot();
178
179
 
179
- return screenshot.toString('base64');
180
+ return screenshot.toString('base64');
181
+ }
182
+ catch(error) {
183
+
184
+ if (error?.message.includes('Target page, context or browser has been closed')) {
185
+ throw new BrowserWindowClosedError(
186
+ `Couldn't take screenshot since the browser window is already closed`,
187
+ error
188
+ );
189
+ }
190
+
191
+ throw error;
192
+ }
180
193
  }
181
194
 
182
195
  async cookie(name: string): Promise<Cookie> {