@serenity-js/web 3.13.3 → 3.14.0

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 (83) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/lib/screenplay/abilities/BrowseTheWeb.js +1 -0
  3. package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
  4. package/lib/screenplay/interactions/Clear.js +1 -0
  5. package/lib/screenplay/interactions/Clear.js.map +1 -1
  6. package/lib/screenplay/interactions/Click.js +1 -0
  7. package/lib/screenplay/interactions/Click.js.map +1 -1
  8. package/lib/screenplay/interactions/DoubleClick.js +1 -0
  9. package/lib/screenplay/interactions/DoubleClick.js.map +1 -1
  10. package/lib/screenplay/interactions/Enter.js +2 -0
  11. package/lib/screenplay/interactions/Enter.js.map +1 -1
  12. package/lib/screenplay/interactions/ExecuteScript.js +3 -0
  13. package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
  14. package/lib/screenplay/interactions/Hover.js +1 -0
  15. package/lib/screenplay/interactions/Hover.js.map +1 -1
  16. package/lib/screenplay/interactions/Navigate.js +1 -0
  17. package/lib/screenplay/interactions/Navigate.js.map +1 -1
  18. package/lib/screenplay/interactions/Press.js +5 -0
  19. package/lib/screenplay/interactions/Press.js.map +1 -1
  20. package/lib/screenplay/interactions/RightClick.js +1 -0
  21. package/lib/screenplay/interactions/RightClick.js.map +1 -1
  22. package/lib/screenplay/interactions/Scroll.js +1 -0
  23. package/lib/screenplay/interactions/Scroll.js.map +1 -1
  24. package/lib/screenplay/interactions/Switch.js +3 -0
  25. package/lib/screenplay/interactions/Switch.js.map +1 -1
  26. package/lib/screenplay/interactions/TakeScreenshot.js +1 -0
  27. package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
  28. package/lib/screenplay/models/BrowsingSession.js +2 -3
  29. package/lib/screenplay/models/BrowsingSession.js.map +1 -1
  30. package/lib/screenplay/models/Cookie.js +2 -0
  31. package/lib/screenplay/models/Cookie.js.map +1 -1
  32. package/lib/screenplay/models/Key.js +55 -52
  33. package/lib/screenplay/models/Key.js.map +1 -1
  34. package/lib/screenplay/models/Locator.js +6 -6
  35. package/lib/screenplay/models/Locator.js.map +1 -1
  36. package/lib/screenplay/models/Page.js +4 -0
  37. package/lib/screenplay/models/Page.js.map +1 -1
  38. package/lib/screenplay/models/PageElement.js +1 -0
  39. package/lib/screenplay/models/PageElement.js.map +1 -1
  40. package/lib/screenplay/models/PageElementsLocator.js +2 -0
  41. package/lib/screenplay/models/PageElementsLocator.js.map +1 -1
  42. package/lib/screenplay/models/RootLocator.js +1 -5
  43. package/lib/screenplay/models/RootLocator.js.map +1 -1
  44. package/lib/screenplay/models/SelectOption.js +4 -0
  45. package/lib/screenplay/models/SelectOption.js.map +1 -1
  46. package/lib/screenplay/models/dialogs/AcceptedModalDialog.js +1 -0
  47. package/lib/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -1
  48. package/lib/screenplay/models/dialogs/DismissedModalDialog.js +1 -0
  49. package/lib/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -1
  50. package/lib/screenplay/models/dialogs/ModalDialogHandler.js +1 -0
  51. package/lib/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -1
  52. package/lib/screenplay/models/selectors/ByCss.js +1 -0
  53. package/lib/screenplay/models/selectors/ByCss.js.map +1 -1
  54. package/lib/screenplay/models/selectors/ByCssContainingText.js +2 -0
  55. package/lib/screenplay/models/selectors/ByCssContainingText.js.map +1 -1
  56. package/lib/screenplay/models/selectors/ByDeepCss.js +1 -0
  57. package/lib/screenplay/models/selectors/ByDeepCss.js.map +1 -1
  58. package/lib/screenplay/models/selectors/ById.js +1 -0
  59. package/lib/screenplay/models/selectors/ById.js.map +1 -1
  60. package/lib/screenplay/models/selectors/ByTagName.js +1 -0
  61. package/lib/screenplay/models/selectors/ByTagName.js.map +1 -1
  62. package/lib/screenplay/models/selectors/ByXPath.js +1 -0
  63. package/lib/screenplay/models/selectors/ByXPath.js.map +1 -1
  64. package/lib/screenplay/questions/Attribute.d.ts +9 -9
  65. package/lib/screenplay/questions/Attribute.d.ts.map +1 -1
  66. package/lib/screenplay/questions/Attribute.js +10 -7
  67. package/lib/screenplay/questions/Attribute.js.map +1 -1
  68. package/lib/screenplay/questions/ComputedStyle.d.ts +140 -0
  69. package/lib/screenplay/questions/ComputedStyle.d.ts.map +1 -0
  70. package/lib/screenplay/questions/ComputedStyle.js +176 -0
  71. package/lib/screenplay/questions/ComputedStyle.js.map +1 -0
  72. package/lib/screenplay/questions/index.d.ts +1 -0
  73. package/lib/screenplay/questions/index.d.ts.map +1 -1
  74. package/lib/screenplay/questions/index.js +1 -0
  75. package/lib/screenplay/questions/index.js.map +1 -1
  76. package/lib/stage/crew/photographer/Photographer.js +4 -2
  77. package/lib/stage/crew/photographer/Photographer.js.map +1 -1
  78. package/package.json +4 -4
  79. package/src/screenplay/questions/Attribute.ts +11 -11
  80. package/src/screenplay/questions/ComputedStyle.ts +206 -0
  81. package/src/screenplay/questions/index.ts +1 -0
  82. package/src/stage/crew/photographer/Photographer.ts +2 -2
  83. package/tsconfig.build.json +1 -1
@@ -7,6 +7,7 @@ const abilities_1 = require("../abilities");
7
7
  * @group Models
8
8
  */
9
9
  class PageElementsLocator extends core_1.Question {
10
+ locator;
10
11
  static fromDocumentRoot(selector) {
11
12
  return new PageElementsLocator(core_1.Question.about((0, core_1.d) `page elements located ${selector}`, async (actor) => {
12
13
  const bySelector = await actor.answer(selector);
@@ -14,6 +15,7 @@ class PageElementsLocator extends core_1.Question {
14
15
  return currentPage.locate(bySelector).locator;
15
16
  }));
16
17
  }
18
+ subject;
17
19
  constructor(locator) {
18
20
  super();
19
21
  this.locator = locator;
@@ -1 +1 @@
1
- {"version":3,"file":"PageElementsLocator.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElementsLocator.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAEhD,4CAA4C;AAK5C;;GAEG;AACH,MAAa,mBACT,SAAQ,eAA0D;IAGlE,MAAM,CAAC,gBAAgB,CAAM,QAA8B;QACvD,OAAO,IAAI,mBAAmB,CAC1B,eAAQ,CAAC,KAAK,CAAC,IAAA,QAAC,EAAA,yBAA0B,QAAS,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACjE,MAAM,UAAU,GAAI,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,MAAM,wBAAY,CAAC,EAAE,CAAoB,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAElF,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;QAClD,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAID,YAA6B,OAAiD;QAC1E,KAAK,EAAE,CAAC;QADiB,YAAO,GAAP,OAAO,CAA0C;IAE9E,CAAC;IAED,EAAE,CAAC,MAAoD;QACnD,OAAO,IAAI,mBAAmB,CAC1B,eAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAA,QAAC,EAAA,OAAQ,MAAO,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YAC/D,MAAM,OAAO,GAA6C,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3F,MAAM,aAAa,GAAuC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAErF,OAAO,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAuC;QACpD,MAAM,QAAQ,GAAiC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,IAAI,IAAA,QAAC,EAAA,GAAI,IAAI,CAAC,OAAQ,EAAE,CAAC;IAChD,CAAC;CACJ;AA7CD,kDA6CC"}
1
+ {"version":3,"file":"PageElementsLocator.js","sourceRoot":"","sources":["../../../src/screenplay/models/PageElementsLocator.ts"],"names":[],"mappings":";;;AACA,4CAAgD;AAEhD,4CAA4C;AAK5C;;GAEG;AACH,MAAa,mBACT,SAAQ,eAA0D;IAgBrC;IAb7B,MAAM,CAAC,gBAAgB,CAAM,QAA8B;QACvD,OAAO,IAAI,mBAAmB,CAC1B,eAAQ,CAAC,KAAK,CAAC,IAAA,QAAC,EAAA,yBAA0B,QAAS,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YACjE,MAAM,UAAU,GAAI,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,MAAM,wBAAY,CAAC,EAAE,CAAoB,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAElF,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;QAClD,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAEO,OAAO,CAAU;IAEzB,YAA6B,OAAiD;QAC1E,KAAK,EAAE,CAAC;QADiB,YAAO,GAAP,OAAO,CAA0C;IAE9E,CAAC;IAED,EAAE,CAAC,MAAoD;QACnD,OAAO,IAAI,mBAAmB,CAC1B,eAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAA,QAAC,EAAA,OAAQ,MAAO,EAAE,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;YAC/D,MAAM,OAAO,GAA6C,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3F,MAAM,aAAa,GAAuC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAErF,OAAO,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAuC;QACpD,MAAM,QAAQ,GAAiC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,IAAI,IAAA,QAAC,EAAA,GAAI,IAAI,CAAC,OAAQ,EAAE,CAAC;IAChD,CAAC;CACJ;AA7CD,kDA6CC"}
@@ -22,7 +22,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var _a;
26
25
  Object.defineProperty(exports, "__esModule", { value: true });
27
26
  exports.RootLocator = void 0;
28
27
  const io_1 = require("@serenity-js/core/lib/io");
@@ -40,13 +39,10 @@ const util = __importStar(require("util")); // eslint-disable-line unicorn/impor
40
39
  * @group Models
41
40
  */
42
41
  class RootLocator {
43
- constructor() {
44
- this[_a] = (0, io_1.inspectedObject)(this, []);
45
- }
46
42
  toString() {
47
43
  return 'root locator';
48
44
  }
45
+ [util.inspect.custom] = (0, io_1.inspectedObject)(this, []);
49
46
  }
50
47
  exports.RootLocator = RootLocator;
51
- _a = util.inspect.custom;
52
48
  //# sourceMappingURL=RootLocator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RootLocator.js","sourceRoot":"","sources":["../../../src/screenplay/models/RootLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iDAA2D;AAC3D,2CAA6B,CAAG,2CAA2C;AAE3E;;;;;;;;;;;GAWG;AACH,MAAsB,WAAW;IAAjC;QAYI,QAAqB,GAAG,IAAA,oBAAe,EAAC,IAAI,EAAE,EAAG,CAAC,CAAA;IACtD,CAAC;IALG,QAAQ;QACJ,OAAO,cAAc,CAAC;IAC1B,CAAC;CAGJ;AAbD,kCAaC;KADI,IAAI,CAAC,OAAO,CAAC,MAAM"}
1
+ {"version":3,"file":"RootLocator.js","sourceRoot":"","sources":["../../../src/screenplay/models/RootLocator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iDAA2D;AAC3D,2CAA6B,CAAG,2CAA2C;AAE3E;;;;;;;;;;;GAWG;AACH,MAAsB,WAAW;IAQ7B,QAAQ;QACJ,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAA,oBAAe,EAAC,IAAI,EAAE,EAAG,CAAC,CAAA;CACrD;AAbD,kCAaC"}
@@ -16,6 +16,10 @@ const tiny_types_1 = require("tiny-types");
16
16
  * @group Models
17
17
  */
18
18
  class SelectOption extends tiny_types_1.TinyType {
19
+ label;
20
+ value;
21
+ selected;
22
+ disabled;
19
23
  static withLabel(label) {
20
24
  return new SelectOption(label);
21
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectOption.js","sourceRoot":"","sources":["../../../src/screenplay/models/SelectOption.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAEtC;;;;;;;;;;;;GAYG;AACH,MAAa,YAAa,SAAQ,qBAAQ;IAEtC,MAAM,CAAC,SAAS,CAAC,KAAa;QAC1B,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAa;QAC1B,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,YACoB,KAAc,EACd,KAAc,EACd,QAAkB,EAClB,QAAkB;QAElC,KAAK,EAAE,CAAC;QALQ,UAAK,GAAL,KAAK,CAAS;QACd,UAAK,GAAL,KAAK,CAAS;QACd,aAAQ,GAAR,QAAQ,CAAU;QAClB,aAAQ,GAAR,QAAQ,CAAU;IAGtC,CAAC;IAED,QAAQ;QACJ,OAAO,kCAAmC,IAAI,CAAC,KAAM,YAAa,IAAI,CAAC,KAAM,EAAE,CAAC;IACpF,CAAC;CACJ;AAtBD,oCAsBC"}
1
+ {"version":3,"file":"SelectOption.js","sourceRoot":"","sources":["../../../src/screenplay/models/SelectOption.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAEtC;;;;;;;;;;;;GAYG;AACH,MAAa,YAAa,SAAQ,qBAAQ;IAWlB;IACA;IACA;IACA;IAZpB,MAAM,CAAC,SAAS,CAAC,KAAa;QAC1B,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAa;QAC1B,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,YACoB,KAAc,EACd,KAAc,EACd,QAAkB,EAClB,QAAkB;QAElC,KAAK,EAAE,CAAC;QALQ,UAAK,GAAL,KAAK,CAAS;QACd,UAAK,GAAL,KAAK,CAAS;QACd,aAAQ,GAAR,QAAQ,CAAU;QAClB,aAAQ,GAAR,QAAQ,CAAU;IAGtC,CAAC;IAED,QAAQ;QACJ,OAAO,kCAAmC,IAAI,CAAC,KAAM,YAAa,IAAI,CAAC,KAAM,EAAE,CAAC;IACpF,CAAC;CACJ;AAtBD,oCAsBC"}
@@ -13,6 +13,7 @@ const ModalDialog_1 = require("./ModalDialog");
13
13
  * @group Models
14
14
  */
15
15
  class AcceptedModalDialog extends ModalDialog_1.ModalDialog {
16
+ dialogMessage;
16
17
  constructor(dialogMessage) {
17
18
  super();
18
19
  this.dialogMessage = dialogMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"AcceptedModalDialog.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/AcceptedModalDialog.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,+CAA4C;AAE5C;;;;;;;;GAQG;AACH,MAAa,mBAAoB,SAAQ,yBAAW;IAChD,YAA6B,aAAqB;QAC9C,KAAK,EAAE,CAAC;QADiB,kBAAa,GAAb,aAAa,CAAQ;QAE9C,IAAA,mBAAM,EAAC,eAAe,EAAE,aAAa,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ;AAbD,kDAaC"}
1
+ {"version":3,"file":"AcceptedModalDialog.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/AcceptedModalDialog.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,+CAA4C;AAE5C;;;;;;;;GAQG;AACH,MAAa,mBAAoB,SAAQ,yBAAW;IACnB;IAA7B,YAA6B,aAAqB;QAC9C,KAAK,EAAE,CAAC;QADiB,kBAAa,GAAb,aAAa,CAAQ;QAE9C,IAAA,mBAAM,EAAC,eAAe,EAAE,aAAa,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ;AAbD,kDAaC"}
@@ -13,6 +13,7 @@ const ModalDialog_1 = require("./ModalDialog");
13
13
  * @group Models
14
14
  */
15
15
  class DismissedModalDialog extends ModalDialog_1.ModalDialog {
16
+ dialogMessage;
16
17
  constructor(dialogMessage) {
17
18
  super();
18
19
  this.dialogMessage = dialogMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"DismissedModalDialog.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/DismissedModalDialog.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,+CAA4C;AAE5C;;;;;;;;GAQG;AACH,MAAa,oBAAqB,SAAQ,yBAAW;IACjD,YAA6B,aAAqB;QAC9C,KAAK,EAAE,CAAC;QADiB,kBAAa,GAAb,aAAa,CAAQ;QAE9C,IAAA,mBAAM,EAAC,eAAe,EAAE,aAAa,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ;AAbD,oDAaC"}
1
+ {"version":3,"file":"DismissedModalDialog.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/DismissedModalDialog.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,+CAA4C;AAE5C;;;;;;;;GAQG;AACH,MAAa,oBAAqB,SAAQ,yBAAW;IACpB;IAA7B,YAA6B,aAAqB;QAC9C,KAAK,EAAE,CAAC;QADiB,kBAAa,GAAb,aAAa,CAAQ;QAE9C,IAAA,mBAAM,EAAC,eAAe,EAAE,aAAa,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ;AAbD,oDAaC"}
@@ -14,6 +14,7 @@ const AbsentModalDialog_1 = require("./AbsentModalDialog");
14
14
  * @group Models
15
15
  */
16
16
  class ModalDialogHandler {
17
+ modalDialog;
17
18
  constructor(modalDialog = new AbsentModalDialog_1.AbsentModalDialog()) {
18
19
  this.modalDialog = modalDialog;
19
20
  (0, tiny_types_1.ensure)('modalDialog', modalDialog, (0, tiny_types_1.isDefined)());
@@ -1 +1 @@
1
- {"version":3,"file":"ModalDialogHandler.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/ModalDialogHandler.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,2DAAwD;AAGxD;;;;;;;;;GASG;AACH,MAAsB,kBAAkB;IAEpC,YAAgC,cAA2B,IAAI,qCAAiB,EAAE;QAAlD,gBAAW,GAAX,WAAW,CAAuC;QAC9E,IAAA,mBAAM,EAAC,aAAa,EAAE,WAAW,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACpD,CAAC;IAuBD;;;OAGG;IACH,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ;AAlCD,gDAkCC"}
1
+ {"version":3,"file":"ModalDialogHandler.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/ModalDialogHandler.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,2DAAwD;AAGxD;;;;;;;;;GASG;AACH,MAAsB,kBAAkB;IAEJ;IAAhC,YAAgC,cAA2B,IAAI,qCAAiB,EAAE;QAAlD,gBAAW,GAAX,WAAW,CAAuC;QAC9E,IAAA,mBAAM,EAAC,aAAa,EAAE,WAAW,EAAE,IAAA,sBAAS,GAAE,CAAC,CAAC;IACpD,CAAC;IAuBD;;;OAGG;IACH,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ;AAlCD,gDAkCC"}
@@ -10,6 +10,7 @@ const Selector_1 = require("./Selector");
10
10
  * @group Models
11
11
  */
12
12
  class ByCss extends Selector_1.Selector {
13
+ value;
13
14
  constructor(value) {
14
15
  super();
15
16
  this.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"ByCss.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByCss.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,KAAM,SAAQ,mBAAQ;IAC/B,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,sBAIC"}
1
+ {"version":3,"file":"ByCss.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByCss.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,KAAM,SAAQ,mBAAQ;IACH;IAA5B,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,sBAIC"}
@@ -11,6 +11,8 @@ const Selector_1 = require("./Selector");
11
11
  * @group Models
12
12
  */
13
13
  class ByCssContainingText extends Selector_1.Selector {
14
+ value;
15
+ text;
14
16
  constructor(value, text) {
15
17
  super();
16
18
  this.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"ByCssContainingText.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByCssContainingText.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;;GAOG;AACH,MAAa,mBAAoB,SAAQ,mBAAQ;IAC7C,YAA4B,KAAa,EAAkB,IAAY;QACnE,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;QAAkB,SAAI,GAAJ,IAAI,CAAQ;IAEvE,CAAC;CACJ;AAJD,kDAIC"}
1
+ {"version":3,"file":"ByCssContainingText.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByCssContainingText.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;;GAOG;AACH,MAAa,mBAAoB,SAAQ,mBAAQ;IACjB;IAA+B;IAA3D,YAA4B,KAAa,EAAkB,IAAY;QACnE,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;QAAkB,SAAI,GAAJ,IAAI,CAAQ;IAEvE,CAAC;CACJ;AAJD,kDAIC"}
@@ -11,6 +11,7 @@ const Selector_1 = require("./Selector");
11
11
  * @group Models
12
12
  */
13
13
  class ByDeepCss extends Selector_1.Selector {
14
+ value;
14
15
  constructor(value) {
15
16
  super();
16
17
  this.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"ByDeepCss.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByDeepCss.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;;GAOG;AACH,MAAa,SAAU,SAAQ,mBAAQ;IACnC,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,8BAIC"}
1
+ {"version":3,"file":"ByDeepCss.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByDeepCss.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;;GAOG;AACH,MAAa,SAAU,SAAQ,mBAAQ;IACP;IAA5B,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,8BAIC"}
@@ -10,6 +10,7 @@ const Selector_1 = require("./Selector");
10
10
  * @group Models
11
11
  */
12
12
  class ById extends Selector_1.Selector {
13
+ value;
13
14
  constructor(value) {
14
15
  super();
15
16
  this.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"ById.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ById.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,IAAK,SAAQ,mBAAQ;IAC9B,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,oBAIC"}
1
+ {"version":3,"file":"ById.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ById.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,IAAK,SAAQ,mBAAQ;IACF;IAA5B,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,oBAIC"}
@@ -10,6 +10,7 @@ const Selector_1 = require("./Selector");
10
10
  * @group Models
11
11
  */
12
12
  class ByTagName extends Selector_1.Selector {
13
+ value;
13
14
  constructor(value) {
14
15
  super();
15
16
  this.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"ByTagName.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByTagName.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,SAAU,SAAQ,mBAAQ;IACnC,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,8BAIC"}
1
+ {"version":3,"file":"ByTagName.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByTagName.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,SAAU,SAAQ,mBAAQ;IACP;IAA5B,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,8BAIC"}
@@ -10,6 +10,7 @@ const Selector_1 = require("./Selector");
10
10
  * @group Models
11
11
  */
12
12
  class ByXPath extends Selector_1.Selector {
13
+ value;
13
14
  constructor(value) {
14
15
  super();
15
16
  this.value = value;
@@ -1 +1 @@
1
- {"version":3,"file":"ByXPath.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByXPath.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,OAAQ,SAAQ,mBAAQ;IACjC,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,0BAIC"}
1
+ {"version":3,"file":"ByXPath.js","sourceRoot":"","sources":["../../../../src/screenplay/models/selectors/ByXPath.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,OAAQ,SAAQ,mBAAQ;IACL;IAA5B,YAA4B,KAAa;QACrC,KAAK,EAAE,CAAC;QADgB,UAAK,GAAL,KAAK,CAAQ;IAEzC,CAAC;CACJ;AAJD,0BAIC"}
@@ -18,13 +18,13 @@ import { PageElement } from '../models';
18
18
  * ## Retrieve an HTML attribute of a given {@apilink PageElement}
19
19
  *
20
20
  * ```ts
21
- * import { actorCalled } from '@serenity-js/core'
22
- * import { Ensure, equals } from '@serenity-js/assertions'
23
- * import { Attribute, By, PageElement } from '@serenity-js/web'
21
+ * import { actorCalled } from '@serenity-js/core'
22
+ * import { Ensure, equals } from '@serenity-js/assertions'
23
+ * import { Attribute, By, PageElement } from '@serenity-js/web'
24
24
  *
25
- * const shoppingList = () =>
26
- * PageElement.located(By.id('shopping-list'))
27
- * .describedAs('shopping list')
25
+ * const shoppingList = () =>
26
+ * PageElement.located(By.id('shopping-list'))
27
+ * .describedAs('shopping list')
28
28
  *
29
29
  * await actorCalled('Lisa')
30
30
  * .attemptsTo(
@@ -93,7 +93,7 @@ import { PageElement } from '../models';
93
93
  *
94
94
  * @group Questions
95
95
  */
96
- export declare class Attribute extends Question<Promise<string>> implements MetaQuestion<PageElement, Question<Promise<string>>> {
96
+ export declare class Attribute<Native_Element_Type> extends Question<Promise<string>> implements MetaQuestion<PageElement<Native_Element_Type>, Question<Promise<string>>> {
97
97
  private readonly name;
98
98
  private readonly element?;
99
99
  private subject;
@@ -105,7 +105,7 @@ export declare class Attribute extends Question<Promise<string>> implements Meta
105
105
  * @param name
106
106
  * The name of the attribute to retrieve
107
107
  */
108
- static called(name: Answerable<string>): Attribute;
108
+ static called<NET = any>(name: Answerable<string>): Attribute<NET>;
109
109
  protected constructor(name: Answerable<string>, element?: QuestionAdapter<PageElement> | PageElement);
110
110
  /**
111
111
  * Resolves to the value of an HTML attribute of the `pageElement`.
@@ -115,7 +115,7 @@ export declare class Attribute extends Question<Promise<string>> implements Meta
115
115
  *
116
116
  * @param pageElement
117
117
  */
118
- of(pageElement: QuestionAdapter<PageElement> | PageElement): MetaQuestionAdapter<PageElement, string>;
118
+ of(pageElement: QuestionAdapter<PageElement<Native_Element_Type>> | PageElement<Native_Element_Type>): MetaQuestionAdapter<PageElement<Native_Element_Type>, string>;
119
119
  /**
120
120
  * @inheritDoc
121
121
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Attribute.d.ts","sourceRoot":"","sources":["../../../src/screenplay/questions/Attribute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAC,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxI,OAAO,EAAiB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,qBAAa,SACT,SAAQ,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAChC,YAAW,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAiB3D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAhB7B,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS;IAIlD,SAAS,aACY,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,OAAO,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,WAAW;IAQzE;;;;;;;OAOG;IACH,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC;IAWrG;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1E;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"Attribute.d.ts","sourceRoot":"","sources":["../../../src/screenplay/questions/Attribute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAC,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxI,OAAO,EAAiB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,qBAAa,SAAS,CAAC,mBAAmB,CACtC,SAAQ,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAChC,YAAW,YAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAiBhF,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAhB7B,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;IAIlE,SAAS,aACY,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,OAAO,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,WAAW;IAQzE;;;;;;;OAOG;IACH,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAWpK;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1E;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGrB"}
@@ -20,13 +20,13 @@ const models_1 = require("../models");
20
20
  * ## Retrieve an HTML attribute of a given {@apilink PageElement}
21
21
  *
22
22
  * ```ts
23
- * import { actorCalled } from '@serenity-js/core'
24
- * import { Ensure, equals } from '@serenity-js/assertions'
25
- * import { Attribute, By, PageElement } from '@serenity-js/web'
23
+ * import { actorCalled } from '@serenity-js/core'
24
+ * import { Ensure, equals } from '@serenity-js/assertions'
25
+ * import { Attribute, By, PageElement } from '@serenity-js/web'
26
26
  *
27
- * const shoppingList = () =>
28
- * PageElement.located(By.id('shopping-list'))
29
- * .describedAs('shopping list')
27
+ * const shoppingList = () =>
28
+ * PageElement.located(By.id('shopping-list'))
29
+ * .describedAs('shopping list')
30
30
  *
31
31
  * await actorCalled('Lisa')
32
32
  * .attemptsTo(
@@ -96,6 +96,9 @@ const models_1 = require("../models");
96
96
  * @group Questions
97
97
  */
98
98
  class Attribute extends core_1.Question {
99
+ name;
100
+ element;
101
+ subject;
99
102
  /**
100
103
  * Instantiates a {@apilink Question} that uses
101
104
  * the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
@@ -134,7 +137,7 @@ class Attribute extends core_1.Question {
134
137
  async answeredBy(actor) {
135
138
  const name = await actor.answer(this.name);
136
139
  if (!this.element) {
137
- throw new core_1.LogicError((0, core_1.d) `Couldn't read attribute ${name} of an unspecified page element.`);
140
+ throw new core_1.LogicError((0, core_1.d) `Couldn't read attribute ${name} of an unspecified page element`);
138
141
  }
139
142
  const element = await actor.answer(this.element);
140
143
  return element.attribute(name);
@@ -1 +1 @@
1
- {"version":3,"file":"Attribute.js","sourceRoot":"","sources":["../../../src/screenplay/questions/Attribute.ts"],"names":[],"mappings":";;;AACA,4CAA4D;AAE5D,sCAAwC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,MAAa,SACT,SAAQ,eAAyB;IAKjC;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,IAAwB;QAClC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,YACqB,IAAwB,EACxB,OAAoD;QAErE,KAAK,EAAE,CAAC;QAHS,SAAI,GAAJ,IAAI,CAAoB;QACxB,YAAO,GAAP,OAAO,CAA6C;QAGrE,IAAI,CAAC,OAAO,GAAG,OAAO;YAClB,CAAC,CAAC,IAAA,QAAC,EAAA,GAAI,IAAK,iBAAkB,OAAQ,EAAE;YACxC,CAAC,CAAC,IAAA,QAAC,EAAA,GAAI,IAAK,YAAY,CAAA;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,EAAE,CAAC,WAAuD;QACtD,OAAO,eAAQ,CAAC,aAAa,CACzB,IAAI,SAAS,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO;YACR,CAAC,CAAC,oBAAW,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YAC3C,CAAC,CAAC,WAAW,CACpB,CACwC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAuC;QACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAE,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,iBAAU,CAAC,IAAA,QAAC,EAAA,2BAA4B,IAAK,kCAAkC,CAAC,CAAC;SAC9F;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AA5ED,8BA4EC"}
1
+ {"version":3,"file":"Attribute.js","sourceRoot":"","sources":["../../../src/screenplay/questions/Attribute.ts"],"names":[],"mappings":";;;AACA,4CAA4D;AAE5D,sCAAwC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,MAAa,SACT,SAAQ,eAAyB;IAkBZ;IACA;IAhBb,OAAO,CAAS;IAExB;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAY,IAAwB;QAC7C,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,YACqB,IAAwB,EACxB,OAAoD;QAErE,KAAK,EAAE,CAAC;QAHS,SAAI,GAAJ,IAAI,CAAoB;QACxB,YAAO,GAAP,OAAO,CAA6C;QAGrE,IAAI,CAAC,OAAO,GAAG,OAAO;YAClB,CAAC,CAAC,IAAA,QAAC,EAAA,GAAI,IAAK,iBAAkB,OAAQ,EAAE;YACxC,CAAC,CAAC,IAAA,QAAC,EAAA,GAAI,IAAK,YAAY,CAAA;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,EAAE,CAAC,WAAiG;QAChG,OAAO,eAAQ,CAAC,aAAa,CACzB,IAAI,SAAS,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO;YACR,CAAC,CAAC,oBAAW,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YAC3C,CAAC,CAAC,WAAW,CACpB,CACwC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAuC;QACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAE,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,iBAAU,CAAC,IAAA,QAAC,EAAA,2BAA4B,IAAK,iCAAiC,CAAC,CAAC;SAC7F;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AA5ED,8BA4EC"}
@@ -0,0 +1,140 @@
1
+ import type { Answerable, AnswersQuestions, MetaQuestion, MetaQuestionAdapter, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
2
+ import { Question } from '@serenity-js/core';
3
+ import { PageElement } from '../models';
4
+ /**
5
+ * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
6
+ * the value of the specified computed style property of a given {@apilink PageElement}.
7
+ *
8
+ * ## Example widget
9
+ *
10
+ * ```html
11
+ * <ul id="shopping-list" style="display: block">
12
+ * <li style="display: block">Coffee<li>
13
+ * <li style="display: none">Honey<li>
14
+ * <li style="display: block">Chocolate<li>
15
+ * </ul>
16
+ * ```
17
+ *
18
+ * ## Retrieve a computed style property of a given {@apilink PageElement}
19
+ *
20
+ * ```ts
21
+ * import { actorCalled } from '@serenity-js/core'
22
+ * import { Ensure, equals } from '@serenity-js/assertions'
23
+ * import { ComputedStyle, By, PageElement } from '@serenity-js/web'
24
+ *
25
+ * const shoppingList = () =>
26
+ * PageElement.located(By.id('shopping-list'))
27
+ * .describedAs('shopping list')
28
+ *
29
+ * await actorCalled('Lisa').attemptsTo(
30
+ * Ensure.that(
31
+ * ComputedStyle.called('display').of(shoppingList()),
32
+ * equals('block')
33
+ * ),
34
+ * )
35
+ * ```
36
+ *
37
+ * ## Using `ComputedStyle` as {@apilink QuestionAdapter}
38
+ *
39
+ * ```ts
40
+ * import { actorCalled } from '@serenity-js/core'
41
+ * import { Ensure, equals } from '@serenity-js/assertions'
42
+ * import { Attribute, By, PageElement } from '@serenity-js/web'
43
+ *
44
+ * const shoppingList = () =>
45
+ * PageElement.located(By.css('#shopping-list'))
46
+ * .describedAs('shopping list')
47
+ *
48
+ * await actorCalled('Lisa').attemptsTo(
49
+ * Ensure.that(
50
+ * ComputedStyle.called('display').of(shoppingList()).toLocaleUpperCase(),
51
+ * equals('BLOCK')
52
+ * ),
53
+ * )
54
+ * ```
55
+ *
56
+ * ## Using as filter in {@apilink PageElements|Page Element Query Language}
57
+ *
58
+ * ```ts
59
+ * import { actorCalled } from '@serenity-js/core'
60
+ * import { Ensure, includes } from '@serenity-js/assertions'
61
+ * import { Attribute, By, PageElements } from '@serenity-js/web'
62
+ *
63
+ * class ShoppingList {
64
+ * static items = () =>
65
+ * PageElements.located(By.css('#shopping-list li'))
66
+ * .describedAs('items')
67
+ *
68
+ * static outstandingItems = () =>
69
+ * ShoppingList.items()
70
+ * .where(
71
+ * ComputedStyle.called('display'),
72
+ * equals('block')
73
+ * )
74
+ * }
75
+ *
76
+ * await actorCalled('Lisa')
77
+ * .whoCan(BrowseTheWebWithWebdriverIO.using(browser))
78
+ * .attemptsTo(
79
+ * Ensure.that(
80
+ * Text.ofAll(ShoppingList.outstandingItems()),
81
+ * equals([ 'Honey', 'Chocolate' ])
82
+ * ),
83
+ * )
84
+ * ```
85
+ *
86
+ * ## Learn more
87
+ * - {@apilink BrowseTheWeb}
88
+ * - {@apilink MetaQuestion}
89
+ * - {@apilink QuestionAdapter}
90
+ * - {@apilink Question}
91
+ *
92
+ * @group Questions
93
+ */
94
+ export declare class ComputedStyle<Native_Element_Type> extends Question<Promise<string>> implements MetaQuestion<PageElement<Native_Element_Type>, Question<Promise<string>>> {
95
+ private readonly name;
96
+ private readonly element?;
97
+ private readonly pseudoElement?;
98
+ private subject;
99
+ /**
100
+ * Instantiates a {@apilink Question} that uses
101
+ * the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
102
+ * the value of the specified computed style property of a given {@apilink PageElement}.
103
+ *
104
+ * @param name
105
+ * The name of the computed style property to retrieve
106
+ */
107
+ static called<NET = any>(name: Answerable<string>): ComputedStyle<NET>;
108
+ protected constructor(name: Answerable<string>, element?: QuestionAdapter<PageElement<Native_Element_Type>> | PageElement<Native_Element_Type>, pseudoElement?: Answerable<string>);
109
+ /**
110
+ * Instantiates a {@apilink Question} that uses
111
+ * the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
112
+ * the value of the specified computed style property of the specified pseudo-element of a given {@apilink PageElement}.
113
+ *
114
+ * @param pseudoElement
115
+ * The pseudo-element to retrieve the computed style property from, such as `::before` or `::after`
116
+ */
117
+ ofPseudoElement(pseudoElement: Answerable<string>): MetaQuestionAdapter<PageElement<Native_Element_Type>, string>;
118
+ /**
119
+ * Resolves to the value of a computed style property of the `pageElement`.
120
+ *
121
+ * #### Learn more
122
+ * - {@apilink MetaQuestion}
123
+ *
124
+ * @param pageElement
125
+ */
126
+ of(pageElement: QuestionAdapter<PageElement<Native_Element_Type>> | PageElement<Native_Element_Type>): MetaQuestionAdapter<PageElement<Native_Element_Type>, string>;
127
+ /**
128
+ * @inheritDoc
129
+ */
130
+ answeredBy(actor: AnswersQuestions & UsesAbilities): Promise<string>;
131
+ /**
132
+ * @inheritDoc
133
+ */
134
+ describedAs(subject: string): this;
135
+ /**
136
+ * @inheritDoc
137
+ */
138
+ toString(): string;
139
+ }
140
+ //# sourceMappingURL=ComputedStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComputedStyle.d.ts","sourceRoot":"","sources":["../../../src/screenplay/questions/ComputedStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,aAAa,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAiB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AACH,qBAAa,aAAa,CAAC,mBAAmB,CAC1C,SAAQ,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAChC,YAAW,YAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAiBhF,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAjBnC,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;IAItE,SAAS,aACY,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,OAAO,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC,EAC9F,aAAa,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC;IAWvD;;;;;;;OAOG;IACH,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAUjH;;;;;;;OAOG;IACH,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAYpK;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAe1E;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComputedStyle = void 0;
4
+ const core_1 = require("@serenity-js/core");
5
+ const abilities_1 = require("../abilities");
6
+ const models_1 = require("../models");
7
+ /**
8
+ * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
9
+ * the value of the specified computed style property of a given {@apilink PageElement}.
10
+ *
11
+ * ## Example widget
12
+ *
13
+ * ```html
14
+ * <ul id="shopping-list" style="display: block">
15
+ * <li style="display: block">Coffee<li>
16
+ * <li style="display: none">Honey<li>
17
+ * <li style="display: block">Chocolate<li>
18
+ * </ul>
19
+ * ```
20
+ *
21
+ * ## Retrieve a computed style property of a given {@apilink PageElement}
22
+ *
23
+ * ```ts
24
+ * import { actorCalled } from '@serenity-js/core'
25
+ * import { Ensure, equals } from '@serenity-js/assertions'
26
+ * import { ComputedStyle, By, PageElement } from '@serenity-js/web'
27
+ *
28
+ * const shoppingList = () =>
29
+ * PageElement.located(By.id('shopping-list'))
30
+ * .describedAs('shopping list')
31
+ *
32
+ * await actorCalled('Lisa').attemptsTo(
33
+ * Ensure.that(
34
+ * ComputedStyle.called('display').of(shoppingList()),
35
+ * equals('block')
36
+ * ),
37
+ * )
38
+ * ```
39
+ *
40
+ * ## Using `ComputedStyle` as {@apilink QuestionAdapter}
41
+ *
42
+ * ```ts
43
+ * import { actorCalled } from '@serenity-js/core'
44
+ * import { Ensure, equals } from '@serenity-js/assertions'
45
+ * import { Attribute, By, PageElement } from '@serenity-js/web'
46
+ *
47
+ * const shoppingList = () =>
48
+ * PageElement.located(By.css('#shopping-list'))
49
+ * .describedAs('shopping list')
50
+ *
51
+ * await actorCalled('Lisa').attemptsTo(
52
+ * Ensure.that(
53
+ * ComputedStyle.called('display').of(shoppingList()).toLocaleUpperCase(),
54
+ * equals('BLOCK')
55
+ * ),
56
+ * )
57
+ * ```
58
+ *
59
+ * ## Using as filter in {@apilink PageElements|Page Element Query Language}
60
+ *
61
+ * ```ts
62
+ * import { actorCalled } from '@serenity-js/core'
63
+ * import { Ensure, includes } from '@serenity-js/assertions'
64
+ * import { Attribute, By, PageElements } from '@serenity-js/web'
65
+ *
66
+ * class ShoppingList {
67
+ * static items = () =>
68
+ * PageElements.located(By.css('#shopping-list li'))
69
+ * .describedAs('items')
70
+ *
71
+ * static outstandingItems = () =>
72
+ * ShoppingList.items()
73
+ * .where(
74
+ * ComputedStyle.called('display'),
75
+ * equals('block')
76
+ * )
77
+ * }
78
+ *
79
+ * await actorCalled('Lisa')
80
+ * .whoCan(BrowseTheWebWithWebdriverIO.using(browser))
81
+ * .attemptsTo(
82
+ * Ensure.that(
83
+ * Text.ofAll(ShoppingList.outstandingItems()),
84
+ * equals([ 'Honey', 'Chocolate' ])
85
+ * ),
86
+ * )
87
+ * ```
88
+ *
89
+ * ## Learn more
90
+ * - {@apilink BrowseTheWeb}
91
+ * - {@apilink MetaQuestion}
92
+ * - {@apilink QuestionAdapter}
93
+ * - {@apilink Question}
94
+ *
95
+ * @group Questions
96
+ */
97
+ class ComputedStyle extends core_1.Question {
98
+ name;
99
+ element;
100
+ pseudoElement;
101
+ subject;
102
+ /**
103
+ * Instantiates a {@apilink Question} that uses
104
+ * the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
105
+ * the value of the specified computed style property of a given {@apilink PageElement}.
106
+ *
107
+ * @param name
108
+ * The name of the computed style property to retrieve
109
+ */
110
+ static called(name) {
111
+ return new ComputedStyle(name);
112
+ }
113
+ constructor(name, element, pseudoElement) {
114
+ super();
115
+ this.name = name;
116
+ this.element = element;
117
+ this.pseudoElement = pseudoElement;
118
+ this.subject = [
119
+ (0, core_1.d) `computed style property ${name}`,
120
+ pseudoElement && (0, core_1.d) `of pseudo-element ${pseudoElement}`,
121
+ element && (0, core_1.d) `of ${element}`,
122
+ ].filter(Boolean).join(' ');
123
+ }
124
+ /**
125
+ * Instantiates a {@apilink Question} that uses
126
+ * the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
127
+ * the value of the specified computed style property of the specified pseudo-element of a given {@apilink PageElement}.
128
+ *
129
+ * @param pseudoElement
130
+ * The pseudo-element to retrieve the computed style property from, such as `::before` or `::after`
131
+ */
132
+ ofPseudoElement(pseudoElement) {
133
+ return core_1.Question.createAdapter(new ComputedStyle(this.name, this.element, pseudoElement));
134
+ }
135
+ /**
136
+ * Resolves to the value of a computed style property of the `pageElement`.
137
+ *
138
+ * #### Learn more
139
+ * - {@apilink MetaQuestion}
140
+ *
141
+ * @param pageElement
142
+ */
143
+ of(pageElement) {
144
+ return core_1.Question.createAdapter(new ComputedStyle(this.name, this.element
145
+ ? models_1.PageElement.of(this.element, pageElement)
146
+ : pageElement, this.pseudoElement));
147
+ }
148
+ /**
149
+ * @inheritDoc
150
+ */
151
+ async answeredBy(actor) {
152
+ const name = await actor.answer(this.name);
153
+ if (!this.element) {
154
+ throw new core_1.LogicError((0, core_1.d) `Couldn't read computed style property ${name} of an unspecified page element`);
155
+ }
156
+ const element = await actor.answer(this.element);
157
+ const pseudoElement = await actor.answer(this.pseudoElement);
158
+ const page = await abilities_1.BrowseTheWeb.as(actor).currentPage();
159
+ return page.executeScript('return window.getComputedStyle(arguments[0], arguments[1]).getPropertyValue(arguments[2])', element, pseudoElement, name);
160
+ }
161
+ /**
162
+ * @inheritDoc
163
+ */
164
+ describedAs(subject) {
165
+ this.subject = subject;
166
+ return this;
167
+ }
168
+ /**
169
+ * @inheritDoc
170
+ */
171
+ toString() {
172
+ return this.subject;
173
+ }
174
+ }
175
+ exports.ComputedStyle = ComputedStyle;
176
+ //# sourceMappingURL=ComputedStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComputedStyle.js","sourceRoot":"","sources":["../../../src/screenplay/questions/ComputedStyle.ts"],"names":[],"mappings":";;;AAQA,4CAA4D;AAE5D,4CAA4C;AAC5C,sCAAwC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AACH,MAAa,aACT,SAAQ,eAAyB;IAkBZ;IACA;IACA;IAjBb,OAAO,CAAS;IAExB;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAY,IAAwB;QAC7C,OAAO,IAAI,aAAa,CAAM,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,YACqB,IAAwB,EACxB,OAA8F,EAC9F,aAAkC;QAEnD,KAAK,EAAE,CAAC;QAJS,SAAI,GAAJ,IAAI,CAAoB;QACxB,YAAO,GAAP,OAAO,CAAuF;QAC9F,kBAAa,GAAb,aAAa,CAAqB;QAInD,IAAI,CAAC,OAAO,GAAG;YACX,IAAA,QAAC,EAAA,2BAA4B,IAAK,EAAE;YACpC,aAAa,IAAI,IAAA,QAAC,EAAA,qBAAsB,aAAc,EAAE;YACxD,OAAO,IAAI,IAAA,QAAC,EAAA,MAAO,OAAQ,EAAE;SAChC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,aAAiC;QAC7C,OAAO,eAAQ,CAAC,aAAa,CACzB,IAAI,aAAa,CACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,aAAa,CAChB,CAC6D,CAAC;IACvE,CAAC;IAED;;;;;;;OAOG;IACH,EAAE,CAAC,WAAiG;QAChG,OAAO,eAAQ,CAAC,aAAa,CACzB,IAAI,aAAa,CACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO;YACR,CAAC,CAAC,oBAAW,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YAC3C,CAAC,CAAC,WAAW,EACjB,IAAI,CAAC,aAAa,CACrB,CAC6D,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAuC;QACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAE,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,iBAAU,CAAC,IAAA,QAAC,EAAA,yCAA0C,IAAK,iCAAiC,CAAC,CAAC;SAC3G;QAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,MAAM,wBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAExD,OAAO,IAAI,CAAC,aAAa,CAAC,2FAA2F,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACzJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAtGD,sCAsGC"}