@serenity-js/protractor 3.0.0-rc.4 → 3.0.0-rc.8
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 +141 -0
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts +4 -16
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js +8 -23
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -1
- package/lib/screenplay/interactions/UseAngular.js +2 -2
- package/lib/screenplay/interactions/UseAngular.js.map +1 -1
- package/lib/screenplay/models/ProtractorPageElement.js +1 -2
- package/lib/screenplay/models/ProtractorPageElement.js.map +1 -1
- package/lib/screenplay/models/index.d.ts +0 -2
- package/lib/screenplay/models/index.js +0 -2
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/locators/ProtractorLocator.d.ts +9 -0
- package/lib/screenplay/models/locators/ProtractorLocator.js +28 -0
- package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -0
- package/lib/screenplay/models/locators/ProtractorNativeElementRoot.d.ts +5 -0
- package/lib/screenplay/models/{ProtractorNativeElementRoot.js → locators/ProtractorNativeElementRoot.js} +0 -0
- package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js.map +1 -0
- package/lib/screenplay/models/locators/index.d.ts +2 -0
- package/lib/screenplay/models/locators/index.js +15 -0
- package/lib/screenplay/models/locators/index.js.map +1 -0
- package/lib/screenplay/questions/ProtractorParam.d.ts +2 -2
- package/lib/screenplay/questions/ProtractorParam.js +1 -1
- package/lib/screenplay/questions/ProtractorParam.js.map +1 -1
- package/lib/screenplay/{promisedWebElement.d.ts → unpromisedWebElement.d.ts} +1 -1
- package/lib/screenplay/{promisedWebElement.js → unpromisedWebElement.js} +6 -9
- package/lib/screenplay/unpromisedWebElement.js.map +1 -0
- package/package.json +13 -13
- package/src/screenplay/abilities/BrowseTheWebWithProtractor.ts +13 -47
- package/src/screenplay/interactions/UseAngular.ts +2 -2
- package/src/screenplay/models/ProtractorPageElement.ts +1 -2
- package/src/screenplay/models/index.ts +0 -2
- package/src/screenplay/models/locators/ProtractorLocator.ts +50 -0
- package/src/screenplay/models/locators/ProtractorNativeElementRoot.ts +6 -0
- package/src/screenplay/models/locators/index.ts +2 -0
- package/src/screenplay/questions/ProtractorParam.ts +4 -4
- package/src/screenplay/{promisedWebElement.ts → unpromisedWebElement.ts} +3 -6
- package/lib/screenplay/models/ProtractorNativeElementLocator.d.ts +0 -9
- package/lib/screenplay/models/ProtractorNativeElementLocator.js +0 -42
- package/lib/screenplay/models/ProtractorNativeElementLocator.js.map +0 -1
- package/lib/screenplay/models/ProtractorNativeElementRoot.d.ts +0 -8
- package/lib/screenplay/models/ProtractorNativeElementRoot.js.map +0 -1
- package/lib/screenplay/promisedWebElement.js.map +0 -1
- package/src/screenplay/models/ProtractorNativeElementLocator.ts +0 -65
- package/src/screenplay/models/ProtractorNativeElementRoot.ts +0 -9
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,131 @@
|
|
|
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.8](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2022-01-28)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @serenity-js/protractor
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [3.0.0-rc.7](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2022-01-28)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **core:** replaced `Adapter` with `QuestionAdapter` and introduced `Optional` ([8d84ad3](https://github.com/serenity-js/serenity-js/commit/8d84ad3863e3c726533d0f21934fb1e2fa8b3022)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# [3.0.0-rc.6](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v3.0.0-rc.6) (2022-01-10)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Features
|
|
33
|
+
|
|
34
|
+
* **web:** support for advanced PageElement locator patterns ([c1ff8b7](https://github.com/serenity-js/serenity-js/commit/c1ff8b7539ebc1da8f79ea2b6d17bb01c42f443d)), closes [#1084](https://github.com/serenity-js/serenity-js/issues/1084)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Bug Fixes
|
|
46
|
+
|
|
47
|
+
* **core:** refactored Mappable so that it's easier to implement filters ([176e0cd](https://github.com/serenity-js/serenity-js/commit/176e0cd0303d63271477b2b7a8e7b0572dda99a0)), closes [#1074](https://github.com/serenity-js/serenity-js/issues/1074)
|
|
48
|
+
* **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
|
|
49
|
+
* **web:** refactored Selector and NativeElementLocator classes to simplify the implementation ([f0c8f11](https://github.com/serenity-js/serenity-js/commit/f0c8f113433958877d36f13d0bc7f355ea68d280))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Features
|
|
53
|
+
|
|
54
|
+
* **web:** isVisible checks if the element is in viewport and not hidden behind other elements ([429040f](https://github.com/serenity-js/serenity-js/commit/429040fb32b04cd4bc7524100635203fd8128eb6))
|
|
55
|
+
* **web:** re-introduced PageElements.where DSL and universal By selectors ([39fe0a1](https://github.com/serenity-js/serenity-js/commit/39fe0a10edf7f652e93911159e4a4689c36d6876)), closes [#1081](https://github.com/serenity-js/serenity-js/issues/1081)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### Bug Fixes
|
|
63
|
+
|
|
64
|
+
* **lerna:** corrected versions of internal deps ([582b922](https://github.com/serenity-js/serenity-js/commit/582b922dbade08e970cb796f15aca909f606c079))
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
# [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
### Bug Fixes
|
|
76
|
+
|
|
77
|
+
* **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
78
|
+
* **core:** renamed "Model" type to "Adapter" to better reflect its purpose ([b4ea7a1](https://github.com/serenity-js/serenity-js/commit/b4ea7a100fac2c896990bf15cbc906de641196b8)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
79
|
+
* **protractor:** fixed the interaction to Switch ([762ca84](https://github.com/serenity-js/serenity-js/commit/762ca8406389a720d2ac6b8ab49b2519fbecfc21))
|
|
80
|
+
* **protractor:** lastScriptExecution.result() returns undefined instead of null for void functions ([997d87a](https://github.com/serenity-js/serenity-js/commit/997d87af2d825bffd47c0a1b3dbeee8ce572e391))
|
|
81
|
+
* **protractor:** modernised ProtractorParam to return a Screenplay Model ([43c2032](https://github.com/serenity-js/serenity-js/commit/43c2032e73c5e1ad3392396dec6fff476283833d))
|
|
82
|
+
* **protractor:** removed interaction to ResizeBrowserWindow in favour of Page.setViewportSize() ([b8e471d](https://github.com/serenity-js/serenity-js/commit/b8e471dc92fe7d930895571ce0bcb99066eb2206))
|
|
83
|
+
* **protractor:** replaced obsolete "Window", replaced by "Page" in @serenity-js/web ([a3442c4](https://github.com/serenity-js/serenity-js/commit/a3442c432082327f9081c269c02141c73b2e4eb3))
|
|
84
|
+
* **web:** corrected timestamp rounding when retrieving the expiry date of a cookie ([d636965](https://github.com/serenity-js/serenity-js/commit/d63696586618cd701e703e33dd8b476efaac65b6))
|
|
85
|
+
* **webdriverio:** separated UIElement.hoverOver from UIElement.scrollIntoView ([cf4ca2c](https://github.com/serenity-js/serenity-js/commit/cf4ca2c531e0f90f9a27917e322359c13bfbc6e6))
|
|
86
|
+
* **web:** removed Cookie as it will be re-implemented ([cb3d081](https://github.com/serenity-js/serenity-js/commit/cb3d0813f9f0532bfe82be77fef0edec45e8ca3e))
|
|
87
|
+
* **web:** removed window-specific APIs from BrowseTheWeb that got replaced by Page ([918f447](https://github.com/serenity-js/serenity-js/commit/918f447c1d8f326fbf5730f1aa61108045556212)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
88
|
+
* **web:** renamed Element and associated classes to PageElement to avoid name conflicts ([1e4204b](https://github.com/serenity-js/serenity-js/commit/1e4204b5507469e6574c87a6d84454e39e8a813e))
|
|
89
|
+
* **web:** renamed PageElementList to PageElements to improve readability ([a9903a7](https://github.com/serenity-js/serenity-js/commit/a9903a7389b00106ef94d2bdb9f86a7fd04be541)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
90
|
+
* **web:** standardised getters across PageElement implementations ([336472b](https://github.com/serenity-js/serenity-js/commit/336472b1a6882412f6a88483e51266909a1d51d0))
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
### Features
|
|
94
|
+
|
|
95
|
+
* **core:** question.about produces "props" that proxy the methods of the underlying model ([f771872](https://github.com/serenity-js/serenity-js/commit/f771872c56b487e404002c3800fc8f3baaed804f))
|
|
96
|
+
* **protractor:** compatibility with @serenity-js/web ([9df4db2](https://github.com/serenity-js/serenity-js/commit/9df4db27a6e0ae62bf0d0e679a170d4865041043)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
97
|
+
* **protractor:** removed Protractor-specific Target implementations in favour of @serenity-js/web ([5cfc7e5](https://github.com/serenity-js/serenity-js/commit/5cfc7e53c977ae919398d9102f43985f393992db))
|
|
98
|
+
* **web:** a common way to run the tests for all the web adapters ([c7e584a](https://github.com/serenity-js/serenity-js/commit/c7e584a9bf288ebc7781affdb720097527e8ed3a))
|
|
99
|
+
* **web:** added Page.viewportSize and Page.setViewportSize methods ([4cabbe2](https://github.com/serenity-js/serenity-js/commit/4cabbe21a7fbac3457c6a6ea3d4442a62c3f1f3c))
|
|
100
|
+
* **web:** interaction to set a Cookie ([c056439](https://github.com/serenity-js/serenity-js/commit/c056439746a8f57c3edd937b8862f2babb70e94e)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
101
|
+
* **web:** interaction to setViewportSize of a Page ([dd7f180](https://github.com/serenity-js/serenity-js/commit/dd7f18057b857d2e69c19265888bfd5b15fda21b))
|
|
102
|
+
* **web:** migrated Photographer from @serenity-js/protractor to @serenity-js/web ([4506dac](https://github.com/serenity-js/serenity-js/commit/4506dacebdf955c32c4eff17bf9982c8e45e2925)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
103
|
+
* **web:** ModalDialog available for both Protractor and WebdriverIO adapters ([ef3c566](https://github.com/serenity-js/serenity-js/commit/ef3c566aed12b52aa22c54058992d369172b8597)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
104
|
+
* **web:** page provides an abstraction around browser window ([2e70a3b](https://github.com/serenity-js/serenity-js/commit/2e70a3b6af2e8cc49255820e8a1aaffcc71b76a8))
|
|
105
|
+
* **web:** Page.url() and Page.title() replace Website.url() and Website.title() ([49fe009](https://github.com/serenity-js/serenity-js/commit/49fe0094422ab53ec67d4ba303f80c33e382eebd)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
106
|
+
* **web:** removed Target in favour of PageElement ([69496c4](https://github.com/serenity-js/serenity-js/commit/69496c47c4a1ec7b92e7ab6c83da1559e926f28e)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
107
|
+
* **web:** support for switching browsing context ([a73a635](https://github.com/serenity-js/serenity-js/commit/a73a635f93183d67229acde78e74526564008869)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
108
|
+
* **web:** support for working with cookies ([39cde6d](https://github.com/serenity-js/serenity-js/commit/39cde6de7a36d27a8b1c596493efbec94900af6b)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
### BREAKING CHANGES
|
|
112
|
+
|
|
113
|
+
* **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
|
|
114
|
+
modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
# [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
### Features
|
|
124
|
+
|
|
125
|
+
* **web:** support for advanced PageElement locator patterns ([c1ff8b7](https://github.com/serenity-js/serenity-js/commit/c1ff8b7539ebc1da8f79ea2b6d17bb01c42f443d)), closes [#1084](https://github.com/serenity-js/serenity-js/issues/1084)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
6
131
|
# [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
|
|
7
132
|
|
|
8
133
|
**Note:** Version bump only for package @serenity-js/protractor
|
|
@@ -97,6 +222,22 @@ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped su
|
|
|
97
222
|
|
|
98
223
|
|
|
99
224
|
|
|
225
|
+
## [2.32.7](https://github.com/serenity-js/serenity-js/compare/v2.32.6...v2.32.7) (2022-01-10)
|
|
226
|
+
|
|
227
|
+
**Note:** Version bump only for package @serenity-js/protractor
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
## [2.32.6](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v2.32.6) (2022-01-10)
|
|
234
|
+
|
|
235
|
+
**Note:** Version bump only for package @serenity-js/protractor
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
100
241
|
## [2.32.5](https://github.com/serenity-js/serenity-js/compare/v2.32.4...v2.32.5) (2021-12-08)
|
|
101
242
|
|
|
102
243
|
**Note:** Version bump only for package @serenity-js/protractor
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Duration
|
|
2
|
-
import { BrowserCapabilities, BrowseTheWeb, Cookie, CookieData, Key, ModalDialog,
|
|
1
|
+
import { Duration } from '@serenity-js/core';
|
|
2
|
+
import { BrowserCapabilities, BrowseTheWeb, Cookie, CookieData, Key, ModalDialog, Page, PageElement } from '@serenity-js/web';
|
|
3
3
|
import { ElementFinder, ProtractorBrowser } from 'protractor';
|
|
4
4
|
import { Capabilities } from 'selenium-webdriver';
|
|
5
|
-
import {
|
|
5
|
+
import { ProtractorNativeElementRoot } from '../models/locators';
|
|
6
6
|
/**
|
|
7
7
|
* @desc
|
|
8
8
|
* An {@link @serenity-js/core/lib/screenplay~Ability} that enables the {@link Actor} to interact with web front-ends using {@link protractor}.
|
|
@@ -32,7 +32,7 @@ import { ProtractorPageElement } from '../models';
|
|
|
32
32
|
* @implements {@serenity-js/core/lib/screenplay~Ability}
|
|
33
33
|
* @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
34
34
|
*/
|
|
35
|
-
export declare class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFinder> {
|
|
35
|
+
export declare class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFinder, ProtractorNativeElementRoot> {
|
|
36
36
|
protected browser: ProtractorBrowser;
|
|
37
37
|
/**
|
|
38
38
|
* @desc
|
|
@@ -42,15 +42,6 @@ export declare class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFind
|
|
|
42
42
|
* @returns {BrowseTheWebWithProtractor}
|
|
43
43
|
*/
|
|
44
44
|
static using(browser: ProtractorBrowser): BrowseTheWebWithProtractor;
|
|
45
|
-
/**
|
|
46
|
-
* @desc
|
|
47
|
-
* Used to access the Actor's ability to {@link BrowseTheWebWithProtractor} from within the {@link Interaction} classes,
|
|
48
|
-
* such as {@link Navigate}.
|
|
49
|
-
*
|
|
50
|
-
* @param {UsesAbilities} actor
|
|
51
|
-
* @return {BrowseTheWebWithProtractor}
|
|
52
|
-
*/
|
|
53
|
-
static as(actor: UsesAbilities): BrowseTheWebWithProtractor;
|
|
54
45
|
/**
|
|
55
46
|
* @private
|
|
56
47
|
*/
|
|
@@ -64,9 +55,6 @@ export declare class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFind
|
|
|
64
55
|
cookie(name: string): Promise<Cookie>;
|
|
65
56
|
setCookie(cookieData: CookieData): Promise<void>;
|
|
66
57
|
deleteAllCookies(): Promise<void>;
|
|
67
|
-
locate<T>(selector: Selector<T>, locator?: NativeElementLocator<ElementFinder>): ProtractorPageElement;
|
|
68
|
-
locateAll<T>(selector: Selector<T>, locator?: NativeElementLocator<ElementFinder>): Promise<ProtractorPageElement[]>;
|
|
69
|
-
nativeElementLocator(): NativeElementLocator<ElementFinder>;
|
|
70
58
|
navigateTo(destination: string): Promise<void>;
|
|
71
59
|
navigateBack(): Promise<void>;
|
|
72
60
|
navigateForward(): Promise<void>;
|
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BrowseTheWebWithProtractor = void 0;
|
|
4
4
|
const core_1 = require("@serenity-js/core");
|
|
5
5
|
const web_1 = require("@serenity-js/web");
|
|
6
|
+
const protractor_1 = require("protractor");
|
|
6
7
|
const models_1 = require("../models");
|
|
8
|
+
const locators_1 = require("../models/locators");
|
|
7
9
|
const promised_1 = require("../promised");
|
|
8
10
|
/**
|
|
9
11
|
* @desc
|
|
@@ -40,7 +42,12 @@ class BrowseTheWebWithProtractor extends web_1.BrowseTheWeb {
|
|
|
40
42
|
* An instance of a protractor browser
|
|
41
43
|
*/
|
|
42
44
|
constructor(browser) {
|
|
43
|
-
super()
|
|
45
|
+
super(new Map()
|
|
46
|
+
.set(web_1.ByCss, (selector) => locators_1.ProtractorLocator.createRootLocator(this.browser, selector, protractor_1.by.css(selector.value)))
|
|
47
|
+
.set(web_1.ByCssContainingText, (selector) => locators_1.ProtractorLocator.createRootLocator(this.browser, selector, protractor_1.by.cssContainingText(selector.value, selector.text)))
|
|
48
|
+
.set(web_1.ById, (selector) => locators_1.ProtractorLocator.createRootLocator(this.browser, selector, protractor_1.by.id(selector.value)))
|
|
49
|
+
.set(web_1.ByTagName, (selector) => locators_1.ProtractorLocator.createRootLocator(this.browser, selector, protractor_1.by.tagName(selector.value)))
|
|
50
|
+
.set(web_1.ByXPath, (selector) => locators_1.ProtractorLocator.createRootLocator(this.browser, selector, protractor_1.by.xpath(selector.value))));
|
|
44
51
|
this.browser = browser;
|
|
45
52
|
}
|
|
46
53
|
/**
|
|
@@ -53,17 +60,6 @@ class BrowseTheWebWithProtractor extends web_1.BrowseTheWeb {
|
|
|
53
60
|
static using(browser) {
|
|
54
61
|
return new BrowseTheWebWithProtractor(browser);
|
|
55
62
|
}
|
|
56
|
-
/**
|
|
57
|
-
* @desc
|
|
58
|
-
* Used to access the Actor's ability to {@link BrowseTheWebWithProtractor} from within the {@link Interaction} classes,
|
|
59
|
-
* such as {@link Navigate}.
|
|
60
|
-
*
|
|
61
|
-
* @param {UsesAbilities} actor
|
|
62
|
-
* @return {BrowseTheWebWithProtractor}
|
|
63
|
-
*/
|
|
64
|
-
static as(actor) {
|
|
65
|
-
return actor.abilityTo(BrowseTheWebWithProtractor);
|
|
66
|
-
}
|
|
67
63
|
async browserCapabilities() {
|
|
68
64
|
const capabilities = await (0, promised_1.promised)(this.browser.getCapabilities());
|
|
69
65
|
return {
|
|
@@ -91,17 +87,6 @@ class BrowseTheWebWithProtractor extends web_1.BrowseTheWeb {
|
|
|
91
87
|
deleteAllCookies() {
|
|
92
88
|
return (0, promised_1.promised)(this.browser.manage().deleteAllCookies());
|
|
93
89
|
}
|
|
94
|
-
locate(selector, locator) {
|
|
95
|
-
return new models_1.ProtractorPageElement(selector, locator !== null && locator !== void 0 ? locator : this.nativeElementLocator());
|
|
96
|
-
}
|
|
97
|
-
async locateAll(selector, locator) {
|
|
98
|
-
const l = locator !== null && locator !== void 0 ? locator : this.nativeElementLocator();
|
|
99
|
-
const elements = await l.locateAll(selector);
|
|
100
|
-
return elements.map(element => new models_1.ProtractorPageElement(selector, new web_1.PassThroughNativeElementLocator(locator, element)));
|
|
101
|
-
}
|
|
102
|
-
nativeElementLocator() {
|
|
103
|
-
return new models_1.ProtractorNativeElementLocator(() => this.browser);
|
|
104
|
-
}
|
|
105
90
|
navigateTo(destination) {
|
|
106
91
|
return (0, promised_1.promised)(this.browser.get(destination));
|
|
107
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowseTheWebWithProtractor.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithProtractor.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"BrowseTheWebWithProtractor.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWebWithProtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,7 @@ class UseAngular {
|
|
|
52
52
|
* @returns {@serenity-js/core/lib/screenplay~Interaction}
|
|
53
53
|
*/
|
|
54
54
|
static disableSynchronisation() {
|
|
55
|
-
return core_1.Interaction.where(`#actor disables synchronisation with Angular`, actor => abilities_1.BrowseTheWebWithProtractor
|
|
55
|
+
return core_1.Interaction.where(`#actor disables synchronisation with Angular`, actor => actor.abilityTo(abilities_1.BrowseTheWebWithProtractor).enableAngularSynchronisation(false).then(() => void 0));
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* @desc
|
|
@@ -62,7 +62,7 @@ class UseAngular {
|
|
|
62
62
|
* @returns {@serenity-js/core/lib/screenplay~Interaction}
|
|
63
63
|
*/
|
|
64
64
|
static enableSynchronisation() {
|
|
65
|
-
return core_1.Interaction.where(`#actor enables synchronisation with Angular`, actor => abilities_1.BrowseTheWebWithProtractor
|
|
65
|
+
return core_1.Interaction.where(`#actor enables synchronisation with Angular`, actor => actor.abilityTo(abilities_1.BrowseTheWebWithProtractor).enableAngularSynchronisation(true).then(() => void 0));
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
exports.UseAngular = UseAngular;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseAngular.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/UseAngular.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEhD,4CAA0D;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAa,UAAU;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB;QACzB,OAAO,kBAAW,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"UseAngular.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/UseAngular.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEhD,4CAA0D;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAa,UAAU;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB;QACzB,OAAO,kBAAW,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,EAAE,CAC5E,KAAK,CAAC,SAAS,CAAC,sCAA0B,CAAgC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5I,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB;QACxB,OAAO,kBAAW,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,EAAE,CAC3E,KAAK,CAAC,SAAS,CAAC,sCAA0B,CAAgC,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3I,CAAC;CACJ;AAzBD,gCAyBC"}
|
|
@@ -4,10 +4,9 @@ exports.ProtractorPageElement = void 0;
|
|
|
4
4
|
const web_1 = require("@serenity-js/web");
|
|
5
5
|
const protractor_1 = require("protractor");
|
|
6
6
|
const promised_1 = require("../promised");
|
|
7
|
-
const ProtractorNativeElementLocator_1 = require("./ProtractorNativeElementLocator");
|
|
8
7
|
class ProtractorPageElement extends web_1.PageElement {
|
|
9
8
|
of(parent) {
|
|
10
|
-
return new ProtractorPageElement(this.
|
|
9
|
+
return new ProtractorPageElement(this.locator.of(parent.locator));
|
|
11
10
|
}
|
|
12
11
|
async clearValue() {
|
|
13
12
|
function removeCharactersFrom(elf, numberOfCharacters) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtractorPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPageElement.ts"],"names":[],"mappings":";;;AAAA,0CAA+C;AAC/C,2CAAuD;AAGvD,0CAAuC;
|
|
1
|
+
{"version":3,"file":"ProtractorPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPageElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./ProtractorCookie"), exports);
|
|
14
14
|
__exportStar(require("./ProtractorModalDialog"), exports);
|
|
15
|
-
__exportStar(require("./ProtractorNativeElementLocator"), exports);
|
|
16
|
-
__exportStar(require("./ProtractorNativeElementRoot"), exports);
|
|
17
15
|
__exportStar(require("./ProtractorPage"), exports);
|
|
18
16
|
__exportStar(require("./ProtractorPageElement"), exports);
|
|
19
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmC;AACnC,0DAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmC;AACnC,0DAAwC;AACxC,mDAAiC;AACjC,0DAAwC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Locator, PageElement, Selector } from '@serenity-js/web';
|
|
2
|
+
import { ElementFinder, Locator as ProtractorNativeLocator, ProtractorBrowser } from 'protractor';
|
|
3
|
+
import { ProtractorNativeElementRoot } from './ProtractorNativeElementRoot';
|
|
4
|
+
export declare class ProtractorLocator<Selector_Type extends Selector> extends Locator<ElementFinder, ProtractorNativeElementRoot, Selector_Type> {
|
|
5
|
+
static createRootLocator<ST extends Selector>(browser: ProtractorBrowser, selector: ST, protractorBy: ProtractorNativeLocator): ProtractorLocator<ST>;
|
|
6
|
+
of(parent: ProtractorLocator<unknown>): Locator<ElementFinder, ProtractorNativeElementRoot, Selector_Type>;
|
|
7
|
+
element(): PageElement<ElementFinder>;
|
|
8
|
+
allElements(): Promise<Array<PageElement<ElementFinder>>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProtractorLocator = void 0;
|
|
4
|
+
const web_1 = require("@serenity-js/web");
|
|
5
|
+
const unpromisedWebElement_1 = require("../../unpromisedWebElement");
|
|
6
|
+
const ProtractorPageElement_1 = require("../ProtractorPageElement");
|
|
7
|
+
class ProtractorLocator extends web_1.Locator {
|
|
8
|
+
static createRootLocator(browser, selector, protractorBy) {
|
|
9
|
+
const parentRoot = {
|
|
10
|
+
element: browser.element.bind(browser),
|
|
11
|
+
all: browser.element.all.bind(browser),
|
|
12
|
+
};
|
|
13
|
+
return new ProtractorLocator(() => parentRoot, selector, (root) => (0, unpromisedWebElement_1.unpromisedWebElement)(root.element(protractorBy)), async (root) => root.all(protractorBy));
|
|
14
|
+
}
|
|
15
|
+
of(parent) {
|
|
16
|
+
return new ProtractorLocator(() => parent.nativeElement(), this.selector, (parentRoot) => this.locateElement(parentRoot), (parentRoot) => this.locateAllElements(parentRoot));
|
|
17
|
+
}
|
|
18
|
+
element() {
|
|
19
|
+
return new ProtractorPageElement_1.ProtractorPageElement(this);
|
|
20
|
+
}
|
|
21
|
+
async allElements() {
|
|
22
|
+
const parentRoot = await this.parentRoot();
|
|
23
|
+
const elements = await this.locateAllElements(parentRoot);
|
|
24
|
+
return Promise.all(elements.map(childElement => new ProtractorPageElement_1.ProtractorPageElement(new ProtractorLocator(this.parentRoot, this.selector, () => (0, unpromisedWebElement_1.unpromisedWebElement)(childElement), () => [(0, unpromisedWebElement_1.unpromisedWebElement)(childElement)]))));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.ProtractorLocator = ProtractorLocator;
|
|
28
|
+
//# sourceMappingURL=ProtractorLocator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtractorLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorLocator.ts"],"names":[],"mappings":";;;AAAA,0CAAkE;AAGlE,qEAAkE;AAClE,oEAAiE;AAGjE,MAAa,iBAAkD,SAAQ,aAAkE;IAErI,MAAM,CAAC,iBAAiB,CAAsB,OAA0B,EAAE,QAAY,EAAE,YAAqC;QACzH,MAAM,UAAU,GAAgC;YAC5C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YACtC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;SACzC,CAAA;QAED,OAAO,IAAI,iBAAiB,CACxB,GAAG,EAAE,CAAC,UAAU,EAChB,QAAQ,EACR,CAAC,IAAiC,EAAE,EAAE,CAAC,IAAA,2CAAoB,EAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EACvF,KAAK,EAAE,IAAiC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CACtE,CAAC;IACN,CAAC;IAED,EAAE,CAAC,MAAkC;QACjC,OAAO,IAAI,iBAAiB,CACxB,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAC5B,IAAI,CAAC,QAAQ,EACb,CAAC,UAAuC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAC3E,CAAC,UAAuC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAClF,CAAC;IACN,CAAC;IAED,OAAO;QACH,OAAO,IAAI,6CAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,UAAU,GAAM,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAC7C,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAE/D,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAC3C,IAAI,6CAAqB,CAAC,IAAI,iBAAiB,CAC3C,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,GAAG,EAAE,CAAC,IAAA,2CAAoB,EAAC,YAAY,CAAC,EACxC,GAAG,EAAE,CAAC,CAAE,IAAA,2CAAoB,EAAC,YAAY,CAAC,CAAE,CAC/C,CAAC,CACL,CAAC,CAAC;IACP,CAAC;CACJ;AA1CD,8CA0CC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtractorNativeElementRoot.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorNativeElementRoot.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./ProtractorLocator"), exports);
|
|
14
|
+
__exportStar(require("./ProtractorNativeElementRoot"), exports);
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAoC;AACpC,gEAA8C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Answerable, QuestionAdapter } from '@serenity-js/core';
|
|
2
2
|
/**
|
|
3
3
|
* @desc
|
|
4
4
|
* Returns a Protractor configuration parameter specified in `protractor.conf.js`.
|
|
@@ -55,5 +55,5 @@ export declare class ProtractorParam {
|
|
|
55
55
|
* @param {@serenity-js/core/lib/screenplay~Answerable<string>} name
|
|
56
56
|
* @returns {Question<Promise<R>> & Adapter<R>}
|
|
57
57
|
*/
|
|
58
|
-
static called<R>(name: Answerable<string>):
|
|
58
|
+
static called<R>(name: Answerable<string>): QuestionAdapter<R>;
|
|
59
59
|
}
|
|
@@ -64,7 +64,7 @@ class ProtractorParam {
|
|
|
64
64
|
static called(name) {
|
|
65
65
|
return core_1.Question.about((0, io_1.formatted) `the ${name} param specified in Protractor config`, actor => {
|
|
66
66
|
return actor.answer(name)
|
|
67
|
-
.then(name => abilities_1.BrowseTheWebWithProtractor
|
|
67
|
+
.then(name => actor.abilityTo(abilities_1.BrowseTheWebWithProtractor).param(name));
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtractorParam.js","sourceRoot":"","sources":["../../../src/screenplay/questions/ProtractorParam.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"ProtractorParam.js","sourceRoot":"","sources":["../../../src/screenplay/questions/ProtractorParam.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AAClD,4CAA0E;AAC1E,iDAAqD;AAErD,4CAA0D;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAa,eAAe;IAExB;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAI,IAAwB;QACrC,OAAO,eAAQ,CAAC,KAAK,CAAI,IAAA,cAAS,EAAC,OAAQ,IAAK,uCAAuC,EAAE,KAAK,CAAC,EAAE;YAC7F,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;iBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,KAAK,CAAC,SAAS,CAAC,sCAA0B,CAAgC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAhBD,0CAgBC"}
|
|
@@ -8,4 +8,4 @@ import { WebElement } from 'protractor';
|
|
|
8
8
|
* @param promiseLike
|
|
9
9
|
* @returns {Promise<T>}
|
|
10
10
|
*/
|
|
11
|
-
export declare function
|
|
11
|
+
export declare function unpromisedWebElement<T extends WebElement>(promiseLike: T): T;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.unpromisedWebElement = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* @desc
|
|
6
6
|
* Wraps Webdriver then-ables into a Node-native promise to allow for correct promise chaining.
|
|
@@ -10,18 +10,15 @@ exports.promisedWebElement = void 0;
|
|
|
10
10
|
* @param promiseLike
|
|
11
11
|
* @returns {Promise<T>}
|
|
12
12
|
*/
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
return promiseLike;
|
|
16
|
-
}
|
|
17
|
-
return Promise.resolve(new Proxy(promiseLike, {
|
|
13
|
+
function unpromisedWebElement(promiseLike) {
|
|
14
|
+
return new Proxy(promiseLike, {
|
|
18
15
|
has: (target, property) => property !== 'then',
|
|
19
16
|
ownKeys: (target) => Reflect.ownKeys(target)
|
|
20
17
|
.filter(property => property !== 'then'),
|
|
21
18
|
get: (target, property, receiver) => (property in receiver)
|
|
22
19
|
? target[property]
|
|
23
20
|
: undefined,
|
|
24
|
-
})
|
|
21
|
+
});
|
|
25
22
|
}
|
|
26
|
-
exports.
|
|
27
|
-
//# sourceMappingURL=
|
|
23
|
+
exports.unpromisedWebElement = unpromisedWebElement;
|
|
24
|
+
//# sourceMappingURL=unpromisedWebElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unpromisedWebElement.js","sourceRoot":"","sources":["../../src/screenplay/unpromisedWebElement.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAuB,WAAc;IAErE,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE;QAC1B,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACtB,QAAQ,KAAK,MAAM;QACvB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAChB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;aAClB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC;QAChD,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAChC,CAAC,QAAQ,IAAI,QAAQ,CAAC;YAClB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClB,CAAC,CAAC,SAAS;KACtB,CAAC,CAAC;AACP,CAAC;AAbD,oDAaC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/protractor",
|
|
3
|
-
"version": "3.0.0-rc.
|
|
3
|
+
"version": "3.0.0-rc.8",
|
|
4
4
|
"description": "Test your web apps with Serenity/JS",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"npm": "^6 || ^7 || ^8"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@serenity-js/assertions": "3.0.0-rc.
|
|
54
|
-
"@serenity-js/core": "3.0.0-rc.
|
|
53
|
+
"@serenity-js/assertions": "3.0.0-rc.8",
|
|
54
|
+
"@serenity-js/core": "3.0.0-rc.8",
|
|
55
55
|
"deepmerge": "^4.2.2",
|
|
56
56
|
"is-plain-object": "^5.0.0",
|
|
57
57
|
"tiny-types": "^1.17.0"
|
|
@@ -77,28 +77,28 @@
|
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@documentation/esdoc-template": "3.0.0",
|
|
79
79
|
"@integration/testing-tools": "3.0.0",
|
|
80
|
-
"@serenity-js/cucumber": "3.0.0-rc.
|
|
81
|
-
"@serenity-js/jasmine": "3.0.0-rc.
|
|
82
|
-
"@serenity-js/local-server": "3.0.0-rc.
|
|
83
|
-
"@serenity-js/mocha": "3.0.0-rc.
|
|
84
|
-
"@serenity-js/rest": "3.0.0-rc.
|
|
85
|
-
"@serenity-js/web": "3.0.0-rc.
|
|
80
|
+
"@serenity-js/cucumber": "3.0.0-rc.8",
|
|
81
|
+
"@serenity-js/jasmine": "3.0.0-rc.8",
|
|
82
|
+
"@serenity-js/local-server": "3.0.0-rc.8",
|
|
83
|
+
"@serenity-js/mocha": "3.0.0-rc.8",
|
|
84
|
+
"@serenity-js/rest": "3.0.0-rc.8",
|
|
85
|
+
"@serenity-js/web": "3.0.0-rc.8",
|
|
86
86
|
"@types/chai": "^4.3.0",
|
|
87
87
|
"@types/express": "^4.17.13",
|
|
88
88
|
"@types/html-minifier": "^4.0.1",
|
|
89
89
|
"@types/mocha": "^9.0.0",
|
|
90
90
|
"@types/selenium-webdriver": "^3.0.19",
|
|
91
91
|
"axios": "^0.21.4",
|
|
92
|
-
"body-parser": "^1.19.
|
|
92
|
+
"body-parser": "^1.19.1",
|
|
93
93
|
"cross-env": "^7.0.3",
|
|
94
|
-
"express": "^4.17.
|
|
94
|
+
"express": "^4.17.2",
|
|
95
95
|
"html-minifier": "^4.0.0",
|
|
96
96
|
"mocha": "^9.1.3",
|
|
97
97
|
"protractor": "^7.0.0",
|
|
98
98
|
"selenium-webdriver": "^3.6.0",
|
|
99
99
|
"start-server-and-test": "^1.14.0",
|
|
100
100
|
"ts-node": "^10.4.0",
|
|
101
|
-
"typescript": "^4.5.
|
|
101
|
+
"typescript": "^4.5.4"
|
|
102
102
|
},
|
|
103
103
|
"nyc": {
|
|
104
104
|
"include": [
|
|
@@ -122,5 +122,5 @@
|
|
|
122
122
|
"cache": true,
|
|
123
123
|
"all": true
|
|
124
124
|
},
|
|
125
|
-
"gitHead": "
|
|
125
|
+
"gitHead": "202c2fba085c7e47687a7702d97d104a945d1ca1"
|
|
126
126
|
}
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
import { ConfigurationError, Duration, LogicError
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
BrowseTheWeb,
|
|
5
|
-
Cookie,
|
|
6
|
-
CookieData,
|
|
7
|
-
Key,
|
|
8
|
-
ModalDialog,
|
|
9
|
-
NativeElementLocator,
|
|
10
|
-
Page,
|
|
11
|
-
PageElement,
|
|
12
|
-
PassThroughNativeElementLocator,
|
|
13
|
-
Selector,
|
|
14
|
-
} from '@serenity-js/web';
|
|
15
|
-
import { ElementFinder, ProtractorBrowser, WebElementPromise } from 'protractor';
|
|
1
|
+
import { ConfigurationError, Duration, LogicError } from '@serenity-js/core';
|
|
2
|
+
import { BrowserCapabilities, BrowseTheWeb, ByCss, ByCssContainingText, ById, ByTagName, ByXPath, Cookie, CookieData, Key, ModalDialog, Page, PageElement } from '@serenity-js/web';
|
|
3
|
+
import { by, ElementFinder, ProtractorBrowser, WebElementPromise } from 'protractor';
|
|
16
4
|
import { Capabilities } from 'selenium-webdriver';
|
|
17
5
|
|
|
18
|
-
import { ProtractorCookie, ProtractorModalDialog,
|
|
6
|
+
import { ProtractorCookie, ProtractorModalDialog, ProtractorPage, ProtractorPageElement } from '../models';
|
|
7
|
+
import { ProtractorLocator, ProtractorNativeElementRoot } from '../models/locators';
|
|
19
8
|
import { promised } from '../promised';
|
|
20
9
|
|
|
21
10
|
/**
|
|
@@ -47,7 +36,7 @@ import { promised } from '../promised';
|
|
|
47
36
|
* @implements {@serenity-js/core/lib/screenplay~Ability}
|
|
48
37
|
* @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
49
38
|
*/
|
|
50
|
-
export class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFinder> {
|
|
39
|
+
export class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFinder, ProtractorNativeElementRoot> {
|
|
51
40
|
|
|
52
41
|
/**
|
|
53
42
|
* @desc
|
|
@@ -60,18 +49,6 @@ export class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFinder> {
|
|
|
60
49
|
return new BrowseTheWebWithProtractor(browser);
|
|
61
50
|
}
|
|
62
51
|
|
|
63
|
-
/**
|
|
64
|
-
* @desc
|
|
65
|
-
* Used to access the Actor's ability to {@link BrowseTheWebWithProtractor} from within the {@link Interaction} classes,
|
|
66
|
-
* such as {@link Navigate}.
|
|
67
|
-
*
|
|
68
|
-
* @param {UsesAbilities} actor
|
|
69
|
-
* @return {BrowseTheWebWithProtractor}
|
|
70
|
-
*/
|
|
71
|
-
static as(actor: UsesAbilities): BrowseTheWebWithProtractor {
|
|
72
|
-
return actor.abilityTo(BrowseTheWebWithProtractor);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
52
|
/**
|
|
76
53
|
* @private
|
|
77
54
|
*/
|
|
@@ -82,7 +59,13 @@ export class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFinder> {
|
|
|
82
59
|
* An instance of a protractor browser
|
|
83
60
|
*/
|
|
84
61
|
constructor(protected browser: ProtractorBrowser) {
|
|
85
|
-
super()
|
|
62
|
+
super(new Map()
|
|
63
|
+
.set(ByCss, (selector: ByCss) => ProtractorLocator.createRootLocator(this.browser, selector, by.css(selector.value)))
|
|
64
|
+
.set(ByCssContainingText, (selector: ByCssContainingText) => ProtractorLocator.createRootLocator(this.browser, selector, by.cssContainingText(selector.value, selector.text)))
|
|
65
|
+
.set(ById, (selector: ById) => ProtractorLocator.createRootLocator(this.browser, selector, by.id(selector.value)))
|
|
66
|
+
.set(ByTagName, (selector: ByTagName) => ProtractorLocator.createRootLocator(this.browser, selector, by.tagName(selector.value)))
|
|
67
|
+
.set(ByXPath, (selector: ByXPath) => ProtractorLocator.createRootLocator(this.browser, selector, by.xpath(selector.value)))
|
|
68
|
+
);
|
|
86
69
|
}
|
|
87
70
|
|
|
88
71
|
async browserCapabilities(): Promise<BrowserCapabilities> {
|
|
@@ -117,23 +100,6 @@ export class BrowseTheWebWithProtractor extends BrowseTheWeb<ElementFinder> {
|
|
|
117
100
|
return promised(this.browser.manage().deleteAllCookies());
|
|
118
101
|
}
|
|
119
102
|
|
|
120
|
-
locate<T>(selector: Selector<T>, locator?: NativeElementLocator<ElementFinder>): ProtractorPageElement {
|
|
121
|
-
return new ProtractorPageElement(selector, locator ?? this.nativeElementLocator());
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
async locateAll<T>(selector: Selector<T>, locator?: NativeElementLocator<ElementFinder>): Promise<ProtractorPageElement[]> {
|
|
125
|
-
const l = locator ?? this.nativeElementLocator();
|
|
126
|
-
const elements = await l.locateAll(selector);
|
|
127
|
-
|
|
128
|
-
return elements.map(element =>
|
|
129
|
-
new ProtractorPageElement(selector, new PassThroughNativeElementLocator<ElementFinder>(locator, element)),
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
nativeElementLocator(): NativeElementLocator<ElementFinder> {
|
|
134
|
-
return new ProtractorNativeElementLocator(() => this.browser);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
103
|
navigateTo(destination: string): Promise<void> {
|
|
138
104
|
return promised(this.browser.get(destination));
|
|
139
105
|
}
|
|
@@ -53,7 +53,7 @@ export class UseAngular {
|
|
|
53
53
|
*/
|
|
54
54
|
static disableSynchronisation(): Interaction {
|
|
55
55
|
return Interaction.where(`#actor disables synchronisation with Angular`, actor =>
|
|
56
|
-
|
|
56
|
+
(actor.abilityTo(BrowseTheWebWithProtractor) as BrowseTheWebWithProtractor).enableAngularSynchronisation(false).then(() => void 0));
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/**
|
|
@@ -65,6 +65,6 @@ export class UseAngular {
|
|
|
65
65
|
*/
|
|
66
66
|
static enableSynchronisation(): Interaction {
|
|
67
67
|
return Interaction.where(`#actor enables synchronisation with Angular`, actor =>
|
|
68
|
-
|
|
68
|
+
(actor.abilityTo(BrowseTheWebWithProtractor) as BrowseTheWebWithProtractor).enableAngularSynchronisation(true).then(() => void 0));
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -3,13 +3,12 @@ import { ElementFinder, protractor } from 'protractor';
|
|
|
3
3
|
import { WebElement } from 'selenium-webdriver';
|
|
4
4
|
|
|
5
5
|
import { promised } from '../promised';
|
|
6
|
-
import { ProtractorNativeElementLocator } from './ProtractorNativeElementLocator';
|
|
7
6
|
|
|
8
7
|
export class ProtractorPageElement
|
|
9
8
|
extends PageElement<ElementFinder>
|
|
10
9
|
{
|
|
11
10
|
of(parent: ProtractorPageElement): PageElement<ElementFinder> {
|
|
12
|
-
return new ProtractorPageElement(this.
|
|
11
|
+
return new ProtractorPageElement(this.locator.of(parent.locator));
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
async clearValue(): Promise<void> {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Locator, PageElement, Selector } from '@serenity-js/web';
|
|
2
|
+
import { ElementFinder, Locator as ProtractorNativeLocator, ProtractorBrowser } from 'protractor';
|
|
3
|
+
|
|
4
|
+
import { unpromisedWebElement } from '../../unpromisedWebElement';
|
|
5
|
+
import { ProtractorPageElement } from '../ProtractorPageElement';
|
|
6
|
+
import { ProtractorNativeElementRoot } from './ProtractorNativeElementRoot';
|
|
7
|
+
|
|
8
|
+
export class ProtractorLocator<Selector_Type extends Selector> extends Locator<ElementFinder, ProtractorNativeElementRoot, Selector_Type> {
|
|
9
|
+
|
|
10
|
+
static createRootLocator<ST extends Selector>(browser: ProtractorBrowser, selector: ST, protractorBy: ProtractorNativeLocator): ProtractorLocator<ST> {
|
|
11
|
+
const parentRoot: ProtractorNativeElementRoot = {
|
|
12
|
+
element: browser.element.bind(browser),
|
|
13
|
+
all: browser.element.all.bind(browser),
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return new ProtractorLocator(
|
|
17
|
+
() => parentRoot,
|
|
18
|
+
selector,
|
|
19
|
+
(root: ProtractorNativeElementRoot) => unpromisedWebElement(root.element(protractorBy)),
|
|
20
|
+
async (root: ProtractorNativeElementRoot) => root.all(protractorBy)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
of(parent: ProtractorLocator<unknown>): Locator<ElementFinder, ProtractorNativeElementRoot, Selector_Type> {
|
|
25
|
+
return new ProtractorLocator(
|
|
26
|
+
() => parent.nativeElement(),
|
|
27
|
+
this.selector,
|
|
28
|
+
(parentRoot: ProtractorNativeElementRoot) => this.locateElement(parentRoot),
|
|
29
|
+
(parentRoot: ProtractorNativeElementRoot) => this.locateAllElements(parentRoot),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
element(): PageElement<ElementFinder> {
|
|
34
|
+
return new ProtractorPageElement(this);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async allElements(): Promise<Array<PageElement<ElementFinder>>> {
|
|
38
|
+
const parentRoot = await this.parentRoot()
|
|
39
|
+
const elements = await this.locateAllElements(parentRoot);
|
|
40
|
+
|
|
41
|
+
return Promise.all(elements.map(childElement =>
|
|
42
|
+
new ProtractorPageElement(new ProtractorLocator(
|
|
43
|
+
this.parentRoot,
|
|
44
|
+
this.selector,
|
|
45
|
+
() => unpromisedWebElement(childElement),
|
|
46
|
+
() => [ unpromisedWebElement(childElement) ],
|
|
47
|
+
))
|
|
48
|
+
));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable unicorn/prevent-abbreviations */
|
|
2
|
-
import {
|
|
2
|
+
import { Answerable, Question, QuestionAdapter } from '@serenity-js/core';
|
|
3
3
|
import { formatted } from '@serenity-js/core/lib/io';
|
|
4
4
|
|
|
5
5
|
import { BrowseTheWebWithProtractor } from '../abilities';
|
|
@@ -61,10 +61,10 @@ export class ProtractorParam
|
|
|
61
61
|
* @param {@serenity-js/core/lib/screenplay~Answerable<string>} name
|
|
62
62
|
* @returns {Question<Promise<R>> & Adapter<R>}
|
|
63
63
|
*/
|
|
64
|
-
static called<R>(name: Answerable<string>):
|
|
65
|
-
return Question.about<
|
|
64
|
+
static called<R>(name: Answerable<string>): QuestionAdapter<R> {
|
|
65
|
+
return Question.about<R>(formatted `the ${ name } param specified in Protractor config`, actor => {
|
|
66
66
|
return actor.answer(name)
|
|
67
|
-
.then(name =>
|
|
67
|
+
.then(name => (actor.abilityTo(BrowseTheWebWithProtractor) as BrowseTheWebWithProtractor).param(name));
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -9,12 +9,9 @@ import { WebElement } from 'protractor';
|
|
|
9
9
|
* @param promiseLike
|
|
10
10
|
* @returns {Promise<T>}
|
|
11
11
|
*/
|
|
12
|
-
export function
|
|
13
|
-
if (promiseLike instanceof Promise) {
|
|
14
|
-
return promiseLike;
|
|
15
|
-
}
|
|
12
|
+
export function unpromisedWebElement<T extends WebElement>(promiseLike: T): T {
|
|
16
13
|
|
|
17
|
-
return
|
|
14
|
+
return new Proxy(promiseLike, {
|
|
18
15
|
has: (target, property) =>
|
|
19
16
|
property !== 'then',
|
|
20
17
|
ownKeys: (target) =>
|
|
@@ -24,5 +21,5 @@ export function promisedWebElement<T extends WebElement>(promiseLike: PromiseLik
|
|
|
24
21
|
(property in receiver)
|
|
25
22
|
? target[property]
|
|
26
23
|
: undefined,
|
|
27
|
-
})
|
|
24
|
+
});
|
|
28
25
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { NativeElementLocator, Selector } from '@serenity-js/web';
|
|
2
|
-
import { ElementFinder } from 'protractor';
|
|
3
|
-
import { ProtractorNativeElementRoot } from './ProtractorNativeElementRoot';
|
|
4
|
-
export declare class ProtractorNativeElementLocator implements NativeElementLocator<ElementFinder> {
|
|
5
|
-
private readonly resolver;
|
|
6
|
-
constructor(resolver: () => Promise<ProtractorNativeElementRoot> | ProtractorNativeElementRoot);
|
|
7
|
-
locate<T>(selector: Selector<T>): Promise<ElementFinder>;
|
|
8
|
-
locateAll<T>(selector: Selector<T>): Promise<Array<ElementFinder>>;
|
|
9
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProtractorNativeElementLocator = void 0;
|
|
4
|
-
const core_1 = require("@serenity-js/core");
|
|
5
|
-
const web_1 = require("@serenity-js/web");
|
|
6
|
-
const protractor_1 = require("protractor");
|
|
7
|
-
const tiny_types_1 = require("tiny-types");
|
|
8
|
-
const promisedWebElement_1 = require("../promisedWebElement");
|
|
9
|
-
const f = (0, core_1.format)({ markQuestions: false });
|
|
10
|
-
class ProtractorNativeElementLocator {
|
|
11
|
-
constructor(resolver) {
|
|
12
|
-
this.resolver = resolver;
|
|
13
|
-
}
|
|
14
|
-
async locate(selector) {
|
|
15
|
-
const resolver = await this.resolver();
|
|
16
|
-
const byLocator = (0, tiny_types_1.match)(selector)
|
|
17
|
-
.when(web_1.ByCss, (s) => protractor_1.by.css(s.value))
|
|
18
|
-
.when(web_1.ByCssContainingText, (s) => protractor_1.by.cssContainingText(s.value, s.text))
|
|
19
|
-
.when(web_1.ById, (s) => protractor_1.by.id(s.value))
|
|
20
|
-
.when(web_1.ByTagName, (s) => protractor_1.by.tagName(s.value))
|
|
21
|
-
.when(web_1.ByXPath, (s) => protractor_1.by.xpath(s.value))
|
|
22
|
-
.else(() => {
|
|
23
|
-
throw new core_1.LogicError(f `Selector ${selector} not supported`);
|
|
24
|
-
});
|
|
25
|
-
return (0, promisedWebElement_1.promisedWebElement)(resolver.element(byLocator));
|
|
26
|
-
}
|
|
27
|
-
async locateAll(selector) {
|
|
28
|
-
const resolver = await this.resolver();
|
|
29
|
-
const all = resolver.element.all || resolver.all;
|
|
30
|
-
const byLocator = (0, tiny_types_1.match)(selector)
|
|
31
|
-
.when(web_1.ByCss, (s) => protractor_1.by.css(s.value))
|
|
32
|
-
.when(web_1.ByTagName, (s) => protractor_1.by.tagName(s.value))
|
|
33
|
-
.when(web_1.ByXPath, (s) => protractor_1.by.xpath(s.value))
|
|
34
|
-
.else(() => {
|
|
35
|
-
throw new core_1.LogicError(f `Selector ${selector} not supported`);
|
|
36
|
-
});
|
|
37
|
-
const eaf = await all(byLocator);
|
|
38
|
-
return Promise.all(eaf.map(element => (0, promisedWebElement_1.promisedWebElement)(element)));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.ProtractorNativeElementLocator = ProtractorNativeElementLocator;
|
|
42
|
-
//# sourceMappingURL=ProtractorNativeElementLocator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProtractorNativeElementLocator.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorNativeElementLocator.ts"],"names":[],"mappings":";;;AAAA,4CAAuD;AACvD,0CAAwH;AACxH,2CAAwD;AACxD,2CAAmC;AAEnC,8DAA2D;AAG3D,MAAM,CAAC,GAAG,IAAA,aAAM,EAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;AAE3C,MAAa,8BAA8B;IACvC,YAA6B,QAAkF;QAAlF,aAAQ,GAAR,QAAQ,CAA0E;IAC/G,CAAC;IAED,KAAK,CAAC,MAAM,CAAI,QAAqB;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAA,kBAAK,EAA6B,QAAQ,CAAC;aACxD,IAAI,CAAC,WAAK,EAAE,CAAC,CAAQ,EAAE,EAAE,CACtB,eAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAClB;aACA,IAAI,CAAC,yBAAmB,EAAE,CAAC,CAAsB,EAAE,EAAE,CAClD,eAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CACxC;aACA,IAAI,CAAC,UAAI,EAAE,CAAC,CAAO,EAAE,EAAE,CACpB,eAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACjB;aACA,IAAI,CAAC,eAAS,EAAE,CAAC,CAAY,EAAE,EAAE,CAC9B,eAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CACtB;aACA,IAAI,CAAC,aAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CAC1B,eAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CACpB;aACA,IAAI,CAAC,GAAG,EAAE;YACP,MAAM,IAAI,iBAAU,CAAC,CAAC,CAAC,YAAa,QAAS,gBAAgB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEP,OAAO,IAAA,uCAAkB,EAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,SAAS,CAAI,QAAqB;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC;QAEjD,MAAM,SAAS,GAAG,IAAA,kBAAK,EAA6B,QAAQ,CAAC;aACxD,IAAI,CAAC,WAAK,EAAE,CAAC,CAAQ,EAAE,EAAE,CACtB,eAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAClB;aACA,IAAI,CAAC,eAAS,EAAE,CAAC,CAAY,EAAE,EAAE,CAC9B,eAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CACtB;aACA,IAAI,CAAC,aAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CAC1B,eAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CACpB;aACA,IAAI,CAAC,GAAG,EAAE;YACP,MAAM,IAAI,iBAAU,CAAC,CAAC,CAAC,YAAa,QAAS,gBAAgB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEP,MAAM,GAAG,GAAoB,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACjC,IAAA,uCAAkB,EAAC,OAAO,CAAC,CAC9B,CAAC,CAAC;IACP,CAAC;CACJ;AAtDD,wEAsDC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ElementArrayFinder, ElementFinder, Locator } from 'protractor';
|
|
2
|
-
export interface ProtractorNativeElementRoot {
|
|
3
|
-
element: {
|
|
4
|
-
(selector: Locator): ElementFinder;
|
|
5
|
-
all?: (selector: Locator) => ElementArrayFinder;
|
|
6
|
-
};
|
|
7
|
-
all?: (selector: Locator) => ElementArrayFinder;
|
|
8
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProtractorNativeElementRoot.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorNativeElementRoot.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promisedWebElement.js","sourceRoot":"","sources":["../../src/screenplay/promisedWebElement.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAuB,WAA+B;IACpF,IAAI,WAAW,YAAY,OAAO,EAAE;QAChC,OAAO,WAAW,CAAC;KACtB;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE;QAC1C,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CACtB,QAAQ,KAAK,MAAM;QACvB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAChB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;aAClB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC;QAChD,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAChC,CAAC,QAAQ,IAAI,QAAQ,CAAC;YAClB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClB,CAAC,CAAC,SAAS;KACtB,CAAC,CAAC,CAAC;AACR,CAAC;AAhBD,gDAgBC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { format, LogicError } from '@serenity-js/core';
|
|
2
|
-
import { ByCss, ByCssContainingText, ById, ByTagName, ByXPath, NativeElementLocator, Selector } from '@serenity-js/web';
|
|
3
|
-
import { by, ElementFinder, Locator } from 'protractor';
|
|
4
|
-
import { match } from 'tiny-types';
|
|
5
|
-
|
|
6
|
-
import { promisedWebElement } from '../promisedWebElement';
|
|
7
|
-
import { ProtractorNativeElementRoot } from './ProtractorNativeElementRoot';
|
|
8
|
-
|
|
9
|
-
const f = format({ markQuestions: false });
|
|
10
|
-
|
|
11
|
-
export class ProtractorNativeElementLocator implements NativeElementLocator<ElementFinder> {
|
|
12
|
-
constructor(private readonly resolver: () => Promise<ProtractorNativeElementRoot> | ProtractorNativeElementRoot) {
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
async locate<T>(selector: Selector<T>): Promise<ElementFinder> {
|
|
16
|
-
const resolver = await this.resolver();
|
|
17
|
-
|
|
18
|
-
const byLocator = match<Selector<unknown>, Locator>(selector)
|
|
19
|
-
.when(ByCss, (s: ByCss) =>
|
|
20
|
-
by.css(s.value)
|
|
21
|
-
)
|
|
22
|
-
.when(ByCssContainingText, (s: ByCssContainingText) =>
|
|
23
|
-
by.cssContainingText(s.value, s.text)
|
|
24
|
-
)
|
|
25
|
-
.when(ById, (s: ById) =>
|
|
26
|
-
by.id(s.value)
|
|
27
|
-
)
|
|
28
|
-
.when(ByTagName, (s: ByTagName) =>
|
|
29
|
-
by.tagName(s.value)
|
|
30
|
-
)
|
|
31
|
-
.when(ByXPath, (s: ByXPath) =>
|
|
32
|
-
by.xpath(s.value)
|
|
33
|
-
)
|
|
34
|
-
.else(() => {
|
|
35
|
-
throw new LogicError(f `Selector ${ selector } not supported`);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
return promisedWebElement(resolver.element(byLocator));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async locateAll<T>(selector: Selector<T>): Promise<Array<ElementFinder>> {
|
|
42
|
-
const resolver = await this.resolver();
|
|
43
|
-
const all = resolver.element.all || resolver.all;
|
|
44
|
-
|
|
45
|
-
const byLocator = match<Selector<unknown>, Locator>(selector)
|
|
46
|
-
.when(ByCss, (s: ByCss) =>
|
|
47
|
-
by.css(s.value)
|
|
48
|
-
)
|
|
49
|
-
.when(ByTagName, (s: ByTagName) =>
|
|
50
|
-
by.tagName(s.value)
|
|
51
|
-
)
|
|
52
|
-
.when(ByXPath, (s: ByXPath) =>
|
|
53
|
-
by.xpath(s.value)
|
|
54
|
-
)
|
|
55
|
-
.else(() => {
|
|
56
|
-
throw new LogicError(f `Selector ${ selector } not supported`);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const eaf: ElementFinder[] = await all(byLocator);
|
|
60
|
-
|
|
61
|
-
return Promise.all(eaf.map(element =>
|
|
62
|
-
promisedWebElement(element)
|
|
63
|
-
));
|
|
64
|
-
}
|
|
65
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ElementArrayFinder, ElementFinder, Locator } from 'protractor';
|
|
2
|
-
|
|
3
|
-
export interface ProtractorNativeElementRoot {
|
|
4
|
-
element: {
|
|
5
|
-
(selector: Locator): ElementFinder;
|
|
6
|
-
all?: (selector: Locator) => ElementArrayFinder; // ProtractorBrowser implementation
|
|
7
|
-
}
|
|
8
|
-
all?: (selector: Locator) => ElementArrayFinder; // ElementFinder implementation
|
|
9
|
-
}
|