@serenity-js/webdriverio 3.22.4 → 3.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/esm/screenplay/models/WebdriverIOPage.d.ts +3 -2
- package/esm/screenplay/models/WebdriverIOPage.d.ts.map +1 -1
- package/esm/screenplay/models/WebdriverIOPage.js +27 -19
- package/esm/screenplay/models/WebdriverIOPage.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOPage.d.ts +3 -2
- package/lib/screenplay/models/WebdriverIOPage.d.ts.map +1 -1
- package/lib/screenplay/models/WebdriverIOPage.js +49 -18
- package/lib/screenplay/models/WebdriverIOPage.js.map +1 -1
- package/package.json +6 -6
- package/src/screenplay/models/WebdriverIOPage.ts +41 -20
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.23.1](https://github.com/serenity-js/serenity-js/compare/v3.23.0...v3.23.1) (2024-05-20)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **deps:** update dependency axios to v1.7.0 ([7baf7c3](https://github.com/serenity-js/serenity-js/commit/7baf7c340f63ab7a7cf661be3a3835087e168c80))
|
|
12
|
+
* **rest:** upgraded Axios to 1.7.1 ([83566b7](https://github.com/serenity-js/serenity-js/commit/83566b73f3ccd4f0db222c841a95fc2f428759b8))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# [3.23.0](https://github.com/serenity-js/serenity-js/compare/v3.22.4...v3.23.0) (2024-05-12)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* **webdriverio:** support for injecting scripts parameterised with complex data structures ([e920e67](https://github.com/serenity-js/serenity-js/commit/e920e6709262c8249c992ac02a01f49d5789a35d))
|
|
24
|
+
* **web:** scripts injected into the browser accept data structures containing PageElement objects ([2fbddf5](https://github.com/serenity-js/serenity-js/commit/2fbddf5d78d2965aecd6786b020c93ea079bdaf1))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [3.22.4](https://github.com/serenity-js/serenity-js/compare/v3.22.3...v3.22.4) (2024-05-07)
|
|
7
31
|
|
|
8
32
|
**Note:** Version bump only for package @serenity-js/webdriverio
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import 'webdriverio';
|
|
3
3
|
import type { CorrelationId } from '@serenity-js/core/lib/model/index.js';
|
|
4
|
-
import type { Cookie, CookieData, ModalDialogHandler,
|
|
5
|
-
import { Key, Page } from '@serenity-js/web';
|
|
4
|
+
import type { Cookie, CookieData, ModalDialogHandler, PageElements, Selector } from '@serenity-js/web';
|
|
5
|
+
import { Key, Page, PageElement } from '@serenity-js/web';
|
|
6
6
|
import { URL } from 'url';
|
|
7
7
|
import type { WebdriverIOBrowsingSession } from './WebdriverIOBrowsingSession.js';
|
|
8
8
|
import type { WebdriverIOErrorHandler } from './WebdriverIOErrorHandler.js';
|
|
@@ -15,6 +15,7 @@ export declare class WebdriverIOPage extends Page<WebdriverIO.Element> {
|
|
|
15
15
|
private readonly browser;
|
|
16
16
|
private readonly errorHandler;
|
|
17
17
|
private lastScriptExecutionSummary;
|
|
18
|
+
private dehydrator;
|
|
18
19
|
constructor(session: WebdriverIOBrowsingSession, browser: WebdriverIO.Browser, modalDialogHandler: ModalDialogHandler, errorHandler: WebdriverIOErrorHandler, pageId: CorrelationId);
|
|
19
20
|
createPageElement(nativeElement: WebdriverIO.Element): PageElement<WebdriverIO.Element>;
|
|
20
21
|
locate(selector: Selector): PageElement<WebdriverIO.Element>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"WebdriverIOPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,EAAuD,GAAG,EAAE,IAAI,EAAE,WAAW,EAAuB,MAAM,kBAAkB,CAAC;AAEpI,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAElF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAG5E;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IAatD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAbjC,OAAO,CAAC,0BAA0B,CAA6B;IAG/D,OAAO,CAAC,UAAU,CAGhB;gBAIE,OAAO,EAAE,0BAA0B,EAClB,OAAO,EAAE,WAAW,CAAC,OAAO,EAC7C,kBAAkB,EAAE,kBAAkB,EACrB,YAAY,EAAE,uBAAuB,EACtD,MAAM,EAAE,aAAa;IAUzB,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;IAWvF,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;IAM5D,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;IAQ1D,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,aAAa,CAAC,MAAM,EAAE,cAAc,SAAS,GAAG,EAAE,EACpD,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,EAC5D,GAAG,IAAI,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC;IAuBZ,kBAAkB,CAAC,MAAM,EAAE,UAAU,SAAS,GAAG,EAAE,EACrD,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,EACrG,GAAG,IAAI,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC;IA4BlB,yBAAyB,CAAC,MAAM,GAAG,GAAG,KAAK,MAAM;IAY3C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAMnB,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAoB1D,eAAe,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;YAUrB,mBAAmB;CAiBpC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import 'webdriverio';
|
|
2
2
|
import { List, LogicError } from '@serenity-js/core';
|
|
3
|
-
import { BrowserWindowClosedError, ByCss, Key, Page, PageElementsLocator } from '@serenity-js/web';
|
|
3
|
+
import { ArgumentDehydrator, BrowserWindowClosedError, ByCss, Key, Page, PageElement, PageElementsLocator } from '@serenity-js/web';
|
|
4
|
+
import * as scripts from '@serenity-js/web/lib/scripts/index.js';
|
|
4
5
|
import { URL } from 'url';
|
|
5
6
|
import { WebdriverIOExistingElementLocator, WebdriverIOLocator, WebdriverIORootLocator } from './locators/index.js';
|
|
6
7
|
import { WebdriverIOCookie } from './WebdriverIOCookie.js';
|
|
@@ -14,6 +15,9 @@ export class WebdriverIOPage extends Page {
|
|
|
14
15
|
browser;
|
|
15
16
|
errorHandler;
|
|
16
17
|
lastScriptExecutionSummary;
|
|
18
|
+
/* eslint-disable unicorn/consistent-function-scoping */
|
|
19
|
+
dehydrator = new ArgumentDehydrator((item) => item instanceof PageElement, (item) => item.nativeElement());
|
|
20
|
+
/* eslint-enable */
|
|
17
21
|
constructor(session, browser, modalDialogHandler, errorHandler, pageId) {
|
|
18
22
|
super(session, new WebdriverIORootLocator(browser), modalDialogHandler, pageId);
|
|
19
23
|
this.browser = browser;
|
|
@@ -50,29 +54,33 @@ export class WebdriverIOPage extends Page {
|
|
|
50
54
|
await this.inContextOfThisPage(() => this.browser.keys(keySequence));
|
|
51
55
|
}
|
|
52
56
|
async executeScript(script, ...args) {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const result = await this.inContextOfThisPage(() => {
|
|
61
|
-
|
|
57
|
+
const serialisedScript = typeof script === 'function'
|
|
58
|
+
? String(script)
|
|
59
|
+
: String(`function script() { ${script} }`);
|
|
60
|
+
const executableScript = new Function(`
|
|
61
|
+
var parameters = (${scripts.rehydrate}).apply(null, arguments);
|
|
62
|
+
return (${serialisedScript}).apply(null, parameters);
|
|
63
|
+
`);
|
|
64
|
+
const result = await this.inContextOfThisPage(async () => {
|
|
65
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
66
|
+
return await this.browser.execute(executableScript, ...dehydratedArguments);
|
|
62
67
|
});
|
|
63
68
|
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|
|
64
69
|
return result;
|
|
65
70
|
}
|
|
66
71
|
async executeAsyncScript(script, ...args) {
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
const serialisedScript = typeof script === 'function'
|
|
73
|
+
? String(script)
|
|
74
|
+
: String(`function script() { ${script} }`);
|
|
75
|
+
const executableScript = new Function(`
|
|
76
|
+
var args = Array.prototype.slice.call(arguments, 0, -1);
|
|
77
|
+
var callback = arguments[arguments.length - 1];
|
|
78
|
+
var parameters = (${scripts.rehydrate}).apply(null, args);
|
|
79
|
+
(${serialisedScript}).apply(null, parameters.concat(callback));
|
|
80
|
+
`);
|
|
81
|
+
const result = await this.inContextOfThisPage(async () => {
|
|
82
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
83
|
+
return this.browser.executeAsync(executableScript, ...dehydratedArguments);
|
|
76
84
|
});
|
|
77
85
|
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|
|
78
86
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"WebdriverIOPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import 'webdriverio';
|
|
3
3
|
import type { CorrelationId } from '@serenity-js/core/lib/model/index.js';
|
|
4
|
-
import type { Cookie, CookieData, ModalDialogHandler,
|
|
5
|
-
import { Key, Page } from '@serenity-js/web';
|
|
4
|
+
import type { Cookie, CookieData, ModalDialogHandler, PageElements, Selector } from '@serenity-js/web';
|
|
5
|
+
import { Key, Page, PageElement } from '@serenity-js/web';
|
|
6
6
|
import { URL } from 'url';
|
|
7
7
|
import type { WebdriverIOBrowsingSession } from './WebdriverIOBrowsingSession.js';
|
|
8
8
|
import type { WebdriverIOErrorHandler } from './WebdriverIOErrorHandler.js';
|
|
@@ -15,6 +15,7 @@ export declare class WebdriverIOPage extends Page<WebdriverIO.Element> {
|
|
|
15
15
|
private readonly browser;
|
|
16
16
|
private readonly errorHandler;
|
|
17
17
|
private lastScriptExecutionSummary;
|
|
18
|
+
private dehydrator;
|
|
18
19
|
constructor(session: WebdriverIOBrowsingSession, browser: WebdriverIO.Browser, modalDialogHandler: ModalDialogHandler, errorHandler: WebdriverIOErrorHandler, pageId: CorrelationId);
|
|
19
20
|
createPageElement(nativeElement: WebdriverIO.Element): PageElement<WebdriverIO.Element>;
|
|
20
21
|
locate(selector: Selector): PageElement<WebdriverIO.Element>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"WebdriverIOPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.WebdriverIOPage = void 0;
|
|
4
27
|
require("webdriverio");
|
|
5
28
|
const core_1 = require("@serenity-js/core");
|
|
6
29
|
const web_1 = require("@serenity-js/web");
|
|
30
|
+
const scripts = __importStar(require("@serenity-js/web/lib/scripts/index.js"));
|
|
7
31
|
const url_1 = require("url");
|
|
8
32
|
const index_js_1 = require("./locators/index.js");
|
|
9
33
|
const WebdriverIOCookie_js_1 = require("./WebdriverIOCookie.js");
|
|
@@ -17,6 +41,9 @@ class WebdriverIOPage extends web_1.Page {
|
|
|
17
41
|
browser;
|
|
18
42
|
errorHandler;
|
|
19
43
|
lastScriptExecutionSummary;
|
|
44
|
+
/* eslint-disable unicorn/consistent-function-scoping */
|
|
45
|
+
dehydrator = new web_1.ArgumentDehydrator((item) => item instanceof web_1.PageElement, (item) => item.nativeElement());
|
|
46
|
+
/* eslint-enable */
|
|
20
47
|
constructor(session, browser, modalDialogHandler, errorHandler, pageId) {
|
|
21
48
|
super(session, new index_js_1.WebdriverIORootLocator(browser), modalDialogHandler, pageId);
|
|
22
49
|
this.browser = browser;
|
|
@@ -53,29 +80,33 @@ class WebdriverIOPage extends web_1.Page {
|
|
|
53
80
|
await this.inContextOfThisPage(() => this.browser.keys(keySequence));
|
|
54
81
|
}
|
|
55
82
|
async executeScript(script, ...args) {
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const result = await this.inContextOfThisPage(() => {
|
|
64
|
-
|
|
83
|
+
const serialisedScript = typeof script === 'function'
|
|
84
|
+
? String(script)
|
|
85
|
+
: String(`function script() { ${script} }`);
|
|
86
|
+
const executableScript = new Function(`
|
|
87
|
+
var parameters = (${scripts.rehydrate}).apply(null, arguments);
|
|
88
|
+
return (${serialisedScript}).apply(null, parameters);
|
|
89
|
+
`);
|
|
90
|
+
const result = await this.inContextOfThisPage(async () => {
|
|
91
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
92
|
+
return await this.browser.execute(executableScript, ...dehydratedArguments);
|
|
65
93
|
});
|
|
66
94
|
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|
|
67
95
|
return result;
|
|
68
96
|
}
|
|
69
97
|
async executeAsyncScript(script, ...args) {
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
98
|
+
const serialisedScript = typeof script === 'function'
|
|
99
|
+
? String(script)
|
|
100
|
+
: String(`function script() { ${script} }`);
|
|
101
|
+
const executableScript = new Function(`
|
|
102
|
+
var args = Array.prototype.slice.call(arguments, 0, -1);
|
|
103
|
+
var callback = arguments[arguments.length - 1];
|
|
104
|
+
var parameters = (${scripts.rehydrate}).apply(null, args);
|
|
105
|
+
(${serialisedScript}).apply(null, parameters.concat(callback));
|
|
106
|
+
`);
|
|
107
|
+
const result = await this.inContextOfThisPage(async () => {
|
|
108
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
109
|
+
return this.browser.executeAsync(executableScript, ...dehydratedArguments);
|
|
79
110
|
});
|
|
80
111
|
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|
|
81
112
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WebdriverIOPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/webdriverio",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.23.1",
|
|
4
4
|
"description": "Serenity/JS reporter and Screenplay Pattern library for WebdriverIO",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
"node": "^16.13 || ^18.12 || ^20"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@serenity-js/core": "3.
|
|
69
|
-
"@serenity-js/rest": "3.
|
|
70
|
-
"@serenity-js/web": "3.
|
|
68
|
+
"@serenity-js/core": "3.23.1",
|
|
69
|
+
"@serenity-js/rest": "3.23.1",
|
|
70
|
+
"@serenity-js/web": "3.23.1",
|
|
71
71
|
"@wdio/reporter": "8.36.1",
|
|
72
72
|
"deepmerge": "4.3.1",
|
|
73
73
|
"tiny-types": "1.22.0"
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"@wdio/local-runner": "8.36.1",
|
|
100
100
|
"@wdio/spec-reporter": "8.36.1",
|
|
101
101
|
"@wdio/types": "8.36.1",
|
|
102
|
-
"axios": "1.
|
|
102
|
+
"axios": "1.7.1",
|
|
103
103
|
"c8": "9.1.0",
|
|
104
104
|
"cross-env": "7.0.3",
|
|
105
105
|
"mocha": "10.4.0",
|
|
@@ -109,5 +109,5 @@
|
|
|
109
109
|
"start-server-and-test": "2.0.3",
|
|
110
110
|
"webdriverio": "8.36.1"
|
|
111
111
|
},
|
|
112
|
-
"gitHead": "
|
|
112
|
+
"gitHead": "6bb08ce04a5590660704eed74334396ccca42a33"
|
|
113
113
|
}
|
|
@@ -2,8 +2,9 @@ import 'webdriverio';
|
|
|
2
2
|
|
|
3
3
|
import { List, LogicError } from '@serenity-js/core';
|
|
4
4
|
import type { CorrelationId } from '@serenity-js/core/lib/model/index.js';
|
|
5
|
-
import type { Cookie, CookieData, ModalDialogHandler,
|
|
6
|
-
import { BrowserWindowClosedError, ByCss, Key, Page, PageElementsLocator } from '@serenity-js/web';
|
|
5
|
+
import type { Cookie, CookieData, ModalDialogHandler, PageElements, Selector } from '@serenity-js/web';
|
|
6
|
+
import { ArgumentDehydrator, BrowserWindowClosedError, ByCss, Key, Page, PageElement, PageElementsLocator } from '@serenity-js/web';
|
|
7
|
+
import * as scripts from '@serenity-js/web/lib/scripts/index.js';
|
|
7
8
|
import { URL } from 'url';
|
|
8
9
|
|
|
9
10
|
import { WebdriverIOExistingElementLocator, WebdriverIOLocator, WebdriverIORootLocator } from './locators/index.js';
|
|
@@ -21,6 +22,13 @@ export class WebdriverIOPage extends Page<WebdriverIO.Element> {
|
|
|
21
22
|
|
|
22
23
|
private lastScriptExecutionSummary: LastScriptExecutionSummary;
|
|
23
24
|
|
|
25
|
+
/* eslint-disable unicorn/consistent-function-scoping */
|
|
26
|
+
private dehydrator: ArgumentDehydrator<PageElement<WebdriverIO.Element>, WebdriverIO.Element> = new ArgumentDehydrator(
|
|
27
|
+
(item: any): item is PageElement<WebdriverIO.Element> => item instanceof PageElement,
|
|
28
|
+
(item: PageElement<WebdriverIO.Element>) => item.nativeElement(),
|
|
29
|
+
);
|
|
30
|
+
/* eslint-enable */
|
|
31
|
+
|
|
24
32
|
constructor(
|
|
25
33
|
session: WebdriverIOBrowsingSession,
|
|
26
34
|
private readonly browser: WebdriverIO.Browser,
|
|
@@ -93,17 +101,21 @@ export class WebdriverIOPage extends Page<WebdriverIO.Element> {
|
|
|
93
101
|
script: string | ((...parameters: InnerArguments) => Result),
|
|
94
102
|
...args: InnerArguments
|
|
95
103
|
): Promise<Result> {
|
|
96
|
-
const innerArguments = [] as InnerArguments;
|
|
97
|
-
for (const arg of args) {
|
|
98
|
-
const innerArgument = arg instanceof WebdriverIOPageElement
|
|
99
|
-
? await arg.nativeElement()
|
|
100
|
-
: arg;
|
|
101
104
|
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
const serialisedScript = typeof script === 'function'
|
|
106
|
+
? String(script)
|
|
107
|
+
: String(`function script() { ${ script } }`);
|
|
108
|
+
|
|
109
|
+
const executableScript = new Function(`
|
|
110
|
+
var parameters = (${ scripts.rehydrate }).apply(null, arguments);
|
|
111
|
+
return (${ serialisedScript }).apply(null, parameters);
|
|
112
|
+
`);
|
|
113
|
+
|
|
114
|
+
const result = await this.inContextOfThisPage<Result>(async () => {
|
|
115
|
+
|
|
116
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
104
117
|
|
|
105
|
-
|
|
106
|
-
return this.browser.execute(script, ...innerArguments);
|
|
118
|
+
return await this.browser.execute(executableScript as any, ...dehydratedArguments);
|
|
107
119
|
});
|
|
108
120
|
|
|
109
121
|
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|
|
@@ -115,17 +127,26 @@ export class WebdriverIOPage extends Page<WebdriverIO.Element> {
|
|
|
115
127
|
script: string | ((...args: [...parameters: Parameters, callback: (result: Result) => void]) => void),
|
|
116
128
|
...args: Parameters
|
|
117
129
|
): Promise<Result> {
|
|
118
|
-
const parameters = [] as Parameters;
|
|
119
|
-
for (const arg of args) {
|
|
120
|
-
const parameter = arg instanceof WebdriverIOPageElement
|
|
121
|
-
? await arg.nativeElement()
|
|
122
|
-
: arg;
|
|
123
130
|
|
|
124
|
-
|
|
125
|
-
|
|
131
|
+
const serialisedScript = typeof script === 'function'
|
|
132
|
+
? String(script)
|
|
133
|
+
: String(`function script() { ${ script } }`);
|
|
134
|
+
|
|
135
|
+
const executableScript = new Function(`
|
|
136
|
+
var args = Array.prototype.slice.call(arguments, 0, -1);
|
|
137
|
+
var callback = arguments[arguments.length - 1];
|
|
138
|
+
var parameters = (${ scripts.rehydrate }).apply(null, args);
|
|
139
|
+
(${ serialisedScript }).apply(null, parameters.concat(callback));
|
|
140
|
+
`);
|
|
141
|
+
|
|
142
|
+
const result = await this.inContextOfThisPage<Result>(async () => {
|
|
143
|
+
|
|
144
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
126
145
|
|
|
127
|
-
|
|
128
|
-
|
|
146
|
+
return this.browser.executeAsync<Result, [ { argsCount: number, refsCount: number }, ...any[] ]>(
|
|
147
|
+
executableScript as (...args: [ { argsCount: number, refsCount: number }, ...any[], callback: (result: Result) => void ]) => void,
|
|
148
|
+
...dehydratedArguments as [ { argsCount: number, refsCount: number }, ...any[] ],
|
|
149
|
+
);
|
|
129
150
|
});
|
|
130
151
|
|
|
131
152
|
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|