@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.
Files changed (44) hide show
  1. package/CHANGELOG.md +141 -0
  2. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts +4 -16
  3. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js +8 -23
  4. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -1
  5. package/lib/screenplay/interactions/UseAngular.js +2 -2
  6. package/lib/screenplay/interactions/UseAngular.js.map +1 -1
  7. package/lib/screenplay/models/ProtractorPageElement.js +1 -2
  8. package/lib/screenplay/models/ProtractorPageElement.js.map +1 -1
  9. package/lib/screenplay/models/index.d.ts +0 -2
  10. package/lib/screenplay/models/index.js +0 -2
  11. package/lib/screenplay/models/index.js.map +1 -1
  12. package/lib/screenplay/models/locators/ProtractorLocator.d.ts +9 -0
  13. package/lib/screenplay/models/locators/ProtractorLocator.js +28 -0
  14. package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -0
  15. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.d.ts +5 -0
  16. package/lib/screenplay/models/{ProtractorNativeElementRoot.js → locators/ProtractorNativeElementRoot.js} +0 -0
  17. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js.map +1 -0
  18. package/lib/screenplay/models/locators/index.d.ts +2 -0
  19. package/lib/screenplay/models/locators/index.js +15 -0
  20. package/lib/screenplay/models/locators/index.js.map +1 -0
  21. package/lib/screenplay/questions/ProtractorParam.d.ts +2 -2
  22. package/lib/screenplay/questions/ProtractorParam.js +1 -1
  23. package/lib/screenplay/questions/ProtractorParam.js.map +1 -1
  24. package/lib/screenplay/{promisedWebElement.d.ts → unpromisedWebElement.d.ts} +1 -1
  25. package/lib/screenplay/{promisedWebElement.js → unpromisedWebElement.js} +6 -9
  26. package/lib/screenplay/unpromisedWebElement.js.map +1 -0
  27. package/package.json +13 -13
  28. package/src/screenplay/abilities/BrowseTheWebWithProtractor.ts +13 -47
  29. package/src/screenplay/interactions/UseAngular.ts +2 -2
  30. package/src/screenplay/models/ProtractorPageElement.ts +1 -2
  31. package/src/screenplay/models/index.ts +0 -2
  32. package/src/screenplay/models/locators/ProtractorLocator.ts +50 -0
  33. package/src/screenplay/models/locators/ProtractorNativeElementRoot.ts +6 -0
  34. package/src/screenplay/models/locators/index.ts +2 -0
  35. package/src/screenplay/questions/ProtractorParam.ts +4 -4
  36. package/src/screenplay/{promisedWebElement.ts → unpromisedWebElement.ts} +3 -6
  37. package/lib/screenplay/models/ProtractorNativeElementLocator.d.ts +0 -9
  38. package/lib/screenplay/models/ProtractorNativeElementLocator.js +0 -42
  39. package/lib/screenplay/models/ProtractorNativeElementLocator.js.map +0 -1
  40. package/lib/screenplay/models/ProtractorNativeElementRoot.d.ts +0 -8
  41. package/lib/screenplay/models/ProtractorNativeElementRoot.js.map +0 -1
  42. package/lib/screenplay/promisedWebElement.js.map +0 -1
  43. package/src/screenplay/models/ProtractorNativeElementLocator.ts +0 -65
  44. 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, UsesAbilities } from '@serenity-js/core';
2
- import { BrowserCapabilities, BrowseTheWeb, Cookie, CookieData, Key, ModalDialog, NativeElementLocator, Page, PageElement, Selector } from '@serenity-js/web';
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 { ProtractorPageElement } from '../models';
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":"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"}
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.as(actor).enableAngularSynchronisation(false).then(() => void 0));
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.as(actor).enableAngularSynchronisation(true).then(() => void 0));
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,CAC7E,sCAA0B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB;QACxB,OAAO,kBAAW,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,EAAE,CAC5E,sCAA0B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;CACJ;AAzBD,gCAyBC"}
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.selector, new ProtractorNativeElementLocator_1.ProtractorNativeElementLocator(() => parent.nativeElement()));
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;AACvC,qFAAkF;AAElF,MAAa,qBACT,SAAQ,iBAA0B;IAElC,EAAE,CAAC,MAA6B;QAC5B,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,+DAA8B,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,SAAS,oBAAoB,CAAC,GAAkB,EAAE,kBAA0B;YACxE,OAAO,kBAAkB,KAAK,CAAC;gBAC3B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC,CAAC,GAAG,CAAC,QAAQ,CACV,uBAAU,CAAC,GAAG,CAAC,GAAG,EAClB,GAAG,KAAK,CAAC,kBAAkB,EAAE,uBAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAC1D,CAAC;QACV,CAAC;QAED,+DAA+D;QAC/D,SAAS,KAAK,CAAC,MAAc,EAAE,GAAW;YACtC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAExC,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;YACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,OAAO,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;SAC7D;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAe,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE7D,OAAO,IAAA,mBAAQ,EACX,UAAU,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;aAC3B,SAAS,CAAC,UAAU,CAAC;aACrB,WAAW,EAAE;aACb,OAAO,EAAE,CACjB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAA+C;QAC5D,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,OAAO,OAAO,CAAC,QAAQ,CACnB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAC5B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAe,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE7D,OAAO,IAAA,mBAAQ,EACX,UAAU,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,oCAAoC,EAAE,UAAU,CAAC,CACzF,CAAC;IACN,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAe,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE7D,OAAO,IAAA,mBAAQ,EACX,UAAU,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;aAC3B,SAAS,CAAC,UAAU,CAAC;aACrB,OAAO,EAAE,CACjB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAe,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE7D,OAAO,IAAA,mBAAQ,EACX,UAAU,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE;aAC3B,SAAS,CAAC,UAAU,CAAC;aACrB,KAAK,CAAC,uBAAU,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9B,OAAO,EAAE,CACjB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QACxB,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAe,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE7D,OAAO,IAAA,mBAAQ,EAAC,UAAU,CAAC,SAAS,EAAE,CAAC,aAAa;QAChD,0BAA0B;QAC1B,SAAS,QAAQ,CAAC,UAAU;YACxB,OAAO,UAAU,CAAC,KAAK,CAAC;QAC5B,CAAC,EACD,UAAU,CACb,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAe,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE7D,OAAO,UAAU,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,MAAkB,EAAE,EAAE,CACjF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CACzB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,OAAO,GAAkB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1D,IAAI,CAAE,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE;YAC/B,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,UAAU,GAAe,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;QAE7D,mGAAmG;QACnG,OAAO,IAAA,mBAAQ,EAAC,UAAU,CAAC,SAAS,EAAE,CAAC,aAAa,CAChD;;;;;;;;;;;;;;;;;;aAkBC,EACD,UAAU,CACb,CAAC,CAAC;IACP,CAAC;CACJ;AAjLD,sDAiLC"}
1
+ {"version":3,"file":"ProtractorPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPageElement.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  export * from './ProtractorCookie';
2
2
  export * from './ProtractorModalDialog';
3
- export * from './ProtractorNativeElementLocator';
4
- export * from './ProtractorNativeElementRoot';
5
3
  export * from './ProtractorPage';
6
4
  export * from './ProtractorPageElement';
@@ -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,mEAAiD;AACjD,gEAA8C;AAC9C,mDAAiC;AACjC,0DAAwC"}
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"}
@@ -0,0 +1,5 @@
1
+ import { ElementArrayFinder, ElementFinder, Locator } from 'protractor';
2
+ export interface ProtractorNativeElementRoot {
3
+ element(selector: Locator): ElementFinder;
4
+ all(selector: Locator): ElementArrayFinder;
5
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtractorNativeElementRoot.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorNativeElementRoot.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './ProtractorLocator';
2
+ export * from './ProtractorNativeElementRoot';
@@ -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 { Adapter, Answerable, Question } from '@serenity-js/core';
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>): Question<Promise<R>> & Adapter<R>;
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.as(actor).param(name));
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,4CAAkE;AAClE,iDAAqD;AAErD,4CAA0D;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAa,eAAe;IAExB;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAI,IAAwB;QACrC,OAAO,eAAQ,CAAC,KAAK,CAAa,IAAA,cAAS,EAAC,OAAQ,IAAK,uCAAuC,EAAE,KAAK,CAAC,EAAE;YACtG,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;iBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,sCAA0B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAhBD,0CAgBC"}
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 promisedWebElement<T extends WebElement>(promiseLike: PromiseLike<T> | T): Promise<T>;
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.promisedWebElement = void 0;
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 promisedWebElement(promiseLike) {
14
- if (promiseLike instanceof Promise) {
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.promisedWebElement = promisedWebElement;
27
- //# sourceMappingURL=promisedWebElement.js.map
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.4",
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.4",
54
- "@serenity-js/core": "3.0.0-rc.4",
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.4",
81
- "@serenity-js/jasmine": "3.0.0-rc.4",
82
- "@serenity-js/local-server": "3.0.0-rc.4",
83
- "@serenity-js/mocha": "3.0.0-rc.4",
84
- "@serenity-js/rest": "3.0.0-rc.4",
85
- "@serenity-js/web": "3.0.0-rc.4",
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.0",
92
+ "body-parser": "^1.19.1",
93
93
  "cross-env": "^7.0.3",
94
- "express": "^4.17.1",
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.2"
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": "126a1cad42bcb1416ca68e62f54bf0d3eb3ea157"
125
+ "gitHead": "202c2fba085c7e47687a7702d97d104a945d1ca1"
126
126
  }
@@ -1,21 +1,10 @@
1
- import { ConfigurationError, Duration, LogicError, UsesAbilities } from '@serenity-js/core';
2
- import {
3
- BrowserCapabilities,
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, ProtractorNativeElementLocator, ProtractorPage, ProtractorPageElement } from '../models';
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
- BrowseTheWebWithProtractor.as(actor).enableAngularSynchronisation(false).then(() => void 0));
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
- BrowseTheWebWithProtractor.as(actor).enableAngularSynchronisation(true).then(() => void 0));
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.selector, new ProtractorNativeElementLocator(() => parent.nativeElement()));
11
+ return new ProtractorPageElement(this.locator.of(parent.locator));
13
12
  }
14
13
 
15
14
  async clearValue(): Promise<void> {
@@ -1,7 +1,5 @@
1
1
  export * from './ProtractorCookie';
2
2
  export * from './ProtractorModalDialog';
3
- export * from './ProtractorNativeElementLocator';
4
- export * from './ProtractorNativeElementRoot';
5
3
  export * from './ProtractorPage';
6
4
  export * from './ProtractorPageElement';
7
5
 
@@ -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
+ }
@@ -0,0 +1,6 @@
1
+ import { ElementArrayFinder, ElementFinder, Locator } from 'protractor';
2
+
3
+ export interface ProtractorNativeElementRoot {
4
+ element(selector: Locator): ElementFinder;
5
+ all(selector: Locator): ElementArrayFinder;
6
+ }
@@ -0,0 +1,2 @@
1
+ export * from './ProtractorLocator';
2
+ export * from './ProtractorNativeElementRoot';
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable unicorn/prevent-abbreviations */
2
- import { Adapter, Answerable, Question } from '@serenity-js/core';
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>): Question<Promise<R>> & Adapter<R> {
65
- return Question.about<Promise<R>>(formatted `the ${ name } param specified in Protractor config`, actor => {
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 => BrowseTheWebWithProtractor.as(actor).param(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 promisedWebElement<T extends WebElement>(promiseLike: PromiseLike<T> | T): Promise<T> {
13
- if (promiseLike instanceof Promise) {
14
- return promiseLike;
15
- }
12
+ export function unpromisedWebElement<T extends WebElement>(promiseLike: T): T {
16
13
 
17
- return Promise.resolve(new Proxy(promiseLike, {
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
- }