@serenity-js/web 3.0.0-rc.8 → 3.0.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 (413) hide show
  1. package/CHANGELOG.md +336 -73
  2. package/README.md +8 -12
  3. package/lib/errors/BrowserWindowClosedError.d.ts +15 -0
  4. package/lib/errors/BrowserWindowClosedError.d.ts.map +1 -0
  5. package/lib/errors/BrowserWindowClosedError.js +21 -0
  6. package/lib/errors/BrowserWindowClosedError.js.map +1 -0
  7. package/lib/errors/CookieMissingError.d.ts +11 -0
  8. package/lib/errors/CookieMissingError.d.ts.map +1 -0
  9. package/lib/errors/CookieMissingError.js +10 -0
  10. package/lib/errors/CookieMissingError.js.map +1 -1
  11. package/lib/errors/ModalDialogObstructsScreenshotError.d.ts +15 -0
  12. package/lib/errors/ModalDialogObstructsScreenshotError.d.ts.map +1 -0
  13. package/lib/errors/ModalDialogObstructsScreenshotError.js +21 -0
  14. package/lib/errors/ModalDialogObstructsScreenshotError.js.map +1 -0
  15. package/lib/errors/index.d.ts +3 -0
  16. package/lib/errors/index.d.ts.map +1 -0
  17. package/lib/errors/index.js +7 -1
  18. package/lib/errors/index.js.map +1 -1
  19. package/lib/expectations/index.d.ts +1 -1
  20. package/lib/expectations/index.d.ts.map +1 -0
  21. package/lib/expectations/index.js +5 -2
  22. package/lib/expectations/index.js.map +1 -1
  23. package/lib/expectations/isActive.d.ts +14 -8
  24. package/lib/expectations/isActive.d.ts.map +1 -0
  25. package/lib/expectations/isActive.js +17 -11
  26. package/lib/expectations/isActive.js.map +1 -1
  27. package/lib/expectations/isClickable.d.ts +14 -13
  28. package/lib/expectations/isClickable.d.ts.map +1 -0
  29. package/lib/expectations/isClickable.js +15 -17
  30. package/lib/expectations/isClickable.js.map +1 -1
  31. package/lib/expectations/isEnabled.d.ts +14 -7
  32. package/lib/expectations/isEnabled.d.ts.map +1 -0
  33. package/lib/expectations/isEnabled.js +17 -9
  34. package/lib/expectations/isEnabled.js.map +1 -1
  35. package/lib/expectations/isSelected.d.ts +14 -7
  36. package/lib/expectations/isSelected.d.ts.map +1 -0
  37. package/lib/expectations/isSelected.js +15 -9
  38. package/lib/expectations/isSelected.js.map +1 -1
  39. package/lib/expectations/isVisible.d.ts +14 -7
  40. package/lib/expectations/isVisible.d.ts.map +1 -0
  41. package/lib/expectations/isVisible.js +17 -9
  42. package/lib/expectations/isVisible.js.map +1 -1
  43. package/lib/index.d.ts +1 -1
  44. package/lib/index.d.ts.map +1 -0
  45. package/lib/index.js +5 -2
  46. package/lib/index.js.map +1 -1
  47. package/lib/screenplay/abilities/BrowseTheWeb.d.ts +88 -45
  48. package/lib/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -0
  49. package/lib/screenplay/abilities/BrowseTheWeb.js +89 -19
  50. package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
  51. package/lib/screenplay/abilities/index.d.ts +1 -1
  52. package/lib/screenplay/abilities/index.d.ts.map +1 -0
  53. package/lib/screenplay/abilities/index.js +5 -2
  54. package/lib/screenplay/abilities/index.js.map +1 -1
  55. package/lib/screenplay/index.d.ts +1 -0
  56. package/lib/screenplay/index.d.ts.map +1 -0
  57. package/lib/screenplay/index.js +5 -1
  58. package/lib/screenplay/index.js.map +1 -1
  59. package/lib/screenplay/interactions/Clear.d.ts +50 -55
  60. package/lib/screenplay/interactions/Clear.d.ts.map +1 -0
  61. package/lib/screenplay/interactions/Clear.js +70 -63
  62. package/lib/screenplay/interactions/Clear.js.map +1 -1
  63. package/lib/screenplay/interactions/Click.d.ts +41 -50
  64. package/lib/screenplay/interactions/Click.d.ts.map +1 -0
  65. package/lib/screenplay/interactions/Click.js +45 -55
  66. package/lib/screenplay/interactions/Click.js.map +1 -1
  67. package/lib/screenplay/interactions/DoubleClick.d.ts +64 -67
  68. package/lib/screenplay/interactions/DoubleClick.d.ts.map +1 -0
  69. package/lib/screenplay/interactions/DoubleClick.js +68 -72
  70. package/lib/screenplay/interactions/DoubleClick.js.map +1 -1
  71. package/lib/screenplay/interactions/Enter.d.ts +42 -51
  72. package/lib/screenplay/interactions/Enter.d.ts.map +1 -0
  73. package/lib/screenplay/interactions/Enter.js +42 -52
  74. package/lib/screenplay/interactions/Enter.js.map +1 -1
  75. package/lib/screenplay/interactions/ExecuteScript.d.ts +144 -148
  76. package/lib/screenplay/interactions/ExecuteScript.d.ts.map +1 -0
  77. package/lib/screenplay/interactions/ExecuteScript.js +163 -185
  78. package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
  79. package/lib/screenplay/interactions/Hover.d.ts +40 -50
  80. package/lib/screenplay/interactions/Hover.d.ts.map +1 -0
  81. package/lib/screenplay/interactions/Hover.js +44 -55
  82. package/lib/screenplay/interactions/Hover.js.map +1 -1
  83. package/lib/screenplay/interactions/Navigate.d.ts +106 -113
  84. package/lib/screenplay/interactions/Navigate.d.ts.map +1 -0
  85. package/lib/screenplay/interactions/Navigate.js +124 -146
  86. package/lib/screenplay/interactions/Navigate.js.map +1 -1
  87. package/lib/screenplay/interactions/PageElementInteraction.d.ts +12 -28
  88. package/lib/screenplay/interactions/PageElementInteraction.d.ts.map +1 -0
  89. package/lib/screenplay/interactions/PageElementInteraction.js +12 -33
  90. package/lib/screenplay/interactions/PageElementInteraction.js.map +1 -1
  91. package/lib/screenplay/interactions/Press.d.ts +61 -55
  92. package/lib/screenplay/interactions/Press.d.ts.map +1 -0
  93. package/lib/screenplay/interactions/Press.js +83 -72
  94. package/lib/screenplay/interactions/Press.js.map +1 -1
  95. package/lib/screenplay/interactions/RightClick.d.ts +59 -65
  96. package/lib/screenplay/interactions/RightClick.d.ts.map +1 -0
  97. package/lib/screenplay/interactions/RightClick.js +63 -70
  98. package/lib/screenplay/interactions/RightClick.js.map +1 -1
  99. package/lib/screenplay/interactions/Scroll.d.ts +46 -64
  100. package/lib/screenplay/interactions/Scroll.d.ts.map +1 -0
  101. package/lib/screenplay/interactions/Scroll.js +49 -71
  102. package/lib/screenplay/interactions/Scroll.js.map +1 -1
  103. package/lib/screenplay/interactions/Select.d.ts +217 -193
  104. package/lib/screenplay/interactions/Select.d.ts.map +1 -0
  105. package/lib/screenplay/interactions/Select.js +218 -245
  106. package/lib/screenplay/interactions/Select.js.map +1 -1
  107. package/lib/screenplay/interactions/Switch.d.ts +105 -128
  108. package/lib/screenplay/interactions/Switch.d.ts.map +1 -0
  109. package/lib/screenplay/interactions/Switch.js +121 -172
  110. package/lib/screenplay/interactions/Switch.js.map +1 -1
  111. package/lib/screenplay/interactions/TakeScreenshot.d.ts +28 -50
  112. package/lib/screenplay/interactions/TakeScreenshot.d.ts.map +1 -0
  113. package/lib/screenplay/interactions/TakeScreenshot.js +32 -57
  114. package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
  115. package/lib/screenplay/interactions/index.d.ts +2 -3
  116. package/lib/screenplay/interactions/index.d.ts.map +1 -0
  117. package/lib/screenplay/interactions/index.js +6 -4
  118. package/lib/screenplay/interactions/index.js.map +1 -1
  119. package/lib/screenplay/models/BrowserCapabilities.d.ts +24 -0
  120. package/lib/screenplay/models/BrowserCapabilities.d.ts.map +1 -0
  121. package/lib/screenplay/models/BrowserCapabilities.js.map +1 -0
  122. package/lib/screenplay/models/BrowsingSession.d.ts +69 -0
  123. package/lib/screenplay/models/BrowsingSession.d.ts.map +1 -0
  124. package/lib/screenplay/models/BrowsingSession.js +101 -0
  125. package/lib/screenplay/models/BrowsingSession.js.map +1 -0
  126. package/lib/screenplay/models/Cookie.d.ts +104 -64
  127. package/lib/screenplay/models/Cookie.d.ts.map +1 -0
  128. package/lib/screenplay/models/Cookie.js +110 -59
  129. package/lib/screenplay/models/Cookie.js.map +1 -1
  130. package/lib/screenplay/models/CookieData.d.ts +20 -58
  131. package/lib/screenplay/models/CookieData.d.ts.map +1 -0
  132. package/lib/{input → screenplay/models}/Key.d.ts +13 -9
  133. package/lib/screenplay/models/Key.d.ts.map +1 -0
  134. package/lib/{input → screenplay/models}/Key.js +16 -13
  135. package/lib/screenplay/models/Key.js.map +1 -0
  136. package/lib/screenplay/models/Locator.d.ts +29 -8
  137. package/lib/screenplay/models/Locator.d.ts.map +1 -0
  138. package/lib/screenplay/models/Locator.js +53 -7
  139. package/lib/screenplay/models/Locator.js.map +1 -1
  140. package/lib/screenplay/models/Page.d.ts +398 -36
  141. package/lib/screenplay/models/Page.d.ts.map +1 -0
  142. package/lib/screenplay/models/Page.js +209 -4
  143. package/lib/screenplay/models/Page.js.map +1 -1
  144. package/lib/screenplay/models/PageElement.d.ts +77 -5
  145. package/lib/screenplay/models/PageElement.d.ts.map +1 -0
  146. package/lib/screenplay/models/PageElement.js +29 -7
  147. package/lib/screenplay/models/PageElement.js.map +1 -1
  148. package/lib/screenplay/models/PageElements.d.ts +16 -3
  149. package/lib/screenplay/models/PageElements.d.ts.map +1 -0
  150. package/lib/screenplay/models/PageElements.js +21 -8
  151. package/lib/screenplay/models/PageElements.js.map +1 -1
  152. package/lib/screenplay/models/RootLocator.d.ts +25 -0
  153. package/lib/screenplay/models/RootLocator.d.ts.map +1 -0
  154. package/lib/screenplay/models/RootLocator.js +52 -0
  155. package/lib/screenplay/models/RootLocator.js.map +1 -0
  156. package/lib/screenplay/models/SelectOption.d.ts +25 -0
  157. package/lib/screenplay/models/SelectOption.d.ts.map +1 -0
  158. package/lib/screenplay/models/SelectOption.js +37 -0
  159. package/lib/screenplay/models/SelectOption.js.map +1 -0
  160. package/lib/screenplay/models/Switchable.d.ts +23 -0
  161. package/lib/screenplay/models/Switchable.d.ts.map +1 -0
  162. package/lib/screenplay/{interactions/WaitBuilder.js → models/Switchable.js} +1 -1
  163. package/lib/screenplay/models/Switchable.js.map +1 -0
  164. package/lib/screenplay/models/SwitchableOrigin.d.ts +18 -0
  165. package/lib/screenplay/models/SwitchableOrigin.d.ts.map +1 -0
  166. package/lib/screenplay/{interactions/EnterBuilder.js → models/SwitchableOrigin.js} +1 -1
  167. package/lib/screenplay/models/SwitchableOrigin.js.map +1 -0
  168. package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts +15 -0
  169. package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts.map +1 -0
  170. package/lib/screenplay/models/dialogs/AbsentModalDialog.js +24 -0
  171. package/lib/screenplay/models/dialogs/AbsentModalDialog.js.map +1 -0
  172. package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts +17 -0
  173. package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts.map +1 -0
  174. package/lib/screenplay/models/dialogs/AcceptedModalDialog.js +29 -0
  175. package/lib/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -0
  176. package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts +17 -0
  177. package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts.map +1 -0
  178. package/lib/screenplay/models/dialogs/DismissedModalDialog.js +29 -0
  179. package/lib/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -0
  180. package/lib/screenplay/models/dialogs/ModalDialog.d.ts +168 -0
  181. package/lib/screenplay/models/dialogs/ModalDialog.d.ts.map +1 -0
  182. package/lib/screenplay/models/dialogs/ModalDialog.js +174 -0
  183. package/lib/screenplay/models/dialogs/ModalDialog.js.map +1 -0
  184. package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts +38 -0
  185. package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts.map +1 -0
  186. package/lib/screenplay/models/dialogs/ModalDialogHandler.js +30 -0
  187. package/lib/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -0
  188. package/lib/screenplay/models/dialogs/index.d.ts +6 -0
  189. package/lib/screenplay/models/dialogs/index.d.ts.map +1 -0
  190. package/lib/screenplay/models/dialogs/index.js +22 -0
  191. package/lib/screenplay/models/dialogs/index.js.map +1 -0
  192. package/lib/screenplay/models/index.d.ts +9 -1
  193. package/lib/screenplay/models/index.d.ts.map +1 -0
  194. package/lib/screenplay/models/index.js +13 -2
  195. package/lib/screenplay/models/index.js.map +1 -1
  196. package/lib/screenplay/models/selectors/By.d.ts +38 -0
  197. package/lib/screenplay/models/selectors/By.d.ts.map +1 -0
  198. package/lib/screenplay/models/selectors/By.js +43 -0
  199. package/lib/screenplay/models/selectors/By.js.map +1 -1
  200. package/lib/screenplay/models/selectors/ByCss.d.ts +8 -0
  201. package/lib/screenplay/models/selectors/ByCss.d.ts.map +1 -0
  202. package/lib/screenplay/models/selectors/ByCss.js +7 -0
  203. package/lib/screenplay/models/selectors/ByCss.js.map +1 -1
  204. package/lib/screenplay/models/selectors/ByCssContainingText.d.ts +9 -0
  205. package/lib/screenplay/models/selectors/ByCssContainingText.d.ts.map +1 -0
  206. package/lib/screenplay/models/selectors/ByCssContainingText.js +8 -0
  207. package/lib/screenplay/models/selectors/ByCssContainingText.js.map +1 -1
  208. package/lib/screenplay/models/selectors/ByDeepCss.d.ts +14 -0
  209. package/lib/screenplay/models/selectors/ByDeepCss.d.ts.map +1 -0
  210. package/lib/screenplay/models/selectors/ByDeepCss.js +20 -0
  211. package/lib/screenplay/models/selectors/ByDeepCss.js.map +1 -0
  212. package/lib/screenplay/models/selectors/ById.d.ts +8 -0
  213. package/lib/screenplay/models/selectors/ById.d.ts.map +1 -0
  214. package/lib/screenplay/models/selectors/ById.js +7 -0
  215. package/lib/screenplay/models/selectors/ById.js.map +1 -1
  216. package/lib/screenplay/models/selectors/ByTagName.d.ts +8 -0
  217. package/lib/screenplay/models/selectors/ByTagName.d.ts.map +1 -0
  218. package/lib/screenplay/models/selectors/ByTagName.js +7 -0
  219. package/lib/screenplay/models/selectors/ByTagName.js.map +1 -1
  220. package/lib/screenplay/models/selectors/ByXPath.d.ts +8 -0
  221. package/lib/screenplay/models/selectors/ByXPath.d.ts.map +1 -0
  222. package/lib/screenplay/models/selectors/ByXPath.js +7 -0
  223. package/lib/screenplay/models/selectors/ByXPath.js.map +1 -1
  224. package/lib/screenplay/models/selectors/Selector.d.ts +6 -0
  225. package/lib/screenplay/models/selectors/Selector.d.ts.map +1 -0
  226. package/lib/screenplay/models/selectors/Selector.js +6 -1
  227. package/lib/screenplay/models/selectors/Selector.js.map +1 -1
  228. package/lib/screenplay/models/selectors/index.d.ts +2 -0
  229. package/lib/screenplay/models/selectors/index.d.ts.map +1 -0
  230. package/lib/screenplay/models/selectors/index.js +6 -1
  231. package/lib/screenplay/models/selectors/index.js.map +1 -1
  232. package/lib/screenplay/questions/Attribute.d.ts +115 -67
  233. package/lib/screenplay/questions/Attribute.d.ts.map +1 -0
  234. package/lib/screenplay/questions/Attribute.js +128 -74
  235. package/lib/screenplay/questions/Attribute.js.map +1 -1
  236. package/lib/screenplay/questions/CssClasses.d.ts +124 -79
  237. package/lib/screenplay/questions/CssClasses.d.ts.map +1 -0
  238. package/lib/screenplay/questions/CssClasses.js +132 -83
  239. package/lib/screenplay/questions/CssClasses.js.map +1 -1
  240. package/lib/screenplay/questions/LastScriptExecution.d.ts +42 -6
  241. package/lib/screenplay/questions/LastScriptExecution.d.ts.map +1 -0
  242. package/lib/screenplay/questions/LastScriptExecution.js +45 -7
  243. package/lib/screenplay/questions/LastScriptExecution.js.map +1 -1
  244. package/lib/screenplay/questions/Selected.d.ts +202 -171
  245. package/lib/screenplay/questions/Selected.d.ts.map +1 -0
  246. package/lib/screenplay/questions/Selected.js +225 -186
  247. package/lib/screenplay/questions/Selected.js.map +1 -1
  248. package/lib/screenplay/questions/Text.d.ts +101 -82
  249. package/lib/screenplay/questions/Text.d.ts.map +1 -0
  250. package/lib/screenplay/questions/Text.js +143 -92
  251. package/lib/screenplay/questions/Text.js.map +1 -1
  252. package/lib/screenplay/questions/Value.d.ts +77 -44
  253. package/lib/screenplay/questions/Value.d.ts.map +1 -0
  254. package/lib/screenplay/questions/Value.js +84 -47
  255. package/lib/screenplay/questions/Value.js.map +1 -1
  256. package/lib/screenplay/questions/index.d.ts +1 -0
  257. package/lib/screenplay/questions/index.d.ts.map +1 -0
  258. package/lib/screenplay/questions/index.js +5 -1
  259. package/lib/screenplay/questions/index.js.map +1 -1
  260. package/lib/scripts/index.d.ts +2 -0
  261. package/lib/scripts/index.d.ts.map +1 -0
  262. package/lib/{input → scripts}/index.js +6 -2
  263. package/lib/scripts/index.js.map +1 -0
  264. package/lib/scripts/isVisible.d.ts +2 -0
  265. package/lib/scripts/isVisible.d.ts.map +1 -0
  266. package/lib/scripts/isVisible.js +96 -0
  267. package/lib/scripts/isVisible.js.map +1 -0
  268. package/lib/stage/crew/index.d.ts +1 -0
  269. package/lib/stage/crew/index.d.ts.map +1 -0
  270. package/lib/stage/crew/index.js +5 -1
  271. package/lib/stage/crew/index.js.map +1 -1
  272. package/lib/stage/crew/photographer/Photographer.d.ts +126 -39
  273. package/lib/stage/crew/photographer/Photographer.d.ts.map +1 -0
  274. package/lib/stage/crew/photographer/Photographer.js +161 -42
  275. package/lib/stage/crew/photographer/Photographer.js.map +1 -1
  276. package/lib/stage/crew/photographer/index.d.ts +1 -0
  277. package/lib/stage/crew/photographer/index.d.ts.map +1 -0
  278. package/lib/stage/crew/photographer/index.js +5 -1
  279. package/lib/stage/crew/photographer/index.js.map +1 -1
  280. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +13 -12
  281. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts.map +1 -0
  282. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +22 -33
  283. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -1
  284. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +8 -8
  285. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts.map +1 -0
  286. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +7 -8
  287. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +1 -1
  288. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +8 -7
  289. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts.map +1 -0
  290. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +7 -7
  291. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +8 -8
  292. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts.map +1 -0
  293. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +7 -8
  294. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +1 -1
  295. package/lib/stage/crew/photographer/strategies/index.d.ts +1 -0
  296. package/lib/stage/crew/photographer/strategies/index.d.ts.map +1 -0
  297. package/lib/stage/crew/photographer/strategies/index.js +5 -1
  298. package/lib/stage/crew/photographer/strategies/index.js.map +1 -1
  299. package/lib/stage/index.d.ts +1 -0
  300. package/lib/stage/index.d.ts.map +1 -0
  301. package/lib/stage/index.js +5 -1
  302. package/lib/stage/index.js.map +1 -1
  303. package/package.json +20 -43
  304. package/src/errors/BrowserWindowClosedError.ts +17 -0
  305. package/src/errors/CookieMissingError.ts +10 -0
  306. package/src/errors/ModalDialogObstructsScreenshotError.ts +17 -0
  307. package/src/errors/index.ts +2 -0
  308. package/src/expectations/index.ts +0 -1
  309. package/src/expectations/isActive.ts +23 -12
  310. package/src/expectations/isClickable.ts +22 -21
  311. package/src/expectations/isEnabled.ts +23 -9
  312. package/src/expectations/isSelected.ts +20 -10
  313. package/src/expectations/isVisible.ts +23 -9
  314. package/src/index.ts +0 -1
  315. package/src/screenplay/abilities/BrowseTheWeb.ts +95 -87
  316. package/src/screenplay/abilities/index.ts +0 -1
  317. package/src/screenplay/interactions/Clear.ts +75 -63
  318. package/src/screenplay/interactions/Click.ts +43 -54
  319. package/src/screenplay/interactions/DoubleClick.ts +66 -71
  320. package/src/screenplay/interactions/Enter.ts +41 -53
  321. package/src/screenplay/interactions/ExecuteScript.ts +207 -220
  322. package/src/screenplay/interactions/Hover.ts +42 -54
  323. package/src/screenplay/interactions/Navigate.ts +129 -156
  324. package/src/screenplay/interactions/PageElementInteraction.ts +14 -34
  325. package/src/screenplay/interactions/Press.ts +78 -69
  326. package/src/screenplay/interactions/RightClick.ts +61 -69
  327. package/src/screenplay/interactions/Scroll.ts +48 -71
  328. package/src/screenplay/interactions/Select.ts +229 -269
  329. package/src/screenplay/interactions/Switch.ts +123 -179
  330. package/src/screenplay/interactions/TakeScreenshot.ts +31 -57
  331. package/src/screenplay/interactions/index.ts +1 -3
  332. package/src/screenplay/models/BrowserCapabilities.ts +26 -0
  333. package/src/screenplay/models/BrowsingSession.ts +115 -0
  334. package/src/screenplay/models/Cookie.ts +115 -73
  335. package/src/screenplay/models/CookieData.ts +20 -58
  336. package/src/{input → screenplay/models}/Key.ts +12 -9
  337. package/src/screenplay/models/Locator.ts +43 -9
  338. package/src/screenplay/models/Page.ts +438 -37
  339. package/src/screenplay/models/PageElement.ts +92 -12
  340. package/src/screenplay/models/PageElements.ts +23 -9
  341. package/src/screenplay/models/RootLocator.ts +30 -0
  342. package/src/screenplay/models/SelectOption.ts +38 -0
  343. package/src/screenplay/models/Switchable.ts +24 -0
  344. package/src/screenplay/models/SwitchableOrigin.ts +18 -0
  345. package/src/screenplay/models/dialogs/AbsentModalDialog.ts +22 -0
  346. package/src/screenplay/models/dialogs/AcceptedModalDialog.ts +27 -0
  347. package/src/screenplay/models/dialogs/DismissedModalDialog.ts +27 -0
  348. package/src/screenplay/models/dialogs/ModalDialog.ts +200 -0
  349. package/src/screenplay/models/dialogs/ModalDialogHandler.ts +50 -0
  350. package/src/screenplay/models/dialogs/index.ts +5 -0
  351. package/src/screenplay/models/index.ts +8 -1
  352. package/src/screenplay/models/selectors/By.ts +45 -0
  353. package/src/screenplay/models/selectors/ByCss.ts +7 -0
  354. package/src/screenplay/models/selectors/ByCssContainingText.ts +8 -0
  355. package/src/screenplay/models/selectors/ByDeepCss.ts +15 -0
  356. package/src/screenplay/models/selectors/ById.ts +7 -0
  357. package/src/screenplay/models/selectors/ByTagName.ts +7 -0
  358. package/src/screenplay/models/selectors/ByXPath.ts +7 -0
  359. package/src/screenplay/models/selectors/Selector.ts +6 -1
  360. package/src/screenplay/models/selectors/index.ts +1 -0
  361. package/src/screenplay/questions/Attribute.ts +137 -76
  362. package/src/screenplay/questions/CssClasses.ts +135 -83
  363. package/src/screenplay/questions/LastScriptExecution.ts +45 -8
  364. package/src/screenplay/questions/Selected.ts +237 -191
  365. package/src/screenplay/questions/Text.ts +161 -96
  366. package/src/screenplay/questions/Value.ts +88 -48
  367. package/src/scripts/index.ts +1 -0
  368. package/src/scripts/isVisible.ts +113 -0
  369. package/src/stage/crew/photographer/Photographer.ts +142 -41
  370. package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +27 -42
  371. package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +7 -8
  372. package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +7 -7
  373. package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +7 -8
  374. package/tsconfig.build.json +14 -0
  375. package/lib/expectations/ElementExpectation.d.ts +0 -83
  376. package/lib/expectations/ElementExpectation.js +0 -102
  377. package/lib/expectations/ElementExpectation.js.map +0 -1
  378. package/lib/input/Key.js.map +0 -1
  379. package/lib/input/index.d.ts +0 -1
  380. package/lib/input/index.js.map +0 -1
  381. package/lib/screenplay/abilities/BrowserCapabilities.d.ts +0 -5
  382. package/lib/screenplay/abilities/BrowserCapabilities.js.map +0 -1
  383. package/lib/screenplay/interactions/EnterBuilder.d.ts +0 -25
  384. package/lib/screenplay/interactions/EnterBuilder.js.map +0 -1
  385. package/lib/screenplay/interactions/PressBuilder.d.ts +0 -26
  386. package/lib/screenplay/interactions/PressBuilder.js +0 -3
  387. package/lib/screenplay/interactions/PressBuilder.js.map +0 -1
  388. package/lib/screenplay/interactions/SelectBuilder.d.ts +0 -33
  389. package/lib/screenplay/interactions/SelectBuilder.js +0 -3
  390. package/lib/screenplay/interactions/SelectBuilder.js.map +0 -1
  391. package/lib/screenplay/interactions/Wait.d.ts +0 -143
  392. package/lib/screenplay/interactions/Wait.js +0 -238
  393. package/lib/screenplay/interactions/Wait.js.map +0 -1
  394. package/lib/screenplay/interactions/WaitBuilder.d.ts +0 -32
  395. package/lib/screenplay/interactions/WaitBuilder.js.map +0 -1
  396. package/lib/screenplay/models/ModalDialog.d.ts +0 -9
  397. package/lib/screenplay/models/ModalDialog.js +0 -14
  398. package/lib/screenplay/models/ModalDialog.js.map +0 -1
  399. package/lib/screenplay/questions/ElementQuestion.d.ts +0 -33
  400. package/lib/screenplay/questions/ElementQuestion.js +0 -53
  401. package/lib/screenplay/questions/ElementQuestion.js.map +0 -1
  402. package/src/expectations/ElementExpectation.ts +0 -108
  403. package/src/input/index.ts +0 -1
  404. package/src/screenplay/abilities/BrowserCapabilities.ts +0 -5
  405. package/src/screenplay/interactions/EnterBuilder.ts +0 -28
  406. package/src/screenplay/interactions/PressBuilder.ts +0 -29
  407. package/src/screenplay/interactions/SelectBuilder.ts +0 -36
  408. package/src/screenplay/interactions/Wait.ts +0 -260
  409. package/src/screenplay/interactions/WaitBuilder.ts +0 -34
  410. package/src/screenplay/models/ModalDialog.ts +0 -19
  411. package/src/screenplay/questions/ElementQuestion.ts +0 -58
  412. package/tsconfig.eslint.json +0 -10
  413. /package/lib/screenplay/{abilities → models}/BrowserCapabilities.js +0 -0
@@ -1,185 +1,216 @@
1
- import { Answerable, Question } from '@serenity-js/core';
1
+ import { Answerable, QuestionAdapter } from '@serenity-js/core';
2
2
  import { PageElement } from '../models';
3
3
  /**
4
- * @desc
5
- * Represents options and values selected in a
6
- * [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).
4
+ * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
5
+ * options and values selected in a
6
+ * [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).
7
7
  *
8
- * @see {@link Select}
8
+ * ## Learn more
9
+ * - {@apilink Select}
10
+ * - {@apilink BrowseTheWeb}
11
+ * - {@apilink QuestionAdapter}
12
+ * - {@apilink Question}
13
+ *
14
+ * @group Questions
9
15
  */
10
16
  export declare class Selected {
11
17
  /**
12
- * @desc
13
- * Represents the value of a single option selected in a
14
- * [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).
15
- *
16
- * @example <caption>Example widget</caption>
17
- * <select data-test='countries'>
18
- * <option value='UK'>United Kingdom</option>
19
- * <option value='PL'>Poland</option>
20
- * <option value='US'>United States</option>
21
- * </select>
22
- *
23
- * @example <caption>Lean Page Object</caption>
24
- * import { Target } from '@serenity-js/protractor';
25
- * import { browser, by } from 'protractor';
26
- *
27
- * class Countries {
28
- * static dropdown = Target.the('countries dropdown')
29
- * .located(by.css('[data-test="countries"]'));
30
- * }
31
- *
32
- * @example <caption>Retrieving the selected value</caption>
33
- * import { actorCalled } from '@serenity-js/core';
34
- * import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
35
- * import { Ensure, equals } from '@serenity-js/assertions';
36
- * import { protractor } from 'protractor';
37
- *
38
- * actorCalled('Nick')
39
- * .whoCan(BrowseTheWeb.using(protractor.browser))
40
- * .attemptsTo(
41
- * Select.value('UK').from(Countries.dropdown),
42
- * Ensure.that(Selected.valueOf(Countries.dropdown), equals('UK')),
43
- * );
44
- *
45
- * @param {Answerable<PageElement>} pageElement
46
- * A {@link PageElement} identifying the `<select>` element of interest
47
- *
48
- * @returns {Question<Promise<string>>}
49
- *
50
- * @see {@link Select.value}
18
+ * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
19
+ * a single [option](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
20
+ * selected in an [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).
21
+ *
22
+ * #### Example widget
23
+ *
24
+ * ```html
25
+ * <select multiple data-test='countries'>
26
+ * <option value='UK'>United Kingdom</option>
27
+ * <option value='PL'>Poland</option>
28
+ * <option value='US'>United States</option>
29
+ * </select>
30
+ * ```
31
+ *
32
+ * #### Lean Page Object describing the widget
33
+ *
34
+ * ```ts
35
+ * import { By, PageElement } from '@serenity-js/web'
36
+ *
37
+ * class Countries {
38
+ * static dropdown = () =>
39
+ * PageElement.located(By.css('[data-test="countries"]'))
40
+ * .describedAs('countries dropdown');
41
+ * }
42
+ * ```
43
+ *
44
+ * #### Retrieving the selected value
45
+ *
46
+ * ```ts
47
+ * import { actorCalled } from '@serenity-js/core'
48
+ * import { Select, Selected } from '@serenity-js/web'
49
+ * import { Ensure, equals } from '@serenity-js/assertions'
50
+ *
51
+ * await actorCalled('Nick')
52
+ * .whoCan(BrowseTheWeb.using(protractor.browser))
53
+ * .attemptsTo(
54
+ * Select.value('UK').from(Countries.dropdown),
55
+ * Ensure.that(Selected.valueOf(Countries.dropdown), equals('UK')),
56
+ * )
57
+ * ```
58
+ *
59
+ * #### Learn more
60
+ * - {@apilink Select.value}
61
+ *
62
+ * @param pageElement
63
+ * A {@apilink PageElement} identifying the `<select>` element of interest
51
64
  */
52
- static valueOf(pageElement: Answerable<PageElement>): Question<Promise<string>>;
65
+ static valueOf(pageElement: Answerable<PageElement>): QuestionAdapter<string>;
53
66
  /**
54
- * @desc
55
- * Represents values of options selected in a
56
- * [HTML `<select multiple>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
57
- *
58
- * @example <caption>Example widget</caption>
59
- * <select multiple data-test='countries'>
60
- * <option value='UK'>United Kingdom</option>
61
- * <option value='PL'>Poland</option>
62
- * <option value='US'>United States</option>
63
- * </select>
64
- *
65
- * @example <caption>Lean Page Object</caption>
66
- * import { Target } from '@serenity-js/protractor';
67
- * import { browser, by } from 'protractor';
68
- *
69
- * class Countries {
70
- * static dropdown = Target.the('countries dropdown')
71
- * .located(by.css('[data-test="countries"]'));
72
- * }
73
- *
74
- * @example <caption>Retrieving the selected value</caption>
75
- * import { actorCalled } from '@serenity-js/core';
76
- * import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
77
- * import { Ensure, equals } from '@serenity-js/assertions';
78
- * import { protractor } from 'protractor';
79
- *
80
- * actorCalled('Nick')
81
- * .whoCan(BrowseTheWeb.using(protractor.browser))
82
- * .attemptsTo(
83
- * Select.values('UK').from(Countries.dropdown),
84
- * Ensure.that(Selected.valuesOf(Countries.dropdown), equals([ 'UK' ])),
85
- * );
86
- *
87
- * @param {Answerable<PageElement>} pageElement
88
- * A {@link Target} identifying the `<select>` element of interest
89
- *
90
- * @returns {Question<Promise<string[]>>}
91
- *
92
- * @see {@link Select.values}
67
+ * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
68
+ * values of [options](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
69
+ * selected in an [HTML `<select multiple>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
70
+ *
71
+ * #### Example widget
72
+ *
73
+ * ```html
74
+ * <select multiple data-test='countries'>
75
+ * <option value='UK'>United Kingdom</option>
76
+ * <option value='PL'>Poland</option>
77
+ * <option value='US'>United States</option>
78
+ * </select>
79
+ * ```
80
+ *
81
+ * #### Lean Page Object describing the widget
82
+ *
83
+ * ```ts
84
+ * import { By, PageElement } from '@serenity-js/web'
85
+ *
86
+ * class Countries {
87
+ * static dropdown = () =>
88
+ * PageElement.located(By.css('[data-test="countries"]'))
89
+ * .describedAs('countries dropdown')
90
+ * }
91
+ * ```
92
+ *
93
+ * #### Retrieving the selected value
94
+ *
95
+ * ```ts
96
+ * import { actorCalled } from '@serenity-js/core'
97
+ * import { Select, Selected } from '@serenity-js/web'
98
+ * import { Ensure, equals } from '@serenity-js/assertions'
99
+ *
100
+ * await actorCalled('Nick')
101
+ * .whoCan(BrowseTheWeb.using(protractor.browser))
102
+ * .attemptsTo(
103
+ * Select.values('UK').from(Countries.dropdown),
104
+ * Ensure.that(Selected.valuesOf(Countries.dropdown), equals([ 'UK' ])),
105
+ * )
106
+ * ```
107
+ *
108
+ * #### Learn more
109
+ * - {@apilink Select.values}
110
+ *
111
+ * @param pageElement
112
+ * A {@apilink PageElement} identifying the `<select>` element of interest
93
113
  */
94
- static valuesOf(pageElement: Answerable<PageElement>): Question<Promise<string[]>>;
114
+ static valuesOf(pageElement: Answerable<PageElement>): QuestionAdapter<Array<string>>;
95
115
  /**
96
- * @desc
97
- * Represents a single option selected in a
98
- * [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
99
- *
100
- * @example <caption>Example widget</caption>
101
- * <select data-test='countries'>
102
- * <option value='UK'>United Kingdom</option>
103
- * <option value='PL'>Poland</option>
104
- * <option value='US'>United States</option>
105
- * </select>
106
- *
107
- * @example <caption>Lean Page Object</caption>
108
- * import { Target } from '@serenity-js/protractor';
109
- * import { browser, by } from 'protractor';
110
- *
111
- * class Countries {
112
- * static dropdown = Target.the('countries dropdown')
113
- * .located(by.css('[data-test="countries"]'));
114
- * }
115
- *
116
- * @example <caption>Retrieving the selected value</caption>
117
- * import { actorCalled } from '@serenity-js/core';
118
- * import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
119
- * import { Ensure, equals } from '@serenity-js/assertions';
120
- * import { protractor } from 'protractor';
121
- *
122
- * actorCalled('Nick')
123
- * .whoCan(BrowseTheWeb.using(protractor.browser))
124
- * .attemptsTo(
125
- * Select.option('Poland').from(Countries.dropdown),
126
- * Ensure.that(
127
- * Selected.optionIn(Countries.dropdown),
128
- * equals('Poland')
129
- * ),
130
- * );
131
- *
132
- * @param {Answerable<PageElement>} pageElement
133
- * A {@link Target} identifying the `<select>` element of interest
134
- *
135
- * @returns {Question<Promise<string>>}
136
- *
137
- * @see {@link Select.option}
116
+ * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
117
+ * a single option selected in an [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
118
+ *
119
+ * #### Example widget
120
+ *
121
+ * ```html
122
+ * <select multiple data-test='countries'>
123
+ * <option value='UK'>United Kingdom</option>
124
+ * <option value='PL'>Poland</option>
125
+ * <option value='US'>United States</option>
126
+ * </select>
127
+ * ```
128
+ *
129
+ * #### Lean Page Object describing the widget
130
+ *
131
+ * ```ts
132
+ * import { By, PageElement } from '@serenity-js/web'
133
+ *
134
+ * class Countries {
135
+ * static dropdown = () =>
136
+ * PageElement.located(By.css('[data-test="countries"]'))
137
+ * .describedAs('countries dropdown')
138
+ * }
139
+ * ```
140
+ *
141
+ * #### Retrieving the selected value
142
+ *
143
+ * ```ts
144
+ * import { actorCalled } from '@serenity-js/core'
145
+ * import { Select, Selected } from '@serenity-js/web'
146
+ * import { Ensure, equals } from '@serenity-js/assertions'
147
+ *
148
+ * await actorCalled('Nick')
149
+ * .attemptsTo(
150
+ * Select.option('Poland').from(Countries.dropdown),
151
+ * Ensure.that(
152
+ * Selected.optionIn(Countries.dropdown),
153
+ * equals('Poland')
154
+ * ),
155
+ * )
156
+ * ```
157
+ *
158
+ * #### Learn more
159
+ * - {@apilink Select.option}
160
+ *
161
+ * @param pageElement
162
+ * A {@apilink PageElement} identifying the `<select>` element of interest
138
163
  */
139
- static optionIn(pageElement: Answerable<PageElement>): Question<Promise<string>>;
164
+ static optionIn(pageElement: Answerable<PageElement>): QuestionAdapter<string>;
140
165
  /**
141
- * @desc
142
- * Represents options selected in a
143
- * [HTML `<select multiple>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
144
- *
145
- * @example <caption>Example widget</caption>
146
- * <select multiple data-test='countries'>
147
- * <option value='UK'>United Kingdom</option>
148
- * <option value='PL'>Poland</option>
149
- * <option value='US'>United States</option>
150
- * </select>
151
- *
152
- * @example <caption>Lean Page Object</caption>
153
- * import { Target } from '@serenity-js/protractor';
154
- * import { browser, by } from 'protractor';
155
- *
156
- * class Countries {
157
- * static dropdown = Target.the('countries dropdown')
158
- * .located(by.css('[data-test="countries"]'));
159
- * }
160
- *
161
- * @example <caption>Retrieving the selected value</caption>
162
- * import { actorCalled } from '@serenity-js/core';
163
- * import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
164
- * import { Ensure, equals } from '@serenity-js/assertions';
165
- * import { protractor } from 'protractor';
166
- *
167
- * actorCalled('Nick')
168
- * .whoCan(BrowseTheWeb.using(protractor.browser))
169
- * .attemptsTo(
170
- * Select.options('Poland', 'United States').from(Countries.dropdown),
171
- * Ensure.that(
172
- * Selected.optionsIn(Countries.dropdown),
173
- * equals([ 'Poland', 'United States' ])
174
- * ),
175
- * );
176
- *
177
- * @param {Answerable<PageElement>} pageElement
178
- * A {@link Target} identifying the `<select>` element of interest
179
- *
180
- * @returns {Question<Promise<string[]>>}
181
- *
182
- * @see {@link Select.options}
166
+ * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
167
+ * options selected in an [HTML `<select multiple>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
168
+ *
169
+ * #### Example widget
170
+ *
171
+ * ```html
172
+ * <select multiple data-test='countries'>
173
+ * <option value='UK'>United Kingdom</option>
174
+ * <option value='PL'>Poland</option>
175
+ * <option value='US'>United States</option>
176
+ * </select>
177
+ * ```
178
+ *
179
+ * #### Lean Page Object describing the widget
180
+ *
181
+ * ```ts
182
+ * import { By, PageElement } from '@serenity-js/web'
183
+ *
184
+ * class Countries {
185
+ * static dropdown = () =>
186
+ * PageElement.located(By.css('[data-test="countries"]'))
187
+ * .describedAs('countries dropdown')
188
+ * }
189
+ * ```
190
+ *
191
+ * #### Retrieving the selected value
192
+ *
193
+ * ```ts
194
+ * import { actorCalled } from '@serenity-js/core'
195
+ * import { Select, Selected } from '@serenity-js/web'
196
+ * import { Ensure, equals } from '@serenity-js/assertions'
197
+ *
198
+ * await actorCalled('Nick')
199
+ * .attemptsTo(
200
+ * Select.options('Poland', 'United States').from(Countries.dropdown),
201
+ * Ensure.that(
202
+ * Selected.optionsIn(Countries.dropdown),
203
+ * equals([ 'Poland', 'United States' ])
204
+ * ),
205
+ * )
206
+ * ```
207
+ *
208
+ * #### Learn more
209
+ * - {@apilink Select.options}
210
+ *
211
+ * @param pageElement
212
+ * A {@apilink PageElement} identifying the `<select>` element of interest
183
213
  */
184
- static optionsIn(pageElement: Answerable<PageElement>): Question<Promise<string[]>>;
214
+ static optionsIn(pageElement: Answerable<PageElement>): QuestionAdapter<Array<string>>;
185
215
  }
216
+ //# sourceMappingURL=Selected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Selected.d.ts","sourceRoot":"","sources":["../../../src/screenplay/questions/Selected.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAQ;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;IAW7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAYrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;IAY9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAWzF"}