@serenity-js/protractor 2.32.7 → 3.0.0-rc.10

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 (339) hide show
  1. package/CHANGELOG.md +359 -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 -164
  8. package/lib/screenplay/abilities/{BrowseTheWeb.js → BrowseTheWebWithProtractor.js} +139 -225
  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/ProtractorModalDialog.d.ts +11 -0
  25. package/lib/screenplay/models/ProtractorModalDialog.js +43 -0
  26. package/lib/screenplay/models/ProtractorModalDialog.js.map +1 -0
  27. package/lib/screenplay/models/ProtractorPage.d.ts +24 -0
  28. package/lib/screenplay/models/ProtractorPage.js +92 -0
  29. package/lib/screenplay/models/ProtractorPage.js.map +1 -0
  30. package/lib/screenplay/models/ProtractorPageElement.d.ts +21 -0
  31. package/lib/screenplay/models/ProtractorPageElement.js +230 -0
  32. package/lib/screenplay/models/ProtractorPageElement.js.map +1 -0
  33. package/lib/screenplay/models/index.d.ts +4 -0
  34. package/lib/screenplay/{questions/lists → models}/index.js +4 -1
  35. package/lib/screenplay/models/index.js.map +1 -0
  36. package/lib/screenplay/models/locators/ProtractorLocator.d.ts +9 -0
  37. package/lib/screenplay/models/locators/ProtractorLocator.js +28 -0
  38. package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -0
  39. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.d.ts +5 -0
  40. package/lib/screenplay/{interactions/EnterBuilder.js → models/locators/ProtractorNativeElementRoot.js} +1 -1
  41. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js.map +1 -0
  42. package/lib/screenplay/models/locators/index.d.ts +2 -0
  43. package/lib/{stage/crew → screenplay/models/locators}/index.js +2 -1
  44. package/lib/screenplay/models/locators/index.js.map +1 -0
  45. package/lib/{promiseOf.d.ts → screenplay/promised.d.ts} +1 -1
  46. package/lib/{promiseOf.js → screenplay/promised.js} +4 -4
  47. package/lib/screenplay/promised.js.map +1 -0
  48. package/lib/screenplay/questions/ProtractorParam.d.ts +24 -29
  49. package/lib/screenplay/questions/ProtractorParam.js +26 -33
  50. package/lib/screenplay/questions/ProtractorParam.js.map +1 -1
  51. package/lib/screenplay/questions/index.d.ts +0 -13
  52. package/lib/screenplay/questions/index.js +0 -16
  53. package/lib/screenplay/questions/index.js.map +1 -1
  54. package/lib/screenplay/unpromisedWebElement.d.ts +11 -0
  55. package/lib/screenplay/unpromisedWebElement.js +24 -0
  56. package/lib/screenplay/unpromisedWebElement.js.map +1 -0
  57. package/package.json +21 -22
  58. package/src/adapter/ProtractorFrameworkAdapter.ts +5 -0
  59. package/src/index.ts +0 -2
  60. package/src/screenplay/abilities/{BrowseTheWeb.ts → BrowseTheWebWithProtractor.ts} +171 -247
  61. package/src/screenplay/abilities/index.ts +1 -1
  62. package/src/screenplay/index.ts +1 -0
  63. package/src/screenplay/interactions/UseAngular.ts +3 -3
  64. package/src/screenplay/interactions/index.ts +0 -19
  65. package/src/screenplay/models/ProtractorCookie.ts +41 -0
  66. package/src/screenplay/models/ProtractorModalDialog.ts +49 -0
  67. package/src/screenplay/models/ProtractorPage.ts +116 -0
  68. package/src/screenplay/models/ProtractorPageElement.ts +285 -0
  69. package/src/screenplay/models/index.ts +5 -0
  70. package/src/screenplay/models/locators/ProtractorLocator.ts +50 -0
  71. package/src/screenplay/models/locators/ProtractorNativeElementRoot.ts +6 -0
  72. package/src/screenplay/models/locators/index.ts +2 -0
  73. package/src/{promiseOf.ts → screenplay/promised.ts} +1 -1
  74. package/src/screenplay/questions/ProtractorParam.ts +29 -38
  75. package/src/screenplay/questions/index.ts +0 -13
  76. package/src/screenplay/unpromisedWebElement.ts +25 -0
  77. package/lib/expectations/ElementFinderExpectation.d.ts +0 -11
  78. package/lib/expectations/ElementFinderExpectation.js +0 -24
  79. package/lib/expectations/ElementFinderExpectation.js.map +0 -1
  80. package/lib/expectations/index.d.ts +0 -6
  81. package/lib/expectations/index.js +0 -19
  82. package/lib/expectations/index.js.map +0 -1
  83. package/lib/expectations/isActive.d.ts +0 -13
  84. package/lib/expectations/isActive.js +0 -19
  85. package/lib/expectations/isActive.js.map +0 -1
  86. package/lib/expectations/isClickable.d.ts +0 -13
  87. package/lib/expectations/isClickable.js +0 -22
  88. package/lib/expectations/isClickable.js.map +0 -1
  89. package/lib/expectations/isEnabled.d.ts +0 -13
  90. package/lib/expectations/isEnabled.js +0 -19
  91. package/lib/expectations/isEnabled.js.map +0 -1
  92. package/lib/expectations/isPresent.d.ts +0 -14
  93. package/lib/expectations/isPresent.js +0 -20
  94. package/lib/expectations/isPresent.js.map +0 -1
  95. package/lib/expectations/isSelected.d.ts +0 -13
  96. package/lib/expectations/isSelected.js +0 -22
  97. package/lib/expectations/isSelected.js.map +0 -1
  98. package/lib/expectations/isVisible.d.ts +0 -13
  99. package/lib/expectations/isVisible.js +0 -25
  100. package/lib/expectations/isVisible.js.map +0 -1
  101. package/lib/promiseOf.js.map +0 -1
  102. package/lib/screenplay/abilities/BrowseTheWeb.js.map +0 -1
  103. package/lib/screenplay/interactions/Accept.d.ts +0 -81
  104. package/lib/screenplay/interactions/Accept.js +0 -95
  105. package/lib/screenplay/interactions/Accept.js.map +0 -1
  106. package/lib/screenplay/interactions/Clear.d.ts +0 -88
  107. package/lib/screenplay/interactions/Clear.js +0 -121
  108. package/lib/screenplay/interactions/Clear.js.map +0 -1
  109. package/lib/screenplay/interactions/Click.d.ts +0 -81
  110. package/lib/screenplay/interactions/Click.js +0 -95
  111. package/lib/screenplay/interactions/Click.js.map +0 -1
  112. package/lib/screenplay/interactions/Close.d.ts +0 -89
  113. package/lib/screenplay/interactions/Close.js +0 -169
  114. package/lib/screenplay/interactions/Close.js.map +0 -1
  115. package/lib/screenplay/interactions/DeleteCookies.d.ts +0 -72
  116. package/lib/screenplay/interactions/DeleteCookies.js +0 -149
  117. package/lib/screenplay/interactions/DeleteCookies.js.map +0 -1
  118. package/lib/screenplay/interactions/Dismiss.d.ts +0 -85
  119. package/lib/screenplay/interactions/Dismiss.js +0 -99
  120. package/lib/screenplay/interactions/Dismiss.js.map +0 -1
  121. package/lib/screenplay/interactions/DoubleClick.d.ts +0 -99
  122. package/lib/screenplay/interactions/DoubleClick.js +0 -121
  123. package/lib/screenplay/interactions/DoubleClick.js.map +0 -1
  124. package/lib/screenplay/interactions/Enter.d.ts +0 -81
  125. package/lib/screenplay/interactions/Enter.js +0 -96
  126. package/lib/screenplay/interactions/Enter.js.map +0 -1
  127. package/lib/screenplay/interactions/EnterBuilder.d.ts +0 -27
  128. package/lib/screenplay/interactions/EnterBuilder.js.map +0 -1
  129. package/lib/screenplay/interactions/ExecuteScript.d.ts +0 -171
  130. package/lib/screenplay/interactions/ExecuteScript.js +0 -291
  131. package/lib/screenplay/interactions/ExecuteScript.js.map +0 -1
  132. package/lib/screenplay/interactions/Hover.d.ts +0 -86
  133. package/lib/screenplay/interactions/Hover.js +0 -103
  134. package/lib/screenplay/interactions/Hover.js.map +0 -1
  135. package/lib/screenplay/interactions/Navigate.d.ts +0 -149
  136. package/lib/screenplay/interactions/Navigate.js +0 -345
  137. package/lib/screenplay/interactions/Navigate.js.map +0 -1
  138. package/lib/screenplay/interactions/Press.d.ts +0 -90
  139. package/lib/screenplay/interactions/Press.js +0 -127
  140. package/lib/screenplay/interactions/Press.js.map +0 -1
  141. package/lib/screenplay/interactions/PressBuilder.d.ts +0 -27
  142. package/lib/screenplay/interactions/PressBuilder.js +0 -3
  143. package/lib/screenplay/interactions/PressBuilder.js.map +0 -1
  144. package/lib/screenplay/interactions/ResizeBrowserWindow.d.ts +0 -69
  145. package/lib/screenplay/interactions/ResizeBrowserWindow.js +0 -144
  146. package/lib/screenplay/interactions/ResizeBrowserWindow.js.map +0 -1
  147. package/lib/screenplay/interactions/RightClick.d.ts +0 -97
  148. package/lib/screenplay/interactions/RightClick.js +0 -113
  149. package/lib/screenplay/interactions/RightClick.js.map +0 -1
  150. package/lib/screenplay/interactions/Scroll.d.ts +0 -83
  151. package/lib/screenplay/interactions/Scroll.js +0 -98
  152. package/lib/screenplay/interactions/Scroll.js.map +0 -1
  153. package/lib/screenplay/interactions/Select.d.ts +0 -212
  154. package/lib/screenplay/interactions/Select.js +0 -342
  155. package/lib/screenplay/interactions/Select.js.map +0 -1
  156. package/lib/screenplay/interactions/SelectBuilder.d.ts +0 -33
  157. package/lib/screenplay/interactions/SelectBuilder.js +0 -3
  158. package/lib/screenplay/interactions/SelectBuilder.js.map +0 -1
  159. package/lib/screenplay/interactions/Switch.d.ts +0 -210
  160. package/lib/screenplay/interactions/Switch.js +0 -345
  161. package/lib/screenplay/interactions/Switch.js.map +0 -1
  162. package/lib/screenplay/interactions/TakeScreenshot.d.ts +0 -67
  163. package/lib/screenplay/interactions/TakeScreenshot.js +0 -86
  164. package/lib/screenplay/interactions/TakeScreenshot.js.map +0 -1
  165. package/lib/screenplay/interactions/Wait.d.ts +0 -147
  166. package/lib/screenplay/interactions/Wait.js +0 -247
  167. package/lib/screenplay/interactions/Wait.js.map +0 -1
  168. package/lib/screenplay/interactions/WaitBuilder.d.ts +0 -33
  169. package/lib/screenplay/interactions/WaitBuilder.js +0 -3
  170. package/lib/screenplay/interactions/WaitBuilder.js.map +0 -1
  171. package/lib/screenplay/questions/Attribute.d.ts +0 -29
  172. package/lib/screenplay/questions/Attribute.js +0 -56
  173. package/lib/screenplay/questions/Attribute.js.map +0 -1
  174. package/lib/screenplay/questions/Browser.d.ts +0 -47
  175. package/lib/screenplay/questions/Browser.js +0 -55
  176. package/lib/screenplay/questions/Browser.js.map +0 -1
  177. package/lib/screenplay/questions/CSSClasses.d.ts +0 -94
  178. package/lib/screenplay/questions/CSSClasses.js +0 -118
  179. package/lib/screenplay/questions/CSSClasses.js.map +0 -1
  180. package/lib/screenplay/questions/Cookie.d.ts +0 -9
  181. package/lib/screenplay/questions/Cookie.js +0 -65
  182. package/lib/screenplay/questions/Cookie.js.map +0 -1
  183. package/lib/screenplay/questions/LastScriptExecution.d.ts +0 -14
  184. package/lib/screenplay/questions/LastScriptExecution.js +0 -22
  185. package/lib/screenplay/questions/LastScriptExecution.js.map +0 -1
  186. package/lib/screenplay/questions/ModalDialog.d.ts +0 -120
  187. package/lib/screenplay/questions/ModalDialog.js +0 -142
  188. package/lib/screenplay/questions/ModalDialog.js.map +0 -1
  189. package/lib/screenplay/questions/Pick.d.ts +0 -72
  190. package/lib/screenplay/questions/Pick.js +0 -254
  191. package/lib/screenplay/questions/Pick.js.map +0 -1
  192. package/lib/screenplay/questions/Selected.d.ts +0 -185
  193. package/lib/screenplay/questions/Selected.js +0 -254
  194. package/lib/screenplay/questions/Selected.js.map +0 -1
  195. package/lib/screenplay/questions/Value.d.ts +0 -47
  196. package/lib/screenplay/questions/Value.js +0 -67
  197. package/lib/screenplay/questions/Value.js.map +0 -1
  198. package/lib/screenplay/questions/Website.d.ts +0 -15
  199. package/lib/screenplay/questions/Website.js +0 -25
  200. package/lib/screenplay/questions/Website.js.map +0 -1
  201. package/lib/screenplay/questions/Window.d.ts +0 -23
  202. package/lib/screenplay/questions/Window.js +0 -28
  203. package/lib/screenplay/questions/Window.js.map +0 -1
  204. package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.d.ts +0 -89
  205. package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.js +0 -138
  206. package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.js.map +0 -1
  207. package/lib/screenplay/questions/lists/index.d.ts +0 -1
  208. package/lib/screenplay/questions/lists/index.js.map +0 -1
  209. package/lib/screenplay/questions/targets/Target.d.ts +0 -168
  210. package/lib/screenplay/questions/targets/Target.js +0 -190
  211. package/lib/screenplay/questions/targets/Target.js.map +0 -1
  212. package/lib/screenplay/questions/targets/TargetElement.d.ts +0 -50
  213. package/lib/screenplay/questions/targets/TargetElement.js +0 -62
  214. package/lib/screenplay/questions/targets/TargetElement.js.map +0 -1
  215. package/lib/screenplay/questions/targets/TargetElements.d.ts +0 -102
  216. package/lib/screenplay/questions/targets/TargetElements.js +0 -124
  217. package/lib/screenplay/questions/targets/TargetElements.js.map +0 -1
  218. package/lib/screenplay/questions/targets/TargetNestedElement.d.ts +0 -49
  219. package/lib/screenplay/questions/targets/TargetNestedElement.js +0 -61
  220. package/lib/screenplay/questions/targets/TargetNestedElement.js.map +0 -1
  221. package/lib/screenplay/questions/targets/TargetNestedElements.d.ts +0 -101
  222. package/lib/screenplay/questions/targets/TargetNestedElements.js +0 -123
  223. package/lib/screenplay/questions/targets/TargetNestedElements.js.map +0 -1
  224. package/lib/screenplay/questions/targets/builders.d.ts +0 -8
  225. package/lib/screenplay/questions/targets/builders.js +0 -3
  226. package/lib/screenplay/questions/targets/builders.js.map +0 -1
  227. package/lib/screenplay/questions/targets/index.d.ts +0 -5
  228. package/lib/screenplay/questions/targets/index.js +0 -18
  229. package/lib/screenplay/questions/targets/index.js.map +0 -1
  230. package/lib/screenplay/questions/targets/override.d.ts +0 -7
  231. package/lib/screenplay/questions/targets/override.js +0 -21
  232. package/lib/screenplay/questions/targets/override.js.map +0 -1
  233. package/lib/screenplay/questions/text/Text.d.ts +0 -41
  234. package/lib/screenplay/questions/text/Text.js +0 -50
  235. package/lib/screenplay/questions/text/Text.js.map +0 -1
  236. package/lib/screenplay/questions/text/TextOfMultipleElements.d.ts +0 -23
  237. package/lib/screenplay/questions/text/TextOfMultipleElements.js +0 -37
  238. package/lib/screenplay/questions/text/TextOfMultipleElements.js.map +0 -1
  239. package/lib/screenplay/questions/text/TextOfSingleElement.d.ts +0 -23
  240. package/lib/screenplay/questions/text/TextOfSingleElement.js +0 -35
  241. package/lib/screenplay/questions/text/TextOfSingleElement.js.map +0 -1
  242. package/lib/screenplay/questions/text/index.d.ts +0 -1
  243. package/lib/screenplay/questions/text/index.js +0 -14
  244. package/lib/screenplay/questions/text/index.js.map +0 -1
  245. package/lib/screenplay/withAnswerOf.d.ts +0 -8
  246. package/lib/screenplay/withAnswerOf.js +0 -18
  247. package/lib/screenplay/withAnswerOf.js.map +0 -1
  248. package/lib/stage/crew/index.d.ts +0 -1
  249. package/lib/stage/crew/index.js.map +0 -1
  250. package/lib/stage/crew/photographer/Photographer.d.ts +0 -83
  251. package/lib/stage/crew/photographer/Photographer.js +0 -102
  252. package/lib/stage/crew/photographer/Photographer.js.map +0 -1
  253. package/lib/stage/crew/photographer/index.d.ts +0 -2
  254. package/lib/stage/crew/photographer/index.js +0 -15
  255. package/lib/stage/crew/photographer/index.js.map +0 -1
  256. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +0 -28
  257. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +0 -65
  258. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +0 -1
  259. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +0 -18
  260. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +0 -30
  261. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +0 -1
  262. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +0 -17
  263. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +0 -28
  264. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +0 -1
  265. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +0 -19
  266. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +0 -28
  267. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +0 -1
  268. package/lib/stage/crew/photographer/strategies/index.d.ts +0 -4
  269. package/lib/stage/crew/photographer/strategies/index.js +0 -17
  270. package/lib/stage/crew/photographer/strategies/index.js.map +0 -1
  271. package/lib/stage/index.d.ts +0 -1
  272. package/lib/stage/index.js +0 -14
  273. package/lib/stage/index.js.map +0 -1
  274. package/src/expectations/ElementFinderExpectation.ts +0 -29
  275. package/src/expectations/index.ts +0 -6
  276. package/src/expectations/isActive.ts +0 -24
  277. package/src/expectations/isClickable.ts +0 -20
  278. package/src/expectations/isEnabled.ts +0 -18
  279. package/src/expectations/isPresent.ts +0 -19
  280. package/src/expectations/isSelected.ts +0 -23
  281. package/src/expectations/isVisible.ts +0 -27
  282. package/src/screenplay/interactions/Accept.ts +0 -95
  283. package/src/screenplay/interactions/Clear.ts +0 -130
  284. package/src/screenplay/interactions/Click.ts +0 -96
  285. package/src/screenplay/interactions/Close.ts +0 -184
  286. package/src/screenplay/interactions/DeleteCookies.ts +0 -154
  287. package/src/screenplay/interactions/Dismiss.ts +0 -99
  288. package/src/screenplay/interactions/DoubleClick.ts +0 -124
  289. package/src/screenplay/interactions/Enter.ts +0 -104
  290. package/src/screenplay/interactions/EnterBuilder.ts +0 -29
  291. package/src/screenplay/interactions/ExecuteScript.ts +0 -325
  292. package/src/screenplay/interactions/Hover.ts +0 -106
  293. package/src/screenplay/interactions/Navigate.ts +0 -363
  294. package/src/screenplay/interactions/Press.ts +0 -137
  295. package/src/screenplay/interactions/PressBuilder.ts +0 -29
  296. package/src/screenplay/interactions/ResizeBrowserWindow.ts +0 -148
  297. package/src/screenplay/interactions/RightClick.ts +0 -114
  298. package/src/screenplay/interactions/Scroll.ts +0 -99
  299. package/src/screenplay/interactions/Select.ts +0 -402
  300. package/src/screenplay/interactions/SelectBuilder.ts +0 -35
  301. package/src/screenplay/interactions/Switch.ts +0 -393
  302. package/src/screenplay/interactions/TakeScreenshot.ts +0 -89
  303. package/src/screenplay/interactions/Wait.ts +0 -267
  304. package/src/screenplay/interactions/WaitBuilder.ts +0 -35
  305. package/src/screenplay/questions/Attribute.ts +0 -67
  306. package/src/screenplay/questions/Browser.ts +0 -55
  307. package/src/screenplay/questions/CSSClasses.ts +0 -121
  308. package/src/screenplay/questions/Cookie.ts +0 -70
  309. package/src/screenplay/questions/LastScriptExecution.ts +0 -21
  310. package/src/screenplay/questions/ModalDialog.ts +0 -149
  311. package/src/screenplay/questions/Pick.ts +0 -334
  312. package/src/screenplay/questions/Selected.ts +0 -268
  313. package/src/screenplay/questions/Value.ts +0 -73
  314. package/src/screenplay/questions/Website.ts +0 -27
  315. package/src/screenplay/questions/Window.ts +0 -29
  316. package/src/screenplay/questions/lists/ElementArrayFinderListAdapter.ts +0 -158
  317. package/src/screenplay/questions/lists/index.ts +0 -1
  318. package/src/screenplay/questions/targets/Target.ts +0 -198
  319. package/src/screenplay/questions/targets/TargetElement.ts +0 -70
  320. package/src/screenplay/questions/targets/TargetElements.ts +0 -142
  321. package/src/screenplay/questions/targets/TargetNestedElement.ts +0 -71
  322. package/src/screenplay/questions/targets/TargetNestedElements.ts +0 -142
  323. package/src/screenplay/questions/targets/builders.ts +0 -10
  324. package/src/screenplay/questions/targets/index.ts +0 -5
  325. package/src/screenplay/questions/targets/override.ts +0 -17
  326. package/src/screenplay/questions/text/Text.ts +0 -55
  327. package/src/screenplay/questions/text/TextOfMultipleElements.ts +0 -40
  328. package/src/screenplay/questions/text/TextOfSingleElement.ts +0 -37
  329. package/src/screenplay/questions/text/index.ts +0 -1
  330. package/src/screenplay/withAnswerOf.ts +0 -19
  331. package/src/stage/crew/index.ts +0 -1
  332. package/src/stage/crew/photographer/Photographer.ts +0 -108
  333. package/src/stage/crew/photographer/index.ts +0 -2
  334. package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +0 -102
  335. package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +0 -28
  336. package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +0 -26
  337. package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +0 -26
  338. package/src/stage/crew/photographer/strategies/index.ts +0 -4
  339. 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
- }