@serenity-js/web 3.0.0-rc.19 → 3.0.0-rc.21
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 +34 -0
- package/README.md +1 -1
- package/lib/errors/BrowserWindowClosedError.d.ts +4 -0
- package/lib/errors/BrowserWindowClosedError.js +11 -0
- package/lib/errors/BrowserWindowClosedError.js.map +1 -0
- package/lib/errors/ModalDialogObstructsScreenshotError.d.ts +4 -0
- package/lib/errors/ModalDialogObstructsScreenshotError.js +11 -0
- package/lib/errors/ModalDialogObstructsScreenshotError.js.map +1 -0
- package/lib/errors/index.d.ts +2 -0
- package/lib/errors/index.js +2 -0
- package/lib/errors/index.js.map +1 -1
- package/lib/expectations/ElementExpectation.d.ts +2 -2
- package/lib/expectations/ElementExpectation.js +6 -11
- package/lib/expectations/ElementExpectation.js.map +1 -1
- package/lib/expectations/isActive.d.ts +1 -1
- package/lib/expectations/isActive.js +1 -1
- package/lib/expectations/isClickable.d.ts +1 -1
- package/lib/expectations/isClickable.js +1 -1
- package/lib/expectations/isEnabled.d.ts +1 -1
- package/lib/expectations/isEnabled.js +1 -1
- package/lib/expectations/isSelected.d.ts +1 -1
- package/lib/expectations/isSelected.js +1 -1
- package/lib/expectations/isVisible.d.ts +1 -1
- package/lib/expectations/isVisible.js +1 -1
- package/lib/screenplay/abilities/BrowseTheWeb.d.ts +19 -25
- package/lib/screenplay/abilities/BrowseTheWeb.js +25 -10
- package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
- package/lib/screenplay/abilities/BrowserCapabilities.d.ts +27 -0
- package/lib/screenplay/interactions/Clear.d.ts +1 -0
- package/lib/screenplay/interactions/Clear.js +15 -6
- package/lib/screenplay/interactions/Clear.js.map +1 -1
- package/lib/screenplay/interactions/Click.js +1 -1
- package/lib/screenplay/interactions/Click.js.map +1 -1
- package/lib/screenplay/interactions/DoubleClick.d.ts +2 -2
- package/lib/screenplay/interactions/DoubleClick.js +2 -2
- package/lib/screenplay/interactions/ExecuteScript.js +9 -7
- package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
- package/lib/screenplay/interactions/Hover.d.ts +3 -3
- package/lib/screenplay/interactions/Hover.js +5 -5
- package/lib/screenplay/interactions/Hover.js.map +1 -1
- package/lib/screenplay/interactions/Navigate.js +17 -9
- package/lib/screenplay/interactions/Navigate.js.map +1 -1
- package/lib/screenplay/interactions/Press.js +5 -3
- package/lib/screenplay/interactions/Press.js.map +1 -1
- package/lib/screenplay/interactions/Scroll.d.ts +3 -3
- package/lib/screenplay/interactions/Scroll.js +5 -6
- package/lib/screenplay/interactions/Scroll.js.map +1 -1
- package/lib/screenplay/interactions/Select.js +13 -54
- package/lib/screenplay/interactions/Select.js.map +1 -1
- package/lib/screenplay/interactions/TakeScreenshot.js +2 -1
- package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
- package/lib/screenplay/interactions/index.d.ts +0 -1
- package/lib/screenplay/interactions/index.js +0 -1
- package/lib/screenplay/interactions/index.js.map +1 -1
- package/lib/screenplay/models/BrowsingSession.d.ts +90 -0
- package/lib/screenplay/models/BrowsingSession.js +120 -0
- package/lib/screenplay/models/BrowsingSession.js.map +1 -0
- package/lib/screenplay/models/Cookie.d.ts +12 -0
- package/lib/screenplay/models/Cookie.js +19 -4
- package/lib/screenplay/models/Cookie.js.map +1 -1
- package/lib/screenplay/models/Locator.d.ts +13 -8
- package/lib/screenplay/models/Locator.js +13 -7
- package/lib/screenplay/models/Locator.js.map +1 -1
- package/lib/screenplay/models/Page.d.ts +238 -5
- package/lib/screenplay/models/Page.js +46 -3
- package/lib/screenplay/models/Page.js.map +1 -1
- package/lib/screenplay/models/PageElement.d.ts +3 -0
- package/lib/screenplay/models/PageElement.js +2 -1
- package/lib/screenplay/models/PageElement.js.map +1 -1
- package/lib/screenplay/models/PageElements.d.ts +3 -3
- package/lib/screenplay/models/PageElements.js +4 -3
- package/lib/screenplay/models/PageElements.js.map +1 -1
- package/lib/screenplay/models/RootLocator.d.ts +7 -0
- package/lib/screenplay/models/RootLocator.js +10 -0
- package/lib/screenplay/models/RootLocator.js.map +1 -0
- package/lib/screenplay/models/SelectOption.d.ts +11 -0
- package/lib/screenplay/models/SelectOption.js +24 -0
- package/lib/screenplay/models/SelectOption.js.map +1 -0
- package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts +5 -0
- package/lib/screenplay/models/dialogs/AbsentModalDialog.js +15 -0
- package/lib/screenplay/models/dialogs/AbsentModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts +7 -0
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.js +20 -0
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts +7 -0
- package/lib/screenplay/models/dialogs/DismissedModalDialog.js +20 -0
- package/lib/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/ModalDialog.d.ts +151 -0
- package/lib/screenplay/models/dialogs/ModalDialog.js +154 -0
- package/lib/screenplay/models/dialogs/ModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts +46 -0
- package/lib/screenplay/models/dialogs/ModalDialogHandler.js +27 -0
- package/lib/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -0
- package/lib/screenplay/models/dialogs/index.d.ts +5 -0
- package/lib/screenplay/models/dialogs/index.js +22 -0
- package/lib/screenplay/models/dialogs/index.js.map +1 -0
- package/lib/screenplay/models/index.d.ts +4 -1
- package/lib/screenplay/models/index.js +4 -1
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/selectors/By.d.ts +1 -0
- package/lib/screenplay/models/selectors/By.js +7 -0
- package/lib/screenplay/models/selectors/By.js.map +1 -1
- package/lib/screenplay/models/selectors/ByDeepCss.d.ts +5 -0
- package/lib/screenplay/models/selectors/ByDeepCss.js +12 -0
- package/lib/screenplay/models/selectors/ByDeepCss.js.map +1 -0
- package/lib/screenplay/models/selectors/index.d.ts +1 -0
- package/lib/screenplay/models/selectors/index.js +1 -0
- package/lib/screenplay/models/selectors/index.js.map +1 -1
- package/lib/screenplay/questions/LastScriptExecution.js +4 -1
- package/lib/screenplay/questions/LastScriptExecution.js.map +1 -1
- package/lib/screenplay/questions/Selected.d.ts +5 -5
- package/lib/screenplay/questions/Selected.js +29 -20
- package/lib/screenplay/questions/Selected.js.map +1 -1
- package/lib/scripts/index.d.ts +1 -0
- package/lib/scripts/index.js +18 -0
- package/lib/scripts/index.js.map +1 -0
- package/lib/scripts/isVisible.d.ts +1 -0
- package/lib/scripts/isVisible.js +96 -0
- package/lib/scripts/isVisible.js.map +1 -0
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +5 -16
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -1
- package/package.json +8 -8
- package/src/errors/BrowserWindowClosedError.ts +7 -0
- package/src/errors/ModalDialogObstructsScreenshotError.ts +7 -0
- package/src/errors/index.ts +2 -0
- package/src/expectations/ElementExpectation.ts +6 -10
- package/src/expectations/isActive.ts +1 -1
- package/src/expectations/isClickable.ts +1 -1
- package/src/expectations/isEnabled.ts +1 -1
- package/src/expectations/isSelected.ts +1 -1
- package/src/expectations/isVisible.ts +1 -1
- package/src/screenplay/abilities/BrowseTheWeb.ts +23 -53
- package/src/screenplay/abilities/BrowserCapabilities.ts +30 -0
- package/src/screenplay/interactions/Clear.ts +21 -8
- package/src/screenplay/interactions/Click.ts +1 -1
- package/src/screenplay/interactions/DoubleClick.ts +2 -2
- package/src/screenplay/interactions/ExecuteScript.ts +36 -33
- package/src/screenplay/interactions/Hover.ts +4 -4
- package/src/screenplay/interactions/Navigate.ts +22 -18
- package/src/screenplay/interactions/Press.ts +6 -4
- package/src/screenplay/interactions/Scroll.ts +5 -6
- package/src/screenplay/interactions/Select.ts +20 -73
- package/src/screenplay/interactions/TakeScreenshot.ts +2 -1
- package/src/screenplay/interactions/index.ts +0 -1
- package/src/screenplay/models/BrowsingSession.ts +137 -0
- package/src/screenplay/models/Cookie.ts +21 -5
- package/src/screenplay/models/Locator.ts +26 -9
- package/src/screenplay/models/Page.ts +277 -5
- package/src/screenplay/models/PageElement.ts +7 -2
- package/src/screenplay/models/PageElements.ts +6 -5
- package/src/screenplay/models/RootLocator.ts +11 -0
- package/src/screenplay/models/SelectOption.ts +25 -0
- package/src/screenplay/models/dialogs/AbsentModalDialog.ts +13 -0
- package/src/screenplay/models/dialogs/AcceptedModalDialog.ts +18 -0
- package/src/screenplay/models/dialogs/DismissedModalDialog.ts +18 -0
- package/src/screenplay/models/dialogs/ModalDialog.ts +184 -0
- package/src/screenplay/models/dialogs/ModalDialogHandler.ts +59 -0
- package/src/screenplay/models/dialogs/index.ts +5 -0
- package/src/screenplay/models/index.ts +4 -1
- package/src/screenplay/models/selectors/By.ts +8 -0
- package/src/screenplay/models/selectors/ByDeepCss.ts +7 -0
- package/src/screenplay/models/selectors/index.ts +1 -0
- package/src/screenplay/questions/LastScriptExecution.ts +4 -2
- package/src/screenplay/questions/Selected.ts +41 -25
- package/src/scripts/index.ts +1 -0
- package/src/scripts/isVisible.ts +113 -0
- package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +5 -24
- package/lib/screenplay/interactions/Wait.d.ts +0 -143
- package/lib/screenplay/interactions/Wait.js +0 -238
- package/lib/screenplay/interactions/Wait.js.map +0 -1
- package/lib/screenplay/interactions/WaitBuilder.d.ts +0 -32
- package/lib/screenplay/interactions/WaitBuilder.js +0 -3
- package/lib/screenplay/interactions/WaitBuilder.js.map +0 -1
- package/lib/screenplay/models/ModalDialog.d.ts +0 -9
- package/lib/screenplay/models/ModalDialog.js +0 -14
- package/lib/screenplay/models/ModalDialog.js.map +0 -1
- package/src/screenplay/interactions/Wait.ts +0 -260
- package/src/screenplay/interactions/WaitBuilder.ts +0 -34
- package/src/screenplay/models/ModalDialog.ts +0 -19
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,40 @@
|
|
|
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.0.0-rc.21](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.20...v3.0.0-rc.21) (2022-07-11)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @serenity-js/web
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [3.0.0-rc.20](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.19...v3.0.0-rc.20) (2022-07-11)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **protractor:** isVisible check for ProtractorPageElement returns false for non-existent elements ([e64eee3](https://github.com/serenity-js/serenity-js/commit/e64eee377af32909f25e7c1d88f45a484abb1514)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
20
|
+
* **web:** improved JavaScript dialog-related error handling when taking screenshots ([3cd1149](https://github.com/serenity-js/serenity-js/commit/3cd1149ed74df95da17f1054cd4da93b095a4eed)), closes [puppeteer/puppeteer#2481](https://github.com/puppeteer/puppeteer/issues/2481) [#1156](https://github.com/serenity-js/serenity-js/issues/1156)
|
|
21
|
+
* **web:** renamed PagesContext to BrowsingSession to make the name more descriptive ([6b4e998](https://github.com/serenity-js/serenity-js/commit/6b4e9984d80f8f349f367e59bd0e615cd01703ec)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* **core:** interactions to Wait.for and Wait.until are now browser-independent ([d115142](https://github.com/serenity-js/serenity-js/commit/d1151427bed96c1ebd0d1dcc4159c6aeedc605de)), closes [#1035](https://github.com/serenity-js/serenity-js/issues/1035) [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
27
|
+
* **playwright:** configurable navigation waitUntil timeout ([2458fcb](https://github.com/serenity-js/serenity-js/commit/2458fcb22c946da41ab59cb21ac0d4cc48012da7)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
28
|
+
* **playwright:** initial support for Playwright ([87e88a1](https://github.com/serenity-js/serenity-js/commit/87e88a16cdc06477ed25eb83f9597fd370fdc109)), closes [#493](https://github.com/serenity-js/serenity-js/issues/493) [#563](https://github.com/serenity-js/serenity-js/issues/563) [#911](https://github.com/serenity-js/serenity-js/issues/911)
|
|
29
|
+
* **playwright:** interaction to Select option(s) from a <select /> dropdown ([009041d](https://github.com/serenity-js/serenity-js/commit/009041d83e22ddf3fef14670e0e5fd6d11cdfc73)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
30
|
+
* **playwright:** support for isVisible, plus consistent visibility checks across the board ([2c5c929](https://github.com/serenity-js/serenity-js/commit/2c5c929802f894f9fe59438a01f08b1b7bec3318)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
31
|
+
* **playwright:** support for working with frames ([89d4621](https://github.com/serenity-js/serenity-js/commit/89d46212073a342fe812a3ad2638a2ad0c39b620)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
32
|
+
* **web:** introduced PagesContext and implemented PlaywrightPage ([0045a72](https://github.com/serenity-js/serenity-js/commit/0045a726d540871333f644928218aed00bcd372c)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
|
|
33
|
+
* **web:** new portable APIs to handle ModalDialog windows ([c94d0ec](https://github.com/serenity-js/serenity-js/commit/c94d0ec43d2bc8aa39f8824f5d0f1e1cbcf137a1)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236) [#805](https://github.com/serenity-js/serenity-js/issues/805) [#1156](https://github.com/serenity-js/serenity-js/issues/1156)
|
|
34
|
+
* **web:** standardised support for deep CSS selectors across the Web integration modules ([e9e3f28](https://github.com/serenity-js/serenity-js/commit/e9e3f281191fc5c891841b6c8aab41213da3b0f5)), closes [#1238](https://github.com/serenity-js/serenity-js/issues/1238)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
6
40
|
# [3.0.0-rc.19](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.18...v3.0.0-rc.19) (2022-06-11)
|
|
7
41
|
|
|
8
42
|
**Note:** Version bump only for package @serenity-js/web
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ and [API docs](https://serenity-js.org/modules/), and follow [@SerenityJS](https
|
|
|
8
8
|
|
|
9
9
|
### Learning Serenity/JS
|
|
10
10
|
|
|
11
|
-
To learn more about Serenity/JS, check out the video below, read the [tutorial](https://serenity-js.org/handbook/thinking-in-serenity-js/index.html), review the [examples](https://github.com/serenity-js/serenity-js/tree/
|
|
11
|
+
To learn more about Serenity/JS, check out the video below, read the [tutorial](https://serenity-js.org/handbook/thinking-in-serenity-js/index.html), review the [examples](https://github.com/serenity-js/serenity-js/tree/main/examples), and create your own test suite with [Serenity/JS template projects](https://github.com/serenity-js).
|
|
12
12
|
|
|
13
13
|
If you have any questions, join us on [Serenity/JS Community Chat](https://gitter.im/serenity-js/Lobby).
|
|
14
14
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrowserWindowClosedError = void 0;
|
|
4
|
+
const core_1 = require("@serenity-js/core");
|
|
5
|
+
class BrowserWindowClosedError extends core_1.LogicError {
|
|
6
|
+
constructor(message, cause) {
|
|
7
|
+
super(message, cause);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.BrowserWindowClosedError = BrowserWindowClosedError;
|
|
11
|
+
//# sourceMappingURL=BrowserWindowClosedError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserWindowClosedError.js","sourceRoot":"","sources":["../../src/errors/BrowserWindowClosedError.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAE/C,MAAa,wBAAyB,SAAQ,iBAAU;IACpD,YAAY,OAAe,EAAE,KAAa;QACtC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;CACJ;AAJD,4DAIC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModalDialogObstructsScreenshotError = void 0;
|
|
4
|
+
const core_1 = require("@serenity-js/core");
|
|
5
|
+
class ModalDialogObstructsScreenshotError extends core_1.LogicError {
|
|
6
|
+
constructor(message, cause) {
|
|
7
|
+
super(message, cause);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.ModalDialogObstructsScreenshotError = ModalDialogObstructsScreenshotError;
|
|
11
|
+
//# sourceMappingURL=ModalDialogObstructsScreenshotError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalDialogObstructsScreenshotError.js","sourceRoot":"","sources":["../../src/errors/ModalDialogObstructsScreenshotError.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAE/C,MAAa,mCAAoC,SAAQ,iBAAU;IAC/D,YAAY,OAAe,EAAE,KAAa;QACtC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;CACJ;AAJD,kFAIC"}
|
package/lib/errors/index.d.ts
CHANGED
package/lib/errors/index.js
CHANGED
|
@@ -14,5 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./BrowserWindowClosedError"), exports);
|
|
17
18
|
__exportStar(require("./CookieMissingError"), exports);
|
|
19
|
+
__exportStar(require("./ModalDialogObstructsScreenshotError"), exports);
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
package/lib/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,uDAAqC;AACrC,wEAAsD"}
|
|
@@ -25,8 +25,8 @@ import { PageElement } from '../screenplay';
|
|
|
25
25
|
* );
|
|
26
26
|
*
|
|
27
27
|
* @example <caption>Using an expectation in a synchronisation statement</caption>
|
|
28
|
-
* import { actorCalled, Duration } from '@serenity-js/core';
|
|
29
|
-
* import { By, PageElement
|
|
28
|
+
* import { actorCalled, Duration, Wait } from '@serenity-js/core';
|
|
29
|
+
* import { By, PageElement } from '@serenity-js/web';
|
|
30
30
|
*
|
|
31
31
|
* const submitButton = () =>
|
|
32
32
|
* PageElement.located(By.css('.submit')).describedAs('submit button');
|
|
@@ -27,8 +27,8 @@ const core_1 = require("@serenity-js/core");
|
|
|
27
27
|
* );
|
|
28
28
|
*
|
|
29
29
|
* @example <caption>Using an expectation in a synchronisation statement</caption>
|
|
30
|
-
* import { actorCalled, Duration } from '@serenity-js/core';
|
|
31
|
-
* import { By, PageElement
|
|
30
|
+
* import { actorCalled, Duration, Wait } from '@serenity-js/core';
|
|
31
|
+
* import { By, PageElement } from '@serenity-js/web';
|
|
32
32
|
*
|
|
33
33
|
* const submitButton = () =>
|
|
34
34
|
* PageElement.located(By.css('.submit')).describedAs('submit button');
|
|
@@ -48,15 +48,10 @@ class ElementExpectation extends core_1.Expectation {
|
|
|
48
48
|
constructor(description, fn) {
|
|
49
49
|
super(description, async (actor, actual) => {
|
|
50
50
|
const pageElement = await actor.answer(actual);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
: new core_1.ExpectationNotMet(this.toString(), undefined, pageElement);
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
return new core_1.ExpectationNotMet(`${description} (${error.message})`, undefined, pageElement);
|
|
59
|
-
}
|
|
51
|
+
const result = await fn(pageElement);
|
|
52
|
+
return result
|
|
53
|
+
? new core_1.ExpectationMet(this.toString(), undefined, pageElement)
|
|
54
|
+
: new core_1.ExpectationNotMet(this.toString(), undefined, pageElement);
|
|
60
55
|
});
|
|
61
56
|
this.fn = fn;
|
|
62
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementExpectation.js","sourceRoot":"","sources":["../../src/expectations/ElementExpectation.ts"],"names":[],"mappings":";;;AAAA,4CAAiH;AAIjH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAa,kBAAmB,SAAQ,kBAAwB;IAwC5D;;;OAGG;IACH,YACI,WAAmB,EACF,EAA6C;QAE9D,KAAK,CACD,WAAW,EACX,KAAK,EAAE,KAAuB,EAAE,MAA+B,EAAE,EAAE;YAC/D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE/C,
|
|
1
|
+
{"version":3,"file":"ElementExpectation.js","sourceRoot":"","sources":["../../src/expectations/ElementExpectation.ts"],"names":[],"mappings":";;;AAAA,4CAAiH;AAIjH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAa,kBAAmB,SAAQ,kBAAwB;IAwC5D;;;OAGG;IACH,YACI,WAAmB,EACF,EAA6C;QAE9D,KAAK,CACD,WAAW,EACX,KAAK,EAAE,KAAuB,EAAE,MAA+B,EAAE,EAAE;YAC/D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;YAErC,OAAO,MAAM;gBACT,CAAC,CAAC,IAAI,qBAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC;gBAC7D,CAAC,CAAC,IAAI,wBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACzE,CAAC,CACJ,CAAC;QAbe,OAAE,GAAF,EAAE,CAA2C;IAclE,CAAC;IA1DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,MAAM,CAAC,YAAY,CAAC,WAAmB,EAAE,EAA6C;QAClF,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;CAuBJ;AA7DD,gDA6DC"}
|
|
@@ -10,6 +10,6 @@ import { PageElement } from '../screenplay';
|
|
|
10
10
|
* @see https://webdriver.io/docs/api/element/isFocused/
|
|
11
11
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
12
12
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
13
|
-
* @see {@link Wait}
|
|
13
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
14
14
|
*/
|
|
15
15
|
export declare function isActive(): Expectation<PageElement>;
|
|
@@ -12,7 +12,7 @@ const ElementExpectation_1 = require("./ElementExpectation");
|
|
|
12
12
|
* @see https://webdriver.io/docs/api/element/isFocused/
|
|
13
13
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
14
14
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
15
|
-
* @see {@link Wait}
|
|
15
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
16
16
|
*/
|
|
17
17
|
// todo: isFocused?
|
|
18
18
|
function isActive() {
|
|
@@ -15,6 +15,6 @@ import { PageElement } from '../screenplay';
|
|
|
15
15
|
* @see https://webdriver.io/docs/api/element/isClickable/
|
|
16
16
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
17
17
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
18
|
-
* @see {@link Wait}
|
|
18
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
19
19
|
*/
|
|
20
20
|
export declare function isClickable(): Expectation<PageElement>;
|
|
@@ -21,7 +21,7 @@ const isVisible_1 = require("./isVisible");
|
|
|
21
21
|
* @see https://webdriver.io/docs/api/element/isClickable/
|
|
22
22
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
23
23
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
24
|
-
* @see {@link Wait}
|
|
24
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
25
25
|
*/
|
|
26
26
|
function isClickable() {
|
|
27
27
|
return core_1.Expectation.to('become clickable').soThatActual((0, assertions_1.and)((0, isVisible_1.isVisible)(), (0, isEnabled_1.isEnabled)(), ElementExpectation_1.ElementExpectation.forElementTo('become clickable', actual => actual.isClickable())));
|
|
@@ -9,6 +9,6 @@ import { PageElement } from '../screenplay';
|
|
|
9
9
|
* @see https://webdriver.io/docs/api/element/isEnabled/
|
|
10
10
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
11
11
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
12
|
-
* @see {@link Wait}
|
|
12
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
13
13
|
*/
|
|
14
14
|
export declare function isEnabled(): Expectation<PageElement>;
|
|
@@ -11,7 +11,7 @@ const ElementExpectation_1 = require("./ElementExpectation");
|
|
|
11
11
|
* @see https://webdriver.io/docs/api/element/isEnabled/
|
|
12
12
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
13
13
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
14
|
-
* @see {@link Wait}
|
|
14
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
15
15
|
*/
|
|
16
16
|
function isEnabled() {
|
|
17
17
|
return ElementExpectation_1.ElementExpectation.forElementTo('become enabled', actual => actual.isEnabled());
|
|
@@ -9,6 +9,6 @@ import { PageElement } from '../screenplay';
|
|
|
9
9
|
* @see https://webdriver.io/docs/api/element/isSelected/
|
|
10
10
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
11
11
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
12
|
-
* @see {@link Wait}
|
|
12
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
13
13
|
*/
|
|
14
14
|
export declare function isSelected(): Expectation<PageElement>;
|
|
@@ -13,7 +13,7 @@ const ElementExpectation_1 = require("./ElementExpectation");
|
|
|
13
13
|
* @see https://webdriver.io/docs/api/element/isSelected/
|
|
14
14
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
15
15
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
16
|
-
* @see {@link Wait}
|
|
16
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
17
17
|
*/
|
|
18
18
|
function isSelected() {
|
|
19
19
|
return core_1.Expectation.to('become selected').soThatActual((0, assertions_1.and)((0, assertions_1.isPresent)(), ElementExpectation_1.ElementExpectation.forElementTo('become selected', actual => actual.isSelected())));
|
|
@@ -12,6 +12,6 @@ import { PageElement } from '../screenplay';
|
|
|
12
12
|
* @see https://webdriver.io/docs/api/element/isDisplayed/
|
|
13
13
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
14
14
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
15
|
-
* @see {@link Wait}
|
|
15
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
16
16
|
*/
|
|
17
17
|
export declare function isVisible(): Expectation<PageElement>;
|
|
@@ -14,7 +14,7 @@ const ElementExpectation_1 = require("./ElementExpectation");
|
|
|
14
14
|
* @see https://webdriver.io/docs/api/element/isDisplayed/
|
|
15
15
|
* @see {@link @serenity-js/assertions~Ensure}
|
|
16
16
|
* @see {@link @serenity-js/core/lib/screenplay/questions~Check}
|
|
17
|
-
* @see {@link Wait}
|
|
17
|
+
* @see {@link @serenity-js/core/lib/screenplay/interactions~Wait}
|
|
18
18
|
*/
|
|
19
19
|
function isVisible() {
|
|
20
20
|
return ElementExpectation_1.ElementExpectation.forElementTo('become visible', actual => actual.isVisible());
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { Ability,
|
|
2
|
-
import {
|
|
3
|
-
import { Cookie, CookieData, Locator, ModalDialog, Page, Selector } from '../models';
|
|
1
|
+
import { Ability, UsesAbilities } from '@serenity-js/core';
|
|
2
|
+
import { BrowsingSession, Page } from '../models';
|
|
4
3
|
import { BrowserCapabilities } from './BrowserCapabilities';
|
|
5
|
-
export declare abstract class BrowseTheWeb<Native_Element_Type = any
|
|
6
|
-
protected
|
|
4
|
+
export declare abstract class BrowseTheWeb<Native_Element_Type = any> implements Ability {
|
|
5
|
+
protected readonly session: BrowsingSession<Page<Native_Element_Type>>;
|
|
7
6
|
/**
|
|
8
7
|
* @desc
|
|
9
8
|
* Used to access the Actor's ability to {@link BrowseTheWeb}
|
|
@@ -13,28 +12,27 @@ export declare abstract class BrowseTheWeb<Native_Element_Type = any, Native_Roo
|
|
|
13
12
|
* @param {@serenity-js/core/lib/screenplay/actor~UsesAbilities} actor
|
|
14
13
|
* @return {BrowseTheWeb}
|
|
15
14
|
*/
|
|
16
|
-
static as<NET = any
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
static as<NET = any>(actor: UsesAbilities): BrowseTheWeb<NET>;
|
|
16
|
+
/**
|
|
17
|
+
* @param {BrowsingSession<Page>} session
|
|
18
|
+
*
|
|
19
|
+
* @protected
|
|
20
|
+
*/
|
|
21
|
+
protected constructor(session: BrowsingSession<Page<Native_Element_Type>>);
|
|
22
|
+
/**
|
|
23
|
+
* @desc
|
|
24
|
+
* Returns basic meta-data about the browser associated with this ability.
|
|
25
|
+
*
|
|
26
|
+
* @returns {Promise<BrowserCapabilities>}
|
|
27
|
+
*/
|
|
25
28
|
abstract browserCapabilities(): Promise<BrowserCapabilities>;
|
|
26
|
-
abstract sendKeys(keys: Array<Key | string>): Promise<void>;
|
|
27
|
-
abstract executeScript<Result, InnerArguments extends any[]>(script: string | ((...parameters: InnerArguments) => Result), ...args: InnerArguments): Promise<Result>;
|
|
28
|
-
abstract executeAsyncScript<Result, Parameters extends any[]>(script: string | ((...args: [...parameters: Parameters, callback: (result: Result) => void]) => void), ...args: Parameters): Promise<Result>;
|
|
29
|
-
abstract lastScriptExecutionResult<R = any>(): R;
|
|
30
|
-
abstract takeScreenshot(): Promise<string>;
|
|
31
29
|
/**
|
|
32
30
|
* @desc
|
|
33
31
|
* Returns a {@link Page} representing the currently active top-level browsing context.
|
|
34
32
|
*
|
|
35
33
|
* @returns {Promise<Page>}
|
|
36
34
|
*/
|
|
37
|
-
|
|
35
|
+
currentPage(): Promise<Page<Native_Element_Type>>;
|
|
38
36
|
/**
|
|
39
37
|
* @desc
|
|
40
38
|
* Returns an array of {@link Page} objects representing all the available
|
|
@@ -42,9 +40,5 @@ export declare abstract class BrowseTheWeb<Native_Element_Type = any, Native_Roo
|
|
|
42
40
|
*
|
|
43
41
|
* @returns {Promise<Array<Page>>}
|
|
44
42
|
*/
|
|
45
|
-
|
|
46
|
-
abstract cookie(name: string): Promise<Cookie>;
|
|
47
|
-
abstract setCookie(cookieData: CookieData): Promise<void>;
|
|
48
|
-
abstract deleteAllCookies(): Promise<void>;
|
|
49
|
-
abstract modalDialog(): Promise<ModalDialog>;
|
|
43
|
+
allPages(): Promise<Array<Page<Native_Element_Type>>>;
|
|
50
44
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BrowseTheWeb = void 0;
|
|
4
|
-
const core_1 = require("@serenity-js/core");
|
|
5
4
|
class BrowseTheWeb {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @param {BrowsingSession<Page>} session
|
|
7
|
+
*
|
|
8
|
+
* @protected
|
|
9
|
+
*/
|
|
10
|
+
constructor(session) {
|
|
11
|
+
this.session = session;
|
|
8
12
|
}
|
|
9
13
|
/**
|
|
10
14
|
* @desc
|
|
@@ -18,13 +22,24 @@ class BrowseTheWeb {
|
|
|
18
22
|
static as(actor) {
|
|
19
23
|
return actor.abilityTo(BrowseTheWeb);
|
|
20
24
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
/**
|
|
26
|
+
* @desc
|
|
27
|
+
* Returns a {@link Page} representing the currently active top-level browsing context.
|
|
28
|
+
*
|
|
29
|
+
* @returns {Promise<Page>}
|
|
30
|
+
*/
|
|
31
|
+
async currentPage() {
|
|
32
|
+
return this.session.currentPage();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @desc
|
|
36
|
+
* Returns an array of {@link Page} objects representing all the available
|
|
37
|
+
* top-level browsing context, e.g. all the open browser tabs.
|
|
38
|
+
*
|
|
39
|
+
* @returns {Promise<Array<Page>>}
|
|
40
|
+
*/
|
|
41
|
+
allPages() {
|
|
42
|
+
return this.session.allPages();
|
|
28
43
|
}
|
|
29
44
|
}
|
|
30
45
|
exports.BrowseTheWeb = BrowseTheWeb;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowseTheWeb.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWeb.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BrowseTheWeb.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWeb.ts"],"names":[],"mappings":";;;AAKA,MAAsB,YAAY;IAe9B;;;;OAIG;IACH,YAAyC,OAAmD;QAAnD,YAAO,GAAP,OAAO,CAA4C;IAC5F,CAAC;IAnBD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAY,KAAoB;QACrC,OAAO,KAAK,CAAC,SAAS,CAAC,YAAY,CAAsB,CAAC;IAC9D,CAAC;IAkBD;;;;;OAKG;IACH,KAAK,CAAC,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACJ;AAnDD,oCAmDC"}
|
|
@@ -1,5 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @desc
|
|
3
|
+
* Basic meta-data about the browser used in the test.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
1
7
|
export interface BrowserCapabilities {
|
|
8
|
+
/**
|
|
9
|
+
* @desc
|
|
10
|
+
* Name of the operating system platform the test is executed on, like `darwin`, `linux` or `windows`.
|
|
11
|
+
*
|
|
12
|
+
* @type {string | undefined}
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
2
15
|
platformName?: string;
|
|
16
|
+
/**
|
|
17
|
+
* @desc
|
|
18
|
+
* Name of the Web browser the test is executed in, like `chrome`, `firefox` or `safari`.
|
|
19
|
+
*
|
|
20
|
+
* @type {string | undefined}
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
3
23
|
browserName?: string;
|
|
24
|
+
/**
|
|
25
|
+
* @desc
|
|
26
|
+
* Version number of the browser the test is executed in.
|
|
27
|
+
*
|
|
28
|
+
* @type {string | undefined}
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
4
31
|
browserVersion?: string;
|
|
5
32
|
}
|
|
@@ -75,5 +75,6 @@ export declare class Clear extends PageElementInteraction {
|
|
|
75
75
|
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
76
76
|
*/
|
|
77
77
|
performAs(actor: UsesAbilities & AnswersQuestions): Promise<void>;
|
|
78
|
+
private ensureElementCanBeCleared;
|
|
78
79
|
private capitaliseFirstLetter;
|
|
79
80
|
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Clear = void 0;
|
|
4
4
|
const core_1 = require("@serenity-js/core");
|
|
5
|
-
const io_1 = require("@serenity-js/core/lib/io");
|
|
6
5
|
const PageElementInteraction_1 = require("./PageElementInteraction");
|
|
7
6
|
/**
|
|
8
7
|
* @desc
|
|
@@ -52,7 +51,7 @@ class Clear extends PageElementInteraction_1.PageElementInteraction {
|
|
|
52
51
|
* The element to be clicked on
|
|
53
52
|
*/
|
|
54
53
|
constructor(field) {
|
|
55
|
-
super((0,
|
|
54
|
+
super((0, core_1.d) `#actor clears the value of ${field}`);
|
|
56
55
|
this.field = field;
|
|
57
56
|
}
|
|
58
57
|
/**
|
|
@@ -83,12 +82,22 @@ class Clear extends PageElementInteraction_1.PageElementInteraction {
|
|
|
83
82
|
*/
|
|
84
83
|
async performAs(actor) {
|
|
85
84
|
const element = await this.resolve(actor, this.field);
|
|
86
|
-
|
|
87
|
-
if (value === null || value === undefined) {
|
|
88
|
-
throw new core_1.LogicError(this.capitaliseFirstLetter((0, io_1.formatted) `${this.field} doesn't seem to have a 'value' attribute that could be cleared.`));
|
|
89
|
-
}
|
|
85
|
+
await this.ensureElementCanBeCleared(element);
|
|
90
86
|
return element.clearValue();
|
|
91
87
|
}
|
|
88
|
+
async ensureElementCanBeCleared(element) {
|
|
89
|
+
let threwError, hasValueAttribute = false;
|
|
90
|
+
try {
|
|
91
|
+
const value = await element.value();
|
|
92
|
+
hasValueAttribute = value !== null && value !== undefined;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
threwError = error;
|
|
96
|
+
}
|
|
97
|
+
if (!hasValueAttribute || threwError) {
|
|
98
|
+
throw new core_1.LogicError(this.capitaliseFirstLetter((0, core_1.d) `${this.field} doesn't seem to have a 'value' attribute that could be cleared.`), threwError);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
92
101
|
capitaliseFirstLetter(text) {
|
|
93
102
|
return text.charAt(0).toUpperCase() + text.slice(1);
|
|
94
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clear.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Clear.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Clear.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Clear.ts"],"names":[],"mappings":";;;AAAA,4CAA4G;AAG5G,qEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAa,KAAM,SAAQ,+CAAsB;IAe7C;;;OAGG;IACH,YAA6B,KAA8B;QACvD,KAAK,CAAC,IAAA,QAAC,EAAA,8BAA+B,KAAM,EAAE,CAAC,CAAC;QADvB,UAAK,GAAL,KAAK,CAAyB;IAE3D,CAAC;IAnBD;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,CAAC,KAA8B;QAC5C,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAUD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAAuC;QACnD,MAAM,OAAO,GAAK,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAExD,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,OAAoB;QACxD,IAAI,UAAiB,EACjB,iBAAiB,GAAG,KAAK,CAAC;QAE9B,IAAI;YACA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,iBAAiB,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;SAC7D;QAAC,OAAO,KAAK,EAAE;YACZ,UAAU,GAAG,KAAK,CAAC;SACtB;QAED,IAAI,CAAE,iBAAiB,IAAI,UAAU,EAAE;YACnC,MAAM,IAAI,iBAAU,CAChB,IAAI,CAAC,qBAAqB,CAAC,IAAA,QAAC,EAAA,GAAI,IAAI,CAAC,KAAM,kEAAkE,CAAC,EAC9G,UAAU,CACb,CAAC;SACL;IACL,CAAC;IAEO,qBAAqB,CAAC,IAAY;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;CACJ;AAnED,sBAmEC"}
|
|
@@ -78,7 +78,7 @@ class Click extends PageElementInteraction_1.PageElementInteraction {
|
|
|
78
78
|
async performAs(actor) {
|
|
79
79
|
const element = await this.resolve(actor, this.element);
|
|
80
80
|
await element.scrollIntoView();
|
|
81
|
-
|
|
81
|
+
await element.click();
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
exports.Click = Click;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Click.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Click.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AAGrD,qEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAa,KAAM,SAAQ,+CAAsB;IAe7C;;;OAGG;IACH,YAA6B,OAAgC;QACzD,KAAK,CAAC,IAAA,cAAS,EAAC,oBAAqB,OAAQ,EAAE,CAAC,CAAC;QADxB,YAAO,GAAP,OAAO,CAAyB;IAE7D,CAAC;IAnBD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,WAAoC;QAC1C,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAUD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAAuC;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC/B,
|
|
1
|
+
{"version":3,"file":"Click.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Click.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AAGrD,qEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAa,KAAM,SAAQ,+CAAsB;IAe7C;;;OAGG;IACH,YAA6B,OAAgC;QACzD,KAAK,CAAC,IAAA,cAAS,EAAC,oBAAqB,OAAQ,EAAE,CAAC,CAAC;QADxB,YAAO,GAAP,OAAO,CAAyB;IAE7D,CAAC;IAnBD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,WAAoC;QAC1C,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAUD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAAuC;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACJ;AA1CD,sBA0CC"}
|
|
@@ -35,8 +35,8 @@ import { PageElementInteraction } from './PageElementInteraction';
|
|
|
35
35
|
* }
|
|
36
36
|
*
|
|
37
37
|
* @example <caption>Double-clicking on an element</caption>
|
|
38
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
39
|
-
* import { BrowseTheWeb, DoubleClick, isVisible, Enter, Text
|
|
38
|
+
* import { actorCalled, Wait } from '@serenity-js/core';
|
|
39
|
+
* import { BrowseTheWeb, DoubleClick, isVisible, Enter, Text } from '@serenity-js/webdriverio';
|
|
40
40
|
* import { Ensure, equals, not } from '@serenity-js/assertions';
|
|
41
41
|
*
|
|
42
42
|
* actorCalled('Dorothy')
|
|
@@ -37,8 +37,8 @@ const PageElementInteraction_1 = require("./PageElementInteraction");
|
|
|
37
37
|
* }
|
|
38
38
|
*
|
|
39
39
|
* @example <caption>Double-clicking on an element</caption>
|
|
40
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
41
|
-
* import { BrowseTheWeb, DoubleClick, isVisible, Enter, Text
|
|
40
|
+
* import { actorCalled, Wait } from '@serenity-js/core';
|
|
41
|
+
* import { BrowseTheWeb, DoubleClick, isVisible, Enter, Text } from '@serenity-js/webdriverio';
|
|
42
42
|
* import { Ensure, equals, not } from '@serenity-js/assertions';
|
|
43
43
|
*
|
|
44
44
|
* actorCalled('Dorothy')
|
|
@@ -222,8 +222,9 @@ class ExecuteAsynchronousScript extends ExecuteScriptWithArguments {
|
|
|
222
222
|
withArguments(...args) {
|
|
223
223
|
return new ExecuteAsynchronousScript(this.script, args);
|
|
224
224
|
}
|
|
225
|
-
executeAs(actor, args) {
|
|
226
|
-
|
|
225
|
+
async executeAs(actor, args) {
|
|
226
|
+
const page = await abilities_1.BrowseTheWeb.as(actor).currentPage();
|
|
227
|
+
return page.executeAsyncScript(this.script, ...args); // todo: fix types
|
|
227
228
|
}
|
|
228
229
|
toString() {
|
|
229
230
|
return this.args.length > 0
|
|
@@ -254,9 +255,9 @@ class ExecuteScriptFromUrl extends core_1.Interaction {
|
|
|
254
255
|
* @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
|
|
255
256
|
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
256
257
|
*/
|
|
257
|
-
performAs(actor) {
|
|
258
|
-
|
|
259
|
-
|
|
258
|
+
async performAs(actor) {
|
|
259
|
+
const page = await abilities_1.BrowseTheWeb.as(actor).currentPage();
|
|
260
|
+
return page.executeAsyncScript(
|
|
260
261
|
/* istanbul ignore next */
|
|
261
262
|
function executeScriptFromUrl(sourceUrl, callback) {
|
|
262
263
|
const alreadyLoadedScripts = Array.prototype.slice
|
|
@@ -299,8 +300,9 @@ class ExecuteSynchronousScript extends ExecuteScriptWithArguments {
|
|
|
299
300
|
withArguments(...args) {
|
|
300
301
|
return new ExecuteSynchronousScript(this.script, args);
|
|
301
302
|
}
|
|
302
|
-
executeAs(actor, args) {
|
|
303
|
-
|
|
303
|
+
async executeAs(actor, args) {
|
|
304
|
+
const page = await abilities_1.BrowseTheWeb.as(actor).currentPage();
|
|
305
|
+
return page.executeScript(this.script, ...args); // todo fix type
|
|
304
306
|
}
|
|
305
307
|
toString() {
|
|
306
308
|
return this.args.length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecuteScript.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":";;;AAAA,4CAA4H;AAC5H,iDAA+D;AAC/D,uDAA6D;AAE7D,4CAA4C;AAE5C;;;;;;;;GAQG;AACH,MAAa,aAAa;IAEtB;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CAAC,SAAiB;QACzB,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgFG;IACH,MAAM,CAAC,KAAK,CAAC,MAAyB;QAClC,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8CG;IACH,MAAM,CAAC,IAAI,CAAC,MAAyB;QACjC,OAAO,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;CACJ;AAvJD,sCAuJC;AAED;;;;;;;;;;;;GAYG;AACH,MAAsB,0BAA2B,SAAQ,kBAAW;IAEhE;;;;;;OAMG;IACH,YACuB,MAAyB,EAAY,mDAAmD;IACxF,OAA+B,EAAE;QAEpD,KAAK,EAAE,CAAC;QAHW,WAAM,GAAN,MAAM,CAAmB;QACzB,SAAI,GAAJ,IAAI,CAA6B;IAGxD,CAAC;IAcD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAA2D;QACvE,MAAM,IAAI,GAAG,MAAM,IAAA,aAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjE,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAElC,KAAK,CAAC,OAAO,CACT,gBAAQ,CAAC,QAAQ,CAAC;YACd,WAAW,EAAK,+BAA+B;YAC/C,IAAI,EAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;SACzC,CAAC,EACF,IAAI,YAAI,CAAC,eAAe,CAAC,CAC5B,CAAC;IACN,CAAC;CAGJ;AAzDD,gEAyDC;AAED;;GAEG;AACH,MAAM,yBAA0B,SAAQ,0BAA0B;IAC9D,aAAa,CAAC,GAAG,IAA4B;QACzC,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAES,SAAS,CAAC,KAAuC,EAAE,IAAW;
|
|
1
|
+
{"version":3,"file":"ExecuteScript.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ import { PageElementInteraction } from './PageElementInteraction';
|
|
|
44
44
|
* @extends {ElementInteraction}
|
|
45
45
|
*/
|
|
46
46
|
export declare class Hover extends PageElementInteraction {
|
|
47
|
-
private readonly
|
|
47
|
+
private readonly element;
|
|
48
48
|
/**
|
|
49
49
|
* @desc
|
|
50
50
|
* Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
|
|
@@ -56,10 +56,10 @@ export declare class Hover extends PageElementInteraction {
|
|
|
56
56
|
*/
|
|
57
57
|
static over(target: Answerable<PageElement>): Interaction;
|
|
58
58
|
/**
|
|
59
|
-
* @param {Answerable<PageElement>}
|
|
59
|
+
* @param {Answerable<PageElement>} element
|
|
60
60
|
* The element to be hovered over
|
|
61
61
|
*/
|
|
62
|
-
constructor(
|
|
62
|
+
constructor(element: Answerable<PageElement>);
|
|
63
63
|
/**
|
|
64
64
|
* @desc
|
|
65
65
|
* Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
|