@serenity-js/playwright 3.2.0 → 3.3.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts +1 -1
  3. package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts.map +1 -1
  4. package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.js.map +1 -1
  5. package/lib/screenplay/models/PlaywrightPage.d.ts +3 -3
  6. package/lib/screenplay/models/PlaywrightPage.d.ts.map +1 -1
  7. package/lib/screenplay/models/PlaywrightPage.js +13 -11
  8. package/lib/screenplay/models/PlaywrightPage.js.map +1 -1
  9. package/lib/screenplay/models/PlaywrightPageElement.d.ts +2 -2
  10. package/lib/screenplay/models/PlaywrightPageElement.d.ts.map +1 -1
  11. package/lib/screenplay/models/PlaywrightPageElement.js +5 -4
  12. package/lib/screenplay/models/PlaywrightPageElement.js.map +1 -1
  13. package/lib/screenplay/models/locators/PlaywrightLocator.d.ts +8 -8
  14. package/lib/screenplay/models/locators/PlaywrightLocator.d.ts.map +1 -1
  15. package/lib/screenplay/models/locators/PlaywrightLocator.js +5 -7
  16. package/lib/screenplay/models/locators/PlaywrightLocator.js.map +1 -1
  17. package/lib/screenplay/models/locators/PlaywrightRootLocator.d.ts +3 -3
  18. package/lib/screenplay/models/locators/PlaywrightRootLocator.d.ts.map +1 -1
  19. package/lib/screenplay/models/locators/PlaywrightRootLocator.js +5 -3
  20. package/lib/screenplay/models/locators/PlaywrightRootLocator.js.map +1 -1
  21. package/lib/screenplay/promised.d.ts +10 -0
  22. package/lib/screenplay/promised.d.ts.map +1 -0
  23. package/lib/screenplay/promised.js +16 -0
  24. package/lib/screenplay/promised.js.map +1 -0
  25. package/package.json +6 -6
  26. package/src/screenplay/abilities/BrowseTheWebWithPlaywright.ts +1 -1
  27. package/src/screenplay/models/PlaywrightPage.ts +18 -20
  28. package/src/screenplay/models/PlaywrightPageElement.ts +8 -8
  29. package/src/screenplay/models/locators/PlaywrightLocator.ts +18 -21
  30. package/src/screenplay/models/locators/PlaywrightRootLocator.ts +8 -5
  31. package/src/screenplay/promised.ts +11 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
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.3.0](https://github.com/serenity-js/serenity-js/compare/v3.2.1...v3.3.0) (2023-06-01)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **playwright:** support for Playwright 1.34.0 ([5d591c7](https://github.com/serenity-js/serenity-js/commit/5d591c71e89ac4cfd41b8f7e3a1c9017f962d9e3))
12
+ * **playwright:** updated Playwright to 1.34.2 ([c944031](https://github.com/serenity-js/serenity-js/commit/c94403199a349d59bb777b981897039c102f243f))
13
+ * **playwright:** upgraded to Playwright 1.34.3 ([0ded19e](https://github.com/serenity-js/serenity-js/commit/0ded19e8ef3aea74307ab3bbd69ff5f7b3c9f78b))
14
+
15
+
16
+ ### Features
17
+
18
+ * **playwright-test:** much more detailed Playwright Test reports ([5980a1e](https://github.com/serenity-js/serenity-js/commit/5980a1e37047d71199cc169271fa11869e98355b)), closes [#1717](https://github.com/serenity-js/serenity-js/issues/1717)
19
+ * **playwright:** support Playwright auto-waiting ([8f1750f](https://github.com/serenity-js/serenity-js/commit/8f1750f5b086e09eacd514783d561b0a2abb2156)), closes [#1717](https://github.com/serenity-js/serenity-js/issues/1717)
20
+
21
+
22
+
23
+
24
+
25
+ ## [3.2.1](https://github.com/serenity-js/serenity-js/compare/v3.2.0...v3.2.1) (2023-05-15)
26
+
27
+ **Note:** Version bump only for package @serenity-js/playwright
28
+
29
+
30
+
31
+
32
+
6
33
  # [3.2.0](https://github.com/serenity-js/serenity-js/compare/v3.1.6...v3.2.0) (2023-05-05)
7
34
 
8
35
 
@@ -38,7 +38,7 @@ import { PlaywrightOptions } from '../../PlaywrightOptions';
38
38
  *
39
39
  * @group Abilities
40
40
  */
41
- export declare class BrowseTheWebWithPlaywright extends BrowseTheWeb<playwright.ElementHandle> implements Discardable {
41
+ export declare class BrowseTheWebWithPlaywright extends BrowseTheWeb<playwright.Locator> implements Discardable {
42
42
  protected readonly browser: playwright.Browser;
43
43
  static using(browser: playwright.Browser, options?: PlaywrightOptions): BrowseTheWebWithPlaywright;
44
44
  constructor(browser: playwright.Browser, browserContextOptions?: PlaywrightOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTheWebWithPlaywright.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithPlaywright.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,0BAA2B,SAAQ,YAAY,CAAC,UAAU,CAAC,aAAa,CAAE,YAAW,WAAW;IAM7F,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO;IAJ1D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,0BAA0B;gBAInE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAE,iBAAsB;IAIzG;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAO5D"}
1
+ {"version":3,"file":"BrowseTheWebWithPlaywright.d.ts","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithPlaywright.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,0BAA2B,SAAQ,YAAY,CAAC,UAAU,CAAC,OAAO,CAAE,YAAW,WAAW;IAMvF,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO;IAJ1D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,0BAA0B;gBAInE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAE,iBAAsB;IAIzG;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAO5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTheWebWithPlaywright.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithPlaywright.ts"],"names":[],"mappings":";;;AACA,0CAAqE;AAIrE,sCAAsD;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAa,0BAA2B,SAAQ,kBAAsC;IAElF,MAAM,CAAC,KAAK,CAAC,OAA2B,EAAE,OAA2B;QACjE,OAAO,IAAI,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,YAA+B,OAA2B,EAAE,wBAA2C,EAAE;QACrG,KAAK,CAAC,IAAI,kCAAyB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAD1C,YAAO,GAAP,OAAO,CAAoB;IAE1D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB;QACrB,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;AAnCD,gEAmCC"}
1
+ {"version":3,"file":"BrowseTheWebWithPlaywright.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithPlaywright.ts"],"names":[],"mappings":";;;AACA,0CAAqE;AAIrE,sCAAsD;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAa,0BAA2B,SAAQ,kBAAgC;IAE5E,MAAM,CAAC,KAAK,CAAC,OAA2B,EAAE,OAA2B;QACjE,OAAO,IAAI,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,YAA+B,OAA2B,EAAE,wBAA2C,EAAE;QACrG,KAAK,CAAC,IAAI,kCAAyB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAD1C,YAAO,GAAP,OAAO,CAAoB;IAE1D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB;QACrB,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;AAnCD,gEAmCC"}
@@ -11,14 +11,14 @@ import { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession';
11
11
  *
12
12
  * @group Models
13
13
  */
14
- export declare class PlaywrightPage extends Page<playwright.ElementHandle> {
14
+ export declare class PlaywrightPage extends Page<playwright.Locator> {
15
15
  private readonly page;
16
16
  private readonly options;
17
17
  private lastScriptExecutionSummary;
18
18
  static current(): QuestionAdapter<PlaywrightPage>;
19
19
  constructor(session: PlaywrightBrowsingSession, page: playwright.Page, options: PlaywrightOptions, pageId: CorrelationId);
20
- locate(selector: Selector): PageElement<playwright.ElementHandle>;
21
- locateAll(selector: Selector): PageElements<playwright.ElementHandle>;
20
+ locate(selector: Selector): PageElement<playwright.Locator>;
21
+ locateAll(selector: Selector): PageElements<playwright.Locator>;
22
22
  navigateTo(destination: string): Promise<void>;
23
23
  navigateBack(): Promise<void>;
24
24
  navigateForward(): Promise<void>;
@@ -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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"}
@@ -2,8 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlaywrightPage = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
+ const io_1 = require("@serenity-js/core/lib/io");
5
6
  const web_1 = require("@serenity-js/web");
6
7
  const url_1 = require("url");
8
+ const promised_1 = require("../promised");
7
9
  const locators_1 = require("./locators");
8
10
  const PlaywrightModalDialogHandler_1 = require("./PlaywrightModalDialogHandler");
9
11
  const PlaywrightPageElement_1 = require("./PlaywrightPageElement");
@@ -57,9 +59,9 @@ class PlaywrightPage extends web_1.Page {
57
59
  await this.page.keyboard.press(keySequence.join('+'));
58
60
  }
59
61
  async executeScript(script, ...args) {
60
- const nativeArguments = await Promise.all(args.map(arg => arg instanceof PlaywrightPageElement_1.PlaywrightPageElement
61
- ? arg.nativeElement()
62
- : arg));
62
+ const nativeArguments = await (0, io_1.asyncMap)(args, item => item instanceof PlaywrightPageElement_1.PlaywrightPageElement
63
+ ? item.nativeElement().then(element => element.elementHandle())
64
+ : item);
63
65
  const serialisedScript = typeof script === 'function'
64
66
  ? String(script)
65
67
  : String(`function script() { ${script} }`);
@@ -71,9 +73,9 @@ class PlaywrightPage extends web_1.Page {
71
73
  return result;
72
74
  }
73
75
  async executeAsyncScript(script, ...args) {
74
- const nativeArguments = await Promise.all(args.map(arg => arg instanceof PlaywrightPageElement_1.PlaywrightPageElement
75
- ? arg.nativeElement()
76
- : arg));
76
+ const nativeArguments = await (0, io_1.asyncMap)(args, item => item instanceof PlaywrightPageElement_1.PlaywrightPageElement
77
+ ? item.nativeElement().then(element => element.elementHandle())
78
+ : item);
77
79
  const serialisedScript = typeof script === 'function'
78
80
  ? String(script)
79
81
  : String(`function script() { ${script} }`);
@@ -141,8 +143,8 @@ class PlaywrightPage extends web_1.Page {
141
143
  async viewportSize() {
142
144
  return this.page.viewportSize();
143
145
  }
144
- setViewportSize(size) {
145
- return this.page.setViewportSize(size);
146
+ async setViewportSize(size) {
147
+ await this.page.setViewportSize(size);
146
148
  }
147
149
  async close() {
148
150
  await this.resetState();
@@ -152,11 +154,11 @@ class PlaywrightPage extends web_1.Page {
152
154
  async closeOthers() {
153
155
  await this.session.closePagesOtherThan(this);
154
156
  }
155
- async isPresent() {
156
- return !this.page.isClosed();
157
+ isPresent() {
158
+ return (0, promised_1.promised)(!this.page.isClosed());
157
159
  }
158
160
  async nativePage() {
159
- return this.page;
161
+ return (0, promised_1.promised)(this.page);
160
162
  }
161
163
  async resetState() {
162
164
  this.lastScriptExecutionSummary = undefined;
@@ -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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"}
@@ -5,8 +5,8 @@ import type * as playwright from 'playwright-core';
5
5
  *
6
6
  * @group Models
7
7
  */
8
- export declare class PlaywrightPageElement extends PageElement<playwright.ElementHandle> {
9
- of(parent: PageElement<playwright.ElementHandle>): PageElement<playwright.ElementHandle>;
8
+ export declare class PlaywrightPageElement extends PageElement<playwright.Locator> {
9
+ of(parent: PageElement<playwright.Locator>): PageElement<playwright.Locator>;
10
10
  enterValue(value: string | number | Array<string | number>): Promise<void>;
11
11
  clearValue(): Promise<void>;
12
12
  click(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightPageElement.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPageElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAKnD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;IAC5E,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;IAIlF,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,aAAa,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAuB/C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKxC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxB,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAkCrC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAW5B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAW/B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAS7B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB9B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CActC"}
1
+ {"version":3,"file":"PlaywrightPageElement.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPageElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAKnD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;IACtE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;IAItE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,aAAa,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAsB/C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKxC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxB,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmCrC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAW5B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAW/B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAS7B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB9B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CActC"}
@@ -82,7 +82,7 @@ class PlaywrightPageElement extends web_1.PageElement {
82
82
  async selectedOptions() {
83
83
  const element = await this.nativeElement();
84
84
  /* c8 ignore start */
85
- const options = await element.$$eval('option', (optionNodes) => optionNodes.map((optionNode) => {
85
+ const options = await element.locator('option').evaluateAll((optionNodes) => optionNodes.map((optionNode) => {
86
86
  return {
87
87
  selected: optionNode.selected,
88
88
  disabled: optionNode.disabled,
@@ -107,11 +107,12 @@ class PlaywrightPageElement extends web_1.PageElement {
107
107
  }
108
108
  async switchTo() {
109
109
  try {
110
- const element = await this.nativeElement();
110
+ const nativeLocator = await this.nativeElement();
111
+ const element = await nativeLocator.elementHandle();
111
112
  const frame = await element.contentFrame();
112
113
  if (frame) {
113
114
  const locator = this.locator;
114
- await locator.switchToFrame(element);
115
+ await locator.switchToFrame(nativeLocator);
115
116
  return {
116
117
  switchBack: async () => {
117
118
  await locator.switchToParentFrame();
@@ -119,7 +120,7 @@ class PlaywrightPageElement extends web_1.PageElement {
119
120
  };
120
121
  }
121
122
  /* c8 ignore start */
122
- const previouslyFocusedElement = await element.evaluateHandle((domNode) => {
123
+ const previouslyFocusedElement = await nativeLocator.evaluateHandle((domNode) => {
123
124
  const currentlyFocusedElement = document.activeElement;
124
125
  domNode.focus();
125
126
  return currentlyFocusedElement;
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPageElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaywrightPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPageElement.ts"],"names":[],"mappings":"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"}
@@ -6,15 +6,15 @@ import { PlaywrightRootLocator } from './PlaywrightRootLocator';
6
6
  *
7
7
  * @group Models
8
8
  */
9
- export declare class PlaywrightLocator extends Locator<playwright.ElementHandle, string> {
10
- constructor(parent: RootLocator<playwright.ElementHandle>, selector: Selector);
9
+ export declare class PlaywrightLocator extends Locator<playwright.Locator, string> {
10
+ constructor(parent: RootLocator<playwright.Locator>, selector: Selector);
11
11
  protected nativeSelector(): string;
12
12
  isPresent(): Promise<boolean>;
13
- nativeElement(): Promise<playwright.ElementHandle>;
14
- allNativeElements(): Promise<Array<playwright.ElementHandle>>;
15
- of(parent: PlaywrightRootLocator): Locator<playwright.ElementHandle, string>;
16
- locate(child: PlaywrightLocator): Locator<playwright.ElementHandle, string>;
17
- element(): PageElement<playwright.ElementHandle>;
18
- allElements(): Promise<Array<PageElement<playwright.ElementHandle>>>;
13
+ nativeElement(): Promise<playwright.Locator>;
14
+ allNativeElements(): Promise<Array<playwright.Locator>>;
15
+ of(parent: PlaywrightRootLocator): Locator<playwright.Locator, string>;
16
+ locate(child: PlaywrightLocator): Locator<playwright.Locator, string>;
17
+ element(): PageElement<playwright.Locator>;
18
+ allElements(): Promise<Array<PageElement<playwright.Locator>>>;
19
19
  }
20
20
  //# sourceMappingURL=PlaywrightLocator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightLocator.ts"],"names":[],"mappings":"AACA,OAAO,EAAmE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChJ,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC;gBAGxE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7C,QAAQ,EAAE,QAAQ;IAMtB,SAAS,CAAC,cAAc,IAAI,MAAM;IA4B5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;IAWlD,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAUnE,EAAE,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC;IAI5E,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC;IAI3E,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;IAI1C,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;CAa7E"}
1
+ {"version":3,"file":"PlaywrightLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightLocator.ts"],"names":[],"mappings":"AACA,OAAO,EAAmE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChJ,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAInD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;gBAGlE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EACvC,QAAQ,EAAE,QAAQ;IAMtB,SAAS,CAAC,cAAc,IAAI,MAAM;IA4B5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAsB7B,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;IAM5C,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAU7D,EAAE,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;IAItE,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;IAIrE,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;IAIpC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;CAavE"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlaywrightLocator = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
5
  const web_1 = require("@serenity-js/web");
6
+ const promised_1 = require("../../promised");
6
7
  const PlaywrightPageElement_1 = require("../PlaywrightPageElement");
7
8
  /**
8
9
  * Playwright-specific implementation of {@apilink Locator}.
@@ -42,8 +43,8 @@ class PlaywrightLocator extends web_1.Locator {
42
43
  return false;
43
44
  }
44
45
  const parent = await this.parent.nativeElement();
45
- const element = await parent.$(this.nativeSelector());
46
- return Boolean(element);
46
+ await parent.locator(this.nativeSelector()).first().waitFor({ state: 'attached', timeout: 250 });
47
+ return true;
47
48
  }
48
49
  catch (error) {
49
50
  if (error.name === 'TimeoutError') {
@@ -54,17 +55,14 @@ class PlaywrightLocator extends web_1.Locator {
54
55
  }
55
56
  async nativeElement() {
56
57
  const parent = await this.parent.nativeElement();
57
- if (!parent) {
58
- throw new core_1.LogicError(`Couldn't find parent element ${this.parent} of ${this}`);
59
- }
60
- return parent.waitForSelector(this.nativeSelector(), { state: 'attached' });
58
+ return (0, promised_1.promised)(parent.locator(this.nativeSelector()));
61
59
  }
62
60
  async allNativeElements() {
63
61
  const parent = await this.parent.nativeElement();
64
62
  if (!parent) {
65
63
  return [];
66
64
  }
67
- return parent.$$(this.nativeSelector());
65
+ return (0, promised_1.promised)(parent.locator(this.nativeSelector()).all());
68
66
  }
69
67
  of(parent) {
70
68
  return new PlaywrightLocator(parent, this.selector);
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightLocator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlaywrightLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightLocator.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,13 @@ import type * as playwright from 'playwright-core';
5
5
  *
6
6
  * @group Models
7
7
  */
8
- export declare class PlaywrightRootLocator extends RootLocator<playwright.ElementHandle> {
8
+ export declare class PlaywrightRootLocator extends RootLocator<playwright.Locator> {
9
9
  private readonly page;
10
10
  private currentFrame;
11
11
  constructor(page: playwright.Page);
12
12
  isPresent(): Promise<boolean>;
13
- nativeElement(): Promise<Pick<playwright.ElementHandle, '$' | '$$' | 'waitForSelector'>>;
14
- switchToFrame(frame: playwright.ElementHandle): Promise<void>;
13
+ nativeElement(): Promise<Pick<playwright.Locator, 'locator'>>;
14
+ switchToFrame(frame: playwright.Locator): Promise<void>;
15
15
  switchToParentFrame(): Promise<void>;
16
16
  switchToMainFrame(): Promise<void>;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightRootLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightRootLocator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAGnD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;IAIhE,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,YAAY,CAAmB;gBAEV,IAAI,EAAE,UAAU,CAAC,IAAI;IAK5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,GAAG,iBAAiB,CAAC,CAAC;IAIxF,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3C"}
1
+ {"version":3,"file":"PlaywrightRootLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightRootLocator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAKnD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;IAI1D,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,YAAY,CAAmB;gBAEV,IAAI,EAAE,UAAU,CAAC,IAAI;IAK5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAIvD,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3C"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlaywrightRootLocator = void 0;
4
4
  const web_1 = require("@serenity-js/web");
5
5
  const tiny_types_1 = require("tiny-types");
6
+ const promised_1 = require("../../promised");
6
7
  /**
7
8
  * Playwright-specific implementation of {@apilink RootLocator}.
8
9
  *
@@ -17,11 +18,12 @@ class PlaywrightRootLocator extends web_1.RootLocator {
17
18
  async isPresent() {
18
19
  return true;
19
20
  }
20
- async nativeElement() {
21
- return this.currentFrame;
21
+ nativeElement() {
22
+ return (0, promised_1.promised)(this.currentFrame);
22
23
  }
23
24
  async switchToFrame(frame) {
24
- this.currentFrame = (0, tiny_types_1.ensure)('frame', await frame.contentFrame(), (0, tiny_types_1.isDefined)());
25
+ const element = await frame.elementHandle();
26
+ this.currentFrame = (0, tiny_types_1.ensure)('frame', await element.contentFrame(), (0, tiny_types_1.isDefined)());
25
27
  }
26
28
  async switchToParentFrame() {
27
29
  this.currentFrame = (0, tiny_types_1.ensure)('parent frame', this.currentFrame.parentFrame(), (0, tiny_types_1.isDefined)());
@@ -1 +1 @@
1
- {"version":3,"file":"PlaywrightRootLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightRootLocator.ts"],"names":[],"mappings":";;;AAAA,0CAA+C;AAE/C,2CAA+C;AAE/C;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,iBAAqC;IAI5E,YAA6B,IAAqB;QAC9C,KAAK,EAAE,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAiB;QAE9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAA+B;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAA,mBAAM,EAAC,OAAO,EAAE,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,mBAAmB;QACrB,IAAI,CAAC,YAAY,GAAG,IAAA,mBAAM,EAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;CACJ;AA5BD,sDA4BC"}
1
+ {"version":3,"file":"PlaywrightRootLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/PlaywrightRootLocator.ts"],"names":[],"mappings":";;;AAAA,0CAA+C;AAE/C,2CAA+C;AAE/C,6CAA0C;AAE1C;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,iBAA+B;IAItE,YAA6B,IAAqB;QAC9C,KAAK,EAAE,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAiB;QAE9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa;QACT,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAyB;QACzC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAA,mBAAM,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,mBAAmB;QACrB,IAAI,CAAC,YAAY,GAAG,IAAA,mBAAM,EAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;CACJ;AA7BD,sDA6BC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Playwright 1.33.0 and newer rely on "zones" recorded in the stack trace
3
+ * to establish child-parent relationship between Playwright tasks.
4
+ *
5
+ * This helper function ensures that the stack trace is correctly recorded.
6
+ *
7
+ * @param value
8
+ */
9
+ export declare function promised<T>(value: Promise<T> | T): Promise<T>;
10
+ //# sourceMappingURL=promised.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promised.d.ts","sourceRoot":"","sources":["../../src/screenplay/promised.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE7D"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promised = void 0;
4
+ /**
5
+ * Playwright 1.33.0 and newer rely on "zones" recorded in the stack trace
6
+ * to establish child-parent relationship between Playwright tasks.
7
+ *
8
+ * This helper function ensures that the stack trace is correctly recorded.
9
+ *
10
+ * @param value
11
+ */
12
+ function promised(value) {
13
+ return Promise.resolve().then(() => value);
14
+ }
15
+ exports.promised = promised;
16
+ //# sourceMappingURL=promised.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promised.js","sourceRoot":"","sources":["../../src/screenplay/promised.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,SAAgB,QAAQ,CAAI,KAAqB;IAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAFD,4BAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serenity-js/playwright",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "Serenity/JS Screenplay Pattern library for Playwright",
5
5
  "author": {
6
6
  "name": "Jan Molak",
@@ -43,14 +43,14 @@
43
43
  "node": "^16.13 || ^18.12 || ^20"
44
44
  },
45
45
  "dependencies": {
46
- "@serenity-js/core": "3.2.0",
47
- "@serenity-js/web": "3.2.0",
48
- "playwright-core": "^1.33.0",
46
+ "@serenity-js/core": "3.3.0",
47
+ "@serenity-js/web": "3.3.0",
48
+ "playwright-core": "^1.34.3",
49
49
  "tiny-types": "^1.19.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@integration/testing-tools": "3.0.0",
53
- "@types/chai": "^4.3.4",
53
+ "@types/chai": "^4.3.5",
54
54
  "@types/mocha": "^10.0.1",
55
55
  "c8": "7.13.0",
56
56
  "mocha": "^10.2.0",
@@ -58,5 +58,5 @@
58
58
  "ts-node": "^10.9.1",
59
59
  "typescript": "^5.0.4"
60
60
  },
61
- "gitHead": "e69cea764f50991c3ad742f28926b4345b3e2422"
61
+ "gitHead": "c4a2bb6aef7b087dc9bc37269fd999d1cdc15088"
62
62
  }
@@ -41,7 +41,7 @@ import { PlaywrightBrowsingSession } from '../models';
41
41
  *
42
42
  * @group Abilities
43
43
  */
44
- export class BrowseTheWebWithPlaywright extends BrowseTheWeb<playwright.ElementHandle> implements Discardable {
44
+ export class BrowseTheWebWithPlaywright extends BrowseTheWeb<playwright.Locator> implements Discardable {
45
45
 
46
46
  static using(browser: playwright.Browser, options?: PlaywrightOptions): BrowseTheWebWithPlaywright {
47
47
  return new BrowseTheWebWithPlaywright(browser, options);
@@ -1,10 +1,12 @@
1
1
  import { LogicError, QuestionAdapter } from '@serenity-js/core';
2
+ import { asyncMap } from '@serenity-js/core/lib/io';
2
3
  import { CorrelationId } from '@serenity-js/core/lib/model';
3
4
  import { Cookie, CookieData, Key, Page, PageElement, PageElements, Selector } from '@serenity-js/web';
4
5
  import type * as playwright from 'playwright-core';
5
6
  import { URL } from 'url';
6
7
 
7
8
  import { PlaywrightOptions } from '../../PlaywrightOptions';
9
+ import { promised } from '../promised';
8
10
  import { PlaywrightLocator, PlaywrightRootLocator } from './locators';
9
11
  import { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession';
10
12
  import { PlaywrightModalDialogHandler } from './PlaywrightModalDialogHandler';
@@ -15,7 +17,7 @@ import { PlaywrightPageElement } from './PlaywrightPageElement';
15
17
  *
16
18
  * @group Models
17
19
  */
18
- export class PlaywrightPage extends Page<playwright.ElementHandle> {
20
+ export class PlaywrightPage extends Page<playwright.Locator> {
19
21
 
20
22
  private lastScriptExecutionSummary: LastScriptExecutionSummary;
21
23
 
@@ -37,7 +39,7 @@ export class PlaywrightPage extends Page<playwright.ElementHandle> {
37
39
  );
38
40
  }
39
41
 
40
- locate(selector: Selector): PageElement<playwright.ElementHandle> {
42
+ locate(selector: Selector): PageElement<playwright.Locator> {
41
43
  return new PlaywrightPageElement(
42
44
  new PlaywrightLocator(
43
45
  this.rootLocator,
@@ -46,7 +48,7 @@ export class PlaywrightPage extends Page<playwright.ElementHandle> {
46
48
  );
47
49
  }
48
50
 
49
- locateAll(selector: Selector): PageElements<playwright.ElementHandle> {
51
+ locateAll(selector: Selector): PageElements<playwright.Locator> {
50
52
  return new PageElements(
51
53
  new PlaywrightLocator(
52
54
  this.rootLocator,
@@ -91,12 +93,10 @@ export class PlaywrightPage extends Page<playwright.ElementHandle> {
91
93
 
92
94
  async executeScript<Result, InnerArguments extends any[]>(script: string | ((...parameters: InnerArguments) => Result), ...args: InnerArguments): Promise<Result> {
93
95
 
94
- const nativeArguments = await Promise.all(
95
- args.map(arg =>
96
- arg instanceof PlaywrightPageElement
97
- ? arg.nativeElement()
98
- : arg
99
- )
96
+ const nativeArguments = await asyncMap(args, item =>
97
+ item instanceof PlaywrightPageElement
98
+ ? item.nativeElement().then(element => element.elementHandle())
99
+ : item
100
100
  ) as InnerArguments;
101
101
 
102
102
  const serialisedScript = typeof script === 'function'
@@ -120,12 +120,10 @@ export class PlaywrightPage extends Page<playwright.ElementHandle> {
120
120
 
121
121
  async executeAsyncScript<Result, InnerArguments extends any[]>(script: string | ((...args: [...parameters: InnerArguments, callback: (result: Result) => void]) => void), ...args: InnerArguments): Promise<Result> {
122
122
 
123
- const nativeArguments = await Promise.all(
124
- args.map(arg =>
125
- arg instanceof PlaywrightPageElement
126
- ? arg.nativeElement()
127
- : arg
128
- )
123
+ const nativeArguments = await asyncMap(args, item =>
124
+ item instanceof PlaywrightPageElement
125
+ ? item.nativeElement().then(element => element.elementHandle())
126
+ : item
129
127
  ) as InnerArguments;
130
128
 
131
129
  const serialisedScript = typeof script === 'function'
@@ -219,8 +217,8 @@ export class PlaywrightPage extends Page<playwright.ElementHandle> {
219
217
  return this.page.viewportSize();
220
218
  }
221
219
 
222
- setViewportSize(size: { width: number, height: number }): Promise<void> {
223
- return this.page.setViewportSize(size);
220
+ async setViewportSize(size: { width: number, height: number }): Promise<void> {
221
+ await this.page.setViewportSize(size);
224
222
  }
225
223
 
226
224
  async close(): Promise<void> {
@@ -233,12 +231,12 @@ export class PlaywrightPage extends Page<playwright.ElementHandle> {
233
231
  await this.session.closePagesOtherThan(this);
234
232
  }
235
233
 
236
- async isPresent(): Promise<boolean> {
237
- return ! this.page.isClosed();
234
+ isPresent(): Promise<boolean> {
235
+ return promised(! this.page.isClosed());
238
236
  }
239
237
 
240
238
  async nativePage(): Promise<playwright.Page> {
241
- return this.page;
239
+ return promised(this.page);
242
240
  }
243
241
 
244
242
  private async resetState() {
@@ -11,8 +11,8 @@ import { PlaywrightLocator } from './locators';
11
11
  *
12
12
  * @group Models
13
13
  */
14
- export class PlaywrightPageElement extends PageElement<playwright.ElementHandle> {
15
- of(parent: PageElement<playwright.ElementHandle>): PageElement<playwright.ElementHandle> {
14
+ export class PlaywrightPageElement extends PageElement<playwright.Locator> {
15
+ of(parent: PageElement<playwright.Locator>): PageElement<playwright.Locator> {
16
16
  return new PlaywrightPageElement(this.locator.of(parent.locator));
17
17
  }
18
18
 
@@ -75,8 +75,7 @@ export class PlaywrightPageElement extends PageElement<playwright.ElementHandle>
75
75
  const element = await this.nativeElement();
76
76
 
77
77
  /* c8 ignore start */
78
- const options = await element.$$eval(
79
- 'option',
78
+ const options = await element.locator('option').evaluateAll(
80
79
  (optionNodes: Array<HTMLOptionElement>) =>
81
80
  optionNodes.map((optionNode: HTMLOptionElement) => {
82
81
  return {
@@ -111,14 +110,15 @@ export class PlaywrightPageElement extends PageElement<playwright.ElementHandle>
111
110
 
112
111
  async switchTo(): Promise<SwitchableOrigin> {
113
112
  try {
114
- const element = await this.nativeElement();
113
+ const nativeLocator = await this.nativeElement();
114
+ const element = await nativeLocator.elementHandle();
115
115
 
116
116
  const frame = await element.contentFrame();
117
117
 
118
118
  if (frame) {
119
119
  const locator = (this.locator as PlaywrightLocator);
120
120
 
121
- await locator.switchToFrame(element);
121
+ await locator.switchToFrame(nativeLocator);
122
122
 
123
123
  return {
124
124
  switchBack: async (): Promise<void> => {
@@ -128,7 +128,7 @@ export class PlaywrightPageElement extends PageElement<playwright.ElementHandle>
128
128
  }
129
129
 
130
130
  /* c8 ignore start */
131
- const previouslyFocusedElement = await element.evaluateHandle(
131
+ const previouslyFocusedElement = await nativeLocator.evaluateHandle(
132
132
  (domNode: HTMLElement) => {
133
133
  const currentlyFocusedElement = document.activeElement;
134
134
  domNode.focus();
@@ -177,7 +177,7 @@ export class PlaywrightPageElement extends PageElement<playwright.ElementHandle>
177
177
  async isSelected(): Promise<boolean> {
178
178
 
179
179
  try {
180
- const element: playwright.ElementHandle = await this.nativeElement();
180
+ const element: playwright.Locator = await this.nativeElement();
181
181
 
182
182
  // works for <option />
183
183
  const selected = await element.getAttribute('selected');
@@ -2,6 +2,7 @@ import { f, LogicError } from '@serenity-js/core';
2
2
  import { ByCss, ByCssContainingText, ByDeepCss, ById, ByTagName, ByXPath, Locator, PageElement, RootLocator, Selector } from '@serenity-js/web';
3
3
  import type * as playwright from 'playwright-core';
4
4
 
5
+ import { promised } from '../../promised';
5
6
  import { PlaywrightPageElement } from '../PlaywrightPageElement';
6
7
  import { PlaywrightRootLocator } from './PlaywrightRootLocator';
7
8
 
@@ -10,10 +11,10 @@ import { PlaywrightRootLocator } from './PlaywrightRootLocator';
10
11
  *
11
12
  * @group Models
12
13
  */
13
- export class PlaywrightLocator extends Locator<playwright.ElementHandle, string> {
14
+ export class PlaywrightLocator extends Locator<playwright.Locator, string> {
14
15
 
15
16
  constructor(
16
- parent: RootLocator<playwright.ElementHandle>,
17
+ parent: RootLocator<playwright.Locator>,
17
18
  selector: Selector,
18
19
  ) {
19
20
  super(parent, selector);
@@ -57,52 +58,48 @@ export class PlaywrightLocator extends Locator<playwright.ElementHandle, string>
57
58
  }
58
59
 
59
60
  const parent = await this.parent.nativeElement();
60
- const element = await parent.$(this.nativeSelector());
61
+ await parent.locator(this.nativeSelector()).first().waitFor({ state: 'attached', timeout: 250 });
61
62
 
62
- return Boolean(element);
63
+ return true;
63
64
  }
64
65
  catch (error) {
65
66
  if (error.name === 'TimeoutError') {
66
67
  return false;
67
68
  }
69
+
68
70
  throw error;
69
71
  }
70
72
  }
71
73
 
72
- async nativeElement(): Promise<playwright.ElementHandle> {
73
-
74
+ async nativeElement(): Promise<playwright.Locator> {
74
75
  const parent = await this.parent.nativeElement();
75
76
 
76
- if (! parent) {
77
- throw new LogicError(`Couldn't find parent element ${ this.parent } of ${ this }`);
78
- }
79
-
80
- return parent.waitForSelector(this.nativeSelector(), { state: 'attached' });
77
+ return promised(parent.locator(this.nativeSelector()));
81
78
  }
82
79
 
83
- async allNativeElements(): Promise<Array<playwright.ElementHandle>> {
80
+ async allNativeElements(): Promise<Array<playwright.Locator>> {
84
81
  const parent = await this.parent.nativeElement();
85
82
 
86
83
  if (! parent) {
87
84
  return [];
88
85
  }
89
86
 
90
- return parent.$$(this.nativeSelector());
87
+ return promised(parent.locator(this.nativeSelector()).all());
91
88
  }
92
89
 
93
- of(parent: PlaywrightRootLocator): Locator<playwright.ElementHandle, string> {
90
+ of(parent: PlaywrightRootLocator): Locator<playwright.Locator, string> {
94
91
  return new PlaywrightLocator(parent, this.selector);
95
92
  }
96
93
 
97
- locate(child: PlaywrightLocator): Locator<playwright.ElementHandle, string> {
94
+ locate(child: PlaywrightLocator): Locator<playwright.Locator, string> {
98
95
  return new PlaywrightLocator(this, child.selector);
99
96
  }
100
97
 
101
- element(): PageElement<playwright.ElementHandle> {
98
+ element(): PageElement<playwright.Locator> {
102
99
  return new PlaywrightPageElement(this);
103
100
  }
104
101
 
105
- async allElements(): Promise<Array<PageElement<playwright.ElementHandle>>> {
102
+ async allElements(): Promise<Array<PageElement<playwright.Locator>>> {
106
103
  const elements = await this.allNativeElements();
107
104
 
108
105
  return elements.map(childElement =>
@@ -122,18 +119,18 @@ export class PlaywrightLocator extends Locator<playwright.ElementHandle, string>
122
119
  */
123
120
  class ExistingElementLocator extends PlaywrightLocator {
124
121
  constructor(
125
- parent: RootLocator<playwright.ElementHandle>,
122
+ parent: RootLocator<playwright.Locator>,
126
123
  selector: Selector,
127
- private readonly existingNativeElement: playwright.ElementHandle,
124
+ private readonly existingNativeElement: playwright.Locator,
128
125
  ) {
129
126
  super(parent, selector);
130
127
  }
131
128
 
132
- async nativeElement(): Promise<playwright.ElementHandle> {
129
+ async nativeElement(): Promise<playwright.Locator> {
133
130
  return this.existingNativeElement;
134
131
  }
135
132
 
136
- async allNativeElements(): Promise<Array<playwright.ElementHandle>> {
133
+ async allNativeElements(): Promise<Array<playwright.Locator>> {
137
134
  return [ this.existingNativeElement ];
138
135
  }
139
136
  }
@@ -2,12 +2,14 @@ import { RootLocator } from '@serenity-js/web';
2
2
  import type * as playwright from 'playwright-core';
3
3
  import { ensure, isDefined } from 'tiny-types';
4
4
 
5
+ import { promised } from '../../promised';
6
+
5
7
  /**
6
8
  * Playwright-specific implementation of {@apilink RootLocator}.
7
9
  *
8
10
  * @group Models
9
11
  */
10
- export class PlaywrightRootLocator extends RootLocator<playwright.ElementHandle> {
12
+ export class PlaywrightRootLocator extends RootLocator<playwright.Locator> {
11
13
 
12
14
  private currentFrame: playwright.Frame;
13
15
 
@@ -20,12 +22,13 @@ export class PlaywrightRootLocator extends RootLocator<playwright.ElementHandle>
20
22
  return true;
21
23
  }
22
24
 
23
- async nativeElement(): Promise<Pick<playwright.ElementHandle, '$' | '$$' | 'waitForSelector'>> {
24
- return this.currentFrame;
25
+ nativeElement(): Promise<Pick<playwright.Locator, 'locator'>> {
26
+ return promised(this.currentFrame);
25
27
  }
26
28
 
27
- async switchToFrame(frame: playwright.ElementHandle): Promise<void> {
28
- this.currentFrame = ensure('frame', await frame.contentFrame(), isDefined());
29
+ async switchToFrame(frame: playwright.Locator): Promise<void> {
30
+ const element = await frame.elementHandle();
31
+ this.currentFrame = ensure('frame', await element.contentFrame(), isDefined());
29
32
  }
30
33
 
31
34
  async switchToParentFrame(): Promise<void> {
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Playwright 1.33.0 and newer rely on "zones" recorded in the stack trace
3
+ * to establish child-parent relationship between Playwright tasks.
4
+ *
5
+ * This helper function ensures that the stack trace is correctly recorded.
6
+ *
7
+ * @param value
8
+ */
9
+ export function promised<T>(value: Promise<T> | T): Promise<T> {
10
+ return Promise.resolve().then(() => value);
11
+ }