@serenity-js/protractor 2.33.1 → 3.0.0-rc.11

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 (343) hide show
  1. package/CHANGELOG.md +481 -0
  2. package/lib/adapter/ProtractorFrameworkAdapter.js +5 -0
  3. package/lib/adapter/ProtractorFrameworkAdapter.js.map +1 -1
  4. package/lib/index.d.ts +0 -2
  5. package/lib/index.js +0 -2
  6. package/lib/index.js.map +1 -1
  7. package/lib/screenplay/abilities/{BrowseTheWeb.d.ts → BrowseTheWebWithProtractor.d.ts} +38 -191
  8. package/lib/screenplay/abilities/{BrowseTheWeb.js → BrowseTheWebWithProtractor.js} +129 -251
  9. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -0
  10. package/lib/screenplay/abilities/index.d.ts +1 -1
  11. package/lib/screenplay/abilities/index.js +1 -1
  12. package/lib/screenplay/abilities/index.js.map +1 -1
  13. package/lib/screenplay/index.d.ts +1 -0
  14. package/lib/screenplay/index.js +1 -0
  15. package/lib/screenplay/index.js.map +1 -1
  16. package/lib/screenplay/interactions/UseAngular.js +2 -2
  17. package/lib/screenplay/interactions/UseAngular.js.map +1 -1
  18. package/lib/screenplay/interactions/index.d.ts +0 -19
  19. package/lib/screenplay/interactions/index.js +0 -19
  20. package/lib/screenplay/interactions/index.js.map +1 -1
  21. package/lib/screenplay/models/ProtractorCookie.d.ts +11 -0
  22. package/lib/screenplay/models/ProtractorCookie.js +39 -0
  23. package/lib/screenplay/models/ProtractorCookie.js.map +1 -0
  24. package/lib/screenplay/models/ProtractorFrame.d.ts +10 -0
  25. package/lib/screenplay/models/ProtractorFrame.js +39 -0
  26. package/lib/screenplay/models/ProtractorFrame.js.map +1 -0
  27. package/lib/screenplay/models/ProtractorModalDialog.d.ts +11 -0
  28. package/lib/screenplay/models/ProtractorModalDialog.js +43 -0
  29. package/lib/screenplay/models/ProtractorModalDialog.js.map +1 -0
  30. package/lib/screenplay/models/ProtractorPage.d.ts +26 -0
  31. package/lib/screenplay/models/ProtractorPage.js +98 -0
  32. package/lib/screenplay/models/ProtractorPage.js.map +1 -0
  33. package/lib/screenplay/models/ProtractorPageElement.d.ts +21 -0
  34. package/lib/screenplay/models/ProtractorPageElement.js +230 -0
  35. package/lib/screenplay/models/ProtractorPageElement.js.map +1 -0
  36. package/lib/screenplay/models/index.d.ts +5 -0
  37. package/lib/screenplay/{questions/lists → models}/index.js +5 -1
  38. package/lib/screenplay/models/index.js.map +1 -0
  39. package/lib/screenplay/models/locators/ProtractorLocator.d.ts +9 -0
  40. package/lib/screenplay/models/locators/ProtractorLocator.js +28 -0
  41. package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -0
  42. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.d.ts +5 -0
  43. package/lib/screenplay/{interactions/EnterBuilder.js → models/locators/ProtractorNativeElementRoot.js} +1 -1
  44. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js.map +1 -0
  45. package/lib/screenplay/models/locators/index.d.ts +2 -0
  46. package/lib/{stage/crew → screenplay/models/locators}/index.js +2 -1
  47. package/lib/screenplay/models/locators/index.js.map +1 -0
  48. package/lib/{promiseOf.d.ts → screenplay/promised.d.ts} +1 -1
  49. package/lib/{promiseOf.js → screenplay/promised.js} +4 -4
  50. package/lib/screenplay/promised.js.map +1 -0
  51. package/lib/screenplay/questions/ProtractorParam.d.ts +24 -29
  52. package/lib/screenplay/questions/ProtractorParam.js +26 -33
  53. package/lib/screenplay/questions/ProtractorParam.js.map +1 -1
  54. package/lib/screenplay/questions/index.d.ts +0 -13
  55. package/lib/screenplay/questions/index.js +0 -16
  56. package/lib/screenplay/questions/index.js.map +1 -1
  57. package/lib/screenplay/unpromisedWebElement.d.ts +11 -0
  58. package/lib/screenplay/unpromisedWebElement.js +24 -0
  59. package/lib/screenplay/unpromisedWebElement.js.map +1 -0
  60. package/package.json +19 -20
  61. package/src/adapter/ProtractorFrameworkAdapter.ts +5 -0
  62. package/src/index.ts +0 -2
  63. package/src/screenplay/abilities/{BrowseTheWeb.ts → BrowseTheWebWithProtractor.ts} +148 -263
  64. package/src/screenplay/abilities/index.ts +1 -1
  65. package/src/screenplay/index.ts +1 -0
  66. package/src/screenplay/interactions/UseAngular.ts +3 -3
  67. package/src/screenplay/interactions/index.ts +0 -19
  68. package/src/screenplay/models/ProtractorCookie.ts +41 -0
  69. package/src/screenplay/models/ProtractorFrame.ts +44 -0
  70. package/src/screenplay/models/ProtractorModalDialog.ts +49 -0
  71. package/src/screenplay/models/ProtractorPage.ts +124 -0
  72. package/src/screenplay/models/ProtractorPageElement.ts +285 -0
  73. package/src/screenplay/models/index.ts +6 -0
  74. package/src/screenplay/models/locators/ProtractorLocator.ts +50 -0
  75. package/src/screenplay/models/locators/ProtractorNativeElementRoot.ts +6 -0
  76. package/src/screenplay/models/locators/index.ts +2 -0
  77. package/src/{promiseOf.ts → screenplay/promised.ts} +1 -1
  78. package/src/screenplay/questions/ProtractorParam.ts +29 -38
  79. package/src/screenplay/questions/index.ts +0 -13
  80. package/src/screenplay/unpromisedWebElement.ts +25 -0
  81. package/lib/expectations/ElementFinderExpectation.d.ts +0 -11
  82. package/lib/expectations/ElementFinderExpectation.js +0 -24
  83. package/lib/expectations/ElementFinderExpectation.js.map +0 -1
  84. package/lib/expectations/index.d.ts +0 -6
  85. package/lib/expectations/index.js +0 -19
  86. package/lib/expectations/index.js.map +0 -1
  87. package/lib/expectations/isActive.d.ts +0 -13
  88. package/lib/expectations/isActive.js +0 -19
  89. package/lib/expectations/isActive.js.map +0 -1
  90. package/lib/expectations/isClickable.d.ts +0 -13
  91. package/lib/expectations/isClickable.js +0 -22
  92. package/lib/expectations/isClickable.js.map +0 -1
  93. package/lib/expectations/isEnabled.d.ts +0 -13
  94. package/lib/expectations/isEnabled.js +0 -19
  95. package/lib/expectations/isEnabled.js.map +0 -1
  96. package/lib/expectations/isPresent.d.ts +0 -14
  97. package/lib/expectations/isPresent.js +0 -20
  98. package/lib/expectations/isPresent.js.map +0 -1
  99. package/lib/expectations/isSelected.d.ts +0 -13
  100. package/lib/expectations/isSelected.js +0 -22
  101. package/lib/expectations/isSelected.js.map +0 -1
  102. package/lib/expectations/isVisible.d.ts +0 -13
  103. package/lib/expectations/isVisible.js +0 -25
  104. package/lib/expectations/isVisible.js.map +0 -1
  105. package/lib/promiseOf.js.map +0 -1
  106. package/lib/screenplay/abilities/BrowseTheWeb.js.map +0 -1
  107. package/lib/screenplay/interactions/Accept.d.ts +0 -81
  108. package/lib/screenplay/interactions/Accept.js +0 -95
  109. package/lib/screenplay/interactions/Accept.js.map +0 -1
  110. package/lib/screenplay/interactions/Clear.d.ts +0 -88
  111. package/lib/screenplay/interactions/Clear.js +0 -121
  112. package/lib/screenplay/interactions/Clear.js.map +0 -1
  113. package/lib/screenplay/interactions/Click.d.ts +0 -81
  114. package/lib/screenplay/interactions/Click.js +0 -95
  115. package/lib/screenplay/interactions/Click.js.map +0 -1
  116. package/lib/screenplay/interactions/Close.d.ts +0 -89
  117. package/lib/screenplay/interactions/Close.js +0 -169
  118. package/lib/screenplay/interactions/Close.js.map +0 -1
  119. package/lib/screenplay/interactions/DeleteCookies.d.ts +0 -72
  120. package/lib/screenplay/interactions/DeleteCookies.js +0 -149
  121. package/lib/screenplay/interactions/DeleteCookies.js.map +0 -1
  122. package/lib/screenplay/interactions/Dismiss.d.ts +0 -85
  123. package/lib/screenplay/interactions/Dismiss.js +0 -99
  124. package/lib/screenplay/interactions/Dismiss.js.map +0 -1
  125. package/lib/screenplay/interactions/DoubleClick.d.ts +0 -99
  126. package/lib/screenplay/interactions/DoubleClick.js +0 -121
  127. package/lib/screenplay/interactions/DoubleClick.js.map +0 -1
  128. package/lib/screenplay/interactions/Enter.d.ts +0 -81
  129. package/lib/screenplay/interactions/Enter.js +0 -96
  130. package/lib/screenplay/interactions/Enter.js.map +0 -1
  131. package/lib/screenplay/interactions/EnterBuilder.d.ts +0 -27
  132. package/lib/screenplay/interactions/EnterBuilder.js.map +0 -1
  133. package/lib/screenplay/interactions/ExecuteScript.d.ts +0 -171
  134. package/lib/screenplay/interactions/ExecuteScript.js +0 -291
  135. package/lib/screenplay/interactions/ExecuteScript.js.map +0 -1
  136. package/lib/screenplay/interactions/Hover.d.ts +0 -86
  137. package/lib/screenplay/interactions/Hover.js +0 -103
  138. package/lib/screenplay/interactions/Hover.js.map +0 -1
  139. package/lib/screenplay/interactions/Navigate.d.ts +0 -149
  140. package/lib/screenplay/interactions/Navigate.js +0 -345
  141. package/lib/screenplay/interactions/Navigate.js.map +0 -1
  142. package/lib/screenplay/interactions/Press.d.ts +0 -90
  143. package/lib/screenplay/interactions/Press.js +0 -127
  144. package/lib/screenplay/interactions/Press.js.map +0 -1
  145. package/lib/screenplay/interactions/PressBuilder.d.ts +0 -27
  146. package/lib/screenplay/interactions/PressBuilder.js +0 -3
  147. package/lib/screenplay/interactions/PressBuilder.js.map +0 -1
  148. package/lib/screenplay/interactions/ResizeBrowserWindow.d.ts +0 -69
  149. package/lib/screenplay/interactions/ResizeBrowserWindow.js +0 -144
  150. package/lib/screenplay/interactions/ResizeBrowserWindow.js.map +0 -1
  151. package/lib/screenplay/interactions/RightClick.d.ts +0 -97
  152. package/lib/screenplay/interactions/RightClick.js +0 -113
  153. package/lib/screenplay/interactions/RightClick.js.map +0 -1
  154. package/lib/screenplay/interactions/Scroll.d.ts +0 -83
  155. package/lib/screenplay/interactions/Scroll.js +0 -98
  156. package/lib/screenplay/interactions/Scroll.js.map +0 -1
  157. package/lib/screenplay/interactions/Select.d.ts +0 -212
  158. package/lib/screenplay/interactions/Select.js +0 -342
  159. package/lib/screenplay/interactions/Select.js.map +0 -1
  160. package/lib/screenplay/interactions/SelectBuilder.d.ts +0 -33
  161. package/lib/screenplay/interactions/SelectBuilder.js +0 -3
  162. package/lib/screenplay/interactions/SelectBuilder.js.map +0 -1
  163. package/lib/screenplay/interactions/Switch.d.ts +0 -210
  164. package/lib/screenplay/interactions/Switch.js +0 -345
  165. package/lib/screenplay/interactions/Switch.js.map +0 -1
  166. package/lib/screenplay/interactions/TakeScreenshot.d.ts +0 -67
  167. package/lib/screenplay/interactions/TakeScreenshot.js +0 -86
  168. package/lib/screenplay/interactions/TakeScreenshot.js.map +0 -1
  169. package/lib/screenplay/interactions/Wait.d.ts +0 -147
  170. package/lib/screenplay/interactions/Wait.js +0 -247
  171. package/lib/screenplay/interactions/Wait.js.map +0 -1
  172. package/lib/screenplay/interactions/WaitBuilder.d.ts +0 -33
  173. package/lib/screenplay/interactions/WaitBuilder.js +0 -3
  174. package/lib/screenplay/interactions/WaitBuilder.js.map +0 -1
  175. package/lib/screenplay/questions/Attribute.d.ts +0 -29
  176. package/lib/screenplay/questions/Attribute.js +0 -56
  177. package/lib/screenplay/questions/Attribute.js.map +0 -1
  178. package/lib/screenplay/questions/Browser.d.ts +0 -47
  179. package/lib/screenplay/questions/Browser.js +0 -55
  180. package/lib/screenplay/questions/Browser.js.map +0 -1
  181. package/lib/screenplay/questions/CSSClasses.d.ts +0 -94
  182. package/lib/screenplay/questions/CSSClasses.js +0 -118
  183. package/lib/screenplay/questions/CSSClasses.js.map +0 -1
  184. package/lib/screenplay/questions/Cookie.d.ts +0 -9
  185. package/lib/screenplay/questions/Cookie.js +0 -65
  186. package/lib/screenplay/questions/Cookie.js.map +0 -1
  187. package/lib/screenplay/questions/LastScriptExecution.d.ts +0 -14
  188. package/lib/screenplay/questions/LastScriptExecution.js +0 -22
  189. package/lib/screenplay/questions/LastScriptExecution.js.map +0 -1
  190. package/lib/screenplay/questions/ModalDialog.d.ts +0 -120
  191. package/lib/screenplay/questions/ModalDialog.js +0 -142
  192. package/lib/screenplay/questions/ModalDialog.js.map +0 -1
  193. package/lib/screenplay/questions/Pick.d.ts +0 -72
  194. package/lib/screenplay/questions/Pick.js +0 -254
  195. package/lib/screenplay/questions/Pick.js.map +0 -1
  196. package/lib/screenplay/questions/Selected.d.ts +0 -185
  197. package/lib/screenplay/questions/Selected.js +0 -254
  198. package/lib/screenplay/questions/Selected.js.map +0 -1
  199. package/lib/screenplay/questions/Value.d.ts +0 -47
  200. package/lib/screenplay/questions/Value.js +0 -67
  201. package/lib/screenplay/questions/Value.js.map +0 -1
  202. package/lib/screenplay/questions/Website.d.ts +0 -15
  203. package/lib/screenplay/questions/Website.js +0 -25
  204. package/lib/screenplay/questions/Website.js.map +0 -1
  205. package/lib/screenplay/questions/Window.d.ts +0 -23
  206. package/lib/screenplay/questions/Window.js +0 -28
  207. package/lib/screenplay/questions/Window.js.map +0 -1
  208. package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.d.ts +0 -89
  209. package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.js +0 -138
  210. package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.js.map +0 -1
  211. package/lib/screenplay/questions/lists/index.d.ts +0 -1
  212. package/lib/screenplay/questions/lists/index.js.map +0 -1
  213. package/lib/screenplay/questions/targets/Target.d.ts +0 -168
  214. package/lib/screenplay/questions/targets/Target.js +0 -190
  215. package/lib/screenplay/questions/targets/Target.js.map +0 -1
  216. package/lib/screenplay/questions/targets/TargetElement.d.ts +0 -50
  217. package/lib/screenplay/questions/targets/TargetElement.js +0 -62
  218. package/lib/screenplay/questions/targets/TargetElement.js.map +0 -1
  219. package/lib/screenplay/questions/targets/TargetElements.d.ts +0 -102
  220. package/lib/screenplay/questions/targets/TargetElements.js +0 -124
  221. package/lib/screenplay/questions/targets/TargetElements.js.map +0 -1
  222. package/lib/screenplay/questions/targets/TargetNestedElement.d.ts +0 -49
  223. package/lib/screenplay/questions/targets/TargetNestedElement.js +0 -61
  224. package/lib/screenplay/questions/targets/TargetNestedElement.js.map +0 -1
  225. package/lib/screenplay/questions/targets/TargetNestedElements.d.ts +0 -101
  226. package/lib/screenplay/questions/targets/TargetNestedElements.js +0 -123
  227. package/lib/screenplay/questions/targets/TargetNestedElements.js.map +0 -1
  228. package/lib/screenplay/questions/targets/builders.d.ts +0 -8
  229. package/lib/screenplay/questions/targets/builders.js +0 -3
  230. package/lib/screenplay/questions/targets/builders.js.map +0 -1
  231. package/lib/screenplay/questions/targets/index.d.ts +0 -5
  232. package/lib/screenplay/questions/targets/index.js +0 -18
  233. package/lib/screenplay/questions/targets/index.js.map +0 -1
  234. package/lib/screenplay/questions/targets/override.d.ts +0 -7
  235. package/lib/screenplay/questions/targets/override.js +0 -21
  236. package/lib/screenplay/questions/targets/override.js.map +0 -1
  237. package/lib/screenplay/questions/text/Text.d.ts +0 -41
  238. package/lib/screenplay/questions/text/Text.js +0 -50
  239. package/lib/screenplay/questions/text/Text.js.map +0 -1
  240. package/lib/screenplay/questions/text/TextOfMultipleElements.d.ts +0 -23
  241. package/lib/screenplay/questions/text/TextOfMultipleElements.js +0 -37
  242. package/lib/screenplay/questions/text/TextOfMultipleElements.js.map +0 -1
  243. package/lib/screenplay/questions/text/TextOfSingleElement.d.ts +0 -23
  244. package/lib/screenplay/questions/text/TextOfSingleElement.js +0 -35
  245. package/lib/screenplay/questions/text/TextOfSingleElement.js.map +0 -1
  246. package/lib/screenplay/questions/text/index.d.ts +0 -1
  247. package/lib/screenplay/questions/text/index.js +0 -14
  248. package/lib/screenplay/questions/text/index.js.map +0 -1
  249. package/lib/screenplay/withAnswerOf.d.ts +0 -8
  250. package/lib/screenplay/withAnswerOf.js +0 -18
  251. package/lib/screenplay/withAnswerOf.js.map +0 -1
  252. package/lib/stage/crew/index.d.ts +0 -1
  253. package/lib/stage/crew/index.js.map +0 -1
  254. package/lib/stage/crew/photographer/Photographer.d.ts +0 -83
  255. package/lib/stage/crew/photographer/Photographer.js +0 -102
  256. package/lib/stage/crew/photographer/Photographer.js.map +0 -1
  257. package/lib/stage/crew/photographer/index.d.ts +0 -2
  258. package/lib/stage/crew/photographer/index.js +0 -15
  259. package/lib/stage/crew/photographer/index.js.map +0 -1
  260. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +0 -28
  261. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +0 -65
  262. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +0 -1
  263. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +0 -18
  264. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +0 -30
  265. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +0 -1
  266. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +0 -17
  267. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +0 -28
  268. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +0 -1
  269. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +0 -19
  270. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +0 -28
  271. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +0 -1
  272. package/lib/stage/crew/photographer/strategies/index.d.ts +0 -4
  273. package/lib/stage/crew/photographer/strategies/index.js +0 -17
  274. package/lib/stage/crew/photographer/strategies/index.js.map +0 -1
  275. package/lib/stage/index.d.ts +0 -1
  276. package/lib/stage/index.js +0 -14
  277. package/lib/stage/index.js.map +0 -1
  278. package/src/expectations/ElementFinderExpectation.ts +0 -29
  279. package/src/expectations/index.ts +0 -6
  280. package/src/expectations/isActive.ts +0 -24
  281. package/src/expectations/isClickable.ts +0 -20
  282. package/src/expectations/isEnabled.ts +0 -18
  283. package/src/expectations/isPresent.ts +0 -19
  284. package/src/expectations/isSelected.ts +0 -23
  285. package/src/expectations/isVisible.ts +0 -27
  286. package/src/screenplay/interactions/Accept.ts +0 -95
  287. package/src/screenplay/interactions/Clear.ts +0 -130
  288. package/src/screenplay/interactions/Click.ts +0 -96
  289. package/src/screenplay/interactions/Close.ts +0 -184
  290. package/src/screenplay/interactions/DeleteCookies.ts +0 -154
  291. package/src/screenplay/interactions/Dismiss.ts +0 -99
  292. package/src/screenplay/interactions/DoubleClick.ts +0 -124
  293. package/src/screenplay/interactions/Enter.ts +0 -104
  294. package/src/screenplay/interactions/EnterBuilder.ts +0 -29
  295. package/src/screenplay/interactions/ExecuteScript.ts +0 -325
  296. package/src/screenplay/interactions/Hover.ts +0 -106
  297. package/src/screenplay/interactions/Navigate.ts +0 -363
  298. package/src/screenplay/interactions/Press.ts +0 -137
  299. package/src/screenplay/interactions/PressBuilder.ts +0 -29
  300. package/src/screenplay/interactions/ResizeBrowserWindow.ts +0 -148
  301. package/src/screenplay/interactions/RightClick.ts +0 -114
  302. package/src/screenplay/interactions/Scroll.ts +0 -99
  303. package/src/screenplay/interactions/Select.ts +0 -402
  304. package/src/screenplay/interactions/SelectBuilder.ts +0 -35
  305. package/src/screenplay/interactions/Switch.ts +0 -393
  306. package/src/screenplay/interactions/TakeScreenshot.ts +0 -89
  307. package/src/screenplay/interactions/Wait.ts +0 -267
  308. package/src/screenplay/interactions/WaitBuilder.ts +0 -35
  309. package/src/screenplay/questions/Attribute.ts +0 -67
  310. package/src/screenplay/questions/Browser.ts +0 -55
  311. package/src/screenplay/questions/CSSClasses.ts +0 -121
  312. package/src/screenplay/questions/Cookie.ts +0 -70
  313. package/src/screenplay/questions/LastScriptExecution.ts +0 -21
  314. package/src/screenplay/questions/ModalDialog.ts +0 -149
  315. package/src/screenplay/questions/Pick.ts +0 -334
  316. package/src/screenplay/questions/Selected.ts +0 -268
  317. package/src/screenplay/questions/Value.ts +0 -73
  318. package/src/screenplay/questions/Website.ts +0 -27
  319. package/src/screenplay/questions/Window.ts +0 -29
  320. package/src/screenplay/questions/lists/ElementArrayFinderListAdapter.ts +0 -158
  321. package/src/screenplay/questions/lists/index.ts +0 -1
  322. package/src/screenplay/questions/targets/Target.ts +0 -198
  323. package/src/screenplay/questions/targets/TargetElement.ts +0 -70
  324. package/src/screenplay/questions/targets/TargetElements.ts +0 -142
  325. package/src/screenplay/questions/targets/TargetNestedElement.ts +0 -71
  326. package/src/screenplay/questions/targets/TargetNestedElements.ts +0 -142
  327. package/src/screenplay/questions/targets/builders.ts +0 -10
  328. package/src/screenplay/questions/targets/index.ts +0 -5
  329. package/src/screenplay/questions/targets/override.ts +0 -17
  330. package/src/screenplay/questions/text/Text.ts +0 -55
  331. package/src/screenplay/questions/text/TextOfMultipleElements.ts +0 -40
  332. package/src/screenplay/questions/text/TextOfSingleElement.ts +0 -37
  333. package/src/screenplay/questions/text/index.ts +0 -1
  334. package/src/screenplay/withAnswerOf.ts +0 -19
  335. package/src/stage/crew/index.ts +0 -1
  336. package/src/stage/crew/photographer/Photographer.ts +0 -108
  337. package/src/stage/crew/photographer/index.ts +0 -2
  338. package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +0 -102
  339. package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +0 -28
  340. package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +0 -26
  341. package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +0 -26
  342. package/src/stage/crew/photographer/strategies/index.ts +0 -4
  343. package/src/stage/index.ts +0 -1
@@ -1,96 +0,0 @@
1
- import { AnswersQuestions, Interaction, Question, UsesAbilities } from '@serenity-js/core';
2
- import { formatted } from '@serenity-js/core/lib/io';
3
- import { ElementFinder } from 'protractor';
4
-
5
- import { withAnswerOf } from '../withAnswerOf';
6
-
7
- /**
8
- * @desc
9
- * Instructs the {@link @serenity-js/core/lib/screenplay/actor~Actor} to
10
- * [click](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event) on a given Web element.
11
- *
12
- * @example <caption>Example widget</caption>
13
- * <form>
14
- * <input type="text" name="example" id="example" />
15
- * </form>
16
- *
17
- * @example <caption>Lean Page Object describing the widget</caption>
18
- * import { Target } from '@serenity-js/protractor';
19
- * import { by } from 'protractor';
20
- *
21
- * class Form {
22
- * static exampleInput = Target.the('example input')
23
- * .located(by.id('example'));
24
- * }
25
- *
26
- * @example <caption>Clicking on an element</caption>
27
- * import { actorCalled } from '@serenity-js/core';
28
- * import { BrowseTheWeb, Click, isSelected } from '@serenity-js/protractor';
29
- * import { Ensure } from '@serenity-js/assertions';
30
- * import { protractor } from 'protractor';
31
- *
32
- * actorCalled('Chloé')
33
- * .whoCan(BrowseTheWeb.using(protractor.browser))
34
- * .attemptsTo(
35
- * Click.on(Form.exampleInput),
36
- * Ensure.that(Form.exampleInput, isSelected()),
37
- * );
38
- *
39
- * @see {@link BrowseTheWeb}
40
- * @see {@link Target}
41
- * @see {@link @serenity-js/assertions~Ensure}
42
- * @see {@link isSelected}
43
- *
44
- * @extends {@serenity-js/core/lib/screenplay~Interaction}
45
- */
46
- export class Click extends Interaction {
47
-
48
- /**
49
- * @desc
50
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
51
- *
52
- * @param {Question<ElementFinder> | ElementFinder} target
53
- * The element to be clicked on
54
- *
55
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
56
- */
57
- static on(target: Question<ElementFinder> | ElementFinder): Interaction {
58
- return new Click(target);
59
- }
60
-
61
- /**
62
- * @param {Question<ElementFinder> | ElementFinder} target
63
- * The element to be clicked on
64
- */
65
- constructor(private readonly target: Question<ElementFinder> | ElementFinder) {
66
- super();
67
- }
68
-
69
- /**
70
- * @desc
71
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
72
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
73
- *
74
- * @param {UsesAbilities & AnswersQuestions} actor
75
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
76
- *
77
- * @returns {PromiseLike<void>}
78
- *
79
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
80
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
81
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
82
- */
83
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
84
- return withAnswerOf(actor, this.target, (elf: ElementFinder) => elf.click());
85
- }
86
-
87
- /**
88
- * @desc
89
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
90
- *
91
- * @returns {string}
92
- */
93
- toString(): string {
94
- return formatted `#actor clicks on ${ this.target }`;
95
- }
96
- }
@@ -1,184 +0,0 @@
1
- import { AnswersQuestions, Interaction, UsesAbilities } from '@serenity-js/core';
2
-
3
- import { BrowseTheWeb } from '../abilities';
4
-
5
- /**
6
- * @desc
7
- * Instructs the {@link @serenity-js/core/lib/screenplay/actor~Actor} to
8
- * close browser tabs or windows.
9
- *
10
- * @example <caption>Closing a browser tab or window</caption>
11
- * import { actorCalled } from '@serenity-js/core';
12
- * import { BrowseTheWeb, Click, Close, Switch } from '@serenity-js/protractor';
13
- * import { protractor } from 'protractor';
14
- *
15
- * actorCalled('Caleb')
16
- * .whoCan(BrowseTheWeb.using(protractor.browser))
17
- * .attemptsTo(
18
- * Click.on(someLinkThatOpensANewWindow),
19
- *
20
- * Switch.toNewWindow().and(
21
- * // perform activities in the context of the new window
22
- * Close.currentWindow(),
23
- * ),
24
- * );
25
- *
26
- * @example <caption>Closing any new windows after a Jasmine test</caption>
27
- * import 'jasmine';
28
- *
29
- * import { actorInTheSpotlight } from '@serenity-js/core';
30
- * import { Close } from '@serenity-js/protractor';
31
- *
32
- * after(() =>
33
- * actorInTheSpotlight().attemptsTo(
34
- * Close.anyNewWindows(),
35
- * ));
36
- *
37
- * @example <caption>Closing any new windows after a Mocha test</caption>
38
- * import 'mocha';
39
- *
40
- * import { actorInTheSpotlight } from '@serenity-js/core';
41
- * import { Close } from '@serenity-js/protractor';
42
- *
43
- * after(() =>
44
- * actorInTheSpotlight().attemptsTo(
45
- * Close.anyNewWindows(),
46
- * ));
47
- *
48
- * @example <caption>Closing any new windows after a Cucumber scenario</caption>
49
- * import { actorInTheSpotlight } from '@serenity-js/core';
50
- * import { Close } from '@serenity-js/protractor';
51
- * import { After } from 'cucumber';
52
- *
53
- * After(() =>
54
- * actorInTheSpotlight().attemptsTo(
55
- * Close.anyNewWindows(),
56
- * ));
57
- *
58
- * @see {@link Switch}
59
- */
60
- export class Close {
61
-
62
- /**
63
- * @desc
64
- * Closes any windows other than the original one that
65
- * the {@link @serenity-js/core/lib/screenplay/actor~Actor}
66
- * has {@link Navigate}d to.
67
- *
68
- * When the windows are closed, it switches the context
69
- * back to the original window.
70
- *
71
- * @static
72
- * @returns {@link @serenity-js/core/lib/screenplay~Interaction}
73
- *
74
- * @see {@link Switch}
75
- */
76
- static anyNewWindows(): Interaction {
77
- return new CloseWindowsOtherThan(actor => BrowseTheWeb.as(actor).getOriginalWindowHandle(), `#actor closes any new windows`);
78
- }
79
-
80
- /**
81
- * @desc
82
- * Closes the currently focused browser window.
83
- *
84
- * **Please note** that this interaction should be used to close
85
- * pop-up windows or any new windows/tabs opened during the test
86
- * rather than the _main_ window, which is managed by Protractor.
87
- *
88
- * See tests for usage examples.
89
- *
90
- * @static
91
- * @returns {@link @serenity-js/core/lib/screenplay~Interaction}
92
- *
93
- * @see {@link Switch}
94
- */
95
- static currentWindow(): Interaction {
96
- return new CloseCurrentWindow();
97
- }
98
- }
99
-
100
- /**
101
- * @package
102
- */
103
- class CloseWindowsOtherThan extends Interaction {
104
- constructor(
105
- private readonly windowToKeepBy: (actor: UsesAbilities & AnswersQuestions) => Promise<string>,
106
- private readonly description: string = `#actor closes several windows`,
107
- ) {
108
- super();
109
- }
110
-
111
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
112
- return this.windowToKeepBy(actor)
113
- .then(windowToKeep => this.windowsOtherThan(windowToKeep, actor)
114
- .then(windowsToClose => this.closeAll(windowsToClose, actor))
115
- .then(() => this.switchTo(windowToKeep, actor)),
116
- );
117
- }
118
-
119
- toString(): string {
120
- return this.description;
121
- }
122
-
123
- /**
124
- * @param {string} windowToKeep
125
- * @param {UsesAbilities & AnswersQuestions} actor
126
- * @private
127
- */
128
- private windowsOtherThan(windowToKeep: string, actor: UsesAbilities & AnswersQuestions) {
129
- return BrowseTheWeb.as(actor).getAllWindowHandles()
130
- .then(allWindows =>
131
- this.isDefined(windowToKeep) && allWindows.length > 1
132
- ? allWindows.filter(handle => handle !== windowToKeep)
133
- : []
134
- )
135
- }
136
-
137
- /**
138
- * @param {string[]} windows
139
- * @param {UsesAbilities & AnswersQuestions} actor
140
- * @private
141
- */
142
- private closeAll(windows: string[], actor: UsesAbilities & AnswersQuestions) {
143
- return windows.reduce(
144
- (previous, handle) => {
145
- return previous
146
- .then(() => BrowseTheWeb.as(actor).switchToWindow(handle))
147
- .then(() => BrowseTheWeb.as(actor).closeCurrentWindow());
148
- },
149
- Promise.resolve()
150
- );
151
- }
152
-
153
- /**
154
- * @param {string} window
155
- * @param {UsesAbilities & AnswersQuestions} actor
156
- * @private
157
- */
158
- private switchTo(window: string, actor: UsesAbilities & AnswersQuestions): Promise<void> {
159
- return this.isDefined(window)
160
- ? BrowseTheWeb.as(actor).switchToWindow(window)
161
- : Promise.resolve();
162
- }
163
-
164
- /**
165
- * @param {any} value
166
- * @private
167
- */
168
- private isDefined(value: any) {
169
- return value !== undefined && value !== null;
170
- }
171
- }
172
-
173
- /**
174
- * @package
175
- */
176
- class CloseCurrentWindow extends Interaction {
177
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
178
- return BrowseTheWeb.as(actor).closeCurrentWindow();
179
- }
180
-
181
- toString(): string {
182
- return `#actor closes current browser window`;
183
- }
184
- }
@@ -1,154 +0,0 @@
1
- import { Answerable, AnswersQuestions, Interaction, UsesAbilities } from '@serenity-js/core';
2
- import { formatted } from '@serenity-js/core/lib/io';
3
-
4
- import { promiseOf } from '../../promiseOf';
5
- import { BrowseTheWeb } from '../abilities';
6
-
7
- /**
8
- * @desc
9
- * Instructs the {@link @serenity-js/core/lib/screenplay/actor~Actor} to
10
- * remove cookies from the browser.
11
- *
12
- * @example <caption>Removing a single cookie</caption>
13
- * import { actorCalled } from '@serenity-js/core';
14
- * import { BrowseTheWeb, Navigate, DeleteCookies } from '@serenity-js/protractor';
15
- * import { protractor } from 'protractor';
16
- *
17
- * actorCalled('Sid')
18
- * .whoCan(BrowseTheWeb.using(protractor.browser))
19
- * .attemptsTo(
20
- * Navigate.to('/login'),
21
- * DeleteCookies.called('jwt_token'),
22
- * Navigate.reloadPage(),
23
- * );
24
- *
25
- * @example <caption>Removing all cookies before each Jasmine test</caption>
26
- * import 'jasmine';
27
- *
28
- * import { actorInTheSpotlight } from '@serenity-js/core';
29
- * import { DeleteCookies } from '@serenity-js/protractor';
30
- *
31
- * before(() =>
32
- * actorInTheSpotlight().attemptsTo(
33
- * DeleteCookies.all(),
34
- * ));
35
- *
36
- * @example <caption>Removing all cookies before each Mocha test</caption>
37
- * import 'mocha';
38
- *
39
- * import { actorInTheSpotlight } from '@serenity-js/core';
40
- * import { DeleteCookies } from '@serenity-js/protractor';
41
- *
42
- * before(() =>
43
- * actorInTheSpotlight().attemptsTo(
44
- * DeleteCookies.all(),
45
- * ));
46
- *
47
- * @example <caption>Removing all cookies before each Cucumber scenario</caption>
48
- * import { actorInTheSpotlight } from '@serenity-js/core';
49
- * import { DeleteCookies } from '@serenity-js/protractor';
50
- * import { Before } from 'cucumber';
51
- *
52
- * Before(() =>
53
- * actorInTheSpotlight().attemptsTo(
54
- * DeleteCookies.all(),
55
- * ));
56
- *
57
- * @see {@link Navigate}
58
- */
59
- export class DeleteCookies {
60
-
61
- /**
62
- * @desc
63
- * Removes a single cookie identified by `cookieName`.
64
- *
65
- * @param {Answerable<string>} cookieName
66
- * The name of the cookie to be deleted
67
- *
68
- * @returns {@link @serenity-js/core/lib/screenplay~Interaction}
69
- */
70
- static called(cookieName: Answerable<string>): Interaction {
71
- return new DeleteCookieCalled(cookieName);
72
- }
73
-
74
- /**
75
- * @desc
76
- * Removes any cookies set.
77
- *
78
- * @returns {@link @serenity-js/core/lib/screenplay~Interaction}
79
- */
80
- static all(): Interaction {
81
- return new DeletesAllCookies();
82
- }
83
- }
84
-
85
- /**
86
- * @package
87
- */
88
- class DeleteCookieCalled implements Interaction {
89
- constructor(private readonly name: Answerable<string>) {
90
- }
91
-
92
- /**
93
- * @desc
94
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
95
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
96
- *
97
- * @param {UsesAbilities & AnswersQuestions} actor
98
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
99
- *
100
- * @returns {PromiseLike<void>}
101
- *
102
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
103
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
104
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
105
- */
106
- performAs(actor: UsesAbilities & AnswersQuestions): Promise<void> {
107
- return actor.answer(this.name)
108
- .then(name => BrowseTheWeb.as(actor).manage().deleteCookie(name));
109
- }
110
-
111
- /**
112
- * @desc
113
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
114
- *
115
- * @returns {string}
116
- */
117
- toString(): string {
118
- return formatted `#actor deletes the "${ this.name }" cookie`;
119
- }
120
- }
121
-
122
- /**
123
- * @package
124
- */
125
- class DeletesAllCookies implements Interaction {
126
-
127
- /**
128
- * @desc
129
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
130
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
131
- *
132
- * @param {UsesAbilities & AnswersQuestions} actor
133
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
134
- *
135
- * @returns {PromiseLike<void>}
136
- *
137
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
138
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
139
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
140
- */
141
- performAs(actor: UsesAbilities & AnswersQuestions): Promise<void> {
142
- return promiseOf(BrowseTheWeb.as(actor).manage().deleteAllCookies());
143
- }
144
-
145
- /**
146
- * @desc
147
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
148
- *
149
- * @returns {string}
150
- */
151
- toString(): string {
152
- return `#actor deletes all cookies`;
153
- }
154
- }
@@ -1,99 +0,0 @@
1
- import { AnswersQuestions, Interaction, Question, UsesAbilities } from '@serenity-js/core';
2
- import { formatted } from '@serenity-js/core/lib/io';
3
- import { AlertPromise } from 'selenium-webdriver';
4
-
5
- /**
6
- * @desc
7
- * Instructs the {@link @serenity-js/core/lib/screenplay/actor~Actor} to
8
- * dismiss a {@link ModalDialog}.
9
- *
10
- * @example <caption>Example widget</caption>
11
- * <button
12
- * data-test="trigger"
13
- * onclick="alert('hello!')">Trigger Alert</button>
14
- *
15
- * @example <caption>Lean Page Object describing the widget</caption>
16
- * import { Target } from '@serenity-js/protractor';
17
- * import { by } from 'protractor';
18
- *
19
- * class Widget {
20
- * static trigger = Target.the('trigger button')
21
- * .located(by.css('[data-test="trigger"]'));
22
- * }
23
- *
24
- * @example <caption>Dismissing a modal dialog window</caption>
25
- * import { actorCalled } from '@serenity-js/core';
26
- * import { BrowseTheWeb, Click, Dismiss, ModalDialog } from '@serenity-js/protractor';
27
- * import { protractor } from 'protractor';
28
- *
29
- * actorCalled('Nick')
30
- * .whoCan(BrowseTheWeb.using(protractor.browser))
31
- * .attemptsTo(
32
- * Click.on(Widget.trigger),
33
- * Dismiss.the(ModalDialog.window()),
34
- * );
35
- *
36
- * @extends {@serenity-js/core/lib/screenplay~Interaction}
37
- *
38
- * @see {@link Accept}
39
- * @see {@link ModalDialog}
40
- */
41
- export class Dismiss extends Interaction {
42
-
43
- /**
44
- * @desc
45
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}
46
- * with a {@link ModalDialog.window} the {@link @serenity-js/core/lib/screenplay/actor~Actor}
47
- * will dismiss.
48
- *
49
- * @param {@serenity-js/core/lib/screenplay~Question<AlertPromise> | AlertPromise} modalDialogWindow
50
- * The modal dialog window to dismiss
51
- *
52
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
53
- *
54
- * @see {@link ModalDialog.window}
55
- * @see {@link @serenity-js/core/lib/screenplay~Question}
56
- */
57
- static the(modalDialogWindow: Question<AlertPromise> | AlertPromise): Interaction {
58
- return new Dismiss(modalDialogWindow);
59
- }
60
-
61
- /**
62
- * @param {@serenity-js/core/lib/screenplay~Question<AlertPromise> | AlertPromise} modalDialogWindow
63
- * The modal dialog window to dismiss
64
- *
65
- * @see {@link ModalDialog.window}
66
- */
67
- constructor(private readonly modalDialogWindow: Question<AlertPromise> | AlertPromise) {
68
- super();
69
- }
70
-
71
- /**
72
- * @desc
73
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
74
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
75
- *
76
- * @param {UsesAbilities & AnswersQuestions} actor
77
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
78
- *
79
- * @returns {PromiseLike<void>}
80
- *
81
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
82
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
83
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
84
- */
85
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
86
- return actor.answer(this.modalDialogWindow)
87
- .then(alert => alert.dismiss());
88
- }
89
-
90
- /**
91
- * @desc
92
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
93
- *
94
- * @returns {string}
95
- */
96
- toString(): string {
97
- return formatted `#actor dismisses ${ this.modalDialogWindow }`;
98
- }
99
- }
@@ -1,124 +0,0 @@
1
- import { AnswersQuestions, Interaction, Question, UsesAbilities } from '@serenity-js/core';
2
- import { formatted } from '@serenity-js/core/lib/io';
3
- import { ElementFinder } from 'protractor';
4
-
5
- import { BrowseTheWeb } from '../abilities';
6
- import { withAnswerOf } from '../withAnswerOf';
7
-
8
- /**
9
- * @desc
10
- * Instructs the {@link @serenity-js/core/lib/screenplay/actor~Actor} to
11
- * perform a double-click on a given Web element.
12
- *
13
- * @example <caption>Example widget</caption>
14
- * <!--
15
- * The editor shows up when the user double-clicks
16
- * on one of the properties of their profile
17
- * and let's them change the value of that property.
18
- * -->
19
- * <div id="user-profile">
20
- * <ul>
21
- * <li id="display-name" ondblclick="edit(this)">User12345</li>
22
- * <li id="email-address" ondblclick="edit(this)">tester@example.org</li>
23
- * </ul>
24
- * <form id="editor" class="hidden">
25
- * <input type="text" value="" />
26
- * </form>
27
- * </div>
28
- *
29
- * @example <caption>Lean Page Object describing the widget</caption>
30
- * import { Target } from '@serenity-js/protractor';
31
- * import { by } from 'protractor';
32
- *
33
- * class UserProfile {
34
- * static displayName = Target.the('display name')
35
- * .located(by.id('display-name'));
36
- * static emailAddress = Target.the('email address')
37
- * .located(by.id('email-address'));
38
- * static editor = Target.the('editor')
39
- * .located(by.id('editor'));
40
- * }
41
- *
42
- * @example <caption>Double-clicking on an element</caption>
43
- * import { actorCalled } from '@serenity-js/core';
44
- * import { BrowseTheWeb, DoubleClick, isVisible, Enter, Text, Wait } from '@serenity-js/protractor';
45
- * import { Ensure, equals, not } from '@serenity-js/assertions';
46
- * import { protractor, Key } from 'protractor';
47
- *
48
- * actorCalled('Dorothy')
49
- * .whoCan(BrowseTheWeb.using(protractor.browser))
50
- * .attemptsTo(
51
- * DoubleClick.on(UserProfile.displayName),
52
- * Wait.until(UserProfile.editor, isVisible()),
53
- *
54
- * Enter.theValue('New username').into(UserProfile.editor),
55
- * Press.the(Key.ENTER).in(UserProfile.editor),
56
- *
57
- * Ensure.that(Text.of(UserProfile.displayName), equals('New username')),
58
- * Ensure.that(UserProfile.editor, not(isVisible()))
59
- * );
60
- *
61
- * @see {@link Target}
62
- *
63
- * @extends {@serenity-js/core/lib/screenplay~Interaction}
64
- */
65
- export class DoubleClick extends Interaction {
66
-
67
- /**
68
- * @desc
69
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
70
- *
71
- * @param {Question<ElementFinder> | ElementFinder} target
72
- * The element to be double-clicked on
73
- *
74
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
75
- */
76
- static on(target: Question<ElementFinder> | ElementFinder): Interaction {
77
- return new DoubleClick(target);
78
- }
79
-
80
- /**
81
- * @param {Question<ElementFinder> | ElementFinder} target
82
- * The element to be double-clicked on
83
- */
84
- constructor(private readonly target: Question<ElementFinder> | ElementFinder) {
85
- super();
86
- }
87
-
88
- /**
89
- * @desc
90
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
91
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
92
- *
93
- * @param {UsesAbilities & AnswersQuestions} actor
94
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
95
- *
96
- * @returns {PromiseLike<void>}
97
- *
98
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
99
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
100
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
101
- */
102
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
103
- // Since the deprecation of Webdriver's ControlFlow,
104
- // Protractor's doubleClick might behave incorrectly when promises are used.
105
- // The mouseMove/doubleClick combo works around that problem.
106
- // See https://github.com/angular/protractor/issues/4578
107
-
108
- return withAnswerOf(actor, this.target, (elf: ElementFinder) =>
109
- BrowseTheWeb.as(actor).actions()
110
- .mouseMove(elf)
111
- .perform()
112
- .then(() => BrowseTheWeb.as(actor).actions().doubleClick().perform()));
113
- }
114
-
115
- /**
116
- * @desc
117
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
118
- *
119
- * @returns {string}
120
- */
121
- toString(): string {
122
- return formatted `#actor double-clicks on ${ this.target }`;
123
- }
124
- }