@serenity-js/protractor 2.32.3 → 3.0.0-rc.1

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