@serenity-js/web 3.0.0-rc.5 → 3.0.0-rc.9

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 (66) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/lib/expectations/ElementExpectation.d.ts +3 -8
  3. package/lib/expectations/ElementExpectation.js +12 -14
  4. package/lib/expectations/ElementExpectation.js.map +1 -1
  5. package/lib/expectations/index.d.ts +0 -1
  6. package/lib/expectations/index.js +0 -1
  7. package/lib/expectations/index.js.map +1 -1
  8. package/lib/expectations/isActive.d.ts +1 -1
  9. package/lib/expectations/isClickable.d.ts +1 -1
  10. package/lib/expectations/isClickable.js.map +1 -1
  11. package/lib/expectations/isEnabled.d.ts +1 -1
  12. package/lib/expectations/isSelected.d.ts +1 -1
  13. package/lib/expectations/isSelected.js +1 -2
  14. package/lib/expectations/isSelected.js.map +1 -1
  15. package/lib/expectations/isVisible.d.ts +1 -1
  16. package/lib/screenplay/abilities/BrowseTheWeb.js +1 -2
  17. package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
  18. package/lib/screenplay/interactions/Wait.d.ts +1 -1
  19. package/lib/screenplay/interactions/Wait.js +4 -8
  20. package/lib/screenplay/interactions/Wait.js.map +1 -1
  21. package/lib/screenplay/interactions/WaitBuilder.d.ts +1 -1
  22. package/lib/screenplay/models/Cookie.d.ts +3 -3
  23. package/lib/screenplay/models/Cookie.js.map +1 -1
  24. package/lib/screenplay/models/ModalDialog.d.ts +3 -3
  25. package/lib/screenplay/models/ModalDialog.js.map +1 -1
  26. package/lib/screenplay/models/Page.d.ts +6 -6
  27. package/lib/screenplay/models/Page.js +3 -8
  28. package/lib/screenplay/models/Page.js.map +1 -1
  29. package/lib/screenplay/models/PageElement.d.ts +4 -4
  30. package/lib/screenplay/models/PageElement.js +2 -3
  31. package/lib/screenplay/models/PageElement.js.map +1 -1
  32. package/lib/screenplay/models/PageElements.js +2 -3
  33. package/lib/screenplay/models/PageElements.js.map +1 -1
  34. package/lib/screenplay/models/selectors/By.js +5 -6
  35. package/lib/screenplay/models/selectors/By.js.map +1 -1
  36. package/lib/screenplay/models/selectors/Selector.js +1 -3
  37. package/lib/screenplay/models/selectors/Selector.js.map +1 -1
  38. package/lib/screenplay/questions/LastScriptExecution.d.ts +2 -2
  39. package/lib/screenplay/questions/LastScriptExecution.js.map +1 -1
  40. package/lib/screenplay/questions/Text.d.ts +5 -6
  41. package/lib/screenplay/questions/Text.js +10 -5
  42. package/lib/screenplay/questions/Text.js.map +1 -1
  43. package/package.json +5 -5
  44. package/src/expectations/ElementExpectation.ts +18 -20
  45. package/src/expectations/index.ts +0 -1
  46. package/src/expectations/isActive.ts +1 -1
  47. package/src/expectations/isClickable.ts +2 -2
  48. package/src/expectations/isEnabled.ts +1 -1
  49. package/src/expectations/isSelected.ts +3 -4
  50. package/src/expectations/isVisible.ts +1 -1
  51. package/src/screenplay/abilities/BrowseTheWeb.ts +1 -3
  52. package/src/screenplay/interactions/Wait.ts +10 -14
  53. package/src/screenplay/interactions/WaitBuilder.ts +1 -1
  54. package/src/screenplay/models/Cookie.ts +3 -3
  55. package/src/screenplay/models/ModalDialog.ts +4 -4
  56. package/src/screenplay/models/Page.ts +12 -15
  57. package/src/screenplay/models/PageElement.ts +4 -6
  58. package/src/screenplay/models/PageElements.ts +1 -3
  59. package/src/screenplay/models/selectors/By.ts +1 -3
  60. package/src/screenplay/models/selectors/Selector.ts +1 -4
  61. package/src/screenplay/questions/LastScriptExecution.ts +2 -2
  62. package/src/screenplay/questions/Text.ts +18 -17
  63. package/lib/expectations/isPresent.d.ts +0 -15
  64. package/lib/expectations/isPresent.js +0 -22
  65. package/lib/expectations/isPresent.js.map +0 -1
  66. package/src/expectations/isPresent.ts +0 -21
package/CHANGELOG.md CHANGED
@@ -3,6 +3,139 @@
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.9](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2022-02-01)
7
+
8
+ **Note:** Version bump only for package @serenity-js/web
9
+
10
+
11
+
12
+
13
+
14
+ # [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)
15
+
16
+ **Note:** Version bump only for package @serenity-js/web
17
+
18
+
19
+
20
+
21
+
22
+ # [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)
23
+
24
+
25
+ ### Features
26
+
27
+ * **assertions:** isPresent works with any Optional ([cea75dc](https://github.com/serenity-js/serenity-js/commit/cea75dc1c728e45e06a87aaf9c1573a237334285)), closes [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
28
+ * **core:** `f` and `d` question description formatters ([c9f3fad](https://github.com/serenity-js/serenity-js/commit/c9f3fadd86ec0196f2cdbf76d9628bbef0a3fcba))
29
+ * **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)
30
+ * **core:** support for Optional chaining, expectation isPresent, refactored Expectations ([1841ee5](https://github.com/serenity-js/serenity-js/commit/1841ee5fc48cfa403ddc53358f75764d9a010c21)), closes [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1099](https://github.com/serenity-js/serenity-js/issues/1099) [#1103](https://github.com/serenity-js/serenity-js/issues/1103)
31
+
32
+
33
+
34
+
35
+
36
+ # [3.0.0-rc.6](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v3.0.0-rc.6) (2022-01-10)
37
+
38
+
39
+
40
+ # [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)
41
+
42
+
43
+ ### Features
44
+
45
+ * **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)
46
+
47
+
48
+
49
+ # [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)
50
+
51
+
52
+ ### Features
53
+
54
+ * **web:** ElementExpectation makes it easier to define custom PageElement-related Expectations ([92ebf7d](https://github.com/serenity-js/serenity-js/commit/92ebf7db720d0fe88ddbe17b9958fa993b1fd02e))
55
+ * **web:** Text.ofAll accepts mapped PageElements ([5314246](https://github.com/serenity-js/serenity-js/commit/5314246305fa3f62446d5ec718f36354152be68d))
56
+
57
+
58
+
59
+ # [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)
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * **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)
65
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
66
+ * **web:** corrected synchronisation in Web questions and interactions ([c3a0ad1](https://github.com/serenity-js/serenity-js/commit/c3a0ad16de311e71d7e82e4f463baa0ca6b18863))
67
+ * **web:** Photographer skips taking a screenshot if the Window is closed (DevTools protocol) ([b682577](https://github.com/serenity-js/serenity-js/commit/b682577ad649046fc1a4cd61a7315e11d60dcf32))
68
+ * **web:** refactored Selector and NativeElementLocator classes to simplify the implementation ([f0c8f11](https://github.com/serenity-js/serenity-js/commit/f0c8f113433958877d36f13d0bc7f355ea68d280))
69
+ * **web:** simplified the selectors ([b167e42](https://github.com/serenity-js/serenity-js/commit/b167e422eb66556845c31d5847b9fd33b707c764)), closes [#1074](https://github.com/serenity-js/serenity-js/issues/1074)
70
+
71
+
72
+ ### Features
73
+
74
+ * **core:** new implementation of List.where filters ([45b3c80](https://github.com/serenity-js/serenity-js/commit/45b3c8080ca467ac6362e5217e7899ca36a04cdc)), closes [#1074](https://github.com/serenity-js/serenity-js/issues/1074)
75
+ * **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))
76
+ * **web:** new PageElement retrieval model based on Selectors ([48bd94f](https://github.com/serenity-js/serenity-js/commit/48bd94f3c29707b66dcf81a7522f7529b6f9fcfb))
77
+ * **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)
78
+
79
+
80
+
81
+ # [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)
82
+
83
+
84
+
85
+ # [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)
86
+
87
+
88
+
89
+ # [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
90
+
91
+
92
+ ### Bug Fixes
93
+
94
+ * **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)
95
+ * **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)
96
+ * **web:** added missing export ([c5ffc0a](https://github.com/serenity-js/serenity-js/commit/c5ffc0a83905c99ea0020577503170c427fdb9f2)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
97
+ * **webdriverio:** separated UIElement.hoverOver from UIElement.scrollIntoView ([cf4ca2c](https://github.com/serenity-js/serenity-js/commit/cf4ca2c531e0f90f9a27917e322359c13bfbc6e6))
98
+ * **web:** ensure all Web interactions extend the same base class ([b358c0b](https://github.com/serenity-js/serenity-js/commit/b358c0b67c1de11af63e1e2142d3613692769cd6))
99
+ * **web:** fixed the interaction to Select ([10b7b74](https://github.com/serenity-js/serenity-js/commit/10b7b7446743b5866a1b458577ea7d2e11bf5a8f))
100
+ * **web:** optimised PhotoTakingStrategy ([085b7f7](https://github.com/serenity-js/serenity-js/commit/085b7f716033b22207af47edac58c896f46af62d))
101
+ * **web:** removed incorrect export ([ebf80c0](https://github.com/serenity-js/serenity-js/commit/ebf80c019af4db2a847e4b98599bce02b8acef23))
102
+ * **web:** removed incorrect import ([90cb025](https://github.com/serenity-js/serenity-js/commit/90cb0251a00a7bff098376110dcec2f9f2c5d5c0))
103
+ * **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)
104
+ * **web:** renamed Element and associated classes to PageElement to avoid name conflicts ([1e4204b](https://github.com/serenity-js/serenity-js/commit/1e4204b5507469e6574c87a6d84454e39e8a813e))
105
+ * **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)
106
+ * **web:** standardised getters across PageElement implementations ([336472b](https://github.com/serenity-js/serenity-js/commit/336472b1a6882412f6a88483e51266909a1d51d0))
107
+ * **web:** wordsmithing of interface names ([5a1e76a](https://github.com/serenity-js/serenity-js/commit/5a1e76a9c162370e17238fcccc9f08e109d543c3))
108
+
109
+
110
+ ### Features
111
+
112
+ * **core:** question.about produces "props" that proxy the methods of the underlying model ([f771872](https://github.com/serenity-js/serenity-js/commit/f771872c56b487e404002c3800fc8f3baaed804f))
113
+ * **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)
114
+ * **web:** a common way to run the tests for all the web adapters ([c7e584a](https://github.com/serenity-js/serenity-js/commit/c7e584a9bf288ebc7781affdb720097527e8ed3a))
115
+ * **web:** added Page.viewportSize and Page.setViewportSize methods ([4cabbe2](https://github.com/serenity-js/serenity-js/commit/4cabbe21a7fbac3457c6a6ea3d4442a62c3f1f3c))
116
+ * **web:** all Screenplay APIs migrated from @serenity-js/webdriverio to @serenity-js/web ([7b6b95d](https://github.com/serenity-js/serenity-js/commit/7b6b95dc255446c29ae213ba2a1d142d426d16c8))
117
+ * **webdriverio:** support for native WebdriverIO services ([8d5ad22](https://github.com/serenity-js/serenity-js/commit/8d5ad22594cdb2ebddedc58a30259ca8430e360c))
118
+ * **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)
119
+ * **web:** introduced UIElementQuestion to help ensure no NPEs in UI-related questions ([fe29121](https://github.com/serenity-js/serenity-js/commit/fe29121118d630e9fbd73dca85496e20948e26e0))
120
+ * **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)
121
+ * **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)
122
+ * **web:** new module @serenity-js/web to provide Web-related Screenplay Pattern APIs ([bead861](https://github.com/serenity-js/serenity-js/commit/bead8612af1a5c99b775e680a3904f44d0281cf9))
123
+ * **web:** page provides an abstraction around browser window ([2e70a3b](https://github.com/serenity-js/serenity-js/commit/2e70a3b6af2e8cc49255820e8a1aaffcc71b76a8))
124
+ * **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)
125
+ * **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)
126
+ * **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)
127
+ * **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)
128
+
129
+
130
+ ### BREAKING CHANGES
131
+
132
+ * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
133
+ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
134
+
135
+
136
+
137
+
138
+
6
139
  # [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)
7
140
 
8
141
 
@@ -1,4 +1,4 @@
1
- import { AnswersQuestions, Expectation, ExpectationOutcome } from '@serenity-js/core';
1
+ import { Expectation } from '@serenity-js/core';
2
2
  import { PageElement } from '../screenplay';
3
3
  /**
4
4
  * @desc
@@ -38,7 +38,7 @@ import { PageElement } from '../screenplay';
38
38
  * @public
39
39
  * @extends {@serenity-js/core/lib/screenplay/questions~Expectation}
40
40
  */
41
- export declare class ElementExpectation extends Expectation<any, PageElement> {
41
+ export declare class ElementExpectation extends Expectation<PageElement> {
42
42
  private readonly fn;
43
43
  /**
44
44
  * @desc
@@ -74,15 +74,10 @@ export declare class ElementExpectation extends Expectation<any, PageElement> {
74
74
  *
75
75
  * @returns {ElementExpectation<any, PageElement>}
76
76
  */
77
- static forElementTo(description: string, fn: (actual: PageElement) => Promise<boolean>): Expectation<any, PageElement>;
77
+ static forElementTo(description: string, fn: (actual: PageElement) => Promise<boolean>): Expectation<PageElement>;
78
78
  /**
79
79
  * @param {string} description
80
80
  * @param {function(actual: PageElement): Promise<boolean>} fn
81
81
  */
82
82
  constructor(description: string, fn: (actual: PageElement) => Promise<boolean>);
83
- /**
84
- * @param {@serenity-js/core/lib/screenplay/actor~AnswersQuestions} actor
85
- * @returns {function(actual: PageElement): Promise<ExpectationOutcome<boolean, PageElement>>}
86
- */
87
- answeredBy(actor: AnswersQuestions): (actual: PageElement) => Promise<ExpectationOutcome<boolean, PageElement>>;
88
83
  }
@@ -46,7 +46,18 @@ class ElementExpectation extends core_1.Expectation {
46
46
  * @param {function(actual: PageElement): Promise<boolean>} fn
47
47
  */
48
48
  constructor(description, fn) {
49
- super(description);
49
+ super(description, async (actor, actual) => {
50
+ const pageElement = await actor.answer(actual);
51
+ try {
52
+ const result = await fn(pageElement);
53
+ return result
54
+ ? new core_1.ExpectationMet(this.toString(), undefined, pageElement)
55
+ : new core_1.ExpectationNotMet(this.toString(), undefined, pageElement);
56
+ }
57
+ catch (error) {
58
+ return new core_1.ExpectationNotMet(`${description} (${error.message})`, undefined, pageElement);
59
+ }
60
+ });
50
61
  this.fn = fn;
51
62
  }
52
63
  /**
@@ -86,19 +97,6 @@ class ElementExpectation extends core_1.Expectation {
86
97
  static forElementTo(description, fn) {
87
98
  return new ElementExpectation(description, fn);
88
99
  }
89
- /**
90
- * @param {@serenity-js/core/lib/screenplay/actor~AnswersQuestions} actor
91
- * @returns {function(actual: PageElement): Promise<ExpectationOutcome<boolean, PageElement>>}
92
- */
93
- answeredBy(actor) {
94
- return (actual) => this.fn(actual)
95
- .then(expectationMet => expectationMet
96
- ? new core_1.ExpectationMet(this.toString(), undefined, actual)
97
- : new core_1.ExpectationNotMet(this.toString(), undefined, actual))
98
- .catch(error => {
99
- return new core_1.ExpectationNotMet(`${this.toString()} (${error.message})`, undefined, actual);
100
- });
101
- }
102
100
  }
103
101
  exports.ElementExpectation = ElementExpectation;
104
102
  //# sourceMappingURL=ElementExpectation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElementExpectation.js","sourceRoot":"","sources":["../../src/expectations/ElementExpectation.ts"],"names":[],"mappings":";;;AAAA,4CAAyH;AAIzH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAa,kBAAmB,SAAQ,kBAA6B;IAwCjE;;;OAGG;IACH,YACI,WAAmB,EACF,EAA6C;QAE9D,KAAK,CAAC,WAAW,CAAC,CAAC;QAFF,OAAE,GAAF,EAAE,CAA2C;IAGlE,CAAC;IA/CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,MAAM,CAAC,YAAY,CAAC,WAAmB,EAAE,EAA6C;QAClF,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAaD;;;OAGG;IACH,UAAU,CAAC,KAAuB;QAC9B,OAAO,CAAC,MAAmB,EAAE,EAAE,CAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;aACV,IAAI,CAAC,cAAc,CAAC,EAAE,CACnB,cAAc;YACV,CAAC,CAAC,IAAI,qBAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC;YACxD,CAAC,CAAC,IAAI,wBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAClE;aACA,KAAK,CAAC,KAAK,CAAC,EAAE;YACX,OAAO,IAAI,wBAAiB,CAAC,GAAI,IAAI,CAAC,QAAQ,EAAG,KAAM,KAAK,CAAC,OAAQ,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;IACf,CAAC;CACJ;AAnED,gDAmEC"}
1
+ {"version":3,"file":"ElementExpectation.js","sourceRoot":"","sources":["../../src/expectations/ElementExpectation.ts"],"names":[],"mappings":";;;AAAA,4CAAiH;AAIjH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAa,kBAAmB,SAAQ,kBAAwB;IAwC5D;;;OAGG;IACH,YACI,WAAmB,EACF,EAA6C;QAE9D,KAAK,CACD,WAAW,EACX,KAAK,EAAE,KAAuB,EAAE,MAA+B,EAAE,EAAE;YAC/D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;gBAErC,OAAO,MAAM;oBACT,CAAC,CAAC,IAAI,qBAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC;oBAC7D,CAAC,CAAC,IAAI,wBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;aACxE;YAAC,OAAM,KAAK,EAAE;gBACX,OAAO,IAAI,wBAAiB,CAAC,GAAI,WAAY,KAAM,KAAK,CAAC,OAAQ,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;aACjG;QACL,CAAC,CACJ,CAAC;QAjBe,OAAE,GAAF,EAAE,CAA2C;IAkBlE,CAAC;IA9DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,MAAM,CAAC,YAAY,CAAC,WAAmB,EAAE,EAA6C;QAClF,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;CA2BJ;AAjED,gDAiEC"}
@@ -2,6 +2,5 @@ export * from './ElementExpectation';
2
2
  export * from './isActive';
3
3
  export * from './isClickable';
4
4
  export * from './isEnabled';
5
- export * from './isPresent';
6
5
  export * from './isSelected';
7
6
  export * from './isVisible';
@@ -14,7 +14,6 @@ __exportStar(require("./ElementExpectation"), exports);
14
14
  __exportStar(require("./isActive"), exports);
15
15
  __exportStar(require("./isClickable"), exports);
16
16
  __exportStar(require("./isEnabled"), exports);
17
- __exportStar(require("./isPresent"), exports);
18
17
  __exportStar(require("./isSelected"), exports);
19
18
  __exportStar(require("./isVisible"), exports);
20
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expectations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAqC;AACrC,6CAA2B;AAC3B,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,+CAA6B;AAC7B,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expectations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAqC;AACrC,6CAA2B;AAC3B,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,8CAA4B"}
@@ -12,4 +12,4 @@ import { PageElement } from '../screenplay';
12
12
  * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
13
13
  * @see {@link Wait}
14
14
  */
15
- export declare function isActive(): Expectation<boolean, PageElement>;
15
+ export declare function isActive(): Expectation<PageElement>;
@@ -17,4 +17,4 @@ import { PageElement } from '../screenplay';
17
17
  * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
18
18
  * @see {@link Wait}
19
19
  */
20
- export declare function isClickable(): Expectation<boolean, PageElement>;
20
+ export declare function isClickable(): Expectation<PageElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"isClickable.js","sourceRoot":"","sources":["../../src/expectations/isClickable.ts"],"names":[],"mappings":";;;AAAA,wDAA8C;AAC9C,4CAAgD;AAGhD,6DAA0D;AAC1D,2CAAwC;AACxC,2CAAwC;AAExC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,WAAW;IACvB,OAAO,kBAAW,CAAC,EAAE,CAAc,kBAAkB,CAAC,CAAC,YAAY,CAAC,IAAA,gBAAG,EACnE,IAAA,qBAAS,GAAE,EACX,IAAA,qBAAS,GAAE,EACX,uCAAkB,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACtF,CAAC,CAAC;AACP,CAAC;AAND,kCAMC"}
1
+ {"version":3,"file":"isClickable.js","sourceRoot":"","sources":["../../src/expectations/isClickable.ts"],"names":[],"mappings":";;;AAAA,wDAA8C;AAC9C,4CAAgD;AAGhD,6DAA0D;AAC1D,2CAAwC;AACxC,2CAAwC;AAExC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,WAAW;IACvB,OAAO,kBAAW,CAAC,EAAE,CAAuB,kBAAkB,CAAC,CAAC,YAAY,CAAC,IAAA,gBAAG,EAC5E,IAAA,qBAAS,GAAE,EACX,IAAA,qBAAS,GAAE,EACX,uCAAkB,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACtF,CAAC,CAAC;AACP,CAAC;AAND,kCAMC"}
@@ -11,4 +11,4 @@ import { PageElement } from '../screenplay';
11
11
  * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
12
12
  * @see {@link Wait}
13
13
  */
14
- export declare function isEnabled(): Expectation<boolean, PageElement>;
14
+ export declare function isEnabled(): Expectation<PageElement>;
@@ -11,4 +11,4 @@ import { PageElement } from '../screenplay';
11
11
  * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
12
12
  * @see {@link Wait}
13
13
  */
14
- export declare function isSelected(): Expectation<boolean, PageElement>;
14
+ export declare function isSelected(): Expectation<PageElement>;
@@ -4,7 +4,6 @@ exports.isSelected = void 0;
4
4
  const assertions_1 = require("@serenity-js/assertions");
5
5
  const core_1 = require("@serenity-js/core");
6
6
  const ElementExpectation_1 = require("./ElementExpectation");
7
- const isPresent_1 = require("./isPresent");
8
7
  /**
9
8
  * @desc
10
9
  * Expectation that an `<option>` or `<input>` element of type checkbox or radio is currently selected.
@@ -17,7 +16,7 @@ const isPresent_1 = require("./isPresent");
17
16
  * @see {@link Wait}
18
17
  */
19
18
  function isSelected() {
20
- return core_1.Expectation.to('become selected').soThatActual((0, assertions_1.and)((0, isPresent_1.isPresent)(), ElementExpectation_1.ElementExpectation.forElementTo('become selected', actual => actual.isSelected())));
19
+ return core_1.Expectation.to('become selected').soThatActual((0, assertions_1.and)((0, assertions_1.isPresent)(), ElementExpectation_1.ElementExpectation.forElementTo('become selected', actual => actual.isSelected())));
21
20
  }
22
21
  exports.isSelected = isSelected;
23
22
  //# sourceMappingURL=isSelected.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isSelected.js","sourceRoot":"","sources":["../../src/expectations/isSelected.ts"],"names":[],"mappings":";;;AAAA,wDAA8C;AAC9C,4CAAgD;AAGhD,6DAA0D;AAC1D,2CAAwC;AAExC;;;;;;;;;;GAUG;AACH,SAAgB,UAAU;IACtB,OAAO,kBAAW,CAAC,EAAE,CAAc,iBAAiB,CAAC,CAAC,YAAY,CAAC,IAAA,gBAAG,EAClE,IAAA,qBAAS,GAAE,EACX,uCAAkB,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CACpF,CAAC,CAAC;AACP,CAAC;AALD,gCAKC"}
1
+ {"version":3,"file":"isSelected.js","sourceRoot":"","sources":["../../src/expectations/isSelected.ts"],"names":[],"mappings":";;;AAAA,wDAAyD;AACzD,4CAAgD;AAGhD,6DAA0D;AAE1D;;;;;;;;;;GAUG;AACH,SAAgB,UAAU;IACtB,OAAO,kBAAW,CAAC,EAAE,CAAuB,iBAAiB,CAAC,CAAC,YAAY,CAAC,IAAA,gBAAG,EAC3E,IAAA,sBAAS,GAAE,EACX,uCAAkB,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CACpF,CAAC,CAAC;AACP,CAAC;AALD,gCAKC"}
@@ -11,4 +11,4 @@ import { PageElement } from '../screenplay';
11
11
  * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
12
12
  * @see {@link Wait}
13
13
  */
14
- export declare function isVisible(): Expectation<boolean, PageElement>;
14
+ export declare function isVisible(): Expectation<PageElement>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BrowseTheWeb = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
- const f = (0, core_1.format)({ markQuestions: true });
6
5
  class BrowseTheWeb {
7
6
  constructor(locators) {
8
7
  this.locators = locators;
@@ -25,7 +24,7 @@ class BrowseTheWeb {
25
24
  return locatorFactory(selector);
26
25
  }
27
26
  }
28
- throw new core_1.LogicError(f `${selector} is not supported by ${this.constructor.name}`);
27
+ throw new core_1.LogicError((0, core_1.f) `${selector} is not supported by ${this.constructor.name}`);
29
28
  }
30
29
  }
31
30
  exports.BrowseTheWeb = BrowseTheWeb;
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTheWeb.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWeb.ts"],"names":[],"mappings":";;;AAAA,4CAAyF;AAMzF,MAAM,CAAC,GAAG,IAAA,aAAM,EAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AAE1C,MAAsB,YAAY;IAc9B,YACc,QAIT;QAJS,aAAQ,GAAR,QAAQ,CAIjB;IAEL,CAAC;IApBD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAA4B,KAAoB;QACrD,OAAO,KAAK,CAAC,SAAS,CAAC,YAAY,CAA4B,CAAC;IACpE,CAAC;IAuBD,MAAM,CAAC,QAAkB;QACrB,KAAK,MAAM,CAAE,IAAI,EAAE,cAAc,CAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClD,IAAI,QAAQ,YAAY,IAAI,EAAE;gBAC1B,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;aACnC;SACJ;QAED,MAAM,IAAI,iBAAU,CAAC,CAAC,CAAC,GAAI,QAAS,wBAAyB,IAAI,CAAC,WAAW,CAAC,IAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;CA+CJ;AA1FD,oCA0FC"}
1
+ {"version":3,"file":"BrowseTheWeb.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWeb.ts"],"names":[],"mappings":";;;AAAA,4CAAoF;AAMpF,MAAsB,YAAY;IAc9B,YACc,QAIT;QAJS,aAAQ,GAAR,QAAQ,CAIjB;IAEL,CAAC;IApBD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAA4B,KAAoB;QACrD,OAAO,KAAK,CAAC,SAAS,CAAC,YAAY,CAA4B,CAAC;IACpE,CAAC;IAuBD,MAAM,CAAC,QAAkB;QACrB,KAAK,MAAM,CAAE,IAAI,EAAE,cAAc,CAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClD,IAAI,QAAQ,YAAY,IAAI,EAAE;gBAC1B,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;aACnC;SACJ;QAED,MAAM,IAAI,iBAAU,CAAC,IAAA,QAAC,EAAC,GAAI,QAAS,wBAAyB,IAAI,CAAC,WAAW,CAAC,IAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;CA+CJ;AA1FD,oCA0FC"}
@@ -139,5 +139,5 @@ export declare class Wait {
139
139
  *
140
140
  * @returns {@serenity-js/core/lib/screenplay~Interaction}
141
141
  */
142
- static until<Actual>(actual: Answerable<Actual>, expectation: Expectation<any, Actual>): Interaction;
142
+ static until<Actual>(actual: Answerable<Actual>, expectation: Expectation<Actual>): Interaction;
143
143
  }
@@ -211,16 +211,12 @@ class WaitUntil extends core_1.Interaction {
211
211
  * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
212
212
  */
213
213
  performAs(actor) {
214
- const actual = this.actual, expectation = this.expectation.answeredBy(actor);
214
+ const actual = this.actual, expectation = this.expectation;
215
215
  let expectationOutcome;
216
216
  return abilities_1.BrowseTheWeb.as(actor)
217
- .waitUntil(function () {
218
- return actor.answer(actual)
219
- .then(act => expectation(act))
220
- .then(outcome => {
221
- expectationOutcome = outcome;
222
- return outcome instanceof core_1.ExpectationMet;
223
- });
217
+ .waitUntil(async function () {
218
+ expectationOutcome = await actor.answer(expectation.isMetFor(actual));
219
+ return expectationOutcome instanceof core_1.ExpectationMet;
224
220
  }, this.timeout)
225
221
  .catch(error => {
226
222
  if (expectationOutcome) {
@@ -1 +1 @@
1
- {"version":3,"file":"Wait.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Wait.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Wait.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Wait.ts"],"names":[],"mappings":"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"}
@@ -28,5 +28,5 @@ export interface WaitBuilder {
28
28
  *
29
29
  * @see {@link Target}
30
30
  */
31
- until: <Actual>(actual: Answerable<Actual>, expectation: Expectation<any, Actual>) => Interaction;
31
+ until: <Actual>(actual: Answerable<Actual>, expectation: Expectation<Actual>) => Interaction;
32
32
  }
@@ -1,6 +1,6 @@
1
- import { Adapter, Answerable, Interaction, Question, Timestamp } from '@serenity-js/core';
1
+ import { Answerable, Interaction, Optional, QuestionAdapter, Timestamp } from '@serenity-js/core';
2
2
  import { CookieData } from './CookieData';
3
- export declare abstract class Cookie {
3
+ export declare abstract class Cookie implements Optional {
4
4
  protected readonly cookieName: string;
5
5
  /**
6
6
  * @desc
@@ -9,7 +9,7 @@ export declare abstract class Cookie {
9
9
  * @param {Answerable<string>} name
10
10
  * @returns {Question<Promise<Cookie>> & Adapter<Cookie>}
11
11
  */
12
- static called(name: Answerable<string>): Question<Promise<Cookie>> & Adapter<Cookie>;
12
+ static called(name: Answerable<string>): QuestionAdapter<Cookie>;
13
13
  /**
14
14
  * @desc
15
15
  * Sets a cookie for the current page.
@@ -1 +1 @@
1
- {"version":3,"file":"Cookie.js","sourceRoot":"","sources":["../../../src/screenplay/models/Cookie.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Cookie.js","sourceRoot":"","sources":["../../../src/screenplay/models/Cookie.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { Adapter, Question } from '@serenity-js/core';
2
- export declare abstract class ModalDialog {
3
- static window(): Question<Promise<ModalDialog>> & Adapter<ModalDialog>;
1
+ import { Optional, QuestionAdapter } from '@serenity-js/core';
2
+ export declare abstract class ModalDialog implements Optional {
3
+ static window(): QuestionAdapter<ModalDialog>;
4
4
  abstract accept(): Promise<void>;
5
5
  abstract dismiss(): Promise<void>;
6
6
  abstract text(): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalDialog.js","sourceRoot":"","sources":["../../../src/screenplay/models/ModalDialog.ts"],"names":[],"mappings":";;;AAAA,4CAAsD;AAEtD,4CAA4C;AAE5C,MAAsB,WAAW;IAC7B,MAAM,CAAC,MAAM;QACT,OAAO,eAAQ,CAAC,KAAK,CAAuB,cAAc,EAAE,KAAK,CAAC,EAAE;YAChE,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;CASJ;AAdD,kCAcC"}
1
+ {"version":3,"file":"ModalDialog.js","sourceRoot":"","sources":["../../../src/screenplay/models/ModalDialog.ts"],"names":[],"mappings":";;;AAAA,4CAAwE;AAExE,4CAA4C;AAE5C,MAAsB,WAAW;IAC7B,MAAM,CAAC,MAAM;QACT,OAAO,eAAQ,CAAC,KAAK,CAAc,cAAc,EAAE,KAAK,CAAC,EAAE;YACvD,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;CASJ;AAdD,kCAcC"}
@@ -1,12 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { Adapter, Expectation, Question } from '@serenity-js/core';
2
+ import { Expectation, Optional, QuestionAdapter } from '@serenity-js/core';
3
3
  import { URL } from 'url';
4
- export declare abstract class Page {
4
+ export declare abstract class Page implements Optional {
5
5
  protected readonly handle: string;
6
- static current(): Question<Promise<Page>> & Adapter<Page>;
7
- static whichName(expectation: Expectation<any, string>): Question<Promise<Page>> & Adapter<Page>;
8
- static whichTitle(expectation: Expectation<any, string>): Question<Promise<Page>> & Adapter<Page>;
9
- static whichUrl(expectation: Expectation<any, string>): Question<Promise<Page>> & Adapter<Page>;
6
+ static current(): QuestionAdapter<Page>;
7
+ static whichName(expectation: Expectation<string>): QuestionAdapter<Page>;
8
+ static whichTitle(expectation: Expectation<string>): QuestionAdapter<Page>;
9
+ static whichUrl(expectation: Expectation<string>): QuestionAdapter<Page>;
10
10
  private static findMatchingPage;
11
11
  constructor(handle: string);
12
12
  /**
@@ -15,24 +15,19 @@ class Page {
15
15
  static whichName(expectation) {
16
16
  return core_1.Question.about(`page which name does ${expectation}`, async (actor) => {
17
17
  const pages = await abilities_1.BrowseTheWeb.as(actor).allPages();
18
- const matcher = await actor.answer(expectation);
19
- return Page.findMatchingPage(`name does ${expectation}`, pages, page => page.name().then(matcher));
18
+ return Page.findMatchingPage(`name does ${expectation}`, pages, page => actor.answer(expectation.isMetFor(page.name())));
20
19
  });
21
20
  }
22
21
  static whichTitle(expectation) {
23
22
  return core_1.Question.about(`page which title does ${expectation}`, async (actor) => {
24
23
  const pages = await abilities_1.BrowseTheWeb.as(actor).allPages();
25
- const matcher = await actor.answer(expectation);
26
- return Page.findMatchingPage(`title does ${expectation}`, pages, page => page.title().then(title => {
27
- return matcher(title);
28
- }));
24
+ return Page.findMatchingPage(`title does ${expectation}`, pages, page => actor.answer(expectation.isMetFor(page.title())));
29
25
  });
30
26
  }
31
27
  static whichUrl(expectation) {
32
28
  return core_1.Question.about(`page which URL does ${expectation}`, async (actor) => {
33
29
  const pages = await abilities_1.BrowseTheWeb.as(actor).allPages();
34
- const matcher = await actor.answer(expectation);
35
- return Page.findMatchingPage(`url does ${expectation}`, pages, page => page.url().then(url => matcher(url.toString())));
30
+ return Page.findMatchingPage(`url does ${expectation}`, pages, page => actor.answer(expectation.isMetFor(page.url().then(url => url.toString()))));
36
31
  });
37
32
  }
38
33
  static async findMatchingPage(expectationDescription, pages, matcher) {
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/screenplay/models/Page.ts"],"names":[],"mappings":";;;AAAA,4CAAmH;AAGnH,4CAA4C;AAE5C,MAAsB,IAAI;IA4DtB,YACuB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAErC,CAAC;IA9DD,MAAM,CAAC,OAAO;QACV,OAAO,eAAQ,CAAC,KAAK,CAAgB,cAAc,EAAE,KAAK,CAAC,EAAE;YACzD,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,WAAqC;QAClD,OAAO,eAAQ,CAAC,KAAK,CAAC,wBAAyB,WAAY,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACzE,MAAM,KAAK,GAAO,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAK,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElD,OAAO,IAAI,CAAC,gBAAgB,CACxB,aAAc,WAAY,EAAE,EAC5B,KAAK,EACL,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CACpC,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,WAAqC;QACnD,OAAO,eAAQ,CAAC,KAAK,CAAC,yBAA0B,WAAY,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YAC1E,MAAM,KAAK,GAAO,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAK,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElD,OAAO,IAAI,CAAC,gBAAgB,CACxB,cAAe,WAAY,EAAE,EAC7B,KAAK,EACL,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,CACL,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,WAAqC;QACjD,OAAO,eAAQ,CAAC,KAAK,CAAC,uBAAwB,WAAY,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACxE,MAAM,KAAK,GAAO,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAK,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAElD,OAAO,IAAI,CAAC,gBAAgB,CACxB,YAAa,WAAY,EAAE,EAC3B,KAAK,EACL,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAC1D,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,sBAA8B,EAAE,KAAa,EAAE,OAA8D;QAC/I,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,MAAM,OAAO,GAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,OAAO,YAAY,qBAAc,EAAE;gBACnC,OAAO,IAAI,CAAC;aACf;SACJ;QAED,MAAM,IAAI,iBAAU,CAAC,8BAA+B,sBAAuB,EAAE,CAAC,CAAC;IACnF,CAAC;IAgFD,QAAQ;QACJ,OAAO,gBAAiB,IAAI,CAAC,MAAO,GAAG,CAAC;IAC5C,CAAC;CACJ;AA7ID,oBA6IC"}
1
+ {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/screenplay/models/Page.ts"],"names":[],"mappings":";;;AAAA,4CAAqI;AAGrI,4CAA4C;AAE5C,MAAsB,IAAI;IAyDtB,YACuB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAErC,CAAC;IA3DD,MAAM,CAAC,OAAO;QACV,OAAO,eAAQ,CAAC,KAAK,CAAO,cAAc,EAAE,KAAK,CAAC,EAAE;YAChD,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,WAAgC;QAC7C,OAAO,eAAQ,CAAC,KAAK,CAAC,wBAAyB,WAAY,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACzE,MAAM,KAAK,GAAO,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE1D,OAAO,IAAI,CAAC,gBAAgB,CACxB,aAAc,WAAY,EAAE,EAC5B,KAAK,EACL,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAC1D,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,WAAgC;QAC9C,OAAO,eAAQ,CAAC,KAAK,CAAC,yBAA0B,WAAY,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YAC1E,MAAM,KAAK,GAAO,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE1D,OAAO,IAAI,CAAC,gBAAgB,CACxB,cAAe,WAAY,EAAE,EAC7B,KAAK,EACL,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAC3D,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,WAAgC;QAC5C,OAAO,eAAQ,CAAC,KAAK,CAAC,uBAAwB,WAAY,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACxE,MAAM,KAAK,GAAO,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE1D,OAAO,IAAI,CAAC,gBAAgB,CACxB,YAAa,WAAY,EAAE,EAC3B,KAAK,EACL,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CACrC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAC1C,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,sBAA8B,EAAE,KAAa,EAAE,OAA8D;QAC/I,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,MAAM,OAAO,GAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,OAAO,YAAY,qBAAc,EAAE;gBACnC,OAAO,IAAI,CAAC;aACf;SACJ;QAED,MAAM,IAAI,iBAAU,CAAC,8BAA+B,sBAAuB,EAAE,CAAC,CAAC;IACnF,CAAC;IAgFD,QAAQ;QACJ,OAAO,gBAAiB,IAAI,CAAC,MAAO,GAAG,CAAC;IAC5C,CAAC;CACJ;AA1ID,oBA0IC"}
@@ -1,10 +1,10 @@
1
- import { Adapter, Answerable, Question } from '@serenity-js/core';
1
+ import { Answerable, Optional, QuestionAdapter } from '@serenity-js/core';
2
2
  import { Locator } from './Locator';
3
3
  import { Selector } from './selectors';
4
- export declare abstract class PageElement<Native_Element_Type = any> {
4
+ export declare abstract class PageElement<Native_Element_Type = any> implements Optional {
5
5
  readonly locator: Locator<Native_Element_Type>;
6
- static located<NET>(selector: Answerable<Selector>): Question<Promise<PageElement<NET>>> & Adapter<PageElement<NET>>;
7
- static of<NET>(childElement: Answerable<PageElement<NET>>, parentElement: Answerable<PageElement<NET>>): Question<Promise<PageElement<NET>>> & Adapter<PageElement<NET>>;
6
+ static located<NET>(selector: Answerable<Selector>): QuestionAdapter<PageElement<NET>>;
7
+ static of<NET>(childElement: Answerable<PageElement<NET>>, parentElement: Answerable<PageElement<NET>>): QuestionAdapter<PageElement<NET>>;
8
8
  constructor(locator: Locator<Native_Element_Type>);
9
9
  abstract of(parentElement: PageElement<Native_Element_Type>): PageElement<Native_Element_Type>;
10
10
  nativeElement(): Promise<Native_Element_Type>;
@@ -4,21 +4,20 @@ exports.PageElement = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
5
  const tiny_types_1 = require("tiny-types");
6
6
  const abilities_1 = require("../abilities");
7
- const d = (0, core_1.format)({ markQuestions: false });
8
7
  class PageElement {
9
8
  constructor(locator) {
10
9
  this.locator = locator;
11
10
  (0, tiny_types_1.ensure)('native element locator', locator, (0, tiny_types_1.isDefined)());
12
11
  }
13
12
  static located(selector) {
14
- return core_1.Question.about(d `page element located ${selector}`, async (actor) => {
13
+ return core_1.Question.about((0, core_1.d) `page element located ${selector}`, async (actor) => {
15
14
  const bySelector = await actor.answer(selector);
16
15
  return abilities_1.BrowseTheWeb.as(actor).locate(bySelector).element();
17
16
  });
18
17
  }
19
18
  // todo: review usages and consider removing if not used
20
19
  static of(childElement, parentElement) {
21
- return core_1.Question.about(d `${childElement} of ${parentElement})`, async (actor) => {
20
+ return core_1.Question.about((0, core_1.d) `${childElement} of ${parentElement})`, async (actor) => {
22
21
  const child = await actor.answer(childElement);
23
22
  const parent = await actor.answer(parentElement);
24
23
  return child.of(parent);
@@ -1 +1 @@
1
- {"version":3,"file":"PageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElement.ts"],"names":[],"mappings":";;;AAAA,4CAA0E;AAC1E,2CAA+C;AAE/C,4CAA4C;AAI5C,MAAM,CAAC,GAAG,IAAA,aAAM,EAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;AAE3C,MAAsB,WAAW;IAmB7B,YAA4B,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;QAC7D,IAAA,mBAAM,EAAC,wBAAwB,EAAE,OAAO,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IAC3D,CAAC;IAnBD,MAAM,CAAC,OAAO,CAAM,QAA8B;QAC9C,OAAO,eAAQ,CAAC,KAAK,CAAC,CAAC,CAAA,wBAAyB,QAAS,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACvE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,OAAO,wBAAY,CAAC,EAAE,CAAM,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,EAAE,CAAM,YAA0C,EAAE,aAA2C;QAClG,OAAO,eAAQ,CAAC,KAAK,CAAC,CAAC,CAAA,GAAI,YAAa,OAAQ,aAAc,GAAG,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YAC7E,MAAM,KAAK,GAAO,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,MAAM,GAAM,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAEpD,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAQD,KAAK,CAAC,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC;IAED,QAAQ;QACJ,OAAO,uBAAwB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAG,EAAE,CAAC;IAC9D,CAAC;CAoBJ;AAnDD,kCAmDC"}
1
+ {"version":3,"file":"PageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElement.ts"],"names":[],"mappings":";;;AAAA,4CAAuF;AACvF,2CAA+C;AAE/C,4CAA4C;AAI5C,MAAsB,WAAW;IAmB7B,YAA4B,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;QAC7D,IAAA,mBAAM,EAAC,wBAAwB,EAAE,OAAO,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IAC3D,CAAC;IAnBD,MAAM,CAAC,OAAO,CAAM,QAA8B;QAC9C,OAAO,eAAQ,CAAC,KAAK,CAAC,IAAA,QAAC,EAAA,wBAAyB,QAAS,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACvE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,OAAO,wBAAY,CAAC,EAAE,CAAM,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,EAAE,CAAM,YAA0C,EAAE,aAA2C;QAClG,OAAO,eAAQ,CAAC,KAAK,CAAC,IAAA,QAAC,EAAA,GAAI,YAAa,OAAQ,aAAc,GAAG,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YAC7E,MAAM,KAAK,GAAO,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,MAAM,GAAM,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAEpD,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAQD,KAAK,CAAC,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC;IAED,QAAQ;QACJ,OAAO,uBAAwB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAG,EAAE,CAAC;IAC9D,CAAC;CAoBJ;AAnDD,kCAmDC"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PageElements = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
5
  const abilities_1 = require("../abilities");
6
- const f = (0, core_1.format)({ markQuestions: true });
7
6
  class PageElements extends core_1.List {
8
7
  /**
9
8
  * @param locator
@@ -17,7 +16,7 @@ class PageElements extends core_1.List {
17
16
  }
18
17
  of(parent) {
19
18
  return new PageElements(relativeToParent(this.locator, parent))
20
- .describedAs(`<<${this.toString()}>>` + f `.of(${parent})`);
19
+ .describedAs(`<<${this.toString()}>>` + (0, core_1.f) `.of(${parent})`);
21
20
  }
22
21
  }
23
22
  exports.PageElements = PageElements;
@@ -34,7 +33,7 @@ function relativeToDocumentRoot(selector) {
34
33
  * @package
35
34
  */
36
35
  function relativeToParent(relativeLocator, parent) {
37
- return core_1.Question.about(relativeLocator.toString() + f `.of${parent}`, async (actor) => {
36
+ return core_1.Question.about(relativeLocator.toString() + (0, core_1.f) `.of${parent}`, async (actor) => {
38
37
  const locator = await actor.answer(relativeLocator);
39
38
  const parentElement = await actor.answer(parent);
40
39
  return locator.of(parentElement.locator);
@@ -1 +1 @@
1
- {"version":3,"file":"PageElements.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElements.ts"],"names":[],"mappings":";;;AAAA,4CAAqF;AAErF,4CAA4C;AAK5C,MAAM,CAAC,GAAG,IAAA,aAAM,EAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AAE1C,MAAa,YACT,SAAQ,WAAsC;IAO9C;;OAEG;IACH,YAA+B,OAAwD;QACnF,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QADH,YAAO,GAAP,OAAO,CAAiD;IAEvF,CAAC;IATD,MAAM,CAAC,OAAO,CAAM,QAA8B;QAC9C,OAAO,IAAI,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IASD,EAAE,CAAC,MAAoD;QACnD,OAAO,IAAI,YAAY,CAAsB,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aAC/E,WAAW,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAA,OAAQ,MAAO,GAAG,CAAC,CAAC;IACrE,CAAC;CACJ;AAnBD,oCAmBC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAsB,QAA8B;IAC/E,OAAO,eAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;QACrD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAsB,eAAyD,EAAE,MAAoD;IAC1J,OAAO,eAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA,MAAO,MAAO,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;QAChF,MAAM,OAAO,GAA6C,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9F,MAAM,aAAa,GAAuC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAErF,OAAO,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAsB,OAAwD;IAChG,OAAO,eAAQ,CAAC,KAAK,CAAC,yBAA0B,OAAO,CAAC,QAAQ,EAAG,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;QACjF,MAAM,QAAQ,GAAiC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"PageElements.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElements.ts"],"names":[],"mappings":";;;AAAA,4CAAgF;AAEhF,4CAA4C;AAK5C,MAAa,YACT,SAAQ,WAAsC;IAO9C;;OAEG;IACH,YAA+B,OAAwD;QACnF,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QADH,YAAO,GAAP,OAAO,CAAiD;IAEvF,CAAC;IATD,MAAM,CAAC,OAAO,CAAM,QAA8B;QAC9C,OAAO,IAAI,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IASD,EAAE,CAAC,MAAoD;QACnD,OAAO,IAAI,YAAY,CAAsB,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aAC/E,WAAW,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAA,QAAC,EAAA,OAAQ,MAAO,GAAG,CAAC,CAAC;IACrE,CAAC;CACJ;AAnBD,oCAmBC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAsB,QAA8B;IAC/E,OAAO,eAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;QACrD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAsB,eAAyD,EAAE,MAAoD;IAC1J,OAAO,eAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,IAAA,QAAC,EAAA,MAAO,MAAO,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;QAChF,MAAM,OAAO,GAA6C,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9F,MAAM,aAAa,GAAuC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAErF,OAAO,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAsB,OAAwD;IAChG,OAAO,eAAQ,CAAC,KAAK,CAAC,yBAA0B,OAAO,CAAC,QAAQ,EAAG,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;QACjF,MAAM,QAAQ,GAAiC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC"}