@serenity-js/playwright 3.2.1 → 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.
- package/CHANGELOG.md +19 -0
- package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts +1 -1
- package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts.map +1 -1
- package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.js.map +1 -1
- package/lib/screenplay/models/PlaywrightPage.d.ts +3 -3
- package/lib/screenplay/models/PlaywrightPage.d.ts.map +1 -1
- package/lib/screenplay/models/PlaywrightPage.js +13 -11
- package/lib/screenplay/models/PlaywrightPage.js.map +1 -1
- package/lib/screenplay/models/PlaywrightPageElement.d.ts +2 -2
- package/lib/screenplay/models/PlaywrightPageElement.d.ts.map +1 -1
- package/lib/screenplay/models/PlaywrightPageElement.js +5 -4
- package/lib/screenplay/models/PlaywrightPageElement.js.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightLocator.d.ts +8 -8
- package/lib/screenplay/models/locators/PlaywrightLocator.d.ts.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightLocator.js +5 -7
- package/lib/screenplay/models/locators/PlaywrightLocator.js.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightRootLocator.d.ts +3 -3
- package/lib/screenplay/models/locators/PlaywrightRootLocator.d.ts.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightRootLocator.js +5 -3
- package/lib/screenplay/models/locators/PlaywrightRootLocator.js.map +1 -1
- package/lib/screenplay/promised.d.ts +10 -0
- package/lib/screenplay/promised.d.ts.map +1 -0
- package/lib/screenplay/promised.js +16 -0
- package/lib/screenplay/promised.js.map +1 -0
- package/package.json +5 -5
- package/src/screenplay/abilities/BrowseTheWebWithPlaywright.ts +1 -1
- package/src/screenplay/models/PlaywrightPage.ts +18 -20
- package/src/screenplay/models/PlaywrightPageElement.ts +8 -8
- package/src/screenplay/models/locators/PlaywrightLocator.ts +18 -21
- package/src/screenplay/models/locators/PlaywrightRootLocator.ts +8 -5
- package/src/screenplay/promised.ts +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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
|
+
|
|
6
25
|
## [3.2.1](https://github.com/serenity-js/serenity-js/compare/v3.2.0...v3.2.1) (2023-05-15)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @serenity-js/playwright
|
|
@@ -38,7 +38,7 @@ import { PlaywrightOptions } from '../../PlaywrightOptions';
|
|
|
38
38
|
*
|
|
39
39
|
* @group Abilities
|
|
40
40
|
*/
|
|
41
|
-
export declare class BrowseTheWebWithPlaywright extends BrowseTheWeb<playwright.
|
|
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,
|
|
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,
|
|
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.
|
|
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.
|
|
21
|
-
locateAll(selector: Selector): PageElements<playwright.
|
|
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":";AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
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
|
|
61
|
-
?
|
|
62
|
-
:
|
|
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
|
|
75
|
-
?
|
|
76
|
-
:
|
|
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
|
-
|
|
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
|
-
|
|
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":";;;AAAA,4CAAgE;
|
|
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.
|
|
9
|
-
of(parent: PageElement<playwright.
|
|
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,
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA+C;AAC/C,0CAA+E;AAC/E,sEAAwD;AAExD,2CAA+C;AAI/C;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,
|
|
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.
|
|
10
|
-
constructor(parent: RootLocator<playwright.
|
|
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.
|
|
14
|
-
allNativeElements(): Promise<Array<playwright.
|
|
15
|
-
of(parent: PlaywrightRootLocator): Locator<playwright.
|
|
16
|
-
locate(child: PlaywrightLocator): Locator<playwright.
|
|
17
|
-
element(): PageElement<playwright.
|
|
18
|
-
allElements(): Promise<Array<PageElement<playwright.
|
|
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;
|
|
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
|
-
|
|
46
|
-
return
|
|
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
|
-
|
|
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
|
|
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":";;;AAAA,4CAAkD;AAClD,0CAAgJ;AAGhJ,oEAAiE;AAGjE;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,
|
|
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.
|
|
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.
|
|
14
|
-
switchToFrame(frame: playwright.
|
|
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;
|
|
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
|
-
|
|
21
|
-
return this.currentFrame;
|
|
21
|
+
nativeElement() {
|
|
22
|
+
return (0, promised_1.promised)(this.currentFrame);
|
|
22
23
|
}
|
|
23
24
|
async switchToFrame(frame) {
|
|
24
|
-
|
|
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,
|
|
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.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "Serenity/JS Screenplay Pattern library for Playwright",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
"node": "^16.13 || ^18.12 || ^20"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@serenity-js/core": "3.
|
|
47
|
-
"@serenity-js/web": "3.
|
|
48
|
-
"playwright-core": "^1.
|
|
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": {
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"ts-node": "^10.9.1",
|
|
59
59
|
"typescript": "^5.0.4"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
15
|
-
of(parent: PageElement<playwright.
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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.
|
|
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.
|
|
14
|
+
export class PlaywrightLocator extends Locator<playwright.Locator, string> {
|
|
14
15
|
|
|
15
16
|
constructor(
|
|
16
|
-
parent: RootLocator<playwright.
|
|
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
|
-
|
|
61
|
+
await parent.locator(this.nativeSelector()).first().waitFor({ state: 'attached', timeout: 250 });
|
|
61
62
|
|
|
62
|
-
return
|
|
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.
|
|
73
|
-
|
|
74
|
+
async nativeElement(): Promise<playwright.Locator> {
|
|
74
75
|
const parent = await this.parent.nativeElement();
|
|
75
76
|
|
|
76
|
-
|
|
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.
|
|
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
|
|
87
|
+
return promised(parent.locator(this.nativeSelector()).all());
|
|
91
88
|
}
|
|
92
89
|
|
|
93
|
-
of(parent: PlaywrightRootLocator): Locator<playwright.
|
|
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.
|
|
94
|
+
locate(child: PlaywrightLocator): Locator<playwright.Locator, string> {
|
|
98
95
|
return new PlaywrightLocator(this, child.selector);
|
|
99
96
|
}
|
|
100
97
|
|
|
101
|
-
element(): PageElement<playwright.
|
|
98
|
+
element(): PageElement<playwright.Locator> {
|
|
102
99
|
return new PlaywrightPageElement(this);
|
|
103
100
|
}
|
|
104
101
|
|
|
105
|
-
async allElements(): Promise<Array<PageElement<playwright.
|
|
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.
|
|
122
|
+
parent: RootLocator<playwright.Locator>,
|
|
126
123
|
selector: Selector,
|
|
127
|
-
private readonly existingNativeElement: playwright.
|
|
124
|
+
private readonly existingNativeElement: playwright.Locator,
|
|
128
125
|
) {
|
|
129
126
|
super(parent, selector);
|
|
130
127
|
}
|
|
131
128
|
|
|
132
|
-
async nativeElement(): Promise<playwright.
|
|
129
|
+
async nativeElement(): Promise<playwright.Locator> {
|
|
133
130
|
return this.existingNativeElement;
|
|
134
131
|
}
|
|
135
132
|
|
|
136
|
-
async allNativeElements(): Promise<Array<playwright.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
28
|
-
|
|
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
|
+
}
|