@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,114 +0,0 @@
1
- import { AnswersQuestions, Interaction, Question, UsesAbilities } from '@serenity-js/core';
2
- import { formatted } from '@serenity-js/core/lib/io';
3
- import { ElementFinder, protractor,WebElement } 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
- * perfom a right click on a given Web element.
12
- *
13
- * This is typically used to open a [custom context menu](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event)
14
- * on a given Web element, since it's not possible to interact with the standard context menu offered by your browser
15
- *
16
- * @example <caption>Example widget</caption>
17
- * <form>
18
- * <input type="text" id="field"
19
- * oncontextmenu="showMenu(); return false;" />
20
- *
21
- * <div id="context-menu" style="display:none">
22
- * Custom context menu
23
- * </div>
24
- * </form>
25
- *
26
- * <script>
27
- * function showMenu() {
28
- * document.getElementById("context-menu").style.display = 'block';
29
- * }
30
- * </script>
31
- *
32
- * @example <caption>Lean Page Object describing the widget</caption>
33
- * import { Target } from '@serenity-js/protractor';
34
- * import { by } from 'protractor';
35
- *
36
- * class Form {
37
- * static exampleInput = Target.the('example input')
38
- * .located(by.id('example'));
39
- * static exampleContextMenu = Target.the('example context menu')
40
- * .located(by.id('context-menu'));
41
- * }
42
- *
43
- * @example <caption>Right-click on an element</caption>
44
- * import { actorCalled } from '@serenity-js/core';
45
- * import { BrowseTheWeb, RightClick, isVisible } from '@serenity-js/protractor';
46
- * import { Ensure } from '@serenity-js/assertions';
47
- * import { protractor } from 'protractor';
48
- *
49
- * actorCalled('Chloé')
50
- * .whoCan(BrowseTheWeb.using(protractor.browser))
51
- * .attemptsTo(
52
- * RightClick.on(Form.exampleInput),
53
- * Ensure.that(Form.exampleContextMenu, isVisible()),
54
- * );
55
- *
56
- * @see {@link BrowseTheWeb}
57
- * @see {@link Target}
58
- * @see {@link @serenity-js/assertions~Ensure}
59
- * @see {@link isVisible}
60
- *
61
- * @extends {@serenity-js/core/lib/screenplay~Interaction}
62
- */
63
- export class RightClick extends Interaction {
64
- /**
65
- * @desc
66
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
67
- *
68
- * @param {Question<ElementFinder> | ElementFinder} target
69
- * The element to be right clicked on
70
- *
71
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
72
- */
73
- static on(target: Question<ElementFinder> | ElementFinder): Interaction {
74
- return new RightClick(target);
75
- }
76
-
77
- /**
78
- * @param {Question<ElementFinder> | ElementFinder} target
79
- * The element to be right clicked on
80
- */
81
- constructor(private readonly target: Question<ElementFinder> | ElementFinder) {
82
- super();
83
- }
84
-
85
- /**
86
- * @desc
87
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
88
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
89
- *
90
- * @param {UsesAbilities & AnswersQuestions} actor
91
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
92
- *
93
- * @returns {PromiseLike<void>}
94
- *
95
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
96
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
97
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
98
- */
99
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
100
- return withAnswerOf(actor, this.target, (elf: WebElement) =>
101
- BrowseTheWeb.as(actor).actions().mouseMove(elf).perform()
102
- ).then(() => BrowseTheWeb.as(actor).actions().click(protractor.Button.RIGHT).perform());
103
- }
104
-
105
- /**
106
- * @desc
107
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
108
- *
109
- * @returns {string}
110
- */
111
- toString(): string {
112
- return formatted`#actor right clicks on ${this.target}`;
113
- }
114
- }
@@ -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 { 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
- * scroll until a given Web element comes into view.
12
- *
13
- * @example <caption>Example widget</caption>
14
- * <!--
15
- * an element somewhere at the bottom of the page,
16
- * outside of the visible area
17
- * -->
18
- * <input type="submit" id="submit" />
19
- *
20
- * @example <caption>Lean Page Object describing the widget</caption>
21
- * import { Target } from '@serenity-js/protractor';
22
- * import { by } from 'protractor';
23
- *
24
- * class Form {
25
- * static submitButton = Target.the('submit button')
26
- * .located(by.id('submit'));
27
- * }
28
- *
29
- * @example <caption>Scrolling to element</caption>
30
- * import { actorCalled } from '@serenity-js/core';
31
- * import { Ensure } from '@serenity-js/assertions';
32
- * import { BrowseTheWeb, Scroll, isVisible } from '@serenity-js/protractor';
33
- * import { protractor } from 'protractor';
34
- *
35
- * actorCalled('Sara')
36
- * .whoCan(BrowseTheWeb.using(protractor.browser))
37
- * .attemptsTo(
38
- * Scroll.to(Form.submitButton),
39
- * Ensure.that(Form.submitButton, isVisible()),
40
- * );
41
- *
42
- * @see {@link BrowseTheWeb}
43
- * @see {@link Target}
44
- * @see {@link isVisible}
45
- * @see {@link @serenity-js/assertions~Ensure}
46
- *
47
- * @extends {@serenity-js/core/lib/screenplay~Interaction}
48
- */
49
- export class Scroll extends Interaction {
50
-
51
- /**
52
- * @desc
53
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
54
- *
55
- * @param {Question<ElementFinder> | ElementFinder} target
56
- * The element to be scroll to
57
- *
58
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
59
- */
60
- static to(target: Question<ElementFinder> | ElementFinder): Scroll {
61
- return new Scroll(target);
62
- }
63
-
64
- /**
65
- * @param {Question<ElementFinder> | ElementFinder} target
66
- * The element to be scroll to
67
- */
68
- constructor(private readonly target: Question<ElementFinder> | ElementFinder) {
69
- super();
70
- }
71
-
72
- /**
73
- * @desc
74
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
75
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
76
- *
77
- * @param {UsesAbilities & AnswersQuestions} actor
78
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
79
- *
80
- * @returns {PromiseLike<void>}
81
- *
82
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
83
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
84
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
85
- */
86
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
87
- return withAnswerOf(actor, this.target, (elf: ElementFinder) => BrowseTheWeb.as(actor).actions().mouseMove(elf).perform());
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 scrolls to ${this.target}`;
98
- }
99
- }
@@ -1,402 +0,0 @@
1
- import { Answerable, AnswersQuestions, Question } from '@serenity-js/core';
2
- import { commaSeparated, formatted } from '@serenity-js/core/lib/io';
3
- import { inspected } from '@serenity-js/core/lib/io/inspected';
4
- import { Interaction, UsesAbilities } from '@serenity-js/core/lib/screenplay';
5
- import { by, ElementFinder } from 'protractor';
6
- import { promise } from 'selenium-webdriver';
7
-
8
- import { promiseOf } from '../../promiseOf';
9
- import { Value } from '../questions';
10
- import { withAnswerOf } from '../withAnswerOf';
11
- import { SelectBuilder } from './SelectBuilder';
12
-
13
- /**
14
- * @desc
15
- * Instructs the {@link @serenity-js/core/lib/screenplay/actor~Actor} to
16
- * select an option from a [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select),
17
- * either by its display name, or by value.
18
- *
19
- * @see {@link Selected}
20
- */
21
- export class Select {
22
-
23
- /**
24
- * @desc
25
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}
26
- * with a [`value`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option#attr-value)
27
- * of a single [`<option>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
28
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select.
29
- *
30
- * @example <caption>Example widget</caption>
31
- * <select data-test='countries'>
32
- * <option value='UK'>United Kingdom</option>
33
- * <option value='PL'>Poland</option>
34
- * <option value='US'>United States</option>
35
- * </select>
36
- *
37
- * @example <caption>Lean Page Object describing the widget</caption>
38
- * import { Target } from '@serenity-js/protractor';
39
- * import { browser, by } from 'protractor';
40
- *
41
- * class Countries {
42
- * static dropdown = Target.the('countries dropdown')
43
- * .located(by.css('[data-test="countries"]'));
44
- * }
45
- *
46
- * @example <caption>Retrieving the selected value</caption>
47
- * import { actorCalled } from '@serenity-js/core';
48
- * import { BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
49
- * import { Ensure, equals } from '@serenity-js/assertions';
50
- * import { protractor } from 'protractor';
51
- *
52
- * actorCalled('Nick')
53
- * .whoCan(BrowseTheWeb.using(protractor.browser))
54
- * .attemptsTo(
55
- * Select.value('UK').from(Countries.dropdown),
56
- * Ensure.that(Selected.valueOf(Countries.dropdown), equals('UK')),
57
- * );
58
- *
59
- * @param {string | Answerable<string>} value
60
- * A value of the [`option` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
61
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select
62
- *
63
- * @returns {SelectBuilder}
64
- *
65
- * @see {@link Selected.valueOf}
66
- * @see {@link BrowseTheWeb}
67
- * @see {@link Target}
68
- * @see {@link @serenity-js/assertions~Ensure}
69
- * @see {@link @serenity-js/assertions/lib/expectations~equals}
70
- */
71
- static value(value: string | Answerable<string>): SelectBuilder {
72
- return {
73
- from: (target: Question<ElementFinder> | ElementFinder): Interaction =>
74
- new SelectValue(value, target)
75
- };
76
- }
77
-
78
- /**
79
- * @desc
80
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}
81
- * with [`value`s](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option#attr-value)
82
- * of multiple [`<option>` elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
83
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select.
84
- *
85
- * @example <caption>Example widget</caption>
86
- * <select multiple data-test='countries'>
87
- * <option value='UK'>United Kingdom</option>
88
- * <option value='PL'>Poland</option>
89
- * <option value='US'>United States</option>
90
- * </select>
91
- *
92
- * @example <caption>Lean Page Object describing the widget</caption>
93
- * import { Target } from '@serenity-js/protractor';
94
- * import { browser, by } from 'protractor';
95
- *
96
- * class Countries {
97
- * static dropdown = Target.the('countries dropdown')
98
- * .located(by.css('[data-test="countries"]'));
99
- * }
100
- *
101
- * @example <caption>Retrieving the selected value</caption>
102
- * import { actorCalled } from '@serenity-js/core';
103
- * import { BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
104
- * import { Ensure, equals } from '@serenity-js/assertions';
105
- * import { protractor } from 'protractor';
106
- *
107
- * actorCalled('Nick')
108
- * .whoCan(BrowseTheWeb.using(protractor.browser))
109
- * .attemptsTo(
110
- * Select.values('UK').from(Countries.dropdown),
111
- * Ensure.that(Selected.valuesOf(Countries.dropdown), equals([ 'UK' ])),
112
- * );
113
- *
114
- * @param {Array<Answerable<string[] | string>>} values
115
- * Values of the [`option` elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
116
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select
117
- *
118
- * @returns {SelectBuilder}
119
- *
120
- * @see {@link Selected.valuesOf}
121
- * @see {@link BrowseTheWeb}
122
- * @see {@link Target}
123
- * @see {@link @serenity-js/assertions~Ensure}
124
- * @see {@link @serenity-js/assertions/lib/expectations~equals}
125
- */
126
- static values(...values: Array<Answerable<string[] | string>>): SelectBuilder {
127
- return {
128
- from: (target: Question<ElementFinder> | ElementFinder): Interaction =>
129
- new SelectValues(values, target)
130
- };
131
- }
132
-
133
- /**
134
- * @desc
135
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}
136
- * with a single [`option`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
137
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select.
138
- *
139
- * @example <caption>Example widget</caption>
140
- * <select data-test='countries'>
141
- * <option value='UK'>United Kingdom</option>
142
- * <option value='PL'>Poland</option>
143
- * <option value='US'>United States</option>
144
- * </select>
145
- *
146
- * @example <caption>Lean Page Object describing the widget</caption>
147
- * import { Target } from '@serenity-js/protractor';
148
- * import { browser, by } from 'protractor';
149
- *
150
- * class Countries {
151
- * static dropdown = Target.the('countries dropdown')
152
- * .located(by.css('[data-test="countries"]'));
153
- * }
154
- *
155
- * @example <caption>Retrieving the selected value</caption>
156
- * import { actorCalled } from '@serenity-js/core';
157
- * import { BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
158
- * import { Ensure, equals } from '@serenity-js/assertions';
159
- * import { protractor } from 'protractor';
160
- *
161
- * actorCalled('Nick')
162
- * .whoCan(BrowseTheWeb.using(protractor.browser))
163
- * .attemptsTo(
164
- * Select.option('Poland').from(Countries.dropdown),
165
- * Ensure.that(
166
- * Selected.optionIn(Countries.dropdown),
167
- * equals('Poland')
168
- * ),
169
- * );
170
- *
171
- * @param {string | Answerable<string>} value
172
- * Text of the [`option` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
173
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select
174
- *
175
- * @returns {SelectBuilder}
176
- *
177
- * @see {@link Selected.optionIn}
178
- * @see {@link BrowseTheWeb}
179
- * @see {@link Target}
180
- * @see {@link @serenity-js/assertions~Ensure}
181
- * @see {@link @serenity-js/assertions/lib/expectations~equals}
182
- */
183
- static option(value: string | Answerable<string>): SelectBuilder {
184
- return {
185
- from: (target: Question<ElementFinder> | ElementFinder): Interaction =>
186
- new SelectOption(value, target)
187
- };
188
- }
189
-
190
- /**
191
- * @desc
192
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}
193
- * with [`option`s](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
194
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select.
195
- *
196
- * @example <caption>Example widget</caption>
197
- * <select multiple data-test='countries'>
198
- * <option value='UK'>United Kingdom</option>
199
- * <option value='PL'>Poland</option>
200
- * <option value='US'>United States</option>
201
- * </select>
202
- *
203
- * @example <caption>Lean Page Object describing the widget</caption>
204
- * import { Target } from '@serenity-js/protractor';
205
- * import { browser, by } from 'protractor';
206
- *
207
- * class Countries {
208
- * static dropdown = Target.the('countries dropdown')
209
- * .located(by.css('[data-test="countries"]'));
210
- * }
211
- *
212
- * @example <caption>Retrieving the selected value</caption>
213
- * import { actorCalled } from '@serenity-js/core';
214
- * import { BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
215
- * import { Ensure, equals } from '@serenity-js/assertions';
216
- * import { protractor } from 'protractor';
217
- *
218
- * actorCalled('Nick')
219
- * .whoCan(BrowseTheWeb.using(protractor.browser))
220
- * .attemptsTo(
221
- * Select.options('Poland', 'United States').from(Countries.dropdown),
222
- * Ensure.that(
223
- * Selected.optionsIn(Countries.dropdown),
224
- * equals([ 'Poland', 'United States' ])
225
- * ),
226
- * );
227
- *
228
- * @param {Array<Answerable<string[] | string>>} values
229
- * Text of the [`option` elements ](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
230
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor} to select
231
- *
232
- * @returns {SelectBuilder}
233
- *
234
- * @see {@link Selected.optionsIn}
235
- * @see {@link BrowseTheWeb}
236
- * @see {@link Target}
237
- * @see {@link @serenity-js/assertions~Ensure}
238
- * @see {@link @serenity-js/assertions/lib/expectations~equals}
239
- */
240
- static options(...values: Array<Answerable<string[] | string>>): SelectBuilder {
241
- return {
242
- from: (target: Question<ElementFinder> | ElementFinder): Interaction =>
243
- new SelectOptions(values, target)
244
- };
245
- }
246
- }
247
-
248
- /**
249
- * @package
250
- */
251
- class SelectValue implements Interaction {
252
-
253
- constructor(
254
- private readonly value: string | Answerable<string>,
255
- private readonly target: Question<ElementFinder> | ElementFinder
256
- ) {
257
- }
258
-
259
- performAs(actor: UsesAbilities & AnswersQuestions): Promise<void> {
260
- return actor.answer(this.value)
261
- .then(value =>
262
- withAnswerOf(actor, this.target, (element: ElementFinder) =>
263
- element
264
- .element(by.css(`option[value=${ value }]`)))
265
- .click()
266
- );
267
- }
268
-
269
- toString () {
270
- return formatted `#actor selects value ${ this.value } from ${ this.target }`;
271
- }
272
- }
273
-
274
- /**
275
- * @package
276
- */
277
- class SelectValues implements Interaction {
278
-
279
- constructor(
280
- private readonly values: Array<Answerable<string[] | string>>,
281
- private readonly target: Question<ElementFinder> | ElementFinder
282
- ) {
283
- }
284
-
285
- performAs(actor: UsesAbilities & AnswersQuestions): Promise<void> {
286
-
287
- return Promise.all(this.values.map(value => actor.answer(value)))
288
- .then(flatten)
289
- .then(values => {
290
-
291
- const
292
- hasRequiredValue = (option: ElementFinder) =>
293
- Value.of(option).answeredBy(actor).then(value => !! ~values.indexOf(value));
294
-
295
- return promiseOf(
296
- withAnswerOf(actor, this.target, (element: ElementFinder) =>
297
- element.all(by.css('option'))
298
- .filter(optionsToSelect(hasRequiredValue))
299
- .each(select)
300
- )
301
- );
302
- });
303
- }
304
-
305
- toString () {
306
- return `#actor selects values ${ commaSeparated(flatten(this.values), inspected) } from ${ this.target }`;
307
- }
308
- }
309
-
310
- /**
311
- * @package
312
- */
313
- class SelectOption implements Interaction {
314
-
315
- constructor(
316
- private readonly value: string | Answerable<string>,
317
- private readonly target: Question<ElementFinder> | ElementFinder
318
- ) {
319
- }
320
-
321
- performAs(actor: UsesAbilities & AnswersQuestions): Promise<void> {
322
- return actor.answer(this.value)
323
- .then(value => {
324
- return promiseOf(withAnswerOf(actor, this.target, (element: ElementFinder) =>
325
- element
326
- .element(by.cssContainingText('option', value)))
327
- .click());
328
- });
329
- }
330
-
331
- toString () {
332
- return formatted `#actor selects ${ this.value } from ${ this.target }`;
333
- }
334
- }
335
-
336
- /**
337
- * @package
338
- */
339
- class SelectOptions implements Interaction {
340
-
341
- constructor(
342
- private readonly values: Array<Answerable<string[] | string>>,
343
- private readonly target: Question<ElementFinder> | ElementFinder
344
- ) {
345
- }
346
-
347
- performAs(actor: UsesAbilities & AnswersQuestions): Promise<void> {
348
- return Promise.all(this.values.map(value => actor.answer(value)))
349
- .then(flatten)
350
- .then(values => {
351
-
352
- const
353
- hasRequiredText = (option: ElementFinder) =>
354
- option.getText().then(value => !! ~values.indexOf(value));
355
-
356
- return promiseOf(
357
- withAnswerOf(actor, this.target, (element: ElementFinder) =>
358
- element.all(by.css('option'))
359
- .filter(optionsToSelect(hasRequiredText))
360
- .each(select)
361
- )
362
- );
363
- });
364
- }
365
-
366
- toString () {
367
- return `#actor selects ${ commaSeparated(flatten(this.values), inspected) } from ${ this.target }`;
368
- }
369
- }
370
-
371
- /** @package */
372
- function flatten<T>(listOfLists: Array<T[] | T>): T[] {
373
- return listOfLists
374
- .map(item => [].concat(item))
375
- .reduce((acc: T[], list: T[]) => acc.concat(list), []);
376
- }
377
-
378
- /** @package */
379
- function optionsToSelect(criterion: (option: ElementFinder) => promise.Promise<boolean>) {
380
- return (option: ElementFinder) =>
381
- isAlreadySelected(option)
382
- .then(alreadySelected =>
383
- criterion(option).then(criterionMet =>
384
- xor(alreadySelected, criterionMet)
385
- )
386
- );
387
- }
388
-
389
- /** @package */
390
- function select(option: ElementFinder): promise.Promise<void> {
391
- return option.click();
392
- }
393
-
394
- /** @package */
395
- function isAlreadySelected(option: ElementFinder): promise.Promise<boolean> {
396
- return option.isSelected();
397
- }
398
-
399
- /** @package */
400
- function xor(first: boolean, second: boolean): boolean {
401
- return first !== second;
402
- }
@@ -1,35 +0,0 @@
1
- import { Question } from '@serenity-js/core';
2
- import { Interaction } from '@serenity-js/core/lib/screenplay';
3
- import { ElementFinder } from 'protractor';
4
-
5
- /**
6
- * @desc
7
- * Configures the {@link Target} representing
8
- * a [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
9
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor}
10
- * to interact with.
11
- *
12
- * @interface
13
- */
14
- export interface SelectBuilder {
15
-
16
- /**
17
- * @desc
18
- * Configures the {@link Target} representing
19
- * a [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
20
- * for the {@link @serenity-js/core/lib/screenplay/actor~Actor}
21
- * to interact with
22
- *
23
- * @param {Question<ElementFinder> | ElementFinder} target
24
- *
25
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
26
- *
27
- * @see {@link Select}
28
- * @see {@link Select.option}
29
- * @see {@link Select.options}
30
- * @see {@link Select.value}
31
- * @see {@link Select.values}
32
- * @see {@link Target}
33
- */
34
- from: (target: Question<ElementFinder> | ElementFinder) => Interaction;
35
- }