@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,198 +0,0 @@
1
- import { Question } from '@serenity-js/core';
2
- import { ElementFinder, Locator } from 'protractor';
3
-
4
- import { NestedTargetBuilder, TargetBuilder } from './builders';
5
- import { TargetElement } from './TargetElement';
6
- import { TargetElements } from './TargetElements';
7
- import { TargetNestedElement } from './TargetNestedElement';
8
- import { TargetNestedElements } from './TargetNestedElements';
9
-
10
- /**
11
- * @desc
12
- * Provides a convenient way to retrieve a single web element or multiple web elements,
13
- * so that they can be used with Serenity/JS {@link @serenity-js/core/lib/screenplay~Interaction}s.
14
- *
15
- * Check out the examples below, as well as the unit tests demonstrating the usage.
16
- *
17
- * @example <caption>Imaginary website under test</caption>
18
- * <body>
19
- * <ul id="basket">
20
- * <li><a href="#">Apple</a></li>
21
- * <li><a href="#">Banana</a></li>
22
- * <li><a href="#">Coconut</a></li>
23
- * <li><a href="#" class="has-discount">Date</a></li>
24
- * </ul>
25
- * <div id="summary"><strong class="out-of-stock">Coconut</strong> is not available</div>
26
- * <button type="submit">Proceed to Checkout</button>
27
- * </body>
28
- *
29
- * @example <caption>Locating a single element</caption>
30
- * import { Target } from '@serenity-js/protractor';
31
- * import { by } from 'protractor';
32
- *
33
- * const proceedToCheckoutButton =
34
- * Target.the('Proceed to Checkout button').located(by.css(`button[type='submit']`));
35
- *
36
- * @example <caption>Locating multiple elements</caption>
37
- * import { Target } from '@serenity-js/protractor';
38
- * import { by } from 'protractor';
39
- *
40
- * const basketItems =
41
- * Target.all('items in the basket').located(by.css('ul#basket li'));
42
- *
43
- * @example <caption>Locating element relative to another element</caption>
44
- * import { Target } from '@serenity-js/protractor';
45
- * import { by } from 'protractor';
46
- *
47
- * const summary =
48
- * Target.the('summary').located(by.id('message'));
49
- *
50
- * const outOfStockItem =
51
- * Target.the('out of stock item').of(summary).located(by.css('.out-of-stock'))
52
- *
53
- * @example <caption>Filtering elements matched by a locator</caption>
54
- * import { Target, Text } from '@serenity-js/protractor';
55
- * import { endsWith } from '@serenity-js/assertions';
56
- * import { by } from 'protractor';
57
- *
58
- * const basketItems =
59
- * Target.all('items in the basket').located(by.css('ul#basket li'))
60
- * .where(Text, endsWith('e')); // Apple, Date
61
- *
62
- * @example <caption>Counting items matched by a locator</caption>
63
- * import { Target, Text } from '@serenity-js/protractor';
64
- * import { endsWith } from '@serenity-js/assertions';
65
- * import { Question } from '@serenity-js/core';
66
- * import { by } from 'protractor';
67
- *
68
- * const basketItemsCount: Question<Promise<number>> =
69
- * Target.all('items in the basket').located(by.css('ul#basket li'))
70
- * .count() // 4
71
- *
72
- * @example <caption>Getting first item matched by a locator</caption>
73
- * import { Target, Text } from '@serenity-js/protractor';
74
- * import { endsWith } from '@serenity-js/assertions';
75
- * import { by, ElementFinder } from 'protractor';
76
- *
77
- * const apple: Question<ElementFinder> =
78
- * Target.all('items in the basket').located(by.css('ul#basket li'))
79
- * .first()
80
- *
81
- * @example <caption>Getting last item matched by a locator</caption>
82
- * import { Target, Text } from '@serenity-js/protractor';
83
- * import { endsWith } from '@serenity-js/assertions';
84
- * import { by, ElementFinder } from 'protractor';
85
- *
86
- * const date: Question<ElementFinder> =
87
- * Target.all('items in the basket').located(by.css('ul#basket li'))
88
- * .last()
89
- *
90
- * @example <caption>Getting nth item matched by a locator</caption>
91
- * import { Target, Text } from '@serenity-js/protractor';
92
- * import { endsWith } from '@serenity-js/assertions';
93
- * import { by, ElementFinder } from 'protractor';
94
- *
95
- * const banana: Question<ElementFinder> =
96
- * Target.all('items in the basket').located(by.css('ul#basket li'))
97
- * .get(1)
98
- *
99
- * @example <caption>Using multiple filters and nested targets</caption>
100
- * import { Target, Text } from '@serenity-js/protractor';
101
- * import { contain, endsWith } from '@serenity-js/assertions';
102
- * import { by, ElementFinder } from 'protractor';
103
- *
104
- * class Basket {
105
- * static component = Target.the('basket').located(by.id('basket'));
106
- *
107
- * static items = Target.all('items').located(by.css('li'))
108
- * .of(Basket.component);
109
- *
110
- * static link = Target.the('link').located(by.css('a'));
111
- * }
112
- *
113
- * const date: Question<ElementFinder> =
114
- * Basket.items
115
- * .where(Text, endsWith('e'))
116
- * .where(CSSClasses.of(Basket.link), contain('has-discount'))
117
- * .first()
118
- *
119
- * @example <caption>Clicking on an element</caption>
120
- * import { actorCalled } from '@serenity-js/core';
121
- * import { BrowseTheWeb, Click } from '@serenity-js/protractor';
122
- * import { protractor } from 'protractor';
123
- *
124
- * actorCalled('Jane')
125
- * .whoCan(BrowseTheWeb.using(protractor.browser))
126
- * .attemptsTo(
127
- * Click.on(proceedToCheckoutButton),
128
- * );
129
- *
130
- * @example <caption>Retrieving text of multiple elements and performing an assertion</caption>
131
- * import { Ensure, contain } from '@serenity-js/assertions';
132
- * import { actorCalled } from '@serenity-js/core';
133
- * import { BrowseTheWeb, Click, Text } from '@serenity-js/protractor';
134
- * import { protractor } from 'protractor';
135
- *
136
- * const basketItemNames = Text.ofAll(basketItems);
137
- *
138
- * actorCalled('Jane')
139
- * .whoCan(BrowseTheWeb.using(protractor.browser))
140
- * .attemptsTo(
141
- * Ensure.that(basketItemNames, contain('Apple'))
142
- * );
143
- *
144
- * @example <caption>Waiting on an element</caption>
145
- * import { actorCalled } from '@serenity-js/core';
146
- * import { BrowseTheWeb, Click, Text, Wait, isClickable } from '@serenity-js/protractor';
147
- * import { protractor } from 'protractor';
148
- *
149
- * actorCalled('Jane')
150
- * .whoCan(BrowseTheWeb.using(protractor.browser))
151
- * .attemptsTo(
152
- * Wait.until(proceedToCheckoutButton, isClickable()),
153
- * );
154
- */
155
- export class Target {
156
-
157
- /**
158
- * @desc
159
- * Locates a single web element
160
- *
161
- * @param {string} name - A human-readable name of the element to be used in the report
162
- * @returns {TargetBuilder<TargetElement> & NestedTargetBuilder<TargetNestedElement>}
163
- */
164
- static the(name: string): TargetBuilder<TargetElement> & NestedTargetBuilder<TargetNestedElement> {
165
- return {
166
- located: (byLocator: Locator): TargetElement =>
167
- new TargetElement(name, byLocator),
168
-
169
- of: (parent: Question<ElementFinder> | ElementFinder) => {
170
- return {
171
- located: (byLocator: Locator): TargetNestedElement =>
172
- new TargetNestedElement(parent, new TargetElement(name, byLocator)),
173
- };
174
- },
175
- };
176
- }
177
-
178
- /**
179
- * @desc
180
- * Locates a group of web elements
181
- *
182
- * @param {string} name - A human-readable name of the elements to be used in the report
183
- * @returns {TargetBuilder<TargetElements> & NestedTargetBuilder<TargetNestedElements>}
184
- */
185
- static all(name: string): TargetBuilder<TargetElements> & NestedTargetBuilder<TargetNestedElements> {
186
- return {
187
- located: (byLocator: Locator): TargetElements =>
188
- new TargetElements(name, byLocator),
189
-
190
- of: (parent: Question<ElementFinder> | ElementFinder) => {
191
- return {
192
- located: (byLocator: Locator): TargetNestedElements =>
193
- new TargetNestedElements(parent, new TargetElements(name, byLocator)),
194
- };
195
- },
196
- };
197
- }
198
- }
@@ -1,70 +0,0 @@
1
- import { AnswersQuestions, MetaQuestion, Question, UsesAbilities } from '@serenity-js/core';
2
- import { ElementFinder, Locator } from 'protractor';
3
-
4
- import { BrowseTheWeb } from '../../abilities';
5
- import { override } from './override';
6
- import { TargetNestedElement } from './TargetNestedElement';
7
-
8
- /**
9
- * @desc
10
- * Locates a single {@link WebElement}.
11
- *
12
- * Instead of using this class directly, please use {@link Target.the} instead.
13
- *
14
- * @public
15
- * @see {@link Target}
16
- *
17
- * @extends {@serenity-js/core/lib/screenplay~Question}
18
- * @implements {@serenity-js/core/lib/screenplay/questions~MetaQuestion}
19
- */
20
- export class TargetElement
21
- extends Question<ElementFinder>
22
- implements MetaQuestion<Question<ElementFinder> | ElementFinder, ElementFinder>
23
- {
24
- /**
25
- * @desc
26
- *
27
- * @param {string} description - A human-readable description to be used in the report
28
- * @param {protractor~Locator} locator - A locator to be used when locating the element
29
- */
30
- constructor(
31
- protected readonly description: string,
32
- protected readonly locator: Locator,
33
- ) {
34
- super(`the ${ description }`);
35
- }
36
-
37
- /**
38
- * @desc
39
- * Retrieves a {@link WebElement} located by `locator`,
40
- * resolved in the context of a `parent` {@link WebElement}.
41
- *
42
- * @param {Question<ElementFinder> | ElementFinder} parent
43
- * @returns {TargetNestedElement}
44
- *
45
- * @see {@link Target}
46
- */
47
- of(parent: Question<ElementFinder> | ElementFinder): TargetNestedElement {
48
- return new TargetNestedElement(parent, this);
49
- }
50
-
51
- /**
52
- * @desc
53
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
54
- * answer this {@link @serenity-js/core/lib/screenplay~Question}.
55
- *
56
- * @param {AnswersQuestions & UsesAbilities} actor
57
- * @returns {Promise<void>}
58
- *
59
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
60
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
61
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
62
- */
63
- answeredBy(actor: AnswersQuestions & UsesAbilities): ElementFinder {
64
- return override(
65
- BrowseTheWeb.as(actor).locate(this.locator),
66
- 'toString',
67
- TargetElement.prototype.toString.bind(this),
68
- );
69
- }
70
- }
@@ -1,142 +0,0 @@
1
- import { AnswersQuestions, Expectation, List, MetaQuestion, Question, UsesAbilities } from '@serenity-js/core';
2
- import { ElementArrayFinder, ElementFinder, Locator } from 'protractor';
3
-
4
- import { BrowseTheWeb } from '../../abilities';
5
- import { ElementArrayFinderListAdapter } from '../lists';
6
- import { override } from './override';
7
- import { TargetNestedElements } from './TargetNestedElements';
8
-
9
- /**
10
- * @desc
11
- * Locates a group of {@link WebElement}s.
12
- *
13
- * Instead of using this class directly, please use {@link Target.all} instead.
14
- *
15
- * @public
16
- * @see {@link Target}
17
- *
18
- * @extends {@serenity-js/core/lib/screenplay~Question}
19
- * @implements {@serenity-js/core/lib/screenplay/questions~MetaQuestion}
20
- */
21
- export class TargetElements
22
- extends Question<ElementArrayFinder>
23
- implements MetaQuestion<Question<ElementFinder> | ElementFinder, ElementArrayFinder>
24
- {
25
- private readonly list: List<ElementArrayFinderListAdapter, ElementFinder, ElementArrayFinder>;
26
-
27
- /**
28
- * @desc
29
- *
30
- * @param {string} description - A human-readable description to be used in the report
31
- * @param {protractor~Locator} locator - A locator to be used when locating the element
32
- */
33
- constructor(
34
- private readonly description: string,
35
- private readonly locator: Locator,
36
- ) {
37
- super(`the ${ description }`);
38
- this.list = new List(new ElementArrayFinderListAdapter(this));
39
- }
40
-
41
- /**
42
- * @desc
43
- * Retrieves a group of {@link WebElement}s located by `locator`,
44
- * resolved in the context of a `parent` {@link WebElement}.
45
- *
46
- * @param {Question<ElementFinder> | ElementFinder} parent
47
- * @returns {TargetNestedElements}
48
- *
49
- * @see {@link Target}
50
- */
51
- of(parent: Question<ElementFinder> | ElementFinder): TargetNestedElements {
52
- return new TargetNestedElements(parent, this);
53
- }
54
-
55
- /**
56
- * @desc
57
- * Returns the number of {@link ElementFinder}s matched by the `locator`
58
- *
59
- * @returns {@serenity-js/core/lib/screenplay~Question<Promise<number>>}
60
- *
61
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
62
- */
63
- count(): Question<Promise<number>> {
64
- return this.list.count();
65
- }
66
-
67
- /**
68
- * @desc
69
- * Returns the first of {@link ElementFinder}s matched by the `locator`
70
- *
71
- * @returns {@serenity-js/core/lib/screenplay~Question<ElementFinder>}
72
- *
73
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
74
- */
75
- first(): Question<ElementFinder> {
76
- return this.list.first()
77
- }
78
-
79
- /**
80
- * @desc
81
- * Returns the last of {@link ElementFinder}s matched by the `locator`
82
- *
83
- * @returns {@serenity-js/core/lib/screenplay~Question<ElementFinder>}
84
- *
85
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
86
- */
87
- last(): Question<ElementFinder> {
88
- return this.list.last()
89
- }
90
-
91
- /**
92
- * @desc
93
- * Returns an {@link ElementFinder} at `index` for `locator`
94
- *
95
- * @param {number} index
96
- *
97
- * @returns {@serenity-js/core/lib/screenplay~Question<ElementFinder>}
98
- *
99
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
100
- */
101
- get(index: number): Question<ElementFinder> {
102
- return this.list.get(index);
103
- }
104
-
105
- /**
106
- * @desc
107
- * Filters the list of {@link ElementFinder}s matched by `locator` to those that meet the additional {@link @serenity-js/core/lib/screenplay/questions~Expectation}s.
108
- *
109
- * @param {@serenity-js/core/lib/screenplay/questions~MetaQuestion<ElementFinder, Promise<Answer_Type> | Answer_Type>} question
110
- * @param {@serenity-js/core/lib/screenplay/questions~Expectation<any, Answer_type>} expectation
111
- *
112
- * @returns {@serenity-js/core/lib/screenplay/questions~List<ElementArrayFinderListAdapter, ElementFinder, ElementArrayFinder>}
113
- *
114
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
115
- */
116
- where<Answer_Type>(
117
- question: MetaQuestion<ElementFinder, Promise<Answer_Type> | Answer_Type>,
118
- expectation: Expectation<any, Answer_Type>,
119
- ): List<ElementArrayFinderListAdapter, ElementFinder, ElementArrayFinder> {
120
- return this.list.where(question, expectation);
121
- }
122
-
123
- /**
124
- * @desc
125
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
126
- * answer this {@link @serenity-js/core/lib/screenplay~Question}.
127
- *
128
- * @param {AnswersQuestions & UsesAbilities} actor
129
- * @returns {Promise<void>}
130
- *
131
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
132
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
133
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
134
- */
135
- answeredBy(actor: AnswersQuestions & UsesAbilities): ElementArrayFinder {
136
- return override(
137
- BrowseTheWeb.as(actor).locateAll(this.locator),
138
- 'toString',
139
- TargetElements.prototype.toString.bind(this),
140
- );
141
- }
142
- }
@@ -1,71 +0,0 @@
1
- import { AnswersQuestions, MetaQuestion, Question, UsesAbilities } from '@serenity-js/core';
2
- import { ElementFinder } from 'protractor';
3
-
4
- import { withAnswerOf } from '../../withAnswerOf';
5
- import { override } from './override';
6
-
7
- /**
8
- * @desc
9
- * Locates a single {@link WebElement} located within another {@link WebElement}.
10
- *
11
- * Instead of using this class directly, please use {@link Target.the} and {@link TargetElement#of} instead.
12
- *
13
- * @public
14
- * @see {@link Target}
15
- *
16
- * @extends {@serenity-js/core/lib/screenplay~Question}
17
- * @implements {@serenity-js/core/lib/screenplay/questions~MetaQuestion}
18
- */
19
- export class TargetNestedElement
20
- extends Question<ElementFinder>
21
- implements MetaQuestion<Question<ElementFinder> | ElementFinder, ElementFinder>
22
- {
23
-
24
- /**
25
- * @desc
26
- *
27
- * @param {Question<ElementFinder> | ElementFinder} parent
28
- * @param {Question<ElementFinder> | ElementFinder} child
29
- */
30
- constructor(
31
- private readonly parent: Question<ElementFinder> | ElementFinder,
32
- private readonly child: Question<ElementFinder> | ElementFinder,
33
- ) {
34
- super(`${ child.toString() } of ${ parent }`);
35
- }
36
-
37
- /**
38
- * @desc
39
- * Retrieves a {@link WebElement} located by `locator`,
40
- * resolved in the context of a `parent` {@link WebElement}.
41
- *
42
- * @param {Question<ElementFinder> | ElementFinder} parent
43
- * @returns {TargetNestedElement}
44
- *
45
- * @see {@link Target}
46
- */
47
- of(parent: Question<ElementFinder> | ElementFinder): TargetNestedElement {
48
- return new TargetNestedElement(parent, this);
49
- }
50
-
51
- /**
52
- * @desc
53
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
54
- * answer this {@link @serenity-js/core/lib/screenplay~Question}.
55
- *
56
- * @param {AnswersQuestions & UsesAbilities} actor
57
- * @returns {Promise<void>}
58
- *
59
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
60
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
61
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
62
- */
63
- answeredBy(actor: AnswersQuestions & UsesAbilities): ElementFinder {
64
- return withAnswerOf<ElementFinder, ElementFinder>(actor, this.parent, parent =>
65
- withAnswerOf<ElementFinder, ElementFinder>(actor, this.child, child => override(
66
- parent.element(child.locator()),
67
- 'toString',
68
- TargetNestedElement.prototype.toString.bind(this),
69
- )));
70
- }
71
- }
@@ -1,142 +0,0 @@
1
- import { AnswersQuestions, Expectation, List, MetaQuestion, Question, UsesAbilities } from '@serenity-js/core';
2
- import { ElementArrayFinder, ElementFinder } from 'protractor';
3
-
4
- import { withAnswerOf } from '../../withAnswerOf';
5
- import { ElementArrayFinderListAdapter } from '../lists';
6
- import { override } from './override';
7
-
8
- /**
9
- * @desc
10
- * Locates a group of {@link WebElement}s located within another {@link WebElement}.
11
- *
12
- * Instead of using this class directly, please use {@link Target.all} and {@link TargetElements#of} instead.
13
- *
14
- * @public
15
- * @see {@link Target}
16
- *
17
- * @extends {@serenity-js/core/lib/screenplay~Question}
18
- * @implements {@serenity-js/core/lib/screenplay/questions~MetaQuestion}
19
- */
20
- export class TargetNestedElements
21
- extends Question<ElementArrayFinder>
22
- implements MetaQuestion<Question<ElementFinder> | ElementFinder, ElementArrayFinder>
23
- {
24
- private readonly list: List<ElementArrayFinderListAdapter, ElementFinder, ElementArrayFinder>;
25
-
26
- /**
27
- * @desc
28
- *
29
- * @param {Question<ElementFinder> | ElementFinder} parent
30
- * @param {Question<ElementArrayFinder> | ElementArrayFinder} children
31
- */
32
- constructor(
33
- private readonly parent: Question<ElementFinder> | ElementFinder,
34
- private readonly children: Question<ElementArrayFinder> | ElementArrayFinder,
35
- ) {
36
- super(`${ children.toString() } of ${ parent }`);
37
- this.list = new List(new ElementArrayFinderListAdapter(this));
38
- }
39
-
40
- /**
41
- * @desc
42
- * Retrieves a group of {@link WebElement}s located by `locator`,
43
- * resolved in the context of a `parent` {@link WebElement}.
44
- *
45
- * @param {Question<ElementFinder> | ElementFinder} parent
46
- * @returns {TargetNestedElements}
47
- *
48
- * @see {@link Target}
49
- */
50
- of(parent: Question<ElementFinder> | ElementFinder): TargetNestedElements {
51
- return new TargetNestedElements(parent, this);
52
- }
53
-
54
- /**
55
- * @desc
56
- * Returns the number of {@link ElementFinder}s matched by the `locator`
57
- *
58
- * @returns {@serenity-js/core/lib/screenplay~Question<Promise<number>>}
59
- *
60
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
61
- */
62
- count(): Question<Promise<number>> {
63
- return this.list.count();
64
- }
65
-
66
- /**
67
- * @desc
68
- * Returns the first of {@link ElementFinder}s matched by the `locator`
69
- *
70
- * @returns {@serenity-js/core/lib/screenplay~Question<ElementFinder>}
71
- *
72
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
73
- */
74
- first(): Question<ElementFinder> {
75
- return this.list.first()
76
- }
77
-
78
- /**
79
- * @desc
80
- * Returns the last of {@link ElementFinder}s matched by the `locator`
81
- *
82
- * @returns {@serenity-js/core/lib/screenplay~Question<ElementFinder>}
83
- *
84
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
85
- */
86
- last(): Question<ElementFinder> {
87
- return this.list.last()
88
- }
89
-
90
- /**
91
- * @desc
92
- * Returns an {@link ElementFinder} at `index` for `locator`
93
- *
94
- * @param {number} index
95
- *
96
- * @returns {@serenity-js/core/lib/screenplay~Question<ElementFinder>}
97
- *
98
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
99
- */
100
- get(index: number): Question<ElementFinder> {
101
- return this.list.get(index);
102
- }
103
-
104
- /**
105
- * @desc
106
- * Filters the list of {@link ElementFinder}s matched by `locator` to those that meet the additional {@link @serenity-js/core/lib/screenplay/questions~Expectation}s.
107
- *
108
- * @param {@serenity-js/core/lib/screenplay/questions~MetaQuestion<ElementFinder, Promise<Answer_Type> | Answer_Type>} question
109
- * @param {@serenity-js/core/lib/screenplay/questions~Expectation<any, Answer_type>} expectation
110
- *
111
- * @returns {@serenity-js/core/lib/screenplay/questions~List<ElementArrayFinderListAdapter, ElementFinder, ElementArrayFinder>}
112
- *
113
- * @see {@link @serenity-js/core/lib/screenplay/questions~List}
114
- */
115
- where<Answer_Type>(
116
- question: MetaQuestion<ElementFinder, Promise<Answer_Type> | Answer_Type>,
117
- expectation: Expectation<any, Answer_Type>,
118
- ): List<ElementArrayFinderListAdapter, ElementFinder, ElementArrayFinder> {
119
- return this.list.where(question, expectation);
120
- }
121
-
122
- /**
123
- * @desc
124
- * Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
125
- * answer this {@link @serenity-js/core/lib/screenplay~Question}.
126
- *
127
- * @param {AnswersQuestions & UsesAbilities} actor
128
- * @returns {Promise<void>}
129
- *
130
- * @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
131
- * @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
132
- * @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
133
- */
134
- answeredBy(actor: AnswersQuestions & UsesAbilities): ElementArrayFinder {
135
- return withAnswerOf<ElementFinder, ElementArrayFinder>(actor, this.parent, parent =>
136
- withAnswerOf<ElementArrayFinder, ElementArrayFinder>(actor, this.children, children => override(
137
- parent.all(children.locator()),
138
- 'toString',
139
- TargetNestedElements.prototype.toString.bind(this),
140
- )));
141
- }
142
- }
@@ -1,10 +0,0 @@
1
- import { Question } from '@serenity-js/core';
2
- import { ElementFinder, Locator } from 'protractor';
3
-
4
- export interface TargetBuilder<T> {
5
- located(byLocator: Locator): T;
6
- }
7
-
8
- export interface NestedTargetBuilder<T> {
9
- of(parent: Question<ElementFinder> | ElementFinder): TargetBuilder<T>;
10
- }
@@ -1,5 +0,0 @@
1
- export * from './Target';
2
- export * from './TargetElement';
3
- export * from './TargetElements';
4
- export * from './TargetNestedElement';
5
- export * from './TargetNestedElements';
@@ -1,17 +0,0 @@
1
- /* eslint-disable @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/ban-types,unicorn/prevent-abbreviations */
2
-
3
- /**
4
- * @package
5
- * @param obj
6
- * @param name - name of the method or field to override
7
- * @param implementation
8
- */
9
- export function override<T extends object, K extends keyof T>(obj: T, name: K, implementation: T[K]) {
10
- return new Proxy<T>(obj, {
11
- get(o: T, property: string | symbol) {
12
- return property === name
13
- ? implementation
14
- : obj[property];
15
- },
16
- });
17
- }