@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,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TakePhotosBeforeAndAfterInteractions = void 0;
4
- const events_1 = require("@serenity-js/core/lib/events");
5
- const PhotoTakingStrategy_1 = require("./PhotoTakingStrategy");
6
- /**
7
- * @desc
8
- * Configures the {@link Photographer} to take photos (a.k.a. screenshots) both before and after
9
- * every single {@link @serenity-js/core/lib/screenplay~Interaction} performed
10
- * by the {@link @serenity-js/core/lib/screenplay/actor~Actor} in the spotlight.
11
- *
12
- * *Please note* that this strategy will result in _a lot_ of screenshots being taken,
13
- * which will seriously affect the performance of your tests.
14
- * For this reason, it's best to use it only for debugging purposes.
15
- *
16
- * @extends {PhotoTakingStrategy}
17
- */
18
- class TakePhotosBeforeAndAfterInteractions extends PhotoTakingStrategy_1.PhotoTakingStrategy {
19
- shouldTakeAPhotoOf(event) {
20
- return event instanceof events_1.InteractionStarts
21
- || event instanceof events_1.InteractionFinished;
22
- }
23
- photoNameFor(event) {
24
- return event instanceof events_1.InteractionStarts
25
- ? `Before ${event.details.name.value}`
26
- : `After ${event.details.name.value}`;
27
- }
28
- }
29
- exports.TakePhotosBeforeAndAfterInteractions = TakePhotosBeforeAndAfterInteractions;
30
- //# sourceMappingURL=TakePhotosBeforeAndAfterInteractions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TakePhotosBeforeAndAfterInteractions.js","sourceRoot":"","sources":["../../../../../src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts"],"names":[],"mappings":";;;AAAA,yDAAmG;AAEnG,+DAA4D;AAE5D;;;;;;;;;;;GAWG;AACH,MAAa,oCAAqC,SAAQ,yCAAmB;IAC/D,kBAAkB,CAAC,KAAkB;QAC3C,OAAO,KAAK,YAAY,0BAAiB;eAClC,KAAK,YAAY,4BAAmB,CAAC;IAChD,CAAC;IAES,YAAY,CAAC,KAA8C;QACjE,OAAO,KAAK,YAAY,0BAAiB;YACrC,CAAC,CAAC,UAAW,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAM,EAAE;YACxC,CAAC,CAAC,SAAU,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAM,EAAE,CAAC;IAChD,CAAC;CACJ;AAXD,oFAWC"}
@@ -1,17 +0,0 @@
1
- import { DomainEvent, InteractionFinished } from '@serenity-js/core/lib/events';
2
- import { PhotoTakingStrategy } from './PhotoTakingStrategy';
3
- /**
4
- * @desc
5
- * Configures the {@link Photographer} to take photos (a.k.a. screenshots) when
6
- * the {@link @serenity-js/core/lib/screenplay~Interaction} performed
7
- * by the {@link @serenity-js/core/lib/screenplay/actor~Actor} in the spotlight results in an error.
8
- *
9
- * This strategy works best when you are interested in the screenshots only when
10
- * the a fails.
11
- *
12
- * @extends {PhotoTakingStrategy}
13
- */
14
- export declare class TakePhotosOfFailures extends PhotoTakingStrategy {
15
- protected shouldTakeAPhotoOf(event: DomainEvent): boolean;
16
- protected photoNameFor(event: InteractionFinished): string;
17
- }
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TakePhotosOfFailures = void 0;
4
- const events_1 = require("@serenity-js/core/lib/events");
5
- const model_1 = require("@serenity-js/core/lib/model");
6
- const PhotoTakingStrategy_1 = require("./PhotoTakingStrategy");
7
- /**
8
- * @desc
9
- * Configures the {@link Photographer} to take photos (a.k.a. screenshots) when
10
- * the {@link @serenity-js/core/lib/screenplay~Interaction} performed
11
- * by the {@link @serenity-js/core/lib/screenplay/actor~Actor} in the spotlight results in an error.
12
- *
13
- * This strategy works best when you are interested in the screenshots only when
14
- * the a fails.
15
- *
16
- * @extends {PhotoTakingStrategy}
17
- */
18
- class TakePhotosOfFailures extends PhotoTakingStrategy_1.PhotoTakingStrategy {
19
- shouldTakeAPhotoOf(event) {
20
- return event instanceof events_1.InteractionFinished
21
- && event.outcome.isWorseThan(model_1.ImplementationPending);
22
- }
23
- photoNameFor(event) {
24
- return event.details.name.value;
25
- }
26
- }
27
- exports.TakePhotosOfFailures = TakePhotosOfFailures;
28
- //# sourceMappingURL=TakePhotosOfFailures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TakePhotosOfFailures.js","sourceRoot":"","sources":["../../../../../src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts"],"names":[],"mappings":";;;AAAA,yDAAgF;AAChF,uDAAoE;AAEpE,+DAA4D;AAE5D;;;;;;;;;;GAUG;AACH,MAAa,oBAAqB,SAAQ,yCAAmB;IAC/C,kBAAkB,CAAC,KAAkB;QAC3C,OAAO,KAAK,YAAY,4BAAmB;eACpC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,6BAAqB,CAAC,CAAC;IAC5D,CAAC;IAES,YAAY,CAAC,KAA0B;QAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;CACJ;AATD,oDASC"}
@@ -1,19 +0,0 @@
1
- import { DomainEvent, InteractionFinished } from '@serenity-js/core/lib/events';
2
- import { PhotoTakingStrategy } from './PhotoTakingStrategy';
3
- /**
4
- * @desc
5
- * Configures the {@link Photographer} to take photos (a.k.a. screenshots) when
6
- * the the {@link @serenity-js/core/lib/screenplay/actor~Actor} in the spotlight
7
- * performs any {@link @serenity-js/core/lib/screenplay~Interaction}.
8
- *
9
- * This strategy works best when you want the results of your automated tests
10
- * to become comprehensive living documentation of your system.
11
- *
12
- * *Please note* that taking screenshots affects the performance of your tests.
13
- *
14
- * @extends {PhotoTakingStrategy}
15
- */
16
- export declare class TakePhotosOfInteractions extends PhotoTakingStrategy {
17
- protected shouldTakeAPhotoOf(event: DomainEvent): boolean;
18
- protected photoNameFor(event: InteractionFinished): string;
19
- }
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TakePhotosOfInteractions = void 0;
4
- const events_1 = require("@serenity-js/core/lib/events");
5
- const PhotoTakingStrategy_1 = require("./PhotoTakingStrategy");
6
- /**
7
- * @desc
8
- * Configures the {@link Photographer} to take photos (a.k.a. screenshots) when
9
- * the the {@link @serenity-js/core/lib/screenplay/actor~Actor} in the spotlight
10
- * performs any {@link @serenity-js/core/lib/screenplay~Interaction}.
11
- *
12
- * This strategy works best when you want the results of your automated tests
13
- * to become comprehensive living documentation of your system.
14
- *
15
- * *Please note* that taking screenshots affects the performance of your tests.
16
- *
17
- * @extends {PhotoTakingStrategy}
18
- */
19
- class TakePhotosOfInteractions extends PhotoTakingStrategy_1.PhotoTakingStrategy {
20
- shouldTakeAPhotoOf(event) {
21
- return event instanceof events_1.InteractionFinished;
22
- }
23
- photoNameFor(event) {
24
- return event.details.name.value;
25
- }
26
- }
27
- exports.TakePhotosOfInteractions = TakePhotosOfInteractions;
28
- //# sourceMappingURL=TakePhotosOfInteractions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TakePhotosOfInteractions.js","sourceRoot":"","sources":["../../../../../src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts"],"names":[],"mappings":";;;AAAA,yDAAgF;AAEhF,+DAA4D;AAE5D;;;;;;;;;;;;GAYG;AACH,MAAa,wBAAyB,SAAQ,yCAAmB;IACnD,kBAAkB,CAAC,KAAkB;QAC3C,OAAO,KAAK,YAAY,4BAAmB,CAAC;IAChD,CAAC;IAES,YAAY,CAAC,KAA0B;QAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;CACJ;AARD,4DAQC"}
@@ -1,4 +0,0 @@
1
- export * from './PhotoTakingStrategy';
2
- export * from './TakePhotosBeforeAndAfterInteractions';
3
- export * from './TakePhotosOfFailures';
4
- export * from './TakePhotosOfInteractions';
@@ -1,17 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./PhotoTakingStrategy"), exports);
14
- __exportStar(require("./TakePhotosBeforeAndAfterInteractions"), exports);
15
- __exportStar(require("./TakePhotosOfFailures"), exports);
16
- __exportStar(require("./TakePhotosOfInteractions"), exports);
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/stage/crew/photographer/strategies/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAAsC;AACtC,yEAAuD;AACvD,yDAAuC;AACvC,6DAA2C"}
@@ -1 +0,0 @@
1
- export * from './crew';
@@ -1,14 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./crew"), exports);
14
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuB"}
@@ -1,29 +0,0 @@
1
- import { AnswersQuestions, Expectation, ExpectationMet, ExpectationNotMet, ExpectationOutcome } from '@serenity-js/core';
2
- import { ElementFinder } from 'protractor';
3
-
4
- import { promiseOf } from '../promiseOf';
5
-
6
- /**
7
- * @access private
8
- */
9
- export class ElementFinderExpectation extends Expectation<any, ElementFinder> {
10
- static forElementTo(message: string, fn: (actual: ElementFinder) => PromiseLike<boolean>): Expectation<any, ElementFinder> {
11
- return new ElementFinderExpectation(message, fn);
12
- }
13
-
14
- constructor(
15
- subject: string,
16
- private readonly fn: (actual: ElementFinder) => PromiseLike<boolean>,
17
- ) {
18
- super(subject);
19
- }
20
-
21
- answeredBy(actor: AnswersQuestions): (actual: ElementFinder) => Promise<ExpectationOutcome<boolean, ElementFinder>> {
22
-
23
- return (actual: ElementFinder) =>
24
- promiseOf(this.fn(actual)).then(_ => _
25
- ? new ExpectationMet(this.toString(), undefined, actual)
26
- : new ExpectationNotMet(this.toString(), undefined, actual),
27
- );
28
- }
29
- }
@@ -1,6 +0,0 @@
1
- export * from './isActive';
2
- export * from './isClickable';
3
- export * from './isEnabled';
4
- export * from './isPresent';
5
- export * from './isSelected';
6
- export * from './isVisible';
@@ -1,24 +0,0 @@
1
- import { Expectation } from '@serenity-js/core';
2
- import { ElementFinder, WebElement } from 'protractor';
3
-
4
- import { ElementFinderExpectation } from './ElementFinderExpectation';
5
-
6
- /**
7
- * @desc
8
- * Expectation that the element is active.
9
- *
10
- * @returns {@serenity-js/core/lib/screenplay/questions~Expectation<boolean, ElementFinder>}
11
- *
12
- * @see {@link @serenity-js/assertions~Ensure}
13
- * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
14
- * @see {@link Wait}
15
- */
16
- export function isActive(): Expectation<boolean, ElementFinder> {
17
- return ElementFinderExpectation.forElementTo('become active', (actual: ElementFinder) =>
18
- actual.getWebElement().then(element =>
19
- element.getDriver().switchTo().activeElement().then((active: WebElement) =>
20
- actual.equals(active),
21
- ),
22
- ),
23
- );
24
- }
@@ -1,20 +0,0 @@
1
- import { and } from '@serenity-js/assertions';
2
- import { Expectation } from '@serenity-js/core';
3
- import { ElementFinder } from 'protractor';
4
-
5
- import { isEnabled } from './isEnabled';
6
- import { isVisible } from './isVisible';
7
-
8
- /**
9
- * @desc
10
- * Expectation that the element is visible and enabled, and therefore clickable
11
- *
12
- * @returns {@serenity-js/core/lib/screenplay/questions~Expectation<boolean, ElementFinder>}
13
- *
14
- * @see {@link @serenity-js/assertions~Ensure}
15
- * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
16
- * @see {@link Wait}
17
- */
18
- export function isClickable(): Expectation<any, ElementFinder> {
19
- return Expectation.to<ElementFinder>('become clickable').soThatActual(and(isVisible(), isEnabled()));
20
- }
@@ -1,18 +0,0 @@
1
- import { Expectation } from '@serenity-js/core';
2
- import { ElementFinder } from 'protractor';
3
-
4
- import { ElementFinderExpectation } from './ElementFinderExpectation';
5
-
6
- /**
7
- * @desc
8
- * Expectation that the element is enabled.
9
- *
10
- * @returns {@serenity-js/core/lib/screenplay/questions~Expectation<boolean, ElementFinder>}
11
- *
12
- * @see {@link @serenity-js/assertions~Ensure}
13
- * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
14
- * @see {@link Wait}
15
- */
16
- export function isEnabled(): Expectation<boolean, ElementFinder> {
17
- return ElementFinderExpectation.forElementTo('become enabled', actual => actual.isEnabled());
18
- }
@@ -1,19 +0,0 @@
1
- import { Expectation } from '@serenity-js/core';
2
- import { ElementFinder } from 'protractor';
3
-
4
- import { ElementFinderExpectation } from './ElementFinderExpectation';
5
-
6
- /**
7
- * @desc
8
- * Expectation that the element is present in the DOM of a page.
9
- * Please note that this does not necessarily mean that the element is visible.
10
- *
11
- * @returns {@serenity-js/core/lib/screenplay/questions~Expectation<boolean, ElementFinder>}
12
- *
13
- * @see {@link @serenity-js/assertions~Ensure}
14
- * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
15
- * @see {@link Wait}
16
- */
17
- export function isPresent(): Expectation<boolean, ElementFinder> {
18
- return ElementFinderExpectation.forElementTo('become present', actual => actual.isPresent());
19
- }
@@ -1,23 +0,0 @@
1
- import { and } from '@serenity-js/assertions';
2
- import { Expectation } from '@serenity-js/core';
3
- import { ElementFinder } from 'protractor';
4
-
5
- import { ElementFinderExpectation } from './ElementFinderExpectation';
6
- import { isPresent } from './isPresent';
7
-
8
- /**
9
- * @desc
10
- * Expectation that the element is present and selected
11
- *
12
- * @returns {@serenity-js/core/lib/screenplay/questions~Expectation<boolean, ElementFinder>}
13
- *
14
- * @see {@link @serenity-js/assertions~Ensure}
15
- * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
16
- * @see {@link Wait}
17
- */
18
- export function isSelected(): Expectation<any, ElementFinder> {
19
- return Expectation.to<ElementFinder>('become selected').soThatActual(and(
20
- isPresent(),
21
- ElementFinderExpectation.forElementTo('become selected', actual => actual.isSelected()),
22
- ));
23
- }
@@ -1,27 +0,0 @@
1
- import { and } from '@serenity-js/assertions';
2
- import { Expectation } from '@serenity-js/core';
3
- import { ElementFinder } from 'protractor';
4
-
5
- import { ElementFinderExpectation } from './ElementFinderExpectation';
6
- import { isPresent } from './isPresent';
7
-
8
- /**
9
- * @desc
10
- * Expectation that the element is present in the DOM of the page and visible.
11
- *
12
- * @returns {@serenity-js/core/lib/screenplay/questions~Expectation<boolean, ElementFinder>}
13
- *
14
- * @see {@link @serenity-js/assertions~Ensure}
15
- * @see {@link @serenity-js/core/lib/screenplay/questions~Check}
16
- * @see {@link Wait}
17
- */
18
- export function isVisible(): Expectation<any, ElementFinder> {
19
- return Expectation.to<ElementFinder>('become visible').soThatActual(and(
20
- isPresent(),
21
- isDisplayed(),
22
- ));
23
- }
24
-
25
- function isDisplayed(): Expectation<any, ElementFinder> {
26
- return ElementFinderExpectation.forElementTo('become displayed', actual => actual.isDisplayed());
27
- }
@@ -1,95 +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 accept
8
- * 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</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>Accepting a modal dialog window</caption>
25
- * import { actorCalled } from '@serenity-js/core';
26
- * import { Accept, BrowseTheWeb, Click, 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
- * Accept.the(ModalDialog.window()),
34
- * );
35
- *
36
- * @extends {@serenity-js/core/lib/screenplay~Interaction}
37
- *
38
- * @see {@link BrowseTheWeb}
39
- * @see {@link Click}
40
- * @see {@link Dismiss}
41
- * @see {@link ModalDialog}
42
- */
43
- export class Accept extends Interaction {
44
-
45
- /**
46
- * @desc
47
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}
48
- * with a {@link ModalDialog.window} the {@link @serenity-js/core/lib/screenplay/actor~Actor}
49
- * will accept.
50
- *
51
- * @param {@serenity-js/core/lib/screenplay~Question<AlertPromise> | AlertPromise} modalDialogWindow
52
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
53
- *
54
- * @see {@link @serenity-js/core/lib/screenplay~Question}
55
- */
56
- static the(modalDialogWindow: Question<AlertPromise> | AlertPromise): Interaction {
57
- return new Accept(modalDialogWindow);
58
- }
59
-
60
- /**
61
- * @param {@serenity-js/core/lib/screenplay~Question<AlertPromise> | AlertPromise} modalDialogWindow
62
- */
63
- constructor(private readonly modalDialogWindow: Question<AlertPromise> | AlertPromise) {
64
- super();
65
- }
66
-
67
- /**
68
- * @desc
69
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
70
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
71
- *
72
- * @param {UsesAbilities & AnswersQuestions} actor
73
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
74
- *
75
- * @returns {PromiseLike<void>}
76
- *
77
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
78
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
79
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
80
- */
81
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
82
- return actor.answer(this.modalDialogWindow)
83
- .then(alert => alert.accept());
84
- }
85
-
86
- /**
87
- * @desc
88
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
89
- *
90
- * @returns {string}
91
- */
92
- toString(): string {
93
- return formatted `#actor accepts ${ this.modalDialogWindow }`;
94
- }
95
- }
@@ -1,130 +0,0 @@
1
- import { AnswersQuestions, Interaction, LogicError, Question, UsesAbilities } from '@serenity-js/core';
2
- import { formatted } from '@serenity-js/core/lib/io';
3
- import { ElementFinder, protractor } from 'protractor';
4
-
5
- import { Value } from '../questions';
6
- import { withAnswerOf } from '../withAnswerOf';
7
-
8
- /**
9
- * @desc
10
- * Instructs the {@link @serenity-js/core/lib/screenplay/actor~Actor} to
11
- * clear the `value` of a [form `input`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
12
- *
13
- * @example <caption>Example widget</caption>
14
- * <form>
15
- * <input type="text" name="example" id="example" />
16
- * </form>
17
- *
18
- * @example <caption>Lean Page Object describing the widget</caption>
19
- * import { Target } from '@serenity-js/protractor';
20
- * import { by } from 'protractor';
21
- *
22
- * class Form {
23
- * static exampleInput = Target.the('example input')
24
- * .located(by.id('example'));
25
- * }
26
- *
27
- * @example <caption>Clearing the value of an input field</caption>
28
- * import { actorCalled } from '@serenity-js/core';
29
- * import { BrowseTheWeb, Clear, Enter, Value } from '@serenity-js/protractor';
30
- * import { Ensure, equals } from '@serenity-js/assertions';
31
- * import { protractor } from 'protractor';
32
- *
33
- * actorCalled('Inés')
34
- * .whoCan(BrowseTheWeb.using(protractor.browser))
35
- * .attemptsTo(
36
- * Enter.theValue('Hello world!').into(Form.exampleInput),
37
- * Ensure.that(Value.of(Form.exampleInput), equals('Hello world!')),
38
- *
39
- * Clear.theValueOf(Form.exampleInput),
40
- * Ensure.that(Value.of(Form.exampleInput), equals('')),
41
- * );
42
- *
43
- * @see {@link BrowseTheWeb}
44
- * @see {@link Enter}
45
- * @see {@link Value}
46
- * @see {@link Target}
47
- * @see {@link @serenity-js/assertions~Ensure}
48
- * @see {@link @serenity-js/assertions/lib/expectations~equals}
49
- *
50
- * @extends {@serenity-js/core/lib/screenplay~Interaction}
51
- */
52
- export class Clear extends Interaction {
53
-
54
- /**
55
- * @desc
56
- * Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
57
- *
58
- * @param {Question<ElementFinder> | ElementFinder} field
59
- * The field to be cleared
60
- * @returns {@serenity-js/core/lib/screenplay~Interaction}
61
- */
62
- static theValueOf(field: Question<ElementFinder> | ElementFinder): Interaction {
63
- return new Clear(field);
64
- }
65
-
66
- /**
67
- * @param {Question<ElementFinder> | ElementFinder} field
68
- * The field to be cleared
69
- */
70
- constructor(private readonly field: Question<ElementFinder> | ElementFinder) {
71
- super();
72
- }
73
-
74
- /**
75
- * @desc
76
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
77
- * perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
78
- *
79
- * @param {UsesAbilities & AnswersQuestions} actor
80
- * An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
81
- *
82
- * @returns {PromiseLike<void>}
83
- *
84
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
85
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
86
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
87
- */
88
- performAs(actor: UsesAbilities & AnswersQuestions): PromiseLike<void> {
89
- return new Value(this.field).answeredBy(actor).then(value => {
90
- if (value === null) {
91
- throw new LogicError(
92
- `${ this.capitaliseFirstLetter(this.field.toString()) } doesn't seem to have a 'value' attribute that could be cleared.`,
93
- );
94
- }
95
-
96
- if (value !== undefined) {
97
- return withAnswerOf(actor, this.field, (elf: ElementFinder) => {
98
- return this.removeCharactersFrom(elf, value.length);
99
- });
100
- }
101
- });
102
- }
103
-
104
- /**
105
- * @desc
106
- * Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
107
- *
108
- * @returns {string}
109
- */
110
- toString(): string {
111
- return formatted `#actor clears the value of ${ this.field }`;
112
- }
113
-
114
- private capitaliseFirstLetter(text: string) {
115
- return text.charAt(0).toUpperCase() + text.slice(1);
116
- }
117
-
118
- private removeCharactersFrom(elf: ElementFinder, numberOfCharacters: number): PromiseLike<void> {
119
- return numberOfCharacters === 0
120
- ? Promise.resolve(void 0)
121
- : elf.sendKeys(
122
- protractor.Key.END,
123
- ...this.times(numberOfCharacters, protractor.Key.BACK_SPACE),
124
- );
125
- }
126
-
127
- private times(length: number, key: string) {
128
- return Array.from({ length }).map(() => key);
129
- }
130
- }