@serenity-js/web 3.0.0-rc.2 → 3.0.0-rc.3

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 (91) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/expectations/isVisible.js +1 -7
  3. package/lib/expectations/isVisible.js.map +1 -1
  4. package/lib/screenplay/abilities/BrowseTheWeb.d.ts +5 -10
  5. package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
  6. package/lib/screenplay/interactions/Enter.d.ts +5 -5
  7. package/lib/screenplay/interactions/Enter.js +9 -9
  8. package/lib/screenplay/interactions/Enter.js.map +1 -1
  9. package/lib/screenplay/interactions/ExecuteScript.d.ts +1 -1
  10. package/lib/screenplay/interactions/ExecuteScript.js +5 -6
  11. package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
  12. package/lib/screenplay/interactions/Press.js +5 -4
  13. package/lib/screenplay/interactions/Press.js.map +1 -1
  14. package/lib/screenplay/interactions/Select.js +20 -16
  15. package/lib/screenplay/interactions/Select.js.map +1 -1
  16. package/lib/screenplay/interactions/TakeScreenshot.d.ts +1 -1
  17. package/lib/screenplay/interactions/TakeScreenshot.js +4 -5
  18. package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
  19. package/lib/screenplay/models/NativeElementLocator.d.ts +5 -0
  20. package/lib/screenplay/models/NativeElementLocator.js +3 -0
  21. package/lib/screenplay/models/NativeElementLocator.js.map +1 -0
  22. package/lib/screenplay/models/PageElement.d.ts +13 -13
  23. package/lib/screenplay/models/PageElement.js +15 -36
  24. package/lib/screenplay/models/PageElement.js.map +1 -1
  25. package/lib/screenplay/models/PageElements.d.ts +13 -18
  26. package/lib/screenplay/models/PageElements.js +36 -35
  27. package/lib/screenplay/models/PageElements.js.map +1 -1
  28. package/lib/screenplay/models/PassThroughNativeElementLocator.d.ts +9 -0
  29. package/lib/screenplay/models/PassThroughNativeElementLocator.js +17 -0
  30. package/lib/screenplay/models/PassThroughNativeElementLocator.js.map +1 -0
  31. package/lib/screenplay/models/index.d.ts +3 -0
  32. package/lib/screenplay/models/index.js +3 -0
  33. package/lib/screenplay/models/index.js.map +1 -1
  34. package/lib/screenplay/models/selectors/By.d.ts +13 -0
  35. package/lib/screenplay/models/selectors/By.js +45 -0
  36. package/lib/screenplay/models/selectors/By.js.map +1 -0
  37. package/lib/screenplay/models/selectors/ByCss.d.ts +3 -0
  38. package/lib/screenplay/models/selectors/ByCss.js +8 -0
  39. package/lib/screenplay/models/selectors/ByCss.js.map +1 -0
  40. package/lib/screenplay/models/selectors/ByCssContainingText.d.ts +5 -0
  41. package/lib/screenplay/models/selectors/ByCssContainingText.js +12 -0
  42. package/lib/screenplay/models/selectors/ByCssContainingText.js.map +1 -0
  43. package/lib/screenplay/models/selectors/ById.d.ts +3 -0
  44. package/lib/screenplay/models/selectors/ById.js +8 -0
  45. package/lib/screenplay/models/selectors/ById.js.map +1 -0
  46. package/lib/screenplay/models/selectors/ByTagName.d.ts +3 -0
  47. package/lib/screenplay/models/selectors/ByTagName.js +8 -0
  48. package/lib/screenplay/models/selectors/ByTagName.js.map +1 -0
  49. package/lib/screenplay/models/selectors/ByXPath.d.ts +3 -0
  50. package/lib/screenplay/models/selectors/ByXPath.js +8 -0
  51. package/lib/screenplay/models/selectors/ByXPath.js.map +1 -0
  52. package/lib/screenplay/models/selectors/Selector.d.ts +5 -0
  53. package/lib/screenplay/models/selectors/Selector.js +17 -0
  54. package/lib/screenplay/models/selectors/Selector.js.map +1 -0
  55. package/lib/screenplay/models/selectors/index.d.ts +7 -0
  56. package/lib/screenplay/models/selectors/index.js +20 -0
  57. package/lib/screenplay/models/selectors/index.js.map +1 -0
  58. package/lib/screenplay/questions/ElementQuestion.d.ts +1 -2
  59. package/lib/screenplay/questions/ElementQuestion.js.map +1 -1
  60. package/lib/screenplay/questions/Selected.js +8 -6
  61. package/lib/screenplay/questions/Selected.js.map +1 -1
  62. package/lib/screenplay/questions/Text.d.ts +1 -1
  63. package/lib/screenplay/questions/Text.js +4 -2
  64. package/lib/screenplay/questions/Text.js.map +1 -1
  65. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +4 -6
  66. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -1
  67. package/package.json +5 -5
  68. package/src/expectations/isVisible.ts +1 -10
  69. package/src/screenplay/abilities/BrowseTheWeb.ts +5 -11
  70. package/src/screenplay/interactions/Enter.ts +10 -9
  71. package/src/screenplay/interactions/ExecuteScript.ts +13 -12
  72. package/src/screenplay/interactions/Press.ts +7 -7
  73. package/src/screenplay/interactions/Select.ts +22 -18
  74. package/src/screenplay/interactions/TakeScreenshot.ts +6 -6
  75. package/src/screenplay/models/NativeElementLocator.ts +6 -0
  76. package/src/screenplay/models/PageElement.ts +26 -51
  77. package/src/screenplay/models/PageElements.ts +42 -48
  78. package/src/screenplay/models/PassThroughNativeElementLocator.ts +18 -0
  79. package/src/screenplay/models/index.ts +3 -0
  80. package/src/screenplay/models/selectors/By.ts +47 -0
  81. package/src/screenplay/models/selectors/ByCss.ts +4 -0
  82. package/src/screenplay/models/selectors/ByCssContainingText.ts +7 -0
  83. package/src/screenplay/models/selectors/ById.ts +4 -0
  84. package/src/screenplay/models/selectors/ByTagName.ts +4 -0
  85. package/src/screenplay/models/selectors/ByXPath.ts +4 -0
  86. package/src/screenplay/models/selectors/Selector.ts +16 -0
  87. package/src/screenplay/models/selectors/index.ts +7 -0
  88. package/src/screenplay/questions/ElementQuestion.ts +1 -3
  89. package/src/screenplay/questions/Selected.ts +9 -7
  90. package/src/screenplay/questions/Text.ts +8 -5
  91. package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +6 -6
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.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)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **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)
12
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
13
+ * **web:** corrected synchronisation in Web questions and interactions ([c3a0ad1](https://github.com/serenity-js/serenity-js/commit/c3a0ad16de311e71d7e82e4f463baa0ca6b18863))
14
+ * **web:** Photographer skips taking a screenshot if the Window is closed (DevTools protocol) ([b682577](https://github.com/serenity-js/serenity-js/commit/b682577ad649046fc1a4cd61a7315e11d60dcf32))
15
+ * **web:** refactored Selector and NativeElementLocator classes to simplify the implementation ([f0c8f11](https://github.com/serenity-js/serenity-js/commit/f0c8f113433958877d36f13d0bc7f355ea68d280))
16
+ * **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)
17
+
18
+
19
+ ### Features
20
+
21
+ * **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)
22
+ * **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))
23
+ * **web:** new PageElement retrieval model based on Selectors ([48bd94f](https://github.com/serenity-js/serenity-js/commit/48bd94f3c29707b66dcf81a7522f7529b6f9fcfb))
24
+ * **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)
25
+
26
+
27
+
28
+
29
+
6
30
  # [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)
7
31
 
8
32
  **Note:** Version bump only for package @serenity-js/web
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isVisible = void 0;
4
- const assertions_1 = require("@serenity-js/assertions");
5
- const core_1 = require("@serenity-js/core");
6
4
  const ElementExpectation_1 = require("./ElementExpectation");
7
- const isPresent_1 = require("./isPresent");
8
5
  /**
9
6
  * @desc
10
7
  * Expectation that the element is present in the DOM of the page and visible.
@@ -17,10 +14,7 @@ const isPresent_1 = require("./isPresent");
17
14
  * @see {@link Wait}
18
15
  */
19
16
  function isVisible() {
20
- return core_1.Expectation.to('become visible').soThatActual((0, assertions_1.and)((0, isPresent_1.isPresent)(), isDisplayed()));
17
+ return ElementExpectation_1.ElementExpectation.forElementTo('become visible', actual => actual.isVisible());
21
18
  }
22
19
  exports.isVisible = isVisible;
23
- function isDisplayed() {
24
- return ElementExpectation_1.ElementExpectation.forElementTo('become displayed', actual => actual.isDisplayed());
25
- }
26
20
  //# sourceMappingURL=isVisible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isVisible.js","sourceRoot":"","sources":["../../src/expectations/isVisible.ts"],"names":[],"mappings":";;;AAAA,wDAA8C;AAC9C,4CAAgD;AAGhD,6DAA0D;AAC1D,2CAAwC;AAExC;;;;;;;;;;GAUG;AACH,SAAgB,SAAS;IACrB,OAAO,kBAAW,CAAC,EAAE,CAAc,gBAAgB,CAAC,CAAC,YAAY,CAAC,IAAA,gBAAG,EACjE,IAAA,qBAAS,GAAE,EACX,WAAW,EAAE,CAChB,CAAC,CAAC;AACP,CAAC;AALD,8BAKC;AAED,SAAS,WAAW;IAChB,OAAO,uCAAkB,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"isVisible.js","sourceRoot":"","sources":["../../src/expectations/isVisible.ts"],"names":[],"mappings":";;;AAGA,6DAA0D;AAE1D;;;;;;;;;;GAUG;AACH,SAAgB,SAAS;IACrB,OAAO,uCAAkB,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3F,CAAC;AAFD,8BAEC"}
@@ -1,8 +1,8 @@
1
1
  import { Ability, Duration, UsesAbilities } from '@serenity-js/core';
2
2
  import { Key } from '../../input';
3
- import { Cookie, CookieData, ModalDialog, Page, PageElement, PageElements } from '../models';
3
+ import { Cookie, CookieData, ModalDialog, NativeElementLocator, Page, PageElement, Selector } from '../models';
4
4
  import { BrowserCapabilities } from './BrowserCapabilities';
5
- export declare abstract class BrowseTheWeb implements Ability {
5
+ export declare abstract class BrowseTheWeb<Native_Element_Type = any> implements Ability {
6
6
  /**
7
7
  * @desc
8
8
  * Used to access the Actor's ability to {@link BrowseTheWeb}
@@ -19,14 +19,9 @@ export declare abstract class BrowseTheWeb implements Ability {
19
19
  abstract reloadPage(): Promise<void>;
20
20
  abstract waitFor(duration: Duration): Promise<void>;
21
21
  abstract waitUntil(condition: () => boolean | Promise<boolean>, timeout: Duration): Promise<void>;
22
- abstract findByCss(selector: string): PageElement;
23
- abstract findByCssContainingText(selector: string, text: string): PageElement;
24
- abstract findById(selector: string): PageElement;
25
- abstract findByTagName(selector: string): PageElement;
26
- abstract findByXPath(selector: string): PageElement;
27
- abstract findAllByCss(selector: string): PageElements;
28
- abstract findAllByTagName(selector: string): PageElements;
29
- abstract findAllByXPath(selector: string): PageElements;
22
+ abstract locate<T>(selector: Selector<T>, locator?: NativeElementLocator<Native_Element_Type>): PageElement<Native_Element_Type>;
23
+ abstract locateAll<T>(selector: Selector<T>, locator?: NativeElementLocator<Native_Element_Type>): Promise<Array<PageElement<Native_Element_Type>>>;
24
+ abstract nativeElementLocator(): NativeElementLocator<Native_Element_Type>;
30
25
  abstract browserCapabilities(): Promise<BrowserCapabilities>;
31
26
  abstract sendKeys(keys: Array<Key | string>): Promise<void>;
32
27
  abstract executeScript<Result, InnerArguments extends any[]>(script: string | ((...parameters: InnerArguments) => Result), ...args: InnerArguments): Promise<Result>;
@@ -1 +1 @@
1
- {"version":3,"file":"BrowseTheWeb.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWeb.ts"],"names":[],"mappings":";;;AAMA,MAAsB,YAAY;IAC9B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,KAAoB;QAC1B,OAAO,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;CAqEJ;AAjFD,oCAiFC"}
1
+ {"version":3,"file":"BrowseTheWeb.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/BrowseTheWeb.ts"],"names":[],"mappings":";;;AAMA,MAAsB,YAAY;IAC9B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,KAAoB;QAC1B,OAAO,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;CA+DJ;AA3ED,oCA2EC"}
@@ -35,26 +35,26 @@ import { PageElementInteraction } from './PageElementInteraction';
35
35
  * @extends {ElementInteraction}
36
36
  */
37
37
  export declare class Enter extends PageElementInteraction {
38
- private readonly value;
38
+ private readonly values;
39
39
  private readonly field;
40
40
  /**
41
41
  * @desc
42
42
  * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
43
43
  *
44
- * @param {Array<Answerable<string | number | string[] | number[]>>} value
44
+ * @param {Array<Answerable<string | number | string[] | number[]>>} values
45
45
  * The value to be entered
46
46
  *
47
47
  * @returns {EnterBuilder}
48
48
  */
49
- static theValue(...value: Array<Answerable<string | number | string[] | number[]>>): EnterBuilder;
49
+ static theValue(...values: Array<Answerable<string | number | string[] | number[]>>): EnterBuilder;
50
50
  /**
51
- * @param {Array<Answerable<string | number | string[] | number[]>>} value
51
+ * @param {Array<Answerable<string | number | string[] | number[]>>} values
52
52
  * The value to be entered
53
53
  *
54
54
  * @param {Answerable<PageElement>} field
55
55
  * The field to enter the value into
56
56
  */
57
- constructor(value: Array<Answerable<string | number | string[] | number[]>>, field: Answerable<PageElement>);
57
+ constructor(values: Array<Answerable<string | number | string[] | number[]>>, field: Answerable<PageElement>);
58
58
  /**
59
59
  * @desc
60
60
  * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
@@ -37,29 +37,29 @@ const PageElementInteraction_1 = require("./PageElementInteraction");
37
37
  */
38
38
  class Enter extends PageElementInteraction_1.PageElementInteraction {
39
39
  /**
40
- * @param {Array<Answerable<string | number | string[] | number[]>>} value
40
+ * @param {Array<Answerable<string | number | string[] | number[]>>} values
41
41
  * The value to be entered
42
42
  *
43
43
  * @param {Answerable<PageElement>} field
44
44
  * The field to enter the value into
45
45
  */
46
- constructor(value, field /* todo | Question<AlertPromise> | AlertPromise */) {
47
- super((0, io_1.formatted) `#actor enters ${value.join(', ')} into ${field}`);
48
- this.value = value;
46
+ constructor(values, field /* todo | Question<AlertPromise> | AlertPromise */) {
47
+ super((0, io_1.formatted) `#actor enters ${values.join(', ')} into ${field}`);
48
+ this.values = values;
49
49
  this.field = field;
50
50
  }
51
51
  /**
52
52
  * @desc
53
53
  * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
54
54
  *
55
- * @param {Array<Answerable<string | number | string[] | number[]>>} value
55
+ * @param {Array<Answerable<string | number | string[] | number[]>>} values
56
56
  * The value to be entered
57
57
  *
58
58
  * @returns {EnterBuilder}
59
59
  */
60
- static theValue(...value) {
60
+ static theValue(...values) {
61
61
  return {
62
- into: (field /* todo Question<AlertPromise> | AlertPromise */) => new Enter(value, field),
62
+ into: (field /* todo Question<AlertPromise> | AlertPromise */) => new Enter(values, field),
63
63
  };
64
64
  }
65
65
  /**
@@ -77,9 +77,9 @@ class Enter extends PageElementInteraction_1.PageElementInteraction {
77
77
  * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
78
78
  */
79
79
  async performAs(actor) {
80
- const values = await Promise.all(this.value.map(part => actor.answer(part)));
81
80
  const field = await this.resolve(actor, this.field);
82
- return field.enterValue(values.flat());
81
+ const valuesToEnter = await (0, io_1.asyncMap)(this.values, value => actor.answer(value));
82
+ return field.enterValue(valuesToEnter.flat());
83
83
  }
84
84
  }
85
85
  exports.Enter = Enter;
@@ -1 +1 @@
1
- {"version":3,"file":"Enter.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Enter.ts"],"names":[],"mappings":";;;AACA,iDAAqD;AAIrD,qEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAa,KAAM,SAAQ,+CAAsB;IAkB7C;;;;;;OAMG;IACH,YACqB,KAA+D,EAC/D,KAA8B,CAAC,kDAAkD;QAElG,KAAK,CAAC,IAAA,cAAS,EAAC,iBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAE,SAAU,KAAM,EAAE,CAAC,CAAC;QAHtD,UAAK,GAAL,KAAK,CAA0D;QAC/D,UAAK,GAAL,KAAK,CAAyB;IAGnD,CAAC;IA5BD;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,KAA+D;QAC9E,OAAO;YACH,IAAI,EAAE,CAAC,KAA8B,CAAE,gDAAgD,EAAE,EAAE,CACvF,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;SAC9B,CAAC;IACN,CAAC;IAgBD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAAuC;QACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACJ;AApDD,sBAoDC"}
1
+ {"version":3,"file":"Enter.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Enter.ts"],"names":[],"mappings":";;;AACA,iDAA+D;AAI/D,qEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAa,KAAM,SAAQ,+CAAsB;IAkB7C;;;;;;OAMG;IACH,YACqB,MAAgE,EAChE,KAA8B,CAAC,kDAAkD;QAElG,KAAK,CAAC,IAAA,cAAS,EAAC,iBAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,SAAU,KAAM,EAAE,CAAC,CAAC;QAHvD,WAAM,GAAN,MAAM,CAA0D;QAChE,UAAK,GAAL,KAAK,CAAyB;IAGnD,CAAC;IA5BD;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAgE;QAC/E,OAAO;YACH,IAAI,EAAE,CAAC,KAA8B,CAAE,gDAAgD,EAAE,EAAE,CACvF,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;SAC/B,CAAC;IACN,CAAC;IAgBD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAAuC;QACnD,MAAM,KAAK,GAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAErD,MAAM,aAAa,GAAG,MAAM,IAAA,aAAQ,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAE/E,OAAO,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;CACJ;AArDD,sBAqDC"}
@@ -201,6 +201,6 @@ export declare abstract class ExecuteScriptWithArguments extends Interaction {
201
201
  * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
202
202
  * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
203
203
  */
204
- performAs(actor: UsesAbilities & CollectsArtifacts & AnswersQuestions): PromiseLike<void>;
204
+ performAs(actor: UsesAbilities & CollectsArtifacts & AnswersQuestions): Promise<void>;
205
205
  protected abstract executeAs(actor: UsesAbilities & AnswersQuestions, args: any[]): Promise<any>;
206
206
  }
@@ -205,14 +205,13 @@ class ExecuteScriptWithArguments extends core_1.Interaction {
205
205
  * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
206
206
  * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
207
207
  */
208
- performAs(actor) {
209
- // todo: interaction should store the result on the ability; the ability should not have a side-effect (?)
210
- return Promise.all(this.args.map(arg => actor.answer(arg)))
211
- .then(args => this.executeAs(actor, args))
212
- .then(() => actor.collect(model_1.TextData.fromJSON({
208
+ async performAs(actor) {
209
+ const args = await (0, io_1.asyncMap)(this.args, arg => actor.answer(arg));
210
+ await this.executeAs(actor, args);
211
+ actor.collect(model_1.TextData.fromJSON({
213
212
  contentType: 'text/javascript;charset=UTF-8',
214
213
  data: this.script.toString(),
215
- }), new model_1.Name('Script source')));
214
+ }), new model_1.Name('Script source'));
216
215
  }
217
216
  }
218
217
  exports.ExecuteScriptWithArguments = ExecuteScriptWithArguments;
@@ -1 +1 @@
1
- {"version":3,"file":"ExecuteScript.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecuteScript.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":"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"}
@@ -133,10 +133,11 @@ class KeySequence extends core_1.Question {
133
133
  static of(keys) {
134
134
  return new KeySequence(keys);
135
135
  }
136
- answeredBy(actor) {
137
- return Promise.all(this.keys.map(part => actor.answer(part))).then(keys => {
138
- return keys.flat().filter(key => !!key);
139
- });
136
+ async answeredBy(actor) {
137
+ const keys = await (0, io_1.asyncMap)(this.keys, key => actor.answer(key));
138
+ return keys
139
+ .flat()
140
+ .filter(key => !!key);
140
141
  }
141
142
  /**
142
143
  * @desc
@@ -1 +1 @@
1
- {"version":3,"file":"Press.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Press.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Press.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Press.ts"],"names":[],"mappings":";;;AAAA,4CAAiH;AACjH,iDAA+D;AAE/D,uCAAkC;AAClC,4CAA4C;AAE5C,qEAAkE;AAGlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAa,KAAM,SAAQ,+CAAsB;IAmB7C;;;OAGG;IACH,YACqB,IAAqC;QAEtD,KAAK,CAAC,IAAA,cAAS,EAAC,kBAAmB,IAAK,EAAE,CAAC,CAAC;QAF3B,SAAI,GAAJ,IAAI,CAAiC;IAG1D,CAAC;IAzBD;;;;;;;;OAQG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,IAAwD;QAClE,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,EAAE,CAAC,KAA8B,CAAC,6CAA6C;QAC3E,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAYD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAAuC;QACnD,MAAM,IAAI,GAAI,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;CACJ;AA/CD,sBA+CC;AAED,MAAM,eAAgB,SAAQ,+CAAsB;IAChD;;;;;;OAMG;IACH,YACqB,IAAqC,EACrC,KAA8B,CAAC,kDAAkD;QAElG,KAAK,CAAC,IAAA,cAAS,EAAC,kBAAmB,IAAK,OAAQ,KAAM,EAAE,CAAC,CAAC;QAHzC,SAAI,GAAJ,IAAI,CAAiC;QACrC,UAAK,GAAL,KAAK,CAAyB;IAGnD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAuC;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,IAAI,GAAI,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5C,qBAAqB;QACrB,4CAA4C;QAC5C,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa;QACtC,0BAA0B;QAC1B,SAAS,KAAK,CAAC,OAAY;YACvB,OAAO,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,EACD,MAAM,KAAK,CAAC,aAAa,EAAE,CAC9B,CAAC;QAEF,OAAO,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAY,SAAQ,eAAsC;IAO5D,YAA6B,IAAwD;QACjF,KAAK,EAAE,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAoD;QAEjF,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAPD,MAAM,CAAC,EAAE,CAAC,IAAwD;QAC9D,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAOD,KAAK,CAAC,UAAU,CAAC,KAAuC;QACpD,MAAM,IAAI,GAAG,MAAM,IAAA,aAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjE,OAAO,IAAI;aACN,IAAI,EAAE;aACN,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,IAAwD;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YAChD,MAAM,SAAS,GAAG,WAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU;gBAC9C,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YAEpB,OAAO;gBACH,WAAW,EAAE,KAAK,KAAK,CAAC;oBACpB,CAAC,CAAC,GAAI,GAAI,EAAE;oBACZ,CAAC,CAAC,GAAI,GAAG,CAAC,WAAY,GAAG,GAAG,CAAC,SAAS,GAAI,GAAI,EAAE;gBACpD,SAAS;aACZ,CAAA;QACL,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC;QAErD,OAAO,GAAI,MAAO,IAAK,WAAY,EAAE,CAAC;IAC1C,CAAC;CACJ"}
@@ -66,7 +66,7 @@ class Select {
66
66
  static value(value) {
67
67
  return {
68
68
  from: (pageElement) => screenplay_1.Interaction.where((0, io_1.formatted) `#actor selects value ${value} from ${pageElement}`, async (actor) => {
69
- return models_1.PageElement.locatedByCss((0, core_1.q) `option[value=${value}]`)
69
+ return models_1.PageElement.located(models_1.By.css((0, core_1.q) `option[value=${value}]`))
70
70
  .of(pageElement)
71
71
  .click()
72
72
  .performAs(actor);
@@ -124,14 +124,17 @@ class Select {
124
124
  static values(...values) {
125
125
  return {
126
126
  from: (pageElement) => screenplay_1.Interaction.where(`#actor selects values ${(0, io_1.commaSeparated)(values.flat(), item => (0, inspected_1.inspected)(item, { inline: true }))} from ${(0, inspected_1.inspected)(pageElement, { inline: true })}`, async (actor) => {
127
- const desiredValues = (await Promise.all(values.map(value => actor.answer(value)))).flat(); // eslint-disable-line unicorn/no-await-expression-member
128
- const options = await models_1.PageElements.locatedByCss(`option`).of(pageElement).answeredBy(actor);
129
- const shouldSelect = await options.map(optionsToSelect(hasValueEqualOneOf(desiredValues)));
130
- return options.forEach((option, index) => {
131
- if (shouldSelect[index]) {
132
- return option.click();
127
+ const answers = await (0, io_1.asyncMap)(values, value => actor.answer(value));
128
+ const desiredValues = answers.flat();
129
+ const options = await models_1.PageElements.located(models_1.By.css(`option`))
130
+ .of(pageElement)
131
+ .answeredBy(actor);
132
+ for (const option of options) {
133
+ const shouldSelect = await optionsToSelect(hasValueEqualOneOf(desiredValues))(option);
134
+ if (shouldSelect) {
135
+ await option.click();
133
136
  }
134
- });
137
+ }
135
138
  }),
136
139
  };
137
140
  }
@@ -188,7 +191,7 @@ class Select {
188
191
  static option(value) {
189
192
  return {
190
193
  from: (pageElement) => screenplay_1.Interaction.where((0, io_1.formatted) `#actor selects ${value} from ${pageElement}`, async (actor) => {
191
- return models_1.PageElement.locatedByCssContainingText('option', value)
194
+ return models_1.PageElement.located(models_1.By.cssContainingText('option', value))
192
195
  .of(pageElement)
193
196
  .click()
194
197
  .performAs(actor);
@@ -248,14 +251,15 @@ class Select {
248
251
  static options(...values) {
249
252
  return {
250
253
  from: (pageElement) => screenplay_1.Interaction.where(`#actor selects ${(0, io_1.commaSeparated)(values.flat(), item => (0, inspected_1.inspected)(item, { inline: true }))} from ${(0, inspected_1.inspected)(pageElement, { inline: true })}`, async (actor) => {
251
- const desiredOptions = (await Promise.all(values.map(value => actor.answer(value)))).flat(); // eslint-disable-line unicorn/no-await-expression-member
252
- const options = await models_1.PageElements.locatedByCss(`option`).of(pageElement).answeredBy(actor);
253
- const shouldSelect = await options.map(optionsToSelect(hasTextEqualOneOf(desiredOptions)));
254
- return options.forEach((option, index) => {
255
- if (shouldSelect[index]) {
256
- return option.click();
254
+ const answers = await (0, io_1.asyncMap)(values, value => actor.answer(value));
255
+ const desiredOptions = answers.flat();
256
+ const options = await models_1.PageElements.located(models_1.By.css(`option`)).of(pageElement).answeredBy(actor);
257
+ for (const option of options) {
258
+ const shouldSelect = await optionsToSelect(hasTextEqualOneOf(desiredOptions))(option);
259
+ if (shouldSelect) {
260
+ await option.click();
257
261
  }
258
- });
262
+ }
259
263
  }),
260
264
  };
261
265
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/Select.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,7 @@ export declare class TakeScreenshot extends Interaction {
56
56
  * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
57
57
  * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
58
58
  */
59
- performAs(actor: UsesAbilities & AnswersQuestions & CollectsArtifacts): PromiseLike<void>;
59
+ performAs(actor: UsesAbilities & AnswersQuestions & CollectsArtifacts): Promise<void>;
60
60
  /**
61
61
  * @desc
62
62
  * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
@@ -66,11 +66,10 @@ class TakeScreenshot extends core_1.Interaction {
66
66
  * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
67
67
  * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
68
68
  */
69
- performAs(actor) {
70
- return Promise.all([
71
- abilities_1.BrowseTheWeb.as(actor).takeScreenshot(),
72
- actor.answer(this.name),
73
- ]).then(([screenshot, name]) => actor.collect(model_1.Photo.fromBase64(screenshot), new model_1.Name(name)));
69
+ async performAs(actor) {
70
+ const screenshot = await abilities_1.BrowseTheWeb.as(actor).takeScreenshot();
71
+ const name = await actor.answer(this.name);
72
+ actor.collect(model_1.Photo.fromBase64(screenshot), new model_1.Name(name));
74
73
  }
75
74
  /**
76
75
  * @desc
@@ -1 +1 @@
1
- {"version":3,"file":"TakeScreenshot.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/TakeScreenshot.ts"],"names":[],"mappings":";;;AAAA,4CAAgH;AAChH,iDAAqD;AACrD,uDAA0D;AAE1D,4CAA4C;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAa,cAAe,SAAQ,kBAAW;IAe3C;;;OAGG;IACH,YAA6B,IAAwB;QACjD,KAAK,EAAE,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAoB;IAErD,CAAC;IAnBD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,IAAwB;QAC9B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAUD;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,KAA2D;QACjE,OAAO,OAAO,CAAC,GAAG,CAAC;YACf,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE;YACvC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,UAAU,EAAE,IAAI,CAAE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAC3C,aAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAC5B,IAAI,YAAI,CAAC,IAAI,CAAC,CACjB,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACJ,OAAO,IAAA,cAAS,EAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC;CACJ;AAxDD,wCAwDC"}
1
+ {"version":3,"file":"TakeScreenshot.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/TakeScreenshot.ts"],"names":[],"mappings":";;;AAAA,4CAAgH;AAChH,iDAAqD;AACrD,uDAA0D;AAE1D,4CAA4C;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAa,cAAe,SAAQ,kBAAW;IAe3C;;;OAGG;IACH,YAA6B,IAAwB;QACjD,KAAK,EAAE,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAoB;IAErD,CAAC;IAnBD;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,IAAwB;QAC9B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAUD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,KAA2D;QACvE,MAAM,UAAU,GAAM,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;QACpE,MAAM,IAAI,GAAY,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,KAAK,CAAC,OAAO,CACT,aAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAC5B,IAAI,YAAI,CAAC,IAAI,CAAC,CACjB,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACJ,OAAO,IAAA,cAAS,EAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC;CACJ;AAxDD,wCAwDC"}
@@ -0,0 +1,5 @@
1
+ import { Selector } from './selectors';
2
+ export interface NativeElementLocator<Native_Element_Type> {
3
+ locate<T>(selector: Selector<T>): Promise<Native_Element_Type>;
4
+ locateAll<T>(selector: Selector<T>): Promise<Native_Element_Type[]>;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=NativeElementLocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeElementLocator.js","sourceRoot":"","sources":["../../../src/screenplay/models/NativeElementLocator.ts"],"names":[],"mappings":""}
@@ -1,16 +1,16 @@
1
1
  import { Adapter, Answerable, Question } from '@serenity-js/core';
2
- export declare abstract class PageElement<NativeElementContext = any, NativeElement = any> {
3
- protected readonly context: () => Promise<NativeElementContext> | NativeElementContext;
4
- protected readonly locator: (root: NativeElementContext) => Promise<NativeElement> | NativeElement;
5
- static of(childElement: Answerable<PageElement>, parentElement: Answerable<PageElement>): Question<Promise<PageElement>> & Adapter<PageElement>;
6
- static locatedByCss(selector: Answerable<string>): Question<Promise<PageElement>> & Adapter<PageElement>;
7
- static locatedByCssContainingText(selector: Answerable<string>, text: Answerable<string>): Question<Promise<PageElement>> & Adapter<PageElement>;
8
- static locatedById(selector: Answerable<string>): Question<Promise<PageElement>> & Adapter<PageElement>;
9
- static locatedByTagName(tagName: Answerable<string>): Question<Promise<PageElement>> & Adapter<PageElement>;
10
- static locatedByXPath(selector: Answerable<string>): Question<Promise<PageElement>> & Adapter<PageElement>;
11
- constructor(context: () => Promise<NativeElementContext> | NativeElementContext, locator: (root: NativeElementContext) => Promise<NativeElement> | NativeElement);
12
- abstract of(parent: PageElement): PageElement;
13
- nativeElement(): Promise<NativeElement>;
2
+ import { NativeElementLocator } from './NativeElementLocator';
3
+ import { Selector } from './selectors';
4
+ export declare abstract class PageElement<Native_Element_Type = any> {
5
+ protected readonly selector: Selector<unknown>;
6
+ private readonly locator;
7
+ static located<NET, ST>(selector: Answerable<Selector<ST>>): Question<Promise<PageElement<NET>>> & Adapter<PageElement<NET>>;
8
+ static of<NET>(childElement: Answerable<PageElement<NET>>, parentElement: Answerable<PageElement<NET>>): Question<Promise<PageElement<NET>>> & Adapter<PageElement<NET>>;
9
+ constructor(selector: Selector<unknown>, locator: NativeElementLocator<Native_Element_Type>);
10
+ abstract of(parent: PageElement<Native_Element_Type>): PageElement<Native_Element_Type>;
11
+ nativeElement(): Promise<Native_Element_Type>;
12
+ nativeElementLocator(): NativeElementLocator<Native_Element_Type>;
13
+ toString(): string;
14
14
  abstract enterValue(value: string | number | Array<string | number>): Promise<void>;
15
15
  abstract clearValue(): Promise<void>;
16
16
  abstract click(): Promise<void>;
@@ -23,8 +23,8 @@ export declare abstract class PageElement<NativeElementContext = any, NativeElem
23
23
  abstract value(): Promise<string>;
24
24
  abstract isActive(): Promise<boolean>;
25
25
  abstract isClickable(): Promise<boolean>;
26
- abstract isDisplayed(): Promise<boolean>;
27
26
  abstract isEnabled(): Promise<boolean>;
28
27
  abstract isPresent(): Promise<boolean>;
29
28
  abstract isSelected(): Promise<boolean>;
29
+ abstract isVisible(): Promise<boolean>;
30
30
  }
@@ -4,12 +4,17 @@ exports.PageElement = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
5
  const abilities_1 = require("../abilities");
6
6
  const d = (0, core_1.format)({ markQuestions: false });
7
- const f = (0, core_1.format)({ markQuestions: true });
8
7
  class PageElement {
9
- constructor(context, locator) {
10
- this.context = context;
8
+ constructor(selector, locator) {
9
+ this.selector = selector;
11
10
  this.locator = locator;
12
11
  }
12
+ static located(selector) {
13
+ return core_1.Question.about(d `page element located ${selector}`, async (actor) => {
14
+ const bySelector = await actor.answer(selector);
15
+ return abilities_1.BrowseTheWeb.as(actor).locate(bySelector);
16
+ });
17
+ }
13
18
  static of(childElement, parentElement) {
14
19
  return core_1.Question.about(d `${childElement} of ${parentElement})`, async (actor) => {
15
20
  const child = await actor.answer(childElement);
@@ -17,46 +22,20 @@ class PageElement {
17
22
  return child.of(parent);
18
23
  });
19
24
  }
20
- static locatedByCss(selector) {
21
- return core_1.Question.about(f `page element located by css (${selector})`, async (actor) => {
22
- const cssSelector = await actor.answer(selector);
23
- return abilities_1.BrowseTheWeb.as(actor).findByCss(cssSelector);
24
- });
25
- }
26
- static locatedByCssContainingText(selector, text) {
27
- return core_1.Question.about(f `page element located by css (${selector}) containing text ${text}`, async (actor) => {
28
- const cssSelector = await actor.answer(selector);
29
- const desiredText = await actor.answer(text);
30
- return abilities_1.BrowseTheWeb.as(actor).findByCssContainingText(cssSelector, desiredText);
31
- });
32
- }
33
- static locatedById(selector) {
34
- return core_1.Question.about(f `page element located by id (${selector})`, async (actor) => {
35
- const idSelector = await actor.answer(selector);
36
- return abilities_1.BrowseTheWeb.as(actor).findById(idSelector);
37
- });
38
- }
39
- static locatedByTagName(tagName) {
40
- return core_1.Question.about(f `page element located by tag name (${tagName})`, async (actor) => {
41
- const tagNameSelector = await actor.answer(tagName);
42
- return abilities_1.BrowseTheWeb.as(actor).findByTagName(tagNameSelector);
43
- });
44
- }
45
- static locatedByXPath(selector) {
46
- return core_1.Question.about(f `page element located by xpath (${selector})`, async (actor) => {
47
- const xpathSelector = await actor.answer(selector);
48
- return abilities_1.BrowseTheWeb.as(actor).findByXPath(xpathSelector);
49
- });
50
- }
51
25
  async nativeElement() {
52
26
  try {
53
- const context = await this.context();
54
- return this.locator(context);
27
+ return this.locator.locate(this.selector);
55
28
  }
56
29
  catch (error) {
57
30
  throw new core_1.LogicError(`Couldn't find element`, error);
58
31
  }
59
32
  }
33
+ nativeElementLocator() {
34
+ return this.locator;
35
+ }
36
+ toString() {
37
+ return `PageElement located ${this.selector}`;
38
+ }
60
39
  }
61
40
  exports.PageElement = PageElement;
62
41
  //# sourceMappingURL=PageElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElement.ts"],"names":[],"mappings":";;;AAAA,4CAAsF;AAEtF,4CAA4C;AAI5C,MAAM,CAAC,GAAG,IAAA,aAAM,EAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;AAE3C,MAAsB,WAAW;IAkB7B,YACuB,QAA2B,EAC7B,OAAkD;QADhD,aAAQ,GAAR,QAAQ,CAAmB;QAC7B,YAAO,GAAP,OAAO,CAA2C;IAEvE,CAAC;IApBD,MAAM,CAAC,OAAO,CAAU,QAAkC;QACtD,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,CAAC,KAAK,CAAC,CAAC,MAAM,CAAK,UAAU,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,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;IAUD,KAAK,CAAC,aAAa;QACf,IAAI;YACA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7C;QACD,OAAO,KAAK,EAAE;YACV,MAAM,IAAI,iBAAU,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;SACxD;IACL,CAAC;IAED,oBAAoB;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,QAAQ;QACJ,OAAO,uBAAwB,IAAI,CAAC,QAAS,EAAE,CAAA;IACnD,CAAC;CAoBJ;AA7DD,kCA6DC"}
@@ -1,20 +1,15 @@
1
- import { Adapter, Answerable, Question } from '@serenity-js/core';
1
+ import { Answerable, List } from '@serenity-js/core';
2
2
  import { PageElement } from './PageElement';
3
- export declare abstract class PageElements<NativeElementContext = any, NativeElementList = any, NativeElement = any> {
4
- protected readonly context: () => Promise<NativeElementContext> | NativeElementContext;
5
- protected readonly locator: (root: NativeElementContext) => Promise<NativeElementList> | NativeElementList;
6
- static of(childElements: Answerable<PageElements>, parentElement: Answerable<PageElement>): Question<Promise<PageElements>> & Adapter<PageElements>;
7
- static locatedByCss(selector: Answerable<string>): Question<Promise<PageElements>> & Adapter<PageElements>;
8
- static locatedByTagName(selector: Answerable<string>): Question<Promise<PageElements>> & Adapter<PageElements>;
9
- static locatedByXPath(selector: Answerable<string>): Question<Promise<PageElements>> & Adapter<PageElements>;
10
- constructor(context: () => Promise<NativeElementContext> | NativeElementContext, locator: (root: NativeElementContext) => Promise<NativeElementList> | NativeElementList);
11
- abstract of(parent: PageElement): PageElements;
12
- nativeElementList(): Promise<NativeElementList>;
13
- abstract count(): Promise<number>;
14
- abstract first(): Promise<PageElement<NativeElementContext, NativeElement>>;
15
- abstract last(): Promise<PageElement<NativeElementContext, NativeElement>>;
16
- abstract get(index: number): Promise<PageElement<NativeElementContext, NativeElement>>;
17
- abstract map<O>(fn: (element: PageElement, index?: number, elements?: PageElements) => Promise<O> | O): Promise<O[]>;
18
- abstract filter(fn: (element: PageElement, index?: number) => Promise<boolean> | boolean): PageElements;
19
- abstract forEach(fn: (element: PageElement, index?: number) => Promise<void> | void): Promise<void>;
3
+ import { Selector } from './selectors';
4
+ export declare class PageElements<Native_Element_Type = any> extends List<PageElement<Native_Element_Type>> {
5
+ protected readonly selector: Answerable<Selector<unknown>>;
6
+ private readonly parent?;
7
+ static located<NET, ST>(selector: Answerable<Selector<ST>>): PageElements<NET>;
8
+ /**
9
+ * @param {Answerable<Selector<unknown>>} selector
10
+ * @param {Answerable<PageElement>} [parent]
11
+ * if not specified, browser root selector is used
12
+ */
13
+ constructor(selector: Answerable<Selector<unknown>>, parent?: Answerable<PageElement>);
14
+ of(parent: Answerable<PageElement<Native_Element_Type>>): PageElements<Native_Element_Type>;
20
15
  }