@serenity-js/web 3.41.1 → 3.42.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 (657) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/esm/errors/BrowserWindowClosedError.d.ts +15 -0
  3. package/esm/errors/BrowserWindowClosedError.d.ts.map +1 -0
  4. package/esm/errors/BrowserWindowClosedError.js +17 -0
  5. package/esm/errors/BrowserWindowClosedError.js.map +1 -0
  6. package/esm/errors/CookieMissingError.d.ts +15 -0
  7. package/esm/errors/CookieMissingError.d.ts.map +1 -0
  8. package/esm/errors/CookieMissingError.js +17 -0
  9. package/esm/errors/CookieMissingError.js.map +1 -0
  10. package/esm/errors/ModalDialogObstructsScreenshotError.d.ts +15 -0
  11. package/esm/errors/ModalDialogObstructsScreenshotError.d.ts.map +1 -0
  12. package/esm/errors/ModalDialogObstructsScreenshotError.js +17 -0
  13. package/esm/errors/ModalDialogObstructsScreenshotError.js.map +1 -0
  14. package/esm/errors/index.d.ts +4 -0
  15. package/esm/errors/index.d.ts.map +1 -0
  16. package/esm/errors/index.js +4 -0
  17. package/esm/errors/index.js.map +1 -0
  18. package/esm/expectations/index.d.ts +6 -0
  19. package/esm/expectations/index.d.ts.map +1 -0
  20. package/esm/expectations/index.js +6 -0
  21. package/esm/expectations/index.js.map +1 -0
  22. package/esm/expectations/isActive.d.ts +20 -0
  23. package/esm/expectations/isActive.d.ts.map +1 -0
  24. package/esm/expectations/isActive.js +23 -0
  25. package/esm/expectations/isActive.js.map +1 -0
  26. package/esm/expectations/isClickable.d.ts +20 -0
  27. package/esm/expectations/isClickable.d.ts.map +1 -0
  28. package/esm/expectations/isClickable.js +23 -0
  29. package/esm/expectations/isClickable.js.map +1 -0
  30. package/esm/expectations/isEnabled.d.ts +20 -0
  31. package/esm/expectations/isEnabled.d.ts.map +1 -0
  32. package/esm/expectations/isEnabled.js +23 -0
  33. package/esm/expectations/isEnabled.js.map +1 -0
  34. package/esm/expectations/isSelected.d.ts +20 -0
  35. package/esm/expectations/isSelected.d.ts.map +1 -0
  36. package/esm/expectations/isSelected.js +23 -0
  37. package/esm/expectations/isSelected.js.map +1 -0
  38. package/esm/expectations/isVisible.d.ts +20 -0
  39. package/esm/expectations/isVisible.d.ts.map +1 -0
  40. package/esm/expectations/isVisible.js +23 -0
  41. package/esm/expectations/isVisible.js.map +1 -0
  42. package/esm/index.d.ts +5 -0
  43. package/esm/index.d.ts.map +1 -0
  44. package/esm/index.js +5 -0
  45. package/esm/index.js.map +1 -0
  46. package/esm/screenplay/abilities/BrowseTheWeb.d.ts +98 -0
  47. package/esm/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -0
  48. package/esm/screenplay/abilities/BrowseTheWeb.js +106 -0
  49. package/esm/screenplay/abilities/BrowseTheWeb.js.map +1 -0
  50. package/esm/screenplay/abilities/index.d.ts +2 -0
  51. package/esm/screenplay/abilities/index.d.ts.map +1 -0
  52. package/esm/screenplay/abilities/index.js +2 -0
  53. package/esm/screenplay/abilities/index.js.map +1 -0
  54. package/esm/screenplay/index.d.ts +5 -0
  55. package/esm/screenplay/index.d.ts.map +1 -0
  56. package/esm/screenplay/index.js +5 -0
  57. package/esm/screenplay/index.js.map +1 -0
  58. package/esm/screenplay/interactions/Clear.d.ts +74 -0
  59. package/esm/screenplay/interactions/Clear.d.ts.map +1 -0
  60. package/esm/screenplay/interactions/Clear.js +101 -0
  61. package/esm/screenplay/interactions/Clear.js.map +1 -0
  62. package/esm/screenplay/interactions/Click.d.ts +64 -0
  63. package/esm/screenplay/interactions/Click.d.ts.map +1 -0
  64. package/esm/screenplay/interactions/Click.js +72 -0
  65. package/esm/screenplay/interactions/Click.js.map +1 -0
  66. package/esm/screenplay/interactions/DoubleClick.d.ts +87 -0
  67. package/esm/screenplay/interactions/DoubleClick.d.ts.map +1 -0
  68. package/esm/screenplay/interactions/DoubleClick.js +95 -0
  69. package/esm/screenplay/interactions/DoubleClick.js.map +1 -0
  70. package/esm/screenplay/interactions/Drag.d.ts +95 -0
  71. package/esm/screenplay/interactions/Drag.d.ts.map +1 -0
  72. package/esm/screenplay/interactions/Drag.js +119 -0
  73. package/esm/screenplay/interactions/Drag.js.map +1 -0
  74. package/esm/screenplay/interactions/Enter.d.ts +81 -0
  75. package/esm/screenplay/interactions/Enter.d.ts.map +1 -0
  76. package/esm/screenplay/interactions/Enter.js +93 -0
  77. package/esm/screenplay/interactions/Enter.js.map +1 -0
  78. package/esm/screenplay/interactions/ExecuteScript.d.ts +297 -0
  79. package/esm/screenplay/interactions/ExecuteScript.d.ts.map +1 -0
  80. package/esm/screenplay/interactions/ExecuteScript.js +383 -0
  81. package/esm/screenplay/interactions/ExecuteScript.js.map +1 -0
  82. package/esm/screenplay/interactions/Hover.d.ts +68 -0
  83. package/esm/screenplay/interactions/Hover.d.ts.map +1 -0
  84. package/esm/screenplay/interactions/Hover.js +76 -0
  85. package/esm/screenplay/interactions/Hover.js.map +1 -0
  86. package/esm/screenplay/interactions/Navigate.d.ts +137 -0
  87. package/esm/screenplay/interactions/Navigate.d.ts.map +1 -0
  88. package/esm/screenplay/interactions/Navigate.js +174 -0
  89. package/esm/screenplay/interactions/Navigate.js.map +1 -0
  90. package/esm/screenplay/interactions/PageElementInteraction.d.ts +24 -0
  91. package/esm/screenplay/interactions/PageElementInteraction.d.ts.map +1 -0
  92. package/esm/screenplay/interactions/PageElementInteraction.js +29 -0
  93. package/esm/screenplay/interactions/PageElementInteraction.js.map +1 -0
  94. package/esm/screenplay/interactions/Press.d.ts +92 -0
  95. package/esm/screenplay/interactions/Press.d.ts.map +1 -0
  96. package/esm/screenplay/interactions/Press.js +166 -0
  97. package/esm/screenplay/interactions/Press.js.map +1 -0
  98. package/esm/screenplay/interactions/RightClick.d.ts +83 -0
  99. package/esm/screenplay/interactions/RightClick.d.ts.map +1 -0
  100. package/esm/screenplay/interactions/RightClick.js +91 -0
  101. package/esm/screenplay/interactions/RightClick.js.map +1 -0
  102. package/esm/screenplay/interactions/Scroll.d.ts +66 -0
  103. package/esm/screenplay/interactions/Scroll.d.ts.map +1 -0
  104. package/esm/screenplay/interactions/Scroll.js +72 -0
  105. package/esm/screenplay/interactions/Scroll.js.map +1 -0
  106. package/esm/screenplay/interactions/Select.d.ts +235 -0
  107. package/esm/screenplay/interactions/Select.d.ts.map +1 -0
  108. package/esm/screenplay/interactions/Select.js +262 -0
  109. package/esm/screenplay/interactions/Select.js.map +1 -0
  110. package/esm/screenplay/interactions/Switch.d.ts +130 -0
  111. package/esm/screenplay/interactions/Switch.d.ts.map +1 -0
  112. package/esm/screenplay/interactions/Switch.js +159 -0
  113. package/esm/screenplay/interactions/Switch.js.map +1 -0
  114. package/esm/screenplay/interactions/TakeScreenshot.d.ts +47 -0
  115. package/esm/screenplay/interactions/TakeScreenshot.d.ts.map +1 -0
  116. package/esm/screenplay/interactions/TakeScreenshot.js +58 -0
  117. package/esm/screenplay/interactions/TakeScreenshot.js.map +1 -0
  118. package/esm/screenplay/interactions/index.d.ts +16 -0
  119. package/esm/screenplay/interactions/index.d.ts.map +1 -0
  120. package/esm/screenplay/interactions/index.js +16 -0
  121. package/esm/screenplay/interactions/index.js.map +1 -0
  122. package/esm/screenplay/models/ArgumentDehydrator.d.ts +14 -0
  123. package/esm/screenplay/models/ArgumentDehydrator.d.ts.map +1 -0
  124. package/esm/screenplay/models/ArgumentDehydrator.js +45 -0
  125. package/esm/screenplay/models/ArgumentDehydrator.js.map +1 -0
  126. package/esm/screenplay/models/BrowserCapabilities.d.ts +24 -0
  127. package/esm/screenplay/models/BrowserCapabilities.d.ts.map +1 -0
  128. package/esm/screenplay/models/BrowserCapabilities.js +2 -0
  129. package/esm/screenplay/models/BrowserCapabilities.js.map +1 -0
  130. package/esm/screenplay/models/BrowsingSession.d.ts +74 -0
  131. package/esm/screenplay/models/BrowsingSession.d.ts.map +1 -0
  132. package/esm/screenplay/models/BrowsingSession.js +96 -0
  133. package/esm/screenplay/models/BrowsingSession.js.map +1 -0
  134. package/esm/screenplay/models/Cookie.d.ts +158 -0
  135. package/esm/screenplay/models/Cookie.d.ts.map +1 -0
  136. package/esm/screenplay/models/Cookie.js +225 -0
  137. package/esm/screenplay/models/Cookie.js.map +1 -0
  138. package/esm/screenplay/models/CookieData.d.ts +51 -0
  139. package/esm/screenplay/models/CookieData.d.ts.map +1 -0
  140. package/esm/screenplay/models/CookieData.js +2 -0
  141. package/esm/screenplay/models/CookieData.js.map +1 -0
  142. package/esm/screenplay/models/Key.d.ts +82 -0
  143. package/esm/screenplay/models/Key.d.ts.map +1 -0
  144. package/esm/screenplay/models/Key.js +97 -0
  145. package/esm/screenplay/models/Key.js.map +1 -0
  146. package/esm/screenplay/models/Locator.d.ts +48 -0
  147. package/esm/screenplay/models/Locator.d.ts.map +1 -0
  148. package/esm/screenplay/models/Locator.js +64 -0
  149. package/esm/screenplay/models/Locator.js.map +1 -0
  150. package/esm/screenplay/models/Page.d.ts +453 -0
  151. package/esm/screenplay/models/Page.d.ts.map +1 -0
  152. package/esm/screenplay/models/Page.js +252 -0
  153. package/esm/screenplay/models/Page.js.map +1 -0
  154. package/esm/screenplay/models/PageElement.d.ts +207 -0
  155. package/esm/screenplay/models/PageElement.d.ts.map +1 -0
  156. package/esm/screenplay/models/PageElement.js +89 -0
  157. package/esm/screenplay/models/PageElement.js.map +1 -0
  158. package/esm/screenplay/models/PageElements.d.ts +21 -0
  159. package/esm/screenplay/models/PageElements.d.ts.map +1 -0
  160. package/esm/screenplay/models/PageElements.js +21 -0
  161. package/esm/screenplay/models/PageElements.js.map +1 -0
  162. package/esm/screenplay/models/PageElementsLocator.d.ts +16 -0
  163. package/esm/screenplay/models/PageElementsLocator.d.ts.map +1 -0
  164. package/esm/screenplay/models/PageElementsLocator.js +31 -0
  165. package/esm/screenplay/models/PageElementsLocator.js.map +1 -0
  166. package/esm/screenplay/models/RootLocator.d.ts +24 -0
  167. package/esm/screenplay/models/RootLocator.d.ts.map +1 -0
  168. package/esm/screenplay/models/RootLocator.js +21 -0
  169. package/esm/screenplay/models/RootLocator.js.map +1 -0
  170. package/esm/screenplay/models/SelectOption.d.ts +25 -0
  171. package/esm/screenplay/models/SelectOption.d.ts.map +1 -0
  172. package/esm/screenplay/models/SelectOption.js +37 -0
  173. package/esm/screenplay/models/SelectOption.js.map +1 -0
  174. package/esm/screenplay/models/Switchable.d.ts +23 -0
  175. package/esm/screenplay/models/Switchable.d.ts.map +1 -0
  176. package/esm/screenplay/models/Switchable.js +2 -0
  177. package/esm/screenplay/models/Switchable.js.map +1 -0
  178. package/esm/screenplay/models/SwitchableOrigin.d.ts +18 -0
  179. package/esm/screenplay/models/SwitchableOrigin.d.ts.map +1 -0
  180. package/esm/screenplay/models/SwitchableOrigin.js +2 -0
  181. package/esm/screenplay/models/SwitchableOrigin.js.map +1 -0
  182. package/esm/screenplay/models/dialogs/AbsentModalDialog.d.ts +15 -0
  183. package/esm/screenplay/models/dialogs/AbsentModalDialog.d.ts.map +1 -0
  184. package/esm/screenplay/models/dialogs/AbsentModalDialog.js +20 -0
  185. package/esm/screenplay/models/dialogs/AbsentModalDialog.js.map +1 -0
  186. package/esm/screenplay/models/dialogs/AcceptedModalDialog.d.ts +17 -0
  187. package/esm/screenplay/models/dialogs/AcceptedModalDialog.d.ts.map +1 -0
  188. package/esm/screenplay/models/dialogs/AcceptedModalDialog.js +26 -0
  189. package/esm/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -0
  190. package/esm/screenplay/models/dialogs/DismissedModalDialog.d.ts +17 -0
  191. package/esm/screenplay/models/dialogs/DismissedModalDialog.d.ts.map +1 -0
  192. package/esm/screenplay/models/dialogs/DismissedModalDialog.js +26 -0
  193. package/esm/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -0
  194. package/esm/screenplay/models/dialogs/ModalDialog.d.ts +171 -0
  195. package/esm/screenplay/models/dialogs/ModalDialog.d.ts.map +1 -0
  196. package/esm/screenplay/models/dialogs/ModalDialog.js +173 -0
  197. package/esm/screenplay/models/dialogs/ModalDialog.js.map +1 -0
  198. package/esm/screenplay/models/dialogs/ModalDialogHandler.d.ts +38 -0
  199. package/esm/screenplay/models/dialogs/ModalDialogHandler.d.ts.map +1 -0
  200. package/esm/screenplay/models/dialogs/ModalDialogHandler.js +27 -0
  201. package/esm/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -0
  202. package/esm/screenplay/models/dialogs/index.d.ts +6 -0
  203. package/esm/screenplay/models/dialogs/index.d.ts.map +1 -0
  204. package/esm/screenplay/models/dialogs/index.js +6 -0
  205. package/esm/screenplay/models/dialogs/index.js.map +1 -0
  206. package/esm/screenplay/models/index.d.ts +18 -0
  207. package/esm/screenplay/models/index.d.ts.map +1 -0
  208. package/esm/screenplay/models/index.js +18 -0
  209. package/esm/screenplay/models/index.js.map +1 -0
  210. package/esm/screenplay/models/selectors/By.d.ts +169 -0
  211. package/esm/screenplay/models/selectors/By.d.ts.map +1 -0
  212. package/esm/screenplay/models/selectors/By.js +217 -0
  213. package/esm/screenplay/models/selectors/By.js.map +1 -0
  214. package/esm/screenplay/models/selectors/ByCss.d.ts +13 -0
  215. package/esm/screenplay/models/selectors/ByCss.d.ts.map +1 -0
  216. package/esm/screenplay/models/selectors/ByCss.js +16 -0
  217. package/esm/screenplay/models/selectors/ByCss.js.map +1 -0
  218. package/esm/screenplay/models/selectors/ByCssContainingText.d.ts +15 -0
  219. package/esm/screenplay/models/selectors/ByCssContainingText.d.ts.map +1 -0
  220. package/esm/screenplay/models/selectors/ByCssContainingText.js +19 -0
  221. package/esm/screenplay/models/selectors/ByCssContainingText.js.map +1 -0
  222. package/esm/screenplay/models/selectors/ByDeepCss.d.ts +14 -0
  223. package/esm/screenplay/models/selectors/ByDeepCss.d.ts.map +1 -0
  224. package/esm/screenplay/models/selectors/ByDeepCss.js +17 -0
  225. package/esm/screenplay/models/selectors/ByDeepCss.js.map +1 -0
  226. package/esm/screenplay/models/selectors/ById.d.ts +13 -0
  227. package/esm/screenplay/models/selectors/ById.d.ts.map +1 -0
  228. package/esm/screenplay/models/selectors/ById.js +16 -0
  229. package/esm/screenplay/models/selectors/ById.js.map +1 -0
  230. package/esm/screenplay/models/selectors/ByRole.d.ts +126 -0
  231. package/esm/screenplay/models/selectors/ByRole.d.ts.map +1 -0
  232. package/esm/screenplay/models/selectors/ByRole.js +19 -0
  233. package/esm/screenplay/models/selectors/ByRole.js.map +1 -0
  234. package/esm/screenplay/models/selectors/ByTagName.d.ts +13 -0
  235. package/esm/screenplay/models/selectors/ByTagName.d.ts.map +1 -0
  236. package/esm/screenplay/models/selectors/ByTagName.js +16 -0
  237. package/esm/screenplay/models/selectors/ByTagName.js.map +1 -0
  238. package/esm/screenplay/models/selectors/ByXPath.d.ts +13 -0
  239. package/esm/screenplay/models/selectors/ByXPath.d.ts.map +1 -0
  240. package/esm/screenplay/models/selectors/ByXPath.js +16 -0
  241. package/esm/screenplay/models/selectors/ByXPath.js.map +1 -0
  242. package/esm/screenplay/models/selectors/Selector.d.ts +10 -0
  243. package/esm/screenplay/models/selectors/Selector.d.ts.map +1 -0
  244. package/esm/screenplay/models/selectors/Selector.js +15 -0
  245. package/esm/screenplay/models/selectors/Selector.js.map +1 -0
  246. package/esm/screenplay/models/selectors/index.d.ts +10 -0
  247. package/esm/screenplay/models/selectors/index.d.ts.map +1 -0
  248. package/esm/screenplay/models/selectors/index.js +10 -0
  249. package/esm/screenplay/models/selectors/index.js.map +1 -0
  250. package/esm/screenplay/questions/Attribute.d.ts +127 -0
  251. package/esm/screenplay/questions/Attribute.d.ts.map +1 -0
  252. package/esm/screenplay/questions/Attribute.js +150 -0
  253. package/esm/screenplay/questions/Attribute.js.map +1 -0
  254. package/esm/screenplay/questions/ComputedStyle.d.ts +131 -0
  255. package/esm/screenplay/questions/ComputedStyle.d.ts.map +1 -0
  256. package/esm/screenplay/questions/ComputedStyle.js +157 -0
  257. package/esm/screenplay/questions/ComputedStyle.js.map +1 -0
  258. package/esm/screenplay/questions/CssClasses.d.ts +110 -0
  259. package/esm/screenplay/questions/CssClasses.d.ts.map +1 -0
  260. package/esm/screenplay/questions/CssClasses.js +121 -0
  261. package/esm/screenplay/questions/CssClasses.js.map +1 -0
  262. package/esm/screenplay/questions/LastScriptExecution.d.ts +50 -0
  263. package/esm/screenplay/questions/LastScriptExecution.d.ts.map +1 -0
  264. package/esm/screenplay/questions/LastScriptExecution.js +56 -0
  265. package/esm/screenplay/questions/LastScriptExecution.js.map +1 -0
  266. package/esm/screenplay/questions/Selected.d.ts +216 -0
  267. package/esm/screenplay/questions/Selected.d.ts.map +1 -0
  268. package/esm/screenplay/questions/Selected.js +247 -0
  269. package/esm/screenplay/questions/Selected.js.map +1 -0
  270. package/esm/screenplay/questions/Text.d.ts +116 -0
  271. package/esm/screenplay/questions/Text.d.ts.map +1 -0
  272. package/esm/screenplay/questions/Text.js +121 -0
  273. package/esm/screenplay/questions/Text.js.map +1 -0
  274. package/esm/screenplay/questions/Value.d.ts +70 -0
  275. package/esm/screenplay/questions/Value.d.ts.map +1 -0
  276. package/esm/screenplay/questions/Value.js +75 -0
  277. package/esm/screenplay/questions/Value.js.map +1 -0
  278. package/esm/screenplay/questions/index.d.ts +8 -0
  279. package/esm/screenplay/questions/index.d.ts.map +1 -0
  280. package/esm/screenplay/questions/index.js +8 -0
  281. package/esm/screenplay/questions/index.js.map +1 -0
  282. package/esm/scripts/dragAndDrop.d.ts +13 -0
  283. package/esm/scripts/dragAndDrop.d.ts.map +1 -0
  284. package/esm/scripts/dragAndDrop.js +72 -0
  285. package/esm/scripts/dragAndDrop.js.map +1 -0
  286. package/esm/scripts/index.d.ts +4 -0
  287. package/esm/scripts/index.d.ts.map +1 -0
  288. package/esm/scripts/index.js +4 -0
  289. package/esm/scripts/index.js.map +1 -0
  290. package/esm/scripts/isVisible.d.ts +2 -0
  291. package/esm/scripts/isVisible.d.ts.map +1 -0
  292. package/esm/scripts/isVisible.js +92 -0
  293. package/esm/scripts/isVisible.js.map +1 -0
  294. package/esm/scripts/rehydrate.d.ts +5 -0
  295. package/esm/scripts/rehydrate.d.ts.map +1 -0
  296. package/esm/scripts/rehydrate.js +31 -0
  297. package/esm/scripts/rehydrate.js.map +1 -0
  298. package/esm/stage/crew/index.d.ts +2 -0
  299. package/esm/stage/crew/index.d.ts.map +1 -0
  300. package/esm/stage/crew/index.js +2 -0
  301. package/esm/stage/crew/index.js.map +1 -0
  302. package/esm/stage/crew/photographer/Photographer.d.ts +189 -0
  303. package/esm/stage/crew/photographer/Photographer.d.ts.map +1 -0
  304. package/esm/stage/crew/photographer/Photographer.js +215 -0
  305. package/esm/stage/crew/photographer/Photographer.js.map +1 -0
  306. package/esm/stage/crew/photographer/index.d.ts +3 -0
  307. package/esm/stage/crew/photographer/index.d.ts.map +1 -0
  308. package/esm/stage/crew/photographer/index.js +3 -0
  309. package/esm/stage/crew/photographer/index.js.map +1 -0
  310. package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +29 -0
  311. package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts.map +1 -0
  312. package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.js +64 -0
  313. package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -0
  314. package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +19 -0
  315. package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts.map +1 -0
  316. package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +25 -0
  317. package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +1 -0
  318. package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +19 -0
  319. package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts.map +1 -0
  320. package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.js +24 -0
  321. package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +1 -0
  322. package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +20 -0
  323. package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts.map +1 -0
  324. package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +23 -0
  325. package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +1 -0
  326. package/esm/stage/crew/photographer/strategies/index.d.ts +5 -0
  327. package/esm/stage/crew/photographer/strategies/index.d.ts.map +1 -0
  328. package/esm/stage/crew/photographer/strategies/index.js +5 -0
  329. package/esm/stage/crew/photographer/strategies/index.js.map +1 -0
  330. package/esm/stage/index.d.ts +2 -0
  331. package/esm/stage/index.d.ts.map +1 -0
  332. package/esm/stage/index.js +2 -0
  333. package/esm/stage/index.js.map +1 -0
  334. package/lib/errors/index.d.ts +3 -3
  335. package/lib/errors/index.d.ts.map +1 -1
  336. package/lib/errors/index.js +3 -3
  337. package/lib/errors/index.js.map +1 -1
  338. package/lib/expectations/index.d.ts +5 -5
  339. package/lib/expectations/index.d.ts.map +1 -1
  340. package/lib/expectations/index.js +5 -5
  341. package/lib/expectations/index.js.map +1 -1
  342. package/lib/expectations/isActive.d.ts +1 -1
  343. package/lib/expectations/isActive.d.ts.map +1 -1
  344. package/lib/expectations/isClickable.d.ts +1 -1
  345. package/lib/expectations/isClickable.d.ts.map +1 -1
  346. package/lib/expectations/isEnabled.d.ts +1 -1
  347. package/lib/expectations/isEnabled.d.ts.map +1 -1
  348. package/lib/expectations/isSelected.d.ts +1 -1
  349. package/lib/expectations/isSelected.d.ts.map +1 -1
  350. package/lib/expectations/isVisible.d.ts +1 -1
  351. package/lib/expectations/isVisible.d.ts.map +1 -1
  352. package/lib/index.d.ts +4 -4
  353. package/lib/index.d.ts.map +1 -1
  354. package/lib/index.js +4 -4
  355. package/lib/index.js.map +1 -1
  356. package/lib/package.json +1 -0
  357. package/lib/screenplay/abilities/BrowseTheWeb.d.ts +1 -1
  358. package/lib/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -1
  359. package/lib/screenplay/abilities/index.d.ts +1 -1
  360. package/lib/screenplay/abilities/index.d.ts.map +1 -1
  361. package/lib/screenplay/abilities/index.js +1 -1
  362. package/lib/screenplay/abilities/index.js.map +1 -1
  363. package/lib/screenplay/index.d.ts +4 -4
  364. package/lib/screenplay/index.d.ts.map +1 -1
  365. package/lib/screenplay/index.js +4 -4
  366. package/lib/screenplay/index.js.map +1 -1
  367. package/lib/screenplay/interactions/Clear.d.ts +2 -2
  368. package/lib/screenplay/interactions/Clear.d.ts.map +1 -1
  369. package/lib/screenplay/interactions/Clear.js +2 -2
  370. package/lib/screenplay/interactions/Clear.js.map +1 -1
  371. package/lib/screenplay/interactions/Click.d.ts +2 -2
  372. package/lib/screenplay/interactions/Click.d.ts.map +1 -1
  373. package/lib/screenplay/interactions/Click.js +2 -2
  374. package/lib/screenplay/interactions/Click.js.map +1 -1
  375. package/lib/screenplay/interactions/DoubleClick.d.ts +2 -2
  376. package/lib/screenplay/interactions/DoubleClick.d.ts.map +1 -1
  377. package/lib/screenplay/interactions/DoubleClick.js +2 -2
  378. package/lib/screenplay/interactions/DoubleClick.js.map +1 -1
  379. package/lib/screenplay/interactions/Drag.d.ts +1 -1
  380. package/lib/screenplay/interactions/Drag.d.ts.map +1 -1
  381. package/lib/screenplay/interactions/Enter.d.ts +2 -2
  382. package/lib/screenplay/interactions/Enter.d.ts.map +1 -1
  383. package/lib/screenplay/interactions/Enter.js +3 -3
  384. package/lib/screenplay/interactions/Enter.js.map +1 -1
  385. package/lib/screenplay/interactions/ExecuteScript.js +6 -6
  386. package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
  387. package/lib/screenplay/interactions/Hover.d.ts +2 -2
  388. package/lib/screenplay/interactions/Hover.d.ts.map +1 -1
  389. package/lib/screenplay/interactions/Hover.js +2 -2
  390. package/lib/screenplay/interactions/Hover.js.map +1 -1
  391. package/lib/screenplay/interactions/Navigate.js +5 -5
  392. package/lib/screenplay/interactions/Navigate.js.map +1 -1
  393. package/lib/screenplay/interactions/PageElementInteraction.d.ts +2 -2
  394. package/lib/screenplay/interactions/PageElementInteraction.d.ts.map +1 -1
  395. package/lib/screenplay/interactions/Press.d.ts +3 -3
  396. package/lib/screenplay/interactions/Press.d.ts.map +1 -1
  397. package/lib/screenplay/interactions/Press.js +9 -9
  398. package/lib/screenplay/interactions/Press.js.map +1 -1
  399. package/lib/screenplay/interactions/RightClick.d.ts +2 -2
  400. package/lib/screenplay/interactions/RightClick.d.ts.map +1 -1
  401. package/lib/screenplay/interactions/RightClick.js +2 -2
  402. package/lib/screenplay/interactions/RightClick.js.map +1 -1
  403. package/lib/screenplay/interactions/Scroll.d.ts +1 -1
  404. package/lib/screenplay/interactions/Scroll.d.ts.map +1 -1
  405. package/lib/screenplay/interactions/Select.d.ts +1 -1
  406. package/lib/screenplay/interactions/Select.d.ts.map +1 -1
  407. package/lib/screenplay/interactions/Select.js +8 -9
  408. package/lib/screenplay/interactions/Select.js.map +1 -1
  409. package/lib/screenplay/interactions/Switch.d.ts +1 -1
  410. package/lib/screenplay/interactions/Switch.d.ts.map +1 -1
  411. package/lib/screenplay/interactions/TakeScreenshot.js +3 -3
  412. package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
  413. package/lib/screenplay/interactions/index.d.ts +15 -15
  414. package/lib/screenplay/interactions/index.d.ts.map +1 -1
  415. package/lib/screenplay/interactions/index.js +15 -15
  416. package/lib/screenplay/interactions/index.js.map +1 -1
  417. package/lib/screenplay/models/ArgumentDehydrator.js +1 -1
  418. package/lib/screenplay/models/ArgumentDehydrator.js.map +1 -1
  419. package/lib/screenplay/models/BrowsingSession.d.ts +3 -3
  420. package/lib/screenplay/models/BrowsingSession.d.ts.map +1 -1
  421. package/lib/screenplay/models/Cookie.d.ts +1 -1
  422. package/lib/screenplay/models/Cookie.d.ts.map +1 -1
  423. package/lib/screenplay/models/Cookie.js +6 -6
  424. package/lib/screenplay/models/Cookie.js.map +1 -1
  425. package/lib/screenplay/models/Key.d.ts +5 -0
  426. package/lib/screenplay/models/Key.d.ts.map +1 -1
  427. package/lib/screenplay/models/Key.js +13 -2
  428. package/lib/screenplay/models/Key.js.map +1 -1
  429. package/lib/screenplay/models/Locator.d.ts +3 -3
  430. package/lib/screenplay/models/Locator.d.ts.map +1 -1
  431. package/lib/screenplay/models/Locator.js +9 -9
  432. package/lib/screenplay/models/Locator.js.map +1 -1
  433. package/lib/screenplay/models/Page.d.ts +12 -12
  434. package/lib/screenplay/models/Page.d.ts.map +1 -1
  435. package/lib/screenplay/models/Page.js +5 -5
  436. package/lib/screenplay/models/Page.js.map +1 -1
  437. package/lib/screenplay/models/PageElement.d.ts +5 -5
  438. package/lib/screenplay/models/PageElement.d.ts.map +1 -1
  439. package/lib/screenplay/models/PageElement.js +3 -3
  440. package/lib/screenplay/models/PageElement.js.map +1 -1
  441. package/lib/screenplay/models/PageElements.d.ts +2 -2
  442. package/lib/screenplay/models/PageElements.d.ts.map +1 -1
  443. package/lib/screenplay/models/PageElements.js +2 -2
  444. package/lib/screenplay/models/PageElements.js.map +1 -1
  445. package/lib/screenplay/models/PageElementsLocator.d.ts +3 -3
  446. package/lib/screenplay/models/PageElementsLocator.d.ts.map +1 -1
  447. package/lib/screenplay/models/PageElementsLocator.js +2 -2
  448. package/lib/screenplay/models/PageElementsLocator.js.map +1 -1
  449. package/lib/screenplay/models/RootLocator.js +1 -1
  450. package/lib/screenplay/models/RootLocator.js.map +1 -1
  451. package/lib/screenplay/models/Switchable.d.ts +1 -1
  452. package/lib/screenplay/models/Switchable.d.ts.map +1 -1
  453. package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts +1 -1
  454. package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts.map +1 -1
  455. package/lib/screenplay/models/dialogs/AbsentModalDialog.js +2 -2
  456. package/lib/screenplay/models/dialogs/AbsentModalDialog.js.map +1 -1
  457. package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts +1 -1
  458. package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts.map +1 -1
  459. package/lib/screenplay/models/dialogs/AcceptedModalDialog.js +2 -2
  460. package/lib/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -1
  461. package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts +1 -1
  462. package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts.map +1 -1
  463. package/lib/screenplay/models/dialogs/DismissedModalDialog.js +2 -2
  464. package/lib/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -1
  465. package/lib/screenplay/models/dialogs/ModalDialog.js +7 -7
  466. package/lib/screenplay/models/dialogs/ModalDialog.js.map +1 -1
  467. package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts +1 -1
  468. package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts.map +1 -1
  469. package/lib/screenplay/models/dialogs/ModalDialogHandler.js +2 -2
  470. package/lib/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -1
  471. package/lib/screenplay/models/dialogs/index.d.ts +5 -5
  472. package/lib/screenplay/models/dialogs/index.d.ts.map +1 -1
  473. package/lib/screenplay/models/dialogs/index.js +5 -5
  474. package/lib/screenplay/models/dialogs/index.js.map +1 -1
  475. package/lib/screenplay/models/index.d.ts +17 -17
  476. package/lib/screenplay/models/index.d.ts.map +1 -1
  477. package/lib/screenplay/models/index.js +17 -17
  478. package/lib/screenplay/models/index.js.map +1 -1
  479. package/lib/screenplay/models/selectors/By.d.ts +7 -7
  480. package/lib/screenplay/models/selectors/By.d.ts.map +1 -1
  481. package/lib/screenplay/models/selectors/By.js +14 -14
  482. package/lib/screenplay/models/selectors/By.js.map +1 -1
  483. package/lib/screenplay/models/selectors/ByCss.d.ts +1 -1
  484. package/lib/screenplay/models/selectors/ByCss.d.ts.map +1 -1
  485. package/lib/screenplay/models/selectors/ByCss.js +2 -2
  486. package/lib/screenplay/models/selectors/ByCss.js.map +1 -1
  487. package/lib/screenplay/models/selectors/ByCssContainingText.d.ts +1 -1
  488. package/lib/screenplay/models/selectors/ByCssContainingText.d.ts.map +1 -1
  489. package/lib/screenplay/models/selectors/ByCssContainingText.js +2 -2
  490. package/lib/screenplay/models/selectors/ByCssContainingText.js.map +1 -1
  491. package/lib/screenplay/models/selectors/ByDeepCss.d.ts +1 -1
  492. package/lib/screenplay/models/selectors/ByDeepCss.d.ts.map +1 -1
  493. package/lib/screenplay/models/selectors/ByDeepCss.js +2 -2
  494. package/lib/screenplay/models/selectors/ByDeepCss.js.map +1 -1
  495. package/lib/screenplay/models/selectors/ById.d.ts +1 -1
  496. package/lib/screenplay/models/selectors/ById.d.ts.map +1 -1
  497. package/lib/screenplay/models/selectors/ById.js +2 -2
  498. package/lib/screenplay/models/selectors/ById.js.map +1 -1
  499. package/lib/screenplay/models/selectors/ByRole.d.ts +1 -1
  500. package/lib/screenplay/models/selectors/ByRole.d.ts.map +1 -1
  501. package/lib/screenplay/models/selectors/ByRole.js +2 -2
  502. package/lib/screenplay/models/selectors/ByRole.js.map +1 -1
  503. package/lib/screenplay/models/selectors/ByTagName.d.ts +1 -1
  504. package/lib/screenplay/models/selectors/ByTagName.d.ts.map +1 -1
  505. package/lib/screenplay/models/selectors/ByTagName.js +2 -2
  506. package/lib/screenplay/models/selectors/ByTagName.js.map +1 -1
  507. package/lib/screenplay/models/selectors/ByXPath.d.ts +1 -1
  508. package/lib/screenplay/models/selectors/ByXPath.d.ts.map +1 -1
  509. package/lib/screenplay/models/selectors/ByXPath.js +2 -2
  510. package/lib/screenplay/models/selectors/ByXPath.js.map +1 -1
  511. package/lib/screenplay/models/selectors/index.d.ts +9 -9
  512. package/lib/screenplay/models/selectors/index.d.ts.map +1 -1
  513. package/lib/screenplay/models/selectors/index.js +9 -9
  514. package/lib/screenplay/models/selectors/index.js.map +1 -1
  515. package/lib/screenplay/questions/Attribute.d.ts +1 -1
  516. package/lib/screenplay/questions/Attribute.d.ts.map +1 -1
  517. package/lib/screenplay/questions/Attribute.js +2 -2
  518. package/lib/screenplay/questions/Attribute.js.map +1 -1
  519. package/lib/screenplay/questions/ComputedStyle.d.ts +1 -1
  520. package/lib/screenplay/questions/ComputedStyle.d.ts.map +1 -1
  521. package/lib/screenplay/questions/ComputedStyle.js +4 -4
  522. package/lib/screenplay/questions/ComputedStyle.js.map +1 -1
  523. package/lib/screenplay/questions/CssClasses.d.ts +1 -1
  524. package/lib/screenplay/questions/CssClasses.d.ts.map +1 -1
  525. package/lib/screenplay/questions/CssClasses.js +2 -2
  526. package/lib/screenplay/questions/CssClasses.js.map +1 -1
  527. package/lib/screenplay/questions/LastScriptExecution.js +2 -2
  528. package/lib/screenplay/questions/LastScriptExecution.js.map +1 -1
  529. package/lib/screenplay/questions/Selected.d.ts +1 -1
  530. package/lib/screenplay/questions/Selected.d.ts.map +1 -1
  531. package/lib/screenplay/questions/Text.d.ts +2 -2
  532. package/lib/screenplay/questions/Text.d.ts.map +1 -1
  533. package/lib/screenplay/questions/Text.js +3 -3
  534. package/lib/screenplay/questions/Text.js.map +1 -1
  535. package/lib/screenplay/questions/Value.d.ts +1 -1
  536. package/lib/screenplay/questions/Value.d.ts.map +1 -1
  537. package/lib/screenplay/questions/Value.js +2 -2
  538. package/lib/screenplay/questions/Value.js.map +1 -1
  539. package/lib/screenplay/questions/index.d.ts +7 -7
  540. package/lib/screenplay/questions/index.d.ts.map +1 -1
  541. package/lib/screenplay/questions/index.js +7 -7
  542. package/lib/screenplay/questions/index.js.map +1 -1
  543. package/lib/scripts/index.d.ts +3 -3
  544. package/lib/scripts/index.d.ts.map +1 -1
  545. package/lib/scripts/index.js +3 -3
  546. package/lib/scripts/index.js.map +1 -1
  547. package/lib/stage/crew/index.d.ts +1 -1
  548. package/lib/stage/crew/index.d.ts.map +1 -1
  549. package/lib/stage/crew/index.js +1 -1
  550. package/lib/stage/crew/index.js.map +1 -1
  551. package/lib/stage/crew/photographer/Photographer.d.ts +3 -3
  552. package/lib/stage/crew/photographer/Photographer.d.ts.map +1 -1
  553. package/lib/stage/crew/photographer/Photographer.js +2 -2
  554. package/lib/stage/crew/photographer/Photographer.js.map +1 -1
  555. package/lib/stage/crew/photographer/index.d.ts +2 -2
  556. package/lib/stage/crew/photographer/index.d.ts.map +1 -1
  557. package/lib/stage/crew/photographer/index.js +2 -2
  558. package/lib/stage/crew/photographer/index.js.map +1 -1
  559. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +1 -1
  560. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts.map +1 -1
  561. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +4 -4
  562. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -1
  563. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +3 -3
  564. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts.map +1 -1
  565. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +3 -3
  566. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +1 -1
  567. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +3 -3
  568. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts.map +1 -1
  569. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +4 -4
  570. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +1 -1
  571. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +3 -3
  572. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts.map +1 -1
  573. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +3 -3
  574. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +1 -1
  575. package/lib/stage/crew/photographer/strategies/index.d.ts +4 -4
  576. package/lib/stage/crew/photographer/strategies/index.d.ts.map +1 -1
  577. package/lib/stage/crew/photographer/strategies/index.js +4 -4
  578. package/lib/stage/crew/photographer/strategies/index.js.map +1 -1
  579. package/lib/stage/index.d.ts +1 -1
  580. package/lib/stage/index.d.ts.map +1 -1
  581. package/lib/stage/index.js +1 -1
  582. package/lib/stage/index.js.map +1 -1
  583. package/package.json +48 -7
  584. package/src/errors/index.ts +3 -3
  585. package/src/expectations/index.ts +5 -5
  586. package/src/expectations/isActive.ts +1 -1
  587. package/src/expectations/isClickable.ts +1 -1
  588. package/src/expectations/isEnabled.ts +1 -1
  589. package/src/expectations/isSelected.ts +1 -1
  590. package/src/expectations/isVisible.ts +1 -1
  591. package/src/index.ts +4 -4
  592. package/src/screenplay/abilities/BrowseTheWeb.ts +1 -1
  593. package/src/screenplay/abilities/index.ts +1 -1
  594. package/src/screenplay/index.ts +4 -4
  595. package/src/screenplay/interactions/Clear.ts +2 -2
  596. package/src/screenplay/interactions/Click.ts +2 -2
  597. package/src/screenplay/interactions/DoubleClick.ts +2 -2
  598. package/src/screenplay/interactions/Drag.ts +1 -1
  599. package/src/screenplay/interactions/Enter.ts +3 -3
  600. package/src/screenplay/interactions/ExecuteScript.ts +3 -3
  601. package/src/screenplay/interactions/Hover.ts +2 -2
  602. package/src/screenplay/interactions/Navigate.ts +1 -1
  603. package/src/screenplay/interactions/PageElementInteraction.ts +2 -2
  604. package/src/screenplay/interactions/Press.ts +5 -5
  605. package/src/screenplay/interactions/RightClick.ts +94 -94
  606. package/src/screenplay/interactions/Scroll.ts +1 -1
  607. package/src/screenplay/interactions/Select.ts +3 -4
  608. package/src/screenplay/interactions/Switch.ts +1 -1
  609. package/src/screenplay/interactions/TakeScreenshot.ts +2 -2
  610. package/src/screenplay/interactions/index.ts +15 -15
  611. package/src/screenplay/models/ArgumentDehydrator.ts +1 -1
  612. package/src/screenplay/models/BrowsingSession.ts +3 -3
  613. package/src/screenplay/models/Cookie.ts +3 -3
  614. package/src/screenplay/models/Key.ts +14 -2
  615. package/src/screenplay/models/Locator.ts +4 -4
  616. package/src/screenplay/models/Page.ts +13 -13
  617. package/src/screenplay/models/PageElement.ts +6 -6
  618. package/src/screenplay/models/PageElements.ts +3 -3
  619. package/src/screenplay/models/PageElementsLocator.ts +4 -4
  620. package/src/screenplay/models/RootLocator.ts +1 -1
  621. package/src/screenplay/models/Switchable.ts +1 -1
  622. package/src/screenplay/models/dialogs/AbsentModalDialog.ts +1 -1
  623. package/src/screenplay/models/dialogs/AcceptedModalDialog.ts +1 -1
  624. package/src/screenplay/models/dialogs/DismissedModalDialog.ts +1 -1
  625. package/src/screenplay/models/dialogs/ModalDialog.ts +1 -1
  626. package/src/screenplay/models/dialogs/ModalDialogHandler.ts +2 -2
  627. package/src/screenplay/models/dialogs/index.ts +5 -5
  628. package/src/screenplay/models/index.ts +17 -17
  629. package/src/screenplay/models/selectors/By.ts +8 -8
  630. package/src/screenplay/models/selectors/ByCss.ts +1 -1
  631. package/src/screenplay/models/selectors/ByCssContainingText.ts +1 -1
  632. package/src/screenplay/models/selectors/ByDeepCss.ts +1 -1
  633. package/src/screenplay/models/selectors/ById.ts +1 -1
  634. package/src/screenplay/models/selectors/ByRole.ts +1 -1
  635. package/src/screenplay/models/selectors/ByTagName.ts +1 -1
  636. package/src/screenplay/models/selectors/ByXPath.ts +1 -1
  637. package/src/screenplay/models/selectors/index.ts +9 -9
  638. package/src/screenplay/questions/Attribute.ts +1 -1
  639. package/src/screenplay/questions/ComputedStyle.ts +2 -2
  640. package/src/screenplay/questions/CssClasses.ts +1 -1
  641. package/src/screenplay/questions/LastScriptExecution.ts +1 -1
  642. package/src/screenplay/questions/Selected.ts +1 -1
  643. package/src/screenplay/questions/Text.ts +3 -3
  644. package/src/screenplay/questions/Value.ts +1 -1
  645. package/src/screenplay/questions/index.ts +7 -7
  646. package/src/scripts/index.ts +3 -3
  647. package/src/stage/crew/index.ts +1 -1
  648. package/src/stage/crew/photographer/Photographer.ts +4 -4
  649. package/src/stage/crew/photographer/index.ts +2 -2
  650. package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +4 -4
  651. package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +3 -3
  652. package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +4 -4
  653. package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +3 -3
  654. package/src/stage/crew/photographer/strategies/index.ts +4 -4
  655. package/src/stage/index.ts +1 -1
  656. package/tsconfig-cjs.build.json +18 -0
  657. package/tsconfig-esm.build.json +18 -0
@@ -0,0 +1,297 @@
1
+ import type { Answerable, AnswersQuestions, CollectsArtifacts, UsesAbilities } from '@serenity-js/core';
2
+ import { Interaction } from '@serenity-js/core';
3
+ /**
4
+ * Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
5
+ * to inject a script into the browser and execute it in the context of the current browser tab.
6
+ *
7
+ * ## Learn more
8
+ *
9
+ * - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
10
+ * - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
11
+ *
12
+ * @group Activities
13
+ */
14
+ export declare class ExecuteScript {
15
+ /**
16
+ * Instantiates a version of this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/)
17
+ * configured to load a script from `sourceUrl`.
18
+ *
19
+ * @param sourceUrl
20
+ * The URL to load the script from
21
+ */
22
+ static from(sourceUrl: Answerable<string>): Interaction;
23
+ /**
24
+ * Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
25
+ * to execute an asynchronous script within the context of the current browser tab.
26
+ *
27
+ * The script fragment will be executed as the body of an anonymous function.
28
+ * If the script is provided as a function object, that function will be converted to a string for injection
29
+ * into the target window.
30
+ *
31
+ * Any arguments provided in addition to the script will be included as script arguments and may be referenced
32
+ * using the `arguments` object. Arguments may be a `boolean`, `number`, `string`
33
+ * or [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
34
+ * Arrays and objects may also be used as script arguments as long as each item adheres
35
+ * to the types previously mentioned.
36
+ *
37
+ * Unlike executing synchronous JavaScript with [`ExecuteScript.sync`](https://serenity-js.org/api/web/class/ExecuteScript/#sync),
38
+ * scripts executed with this function must explicitly signal they are finished by invoking the provided callback.
39
+ *
40
+ * This callback will always be injected into the executed function as the last argument,
41
+ * and thus may be referenced with `arguments[arguments.length - 1]`.
42
+ *
43
+ * If the script invokes the `callback` with a return value, this will be made available
44
+ * via the [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
45
+ *
46
+ * **Please note** that in order to signal an error in the `script` you need to throw an [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
47
+ * instead of passing it to the callback function.
48
+ *
49
+ * #### Executing an async script
50
+ *
51
+ * ```ts
52
+ * import { actorCalled } from '@serenity-js/core'
53
+ * import { ExecuteScript } from '@serenity-js/web'
54
+ *
55
+ * await actorCalled('Esti').attemptsTo(
56
+ * ExecuteScript.async(`
57
+ * var callback = arguments[arguments.length - 1]
58
+ *
59
+ * // do stuff
60
+ *
61
+ * callback(result)
62
+ * `)
63
+ * )
64
+ * ```
65
+ *
66
+ * #### Executing async script as function
67
+ *
68
+ * ```ts
69
+ * import { actorCalled } from '@serenity-js/core'
70
+ * import { ExecuteScript } from '@serenity-js/web'
71
+ *
72
+ * const MyPage = {
73
+ * header: () =>
74
+ * PageElement.located(By.css('h1')).describedAs('header'),
75
+ * }
76
+ *
77
+ * await actorCalled('Esti').attemptsTo(
78
+ * ExecuteScript.async(function getText(header, callback) {
79
+ * callback(header.innerText)
80
+ * }).withArguments(MyPage.header())
81
+ * )
82
+ * ```
83
+ *
84
+ * #### Passing arguments to an async script
85
+ *
86
+ * ```ts
87
+ * import { actorCalled } from '@serenity-js/core'
88
+ * import { ExecuteScript } from '@serenity-js/web'
89
+ *
90
+ * await actorCalled('Esti').attemptsTo(
91
+ * ExecuteScript.async(`
92
+ * var name = arguments[0];
93
+ * var age = arguments[1];
94
+ * var callback = arguments[arguments.length - 1]
95
+ *
96
+ * // do stuff
97
+ *
98
+ * callback(result)
99
+ * `).withArguments('Bob', 24)
100
+ * )
101
+ * ```
102
+ *
103
+ * #### Passing PageElement arguments to an async script
104
+ *
105
+ * Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
106
+ * into their corresponding DOM elements.
107
+ *
108
+ * ```ts
109
+ * import { actorCalled } from '@serenity-js/core'
110
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
111
+ *
112
+ * const MyPage = {
113
+ * header: () =>
114
+ * PageElement.located(By.css('h1')).describedAs('header'),
115
+ * }
116
+ *
117
+ * await actorCalled('Esti').attemptsTo(
118
+ * ExecuteScript.async(`
119
+ * var header = arguments[0]
120
+ * var callback = arguments[arguments.length - 1]
121
+ *
122
+ * callback(header.innerText)
123
+ * `).withArguments(MyPage.header())
124
+ * )
125
+ * ```
126
+ *
127
+ * #### Using nested data structures containing PageElement objects
128
+ *
129
+ * Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
130
+ * contained in nested data structures passed to the script
131
+ * into their corresponding DOM elements.
132
+ *
133
+ * ```ts
134
+ * import { actorCalled } from '@serenity-js/core'
135
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
136
+ *
137
+ * const MyPage = {
138
+ * header: () =>
139
+ * PageElement.located(By.css('h1')).describedAs('header'),
140
+ *
141
+ * article: () =>
142
+ * PageElement.located(By.css('article')).describedAs('article'),
143
+ * }
144
+ *
145
+ * await actorCalled('Esti').attemptsTo(
146
+ * ExecuteScript.async(`
147
+ * var { include, exclude } = arguments[0]
148
+ * var callback = arguments[arguments.length - 1]
149
+ *
150
+ * callback(include[0].innerText)
151
+ * `).withArguments({
152
+ * include: [ MyPage.article() ],
153
+ * exclude: [ MyPage.header() ],
154
+ * })
155
+ * )
156
+ * ```
157
+ *
158
+ * #### Learn more
159
+ * - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
160
+ *
161
+ * @param script
162
+ * The script to be executed
163
+ */
164
+ static async(script: string | Function): ExecuteScriptWithArguments;
165
+ /**
166
+ * Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
167
+ * to execute a synchronous script within the context of the current browser tab.
168
+ *
169
+ * If the script returns a value, it will be made available via [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
170
+ *
171
+ * #### Executing a sync script as string and reading the result
172
+ *
173
+ * ```ts
174
+ * import { actorCalled } from '@serenity-js/core'
175
+ * import { ExecuteScript, LastScriptExecution } from '@serenity-js/web'
176
+ * import { Ensure, includes } from '@serenity-js/assertions'
177
+ *
178
+ * await actorCalled('Joseph')
179
+ * .attemptsTo(
180
+ * ExecuteScript.sync('return navigator.userAgent'),
181
+ * Ensure.that(LastScriptExecution.result<string>(), includes('Chrome')),
182
+ * )
183
+ * ```
184
+ *
185
+ * #### Executing a sync script as function and retrieving the result
186
+ *
187
+ * ```ts
188
+ * import { actorCalled } from '@serenity-js/core'
189
+ * import { By, Enter, ExecuteScript, LastScriptExecution, PageElement } from '@serenity-js/web'
190
+ *
191
+ * const Checkout = {
192
+ * someOfferField: () =>
193
+ * PageElement.located(By.id('offer-code'))
194
+ * .describedAs('offer code')
195
+ *
196
+ * applyOfferCodeField = () =>
197
+ * PageElement.located(By.id('apply-offer-code'))
198
+ * .describedAs('apply offer field')
199
+ * }
200
+ *
201
+ * await actorCalled('Joseph')
202
+ * .attemptsTo(
203
+ * // inject JavaScript to read some property of an element
204
+ * ExecuteScript.sync(function getValue(element) {
205
+ * return element.value;
206
+ * }).withArguments(Checkout.someOfferField()),
207
+ *
208
+ * // use LastScriptExecution.result() to read the value
209
+ * // returned from the injected script
210
+ * // and pass it to another interaction
211
+ * Enter.theValue(LastScriptExecution.result<string>()).into(Checkout.applyOfferCodeField()),
212
+ * )
213
+ * ```
214
+ *
215
+ * #### Passing PageElement arguments to a sync script
216
+ *
217
+ * Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
218
+ * into their corresponding DOM elements.
219
+ *
220
+ * ```ts
221
+ * import { actorCalled } from '@serenity-js/core'
222
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
223
+ *
224
+ * const MyPage = {
225
+ * header: () =>
226
+ * PageElement.located(By.css('h1')).describedAs('header'),
227
+ * }
228
+ *
229
+ * await actorCalled('Esti').attemptsTo(
230
+ * ExecuteScript.sync(function getInnerHtml(element) {
231
+ * return element.innerHTML;
232
+ * }).withArguments(MyPage.header())
233
+ * )
234
+ * ```
235
+ *
236
+ * #### Using nested data structures containing PageElement objects
237
+ *
238
+ * Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
239
+ * contained in nested data structures passed to the script
240
+ * into their corresponding DOM elements.
241
+ *
242
+ * ```ts
243
+ * import { actorCalled } from '@serenity-js/core'
244
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
245
+ *
246
+ * const MyPage = {
247
+ * header: () =>
248
+ * PageElement.located(By.css('h1')).describedAs('header'),
249
+ *
250
+ * article: () =>
251
+ * PageElement.located(By.css('article')).describedAs('article'),
252
+ * }
253
+ *
254
+ * await actorCalled('Esti').attemptsTo(
255
+ * ExecuteScript.async(function getInnerHtml(scope) {
256
+ * return scope.include[0].innerHTML;
257
+ * `).withArguments({
258
+ * include: [ MyPage.article() ],
259
+ * exclude: [ MyPage.header() ],
260
+ * })
261
+ * )
262
+ * ```
263
+ *
264
+ * #### Learn more
265
+ * - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
266
+ *
267
+ * @param script
268
+ * The script to be executed
269
+ */
270
+ static sync(script: string | Function): ExecuteScriptWithArguments;
271
+ }
272
+ /**
273
+ * Allows for a script to be executed to be parametrised.
274
+ *
275
+ * ## Learn more
276
+ * - [`ExecuteScript`](https://serenity-js.org/api/web/class/ExecuteScript/)
277
+ *
278
+ * @group Activities
279
+ */
280
+ export declare abstract class ExecuteScriptWithArguments extends Interaction {
281
+ protected readonly script: string | Function;
282
+ protected readonly args: Array<Answerable<any>>;
283
+ constructor(description: Answerable<string>, script: string | Function, args?: Array<Answerable<any>>);
284
+ /**
285
+ * Instantiates this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/)
286
+ *
287
+ * @param args
288
+ * Arguments to parametrise the script with
289
+ */
290
+ abstract withArguments(...args: Array<Answerable<any>>): Interaction;
291
+ /**
292
+ * @inheritDoc
293
+ */
294
+ performAs(actor: UsesAbilities & CollectsArtifacts & AnswersQuestions): Promise<void>;
295
+ protected abstract executeAs(actor: UsesAbilities & AnswersQuestions, args: any[]): Promise<any>;
296
+ }
297
+ //# sourceMappingURL=ExecuteScript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecuteScript.d.ts","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAMjE;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IAEtB;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW;IAIvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4IG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,0BAA0B;IAOnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwGG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,0BAA0B;CAMrE;AAED;;;;;;;GAOG;AACH,8BAAsB,0BAA2B,SAAQ,WAAW;IAI5D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAC5C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAF/C,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,EACZ,MAAM,EAAE,MAAM,GAAG,QAAQ,EACzB,IAAI,GAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAM;IAKxD;;;;;OAKG;aACa,aAAa,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;IAE3E;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3F,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CACnG"}
@@ -0,0 +1,383 @@
1
+ import { Interaction, LogicError, the } from '@serenity-js/core';
2
+ import { asyncMap } from '@serenity-js/core/io';
3
+ import { Name, TextData } from '@serenity-js/core/model';
4
+ import { BrowseTheWeb } from '../abilities/index.js';
5
+ /**
6
+ * Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
7
+ * to inject a script into the browser and execute it in the context of the current browser tab.
8
+ *
9
+ * ## Learn more
10
+ *
11
+ * - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
12
+ * - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
13
+ *
14
+ * @group Activities
15
+ */
16
+ export class ExecuteScript {
17
+ /**
18
+ * Instantiates a version of this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/)
19
+ * configured to load a script from `sourceUrl`.
20
+ *
21
+ * @param sourceUrl
22
+ * The URL to load the script from
23
+ */
24
+ static from(sourceUrl) {
25
+ return new ExecuteScriptFromUrl(sourceUrl);
26
+ }
27
+ /**
28
+ * Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
29
+ * to execute an asynchronous script within the context of the current browser tab.
30
+ *
31
+ * The script fragment will be executed as the body of an anonymous function.
32
+ * If the script is provided as a function object, that function will be converted to a string for injection
33
+ * into the target window.
34
+ *
35
+ * Any arguments provided in addition to the script will be included as script arguments and may be referenced
36
+ * using the `arguments` object. Arguments may be a `boolean`, `number`, `string`
37
+ * or [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
38
+ * Arrays and objects may also be used as script arguments as long as each item adheres
39
+ * to the types previously mentioned.
40
+ *
41
+ * Unlike executing synchronous JavaScript with [`ExecuteScript.sync`](https://serenity-js.org/api/web/class/ExecuteScript/#sync),
42
+ * scripts executed with this function must explicitly signal they are finished by invoking the provided callback.
43
+ *
44
+ * This callback will always be injected into the executed function as the last argument,
45
+ * and thus may be referenced with `arguments[arguments.length - 1]`.
46
+ *
47
+ * If the script invokes the `callback` with a return value, this will be made available
48
+ * via the [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
49
+ *
50
+ * **Please note** that in order to signal an error in the `script` you need to throw an [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
51
+ * instead of passing it to the callback function.
52
+ *
53
+ * #### Executing an async script
54
+ *
55
+ * ```ts
56
+ * import { actorCalled } from '@serenity-js/core'
57
+ * import { ExecuteScript } from '@serenity-js/web'
58
+ *
59
+ * await actorCalled('Esti').attemptsTo(
60
+ * ExecuteScript.async(`
61
+ * var callback = arguments[arguments.length - 1]
62
+ *
63
+ * // do stuff
64
+ *
65
+ * callback(result)
66
+ * `)
67
+ * )
68
+ * ```
69
+ *
70
+ * #### Executing async script as function
71
+ *
72
+ * ```ts
73
+ * import { actorCalled } from '@serenity-js/core'
74
+ * import { ExecuteScript } from '@serenity-js/web'
75
+ *
76
+ * const MyPage = {
77
+ * header: () =>
78
+ * PageElement.located(By.css('h1')).describedAs('header'),
79
+ * }
80
+ *
81
+ * await actorCalled('Esti').attemptsTo(
82
+ * ExecuteScript.async(function getText(header, callback) {
83
+ * callback(header.innerText)
84
+ * }).withArguments(MyPage.header())
85
+ * )
86
+ * ```
87
+ *
88
+ * #### Passing arguments to an async script
89
+ *
90
+ * ```ts
91
+ * import { actorCalled } from '@serenity-js/core'
92
+ * import { ExecuteScript } from '@serenity-js/web'
93
+ *
94
+ * await actorCalled('Esti').attemptsTo(
95
+ * ExecuteScript.async(`
96
+ * var name = arguments[0];
97
+ * var age = arguments[1];
98
+ * var callback = arguments[arguments.length - 1]
99
+ *
100
+ * // do stuff
101
+ *
102
+ * callback(result)
103
+ * `).withArguments('Bob', 24)
104
+ * )
105
+ * ```
106
+ *
107
+ * #### Passing PageElement arguments to an async script
108
+ *
109
+ * Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
110
+ * into their corresponding DOM elements.
111
+ *
112
+ * ```ts
113
+ * import { actorCalled } from '@serenity-js/core'
114
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
115
+ *
116
+ * const MyPage = {
117
+ * header: () =>
118
+ * PageElement.located(By.css('h1')).describedAs('header'),
119
+ * }
120
+ *
121
+ * await actorCalled('Esti').attemptsTo(
122
+ * ExecuteScript.async(`
123
+ * var header = arguments[0]
124
+ * var callback = arguments[arguments.length - 1]
125
+ *
126
+ * callback(header.innerText)
127
+ * `).withArguments(MyPage.header())
128
+ * )
129
+ * ```
130
+ *
131
+ * #### Using nested data structures containing PageElement objects
132
+ *
133
+ * Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
134
+ * contained in nested data structures passed to the script
135
+ * into their corresponding DOM elements.
136
+ *
137
+ * ```ts
138
+ * import { actorCalled } from '@serenity-js/core'
139
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
140
+ *
141
+ * const MyPage = {
142
+ * header: () =>
143
+ * PageElement.located(By.css('h1')).describedAs('header'),
144
+ *
145
+ * article: () =>
146
+ * PageElement.located(By.css('article')).describedAs('article'),
147
+ * }
148
+ *
149
+ * await actorCalled('Esti').attemptsTo(
150
+ * ExecuteScript.async(`
151
+ * var { include, exclude } = arguments[0]
152
+ * var callback = arguments[arguments.length - 1]
153
+ *
154
+ * callback(include[0].innerText)
155
+ * `).withArguments({
156
+ * include: [ MyPage.article() ],
157
+ * exclude: [ MyPage.header() ],
158
+ * })
159
+ * )
160
+ * ```
161
+ *
162
+ * #### Learn more
163
+ * - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
164
+ *
165
+ * @param script
166
+ * The script to be executed
167
+ */
168
+ static async(script) {
169
+ return new ExecuteAsynchronousScript(`#actor executes an asynchronous script`, script);
170
+ }
171
+ /**
172
+ * Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
173
+ * to execute a synchronous script within the context of the current browser tab.
174
+ *
175
+ * If the script returns a value, it will be made available via [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
176
+ *
177
+ * #### Executing a sync script as string and reading the result
178
+ *
179
+ * ```ts
180
+ * import { actorCalled } from '@serenity-js/core'
181
+ * import { ExecuteScript, LastScriptExecution } from '@serenity-js/web'
182
+ * import { Ensure, includes } from '@serenity-js/assertions'
183
+ *
184
+ * await actorCalled('Joseph')
185
+ * .attemptsTo(
186
+ * ExecuteScript.sync('return navigator.userAgent'),
187
+ * Ensure.that(LastScriptExecution.result<string>(), includes('Chrome')),
188
+ * )
189
+ * ```
190
+ *
191
+ * #### Executing a sync script as function and retrieving the result
192
+ *
193
+ * ```ts
194
+ * import { actorCalled } from '@serenity-js/core'
195
+ * import { By, Enter, ExecuteScript, LastScriptExecution, PageElement } from '@serenity-js/web'
196
+ *
197
+ * const Checkout = {
198
+ * someOfferField: () =>
199
+ * PageElement.located(By.id('offer-code'))
200
+ * .describedAs('offer code')
201
+ *
202
+ * applyOfferCodeField = () =>
203
+ * PageElement.located(By.id('apply-offer-code'))
204
+ * .describedAs('apply offer field')
205
+ * }
206
+ *
207
+ * await actorCalled('Joseph')
208
+ * .attemptsTo(
209
+ * // inject JavaScript to read some property of an element
210
+ * ExecuteScript.sync(function getValue(element) {
211
+ * return element.value;
212
+ * }).withArguments(Checkout.someOfferField()),
213
+ *
214
+ * // use LastScriptExecution.result() to read the value
215
+ * // returned from the injected script
216
+ * // and pass it to another interaction
217
+ * Enter.theValue(LastScriptExecution.result<string>()).into(Checkout.applyOfferCodeField()),
218
+ * )
219
+ * ```
220
+ *
221
+ * #### Passing PageElement arguments to a sync script
222
+ *
223
+ * Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
224
+ * into their corresponding DOM elements.
225
+ *
226
+ * ```ts
227
+ * import { actorCalled } from '@serenity-js/core'
228
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
229
+ *
230
+ * const MyPage = {
231
+ * header: () =>
232
+ * PageElement.located(By.css('h1')).describedAs('header'),
233
+ * }
234
+ *
235
+ * await actorCalled('Esti').attemptsTo(
236
+ * ExecuteScript.sync(function getInnerHtml(element) {
237
+ * return element.innerHTML;
238
+ * }).withArguments(MyPage.header())
239
+ * )
240
+ * ```
241
+ *
242
+ * #### Using nested data structures containing PageElement objects
243
+ *
244
+ * Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
245
+ * contained in nested data structures passed to the script
246
+ * into their corresponding DOM elements.
247
+ *
248
+ * ```ts
249
+ * import { actorCalled } from '@serenity-js/core'
250
+ * import { ExecuteScript, PageElement } from '@serenity-js/web'
251
+ *
252
+ * const MyPage = {
253
+ * header: () =>
254
+ * PageElement.located(By.css('h1')).describedAs('header'),
255
+ *
256
+ * article: () =>
257
+ * PageElement.located(By.css('article')).describedAs('article'),
258
+ * }
259
+ *
260
+ * await actorCalled('Esti').attemptsTo(
261
+ * ExecuteScript.async(function getInnerHtml(scope) {
262
+ * return scope.include[0].innerHTML;
263
+ * `).withArguments({
264
+ * include: [ MyPage.article() ],
265
+ * exclude: [ MyPage.header() ],
266
+ * })
267
+ * )
268
+ * ```
269
+ *
270
+ * #### Learn more
271
+ * - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
272
+ *
273
+ * @param script
274
+ * The script to be executed
275
+ */
276
+ static sync(script) {
277
+ return new ExecuteSynchronousScript(`#actor executes a synchronous script`, script);
278
+ }
279
+ }
280
+ /**
281
+ * Allows for a script to be executed to be parametrised.
282
+ *
283
+ * ## Learn more
284
+ * - [`ExecuteScript`](https://serenity-js.org/api/web/class/ExecuteScript/)
285
+ *
286
+ * @group Activities
287
+ */
288
+ export class ExecuteScriptWithArguments extends Interaction {
289
+ script;
290
+ args;
291
+ constructor(description, script, args = []) {
292
+ super(description, Interaction.callerLocation(5));
293
+ this.script = script;
294
+ this.args = args;
295
+ }
296
+ /**
297
+ * @inheritDoc
298
+ */
299
+ async performAs(actor) {
300
+ const args = await asyncMap(this.args, arg => actor.answer(arg));
301
+ await this.executeAs(actor, args);
302
+ actor.collect(TextData.fromJSON({
303
+ contentType: 'text/javascript;charset=UTF-8',
304
+ data: this.script.toString(),
305
+ }), new Name('Script source'));
306
+ }
307
+ }
308
+ /**
309
+ * @package
310
+ */
311
+ class ExecuteAsynchronousScript extends ExecuteScriptWithArguments {
312
+ withArguments(...args) {
313
+ return new ExecuteAsynchronousScript(args.length > 0
314
+ ? the `#actor executes an asynchronous script with arguments: ${args}`
315
+ : this.toString(), this.script, args);
316
+ }
317
+ async executeAs(actor, args) {
318
+ const page = await BrowseTheWeb.as(actor).currentPage();
319
+ return page.executeAsyncScript(this.script, ...args); // todo: fix types
320
+ }
321
+ }
322
+ /**
323
+ * @package
324
+ *
325
+ * https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html
326
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement
327
+ */
328
+ class ExecuteScriptFromUrl extends Interaction {
329
+ sourceUrl;
330
+ constructor(sourceUrl) {
331
+ super(the `#actor executes a script from ${sourceUrl}`);
332
+ this.sourceUrl = sourceUrl;
333
+ }
334
+ /**
335
+ * @inheritDoc
336
+ */
337
+ async performAs(actor) {
338
+ const page = await BrowseTheWeb.as(actor).currentPage();
339
+ const sourceUrl = await actor.answer(this.sourceUrl);
340
+ return page.executeAsyncScript(
341
+ /* c8 ignore start */
342
+ function executeScriptFromUrl(sourceUrl, callback) {
343
+ const alreadyLoadedScripts = Array.prototype.slice
344
+ .call(document.querySelectorAll('script'))
345
+ .map(script => script.src);
346
+ if (~alreadyLoadedScripts.indexOf(sourceUrl)) {
347
+ return callback('Script from ' + sourceUrl + ' has already been loaded');
348
+ }
349
+ const script = document.createElement('script');
350
+ script.addEventListener('load', function () {
351
+ callback();
352
+ });
353
+ script.addEventListener('error', function () {
354
+ return callback(`Couldn't load script from ${sourceUrl}`);
355
+ });
356
+ script.src = sourceUrl;
357
+ script.async = true;
358
+ document.head.append(script);
359
+ }, sourceUrl
360
+ /* c8 ignore stop */
361
+ )
362
+ .then(errorMessage => {
363
+ if (errorMessage) {
364
+ throw new LogicError(errorMessage);
365
+ }
366
+ });
367
+ }
368
+ }
369
+ /**
370
+ * @package
371
+ */
372
+ class ExecuteSynchronousScript extends ExecuteScriptWithArguments {
373
+ withArguments(...args) {
374
+ return new ExecuteSynchronousScript(args.length > 0
375
+ ? the `#actor executes a synchronous script with arguments: ${args}`
376
+ : this.toString(), this.script, args);
377
+ }
378
+ async executeAs(actor, args) {
379
+ const page = await BrowseTheWeb.as(actor).currentPage();
380
+ return page.executeScript(this.script, ...args); // todo fix type
381
+ }
382
+ }
383
+ //# sourceMappingURL=ExecuteScript.js.map