@serenity-js/webdriverio-8 3.31.0

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 (285) hide show
  1. package/CHANGELOG.md +1232 -0
  2. package/LICENSE.md +201 -0
  3. package/NOTICE.md +1 -0
  4. package/README.md +234 -0
  5. package/esm/adapter/TestRunnerLoader.d.ts +17 -0
  6. package/esm/adapter/TestRunnerLoader.d.ts.map +1 -0
  7. package/esm/adapter/TestRunnerLoader.js +63 -0
  8. package/esm/adapter/TestRunnerLoader.js.map +1 -0
  9. package/esm/adapter/WebdriverIOFrameworkAdapter.d.ts +25 -0
  10. package/esm/adapter/WebdriverIOFrameworkAdapter.d.ts.map +1 -0
  11. package/esm/adapter/WebdriverIOFrameworkAdapter.js +90 -0
  12. package/esm/adapter/WebdriverIOFrameworkAdapter.js.map +1 -0
  13. package/esm/adapter/WebdriverIOFrameworkAdapterFactory.d.ts +18 -0
  14. package/esm/adapter/WebdriverIOFrameworkAdapterFactory.d.ts.map +1 -0
  15. package/esm/adapter/WebdriverIOFrameworkAdapterFactory.js +18 -0
  16. package/esm/adapter/WebdriverIOFrameworkAdapterFactory.js.map +1 -0
  17. package/esm/adapter/WebdriverIONotifier.d.ts +71 -0
  18. package/esm/adapter/WebdriverIONotifier.d.ts.map +1 -0
  19. package/esm/adapter/WebdriverIONotifier.js +390 -0
  20. package/esm/adapter/WebdriverIONotifier.js.map +1 -0
  21. package/esm/adapter/index.d.ts +2 -0
  22. package/esm/adapter/index.d.ts.map +1 -0
  23. package/esm/adapter/index.js +2 -0
  24. package/esm/adapter/index.js.map +1 -0
  25. package/esm/adapter/reporter/BrowserCapabilitiesReporter.d.ts +18 -0
  26. package/esm/adapter/reporter/BrowserCapabilitiesReporter.d.ts.map +1 -0
  27. package/esm/adapter/reporter/BrowserCapabilitiesReporter.js +42 -0
  28. package/esm/adapter/reporter/BrowserCapabilitiesReporter.js.map +1 -0
  29. package/esm/adapter/reporter/InitialisesReporters.d.ts +8 -0
  30. package/esm/adapter/reporter/InitialisesReporters.d.ts.map +1 -0
  31. package/esm/adapter/reporter/InitialisesReporters.js +2 -0
  32. package/esm/adapter/reporter/InitialisesReporters.js.map +1 -0
  33. package/esm/adapter/reporter/OutputStreamBuffer.d.ts +13 -0
  34. package/esm/adapter/reporter/OutputStreamBuffer.d.ts.map +1 -0
  35. package/esm/adapter/reporter/OutputStreamBuffer.js +25 -0
  36. package/esm/adapter/reporter/OutputStreamBuffer.js.map +1 -0
  37. package/esm/adapter/reporter/OutputStreamBufferPrinter.d.ts +16 -0
  38. package/esm/adapter/reporter/OutputStreamBufferPrinter.d.ts.map +1 -0
  39. package/esm/adapter/reporter/OutputStreamBufferPrinter.js +24 -0
  40. package/esm/adapter/reporter/OutputStreamBufferPrinter.js.map +1 -0
  41. package/esm/adapter/reporter/ProvidesWriteStream.d.ts +8 -0
  42. package/esm/adapter/reporter/ProvidesWriteStream.d.ts.map +1 -0
  43. package/esm/adapter/reporter/ProvidesWriteStream.js +2 -0
  44. package/esm/adapter/reporter/ProvidesWriteStream.js.map +1 -0
  45. package/esm/adapter/reporter/TagPrinter.d.ts +17 -0
  46. package/esm/adapter/reporter/TagPrinter.d.ts.map +1 -0
  47. package/esm/adapter/reporter/TagPrinter.js +52 -0
  48. package/esm/adapter/reporter/TagPrinter.js.map +1 -0
  49. package/esm/adapter/reporter/index.d.ts +6 -0
  50. package/esm/adapter/reporter/index.d.ts.map +1 -0
  51. package/esm/adapter/reporter/index.js +6 -0
  52. package/esm/adapter/reporter/index.js.map +1 -0
  53. package/esm/api.d.ts +3 -0
  54. package/esm/api.d.ts.map +1 -0
  55. package/esm/api.js +2 -0
  56. package/esm/api.js.map +1 -0
  57. package/esm/config/WebdriverIOConfig.d.ts +95 -0
  58. package/esm/config/WebdriverIOConfig.d.ts.map +1 -0
  59. package/esm/config/WebdriverIOConfig.js +2 -0
  60. package/esm/config/WebdriverIOConfig.js.map +1 -0
  61. package/esm/config/index.d.ts +2 -0
  62. package/esm/config/index.d.ts.map +1 -0
  63. package/esm/config/index.js +2 -0
  64. package/esm/config/index.js.map +1 -0
  65. package/esm/index.d.ts +16 -0
  66. package/esm/index.d.ts.map +1 -0
  67. package/esm/index.js +14 -0
  68. package/esm/index.js.map +1 -0
  69. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +40 -0
  70. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts.map +1 -0
  71. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +43 -0
  72. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -0
  73. package/esm/screenplay/abilities/index.d.ts +2 -0
  74. package/esm/screenplay/abilities/index.d.ts.map +1 -0
  75. package/esm/screenplay/abilities/index.js +2 -0
  76. package/esm/screenplay/abilities/index.js.map +1 -0
  77. package/esm/screenplay/index.d.ts +3 -0
  78. package/esm/screenplay/index.d.ts.map +1 -0
  79. package/esm/screenplay/index.js +3 -0
  80. package/esm/screenplay/index.js.map +1 -0
  81. package/esm/screenplay/models/WebdriverIOBrowsingSession.d.ts +25 -0
  82. package/esm/screenplay/models/WebdriverIOBrowsingSession.d.ts.map +1 -0
  83. package/esm/screenplay/models/WebdriverIOBrowsingSession.js +125 -0
  84. package/esm/screenplay/models/WebdriverIOBrowsingSession.js.map +1 -0
  85. package/esm/screenplay/models/WebdriverIOCookie.d.ts +15 -0
  86. package/esm/screenplay/models/WebdriverIOCookie.d.ts.map +1 -0
  87. package/esm/screenplay/models/WebdriverIOCookie.js +42 -0
  88. package/esm/screenplay/models/WebdriverIOCookie.js.map +1 -0
  89. package/esm/screenplay/models/WebdriverIOErrorHandler.d.ts +9 -0
  90. package/esm/screenplay/models/WebdriverIOErrorHandler.d.ts.map +1 -0
  91. package/esm/screenplay/models/WebdriverIOErrorHandler.js +20 -0
  92. package/esm/screenplay/models/WebdriverIOErrorHandler.js.map +1 -0
  93. package/esm/screenplay/models/WebdriverIOModalDialogHandler.d.ts +27 -0
  94. package/esm/screenplay/models/WebdriverIOModalDialogHandler.d.ts.map +1 -0
  95. package/esm/screenplay/models/WebdriverIOModalDialogHandler.js +74 -0
  96. package/esm/screenplay/models/WebdriverIOModalDialogHandler.js.map +1 -0
  97. package/esm/screenplay/models/WebdriverIOPage.d.ts +50 -0
  98. package/esm/screenplay/models/WebdriverIOPage.d.ts.map +1 -0
  99. package/esm/screenplay/models/WebdriverIOPage.js +219 -0
  100. package/esm/screenplay/models/WebdriverIOPage.js.map +1 -0
  101. package/esm/screenplay/models/WebdriverIOPageElement.d.ts +34 -0
  102. package/esm/screenplay/models/WebdriverIOPageElement.d.ts.map +1 -0
  103. package/esm/screenplay/models/WebdriverIOPageElement.js +220 -0
  104. package/esm/screenplay/models/WebdriverIOPageElement.js.map +1 -0
  105. package/esm/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts +30 -0
  106. package/esm/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts.map +1 -0
  107. package/esm/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js +77 -0
  108. package/esm/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js.map +1 -0
  109. package/esm/screenplay/models/WebdriverProtocolErrorCode.d.ts +39 -0
  110. package/esm/screenplay/models/WebdriverProtocolErrorCode.d.ts.map +1 -0
  111. package/esm/screenplay/models/WebdriverProtocolErrorCode.js +40 -0
  112. package/esm/screenplay/models/WebdriverProtocolErrorCode.js.map +1 -0
  113. package/esm/screenplay/models/index.d.ts +5 -0
  114. package/esm/screenplay/models/index.d.ts.map +1 -0
  115. package/esm/screenplay/models/index.js +5 -0
  116. package/esm/screenplay/models/index.js.map +1 -0
  117. package/esm/screenplay/models/locators/WebdriverIOLocator.d.ts +33 -0
  118. package/esm/screenplay/models/locators/WebdriverIOLocator.d.ts.map +1 -0
  119. package/esm/screenplay/models/locators/WebdriverIOLocator.js +123 -0
  120. package/esm/screenplay/models/locators/WebdriverIOLocator.js.map +1 -0
  121. package/esm/screenplay/models/locators/WebdriverIORootLocator.d.ts +17 -0
  122. package/esm/screenplay/models/locators/WebdriverIORootLocator.d.ts.map +1 -0
  123. package/esm/screenplay/models/locators/WebdriverIORootLocator.js +30 -0
  124. package/esm/screenplay/models/locators/WebdriverIORootLocator.js.map +1 -0
  125. package/esm/screenplay/models/locators/index.d.ts +3 -0
  126. package/esm/screenplay/models/locators/index.d.ts.map +1 -0
  127. package/esm/screenplay/models/locators/index.js +3 -0
  128. package/esm/screenplay/models/locators/index.js.map +1 -0
  129. package/lib/adapter/TestRunnerLoader.d.ts +17 -0
  130. package/lib/adapter/TestRunnerLoader.d.ts.map +1 -0
  131. package/lib/adapter/TestRunnerLoader.js +67 -0
  132. package/lib/adapter/TestRunnerLoader.js.map +1 -0
  133. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts +25 -0
  134. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts.map +1 -0
  135. package/lib/adapter/WebdriverIOFrameworkAdapter.js +127 -0
  136. package/lib/adapter/WebdriverIOFrameworkAdapter.js.map +1 -0
  137. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts +18 -0
  138. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts.map +1 -0
  139. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.js +22 -0
  140. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.js.map +1 -0
  141. package/lib/adapter/WebdriverIONotifier.d.ts +71 -0
  142. package/lib/adapter/WebdriverIONotifier.d.ts.map +1 -0
  143. package/lib/adapter/WebdriverIONotifier.js +394 -0
  144. package/lib/adapter/WebdriverIONotifier.js.map +1 -0
  145. package/lib/adapter/index.d.ts +2 -0
  146. package/lib/adapter/index.d.ts.map +1 -0
  147. package/lib/adapter/index.js +18 -0
  148. package/lib/adapter/index.js.map +1 -0
  149. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts +18 -0
  150. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts.map +1 -0
  151. package/lib/adapter/reporter/BrowserCapabilitiesReporter.js +49 -0
  152. package/lib/adapter/reporter/BrowserCapabilitiesReporter.js.map +1 -0
  153. package/lib/adapter/reporter/InitialisesReporters.d.ts +8 -0
  154. package/lib/adapter/reporter/InitialisesReporters.d.ts.map +1 -0
  155. package/lib/adapter/reporter/InitialisesReporters.js +3 -0
  156. package/lib/adapter/reporter/InitialisesReporters.js.map +1 -0
  157. package/lib/adapter/reporter/OutputStreamBuffer.d.ts +13 -0
  158. package/lib/adapter/reporter/OutputStreamBuffer.d.ts.map +1 -0
  159. package/lib/adapter/reporter/OutputStreamBuffer.js +29 -0
  160. package/lib/adapter/reporter/OutputStreamBuffer.js.map +1 -0
  161. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts +16 -0
  162. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts.map +1 -0
  163. package/lib/adapter/reporter/OutputStreamBufferPrinter.js +28 -0
  164. package/lib/adapter/reporter/OutputStreamBufferPrinter.js.map +1 -0
  165. package/lib/adapter/reporter/ProvidesWriteStream.d.ts +8 -0
  166. package/lib/adapter/reporter/ProvidesWriteStream.d.ts.map +1 -0
  167. package/lib/adapter/reporter/ProvidesWriteStream.js +3 -0
  168. package/lib/adapter/reporter/ProvidesWriteStream.js.map +1 -0
  169. package/lib/adapter/reporter/TagPrinter.d.ts +17 -0
  170. package/lib/adapter/reporter/TagPrinter.d.ts.map +1 -0
  171. package/lib/adapter/reporter/TagPrinter.js +56 -0
  172. package/lib/adapter/reporter/TagPrinter.js.map +1 -0
  173. package/lib/adapter/reporter/index.d.ts +6 -0
  174. package/lib/adapter/reporter/index.d.ts.map +1 -0
  175. package/lib/adapter/reporter/index.js +22 -0
  176. package/lib/adapter/reporter/index.js.map +1 -0
  177. package/lib/api.d.ts +3 -0
  178. package/lib/api.d.ts.map +1 -0
  179. package/lib/api.js +18 -0
  180. package/lib/api.js.map +1 -0
  181. package/lib/config/WebdriverIOConfig.d.ts +95 -0
  182. package/lib/config/WebdriverIOConfig.d.ts.map +1 -0
  183. package/lib/config/WebdriverIOConfig.js +3 -0
  184. package/lib/config/WebdriverIOConfig.js.map +1 -0
  185. package/lib/config/index.d.ts +2 -0
  186. package/lib/config/index.d.ts.map +1 -0
  187. package/lib/config/index.js +18 -0
  188. package/lib/config/index.js.map +1 -0
  189. package/lib/index.d.ts +16 -0
  190. package/lib/index.d.ts.map +1 -0
  191. package/lib/index.js +52 -0
  192. package/lib/index.js.map +1 -0
  193. package/lib/package.json +1 -0
  194. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +40 -0
  195. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts.map +1 -0
  196. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +47 -0
  197. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -0
  198. package/lib/screenplay/abilities/index.d.ts +2 -0
  199. package/lib/screenplay/abilities/index.d.ts.map +1 -0
  200. package/lib/screenplay/abilities/index.js +18 -0
  201. package/lib/screenplay/abilities/index.js.map +1 -0
  202. package/lib/screenplay/index.d.ts +3 -0
  203. package/lib/screenplay/index.d.ts.map +1 -0
  204. package/lib/screenplay/index.js +19 -0
  205. package/lib/screenplay/index.js.map +1 -0
  206. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts +25 -0
  207. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts.map +1 -0
  208. package/lib/screenplay/models/WebdriverIOBrowsingSession.js +129 -0
  209. package/lib/screenplay/models/WebdriverIOBrowsingSession.js.map +1 -0
  210. package/lib/screenplay/models/WebdriverIOCookie.d.ts +15 -0
  211. package/lib/screenplay/models/WebdriverIOCookie.d.ts.map +1 -0
  212. package/lib/screenplay/models/WebdriverIOCookie.js +46 -0
  213. package/lib/screenplay/models/WebdriverIOCookie.js.map +1 -0
  214. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts +9 -0
  215. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts.map +1 -0
  216. package/lib/screenplay/models/WebdriverIOErrorHandler.js +24 -0
  217. package/lib/screenplay/models/WebdriverIOErrorHandler.js.map +1 -0
  218. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts +27 -0
  219. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts.map +1 -0
  220. package/lib/screenplay/models/WebdriverIOModalDialogHandler.js +78 -0
  221. package/lib/screenplay/models/WebdriverIOModalDialogHandler.js.map +1 -0
  222. package/lib/screenplay/models/WebdriverIOPage.d.ts +50 -0
  223. package/lib/screenplay/models/WebdriverIOPage.d.ts.map +1 -0
  224. package/lib/screenplay/models/WebdriverIOPage.js +256 -0
  225. package/lib/screenplay/models/WebdriverIOPage.js.map +1 -0
  226. package/lib/screenplay/models/WebdriverIOPageElement.d.ts +34 -0
  227. package/lib/screenplay/models/WebdriverIOPageElement.d.ts.map +1 -0
  228. package/lib/screenplay/models/WebdriverIOPageElement.js +257 -0
  229. package/lib/screenplay/models/WebdriverIOPageElement.js.map +1 -0
  230. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts +30 -0
  231. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts.map +1 -0
  232. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js +81 -0
  233. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js.map +1 -0
  234. package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts +39 -0
  235. package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts.map +1 -0
  236. package/lib/screenplay/models/WebdriverProtocolErrorCode.js +43 -0
  237. package/lib/screenplay/models/WebdriverProtocolErrorCode.js.map +1 -0
  238. package/lib/screenplay/models/index.d.ts +5 -0
  239. package/lib/screenplay/models/index.d.ts.map +1 -0
  240. package/lib/screenplay/models/index.js +21 -0
  241. package/lib/screenplay/models/index.js.map +1 -0
  242. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts +33 -0
  243. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts.map +1 -0
  244. package/lib/screenplay/models/locators/WebdriverIOLocator.js +128 -0
  245. package/lib/screenplay/models/locators/WebdriverIOLocator.js.map +1 -0
  246. package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts +17 -0
  247. package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts.map +1 -0
  248. package/lib/screenplay/models/locators/WebdriverIORootLocator.js +34 -0
  249. package/lib/screenplay/models/locators/WebdriverIORootLocator.js.map +1 -0
  250. package/lib/screenplay/models/locators/index.d.ts +3 -0
  251. package/lib/screenplay/models/locators/index.d.ts.map +1 -0
  252. package/lib/screenplay/models/locators/index.js +19 -0
  253. package/lib/screenplay/models/locators/index.js.map +1 -0
  254. package/package.json +122 -0
  255. package/src/adapter/TestRunnerLoader.ts +90 -0
  256. package/src/adapter/WebdriverIOFrameworkAdapter.ts +130 -0
  257. package/src/adapter/WebdriverIOFrameworkAdapterFactory.ts +39 -0
  258. package/src/adapter/WebdriverIONotifier.ts +480 -0
  259. package/src/adapter/index.ts +1 -0
  260. package/src/adapter/reporter/BrowserCapabilitiesReporter.ts +63 -0
  261. package/src/adapter/reporter/InitialisesReporters.ts +8 -0
  262. package/src/adapter/reporter/OutputStreamBuffer.ts +30 -0
  263. package/src/adapter/reporter/OutputStreamBufferPrinter.ts +30 -0
  264. package/src/adapter/reporter/ProvidesWriteStream.ts +8 -0
  265. package/src/adapter/reporter/TagPrinter.ts +69 -0
  266. package/src/adapter/reporter/index.ts +5 -0
  267. package/src/api.ts +2 -0
  268. package/src/config/WebdriverIOConfig.ts +94 -0
  269. package/src/config/index.ts +1 -0
  270. package/src/index.ts +32 -0
  271. package/src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts +46 -0
  272. package/src/screenplay/abilities/index.ts +1 -0
  273. package/src/screenplay/index.ts +2 -0
  274. package/src/screenplay/models/WebdriverIOBrowsingSession.ts +176 -0
  275. package/src/screenplay/models/WebdriverIOCookie.ts +51 -0
  276. package/src/screenplay/models/WebdriverIOErrorHandler.ts +25 -0
  277. package/src/screenplay/models/WebdriverIOModalDialogHandler.ts +99 -0
  278. package/src/screenplay/models/WebdriverIOPage.ts +311 -0
  279. package/src/screenplay/models/WebdriverIOPageElement.ts +280 -0
  280. package/src/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.ts +100 -0
  281. package/src/screenplay/models/WebdriverProtocolErrorCode.ts +38 -0
  282. package/src/screenplay/models/index.ts +4 -0
  283. package/src/screenplay/models/locators/WebdriverIOLocator.ts +176 -0
  284. package/src/screenplay/models/locators/WebdriverIORootLocator.ts +34 -0
  285. package/src/screenplay/models/locators/index.ts +2 -0
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebdriverIOPuppeteerModalDialogHandler = void 0;
4
+ const web_1 = require("@serenity-js/web");
5
+ /**
6
+ * WebdriverIO-specific implementation of [`ModalDialogHandler`](https://serenity-js.org/api/web/class/ModalDialogHandler/), applicable when WebdriverIO
7
+ * uses [Puppeteer](https://developer.chrome.com/docs/puppeteer/).
8
+ *
9
+ * Automatically handles any simple JavaScript modal dialog windows, such as
10
+ * those opened by [`window.alert()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert),
11
+ * [`window.confirm()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm),
12
+ * or [`window.prompt()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt).
13
+ *
14
+ * This helps to avoid Puppeteer hanging when there's an interaction pending
15
+ * and a dialog is already open, see https://github.com/puppeteer/puppeteer/issues/2481
16
+ */
17
+ class WebdriverIOPuppeteerModalDialogHandler extends web_1.ModalDialogHandler {
18
+ page;
19
+ dialogHandlingInProgress = false;
20
+ defaultHandler = async (dialog) => {
21
+ await dialog.dismiss();
22
+ return new web_1.DismissedModalDialog(dialog.message());
23
+ };
24
+ currentHandler;
25
+ constructor(page) {
26
+ super();
27
+ this.page = page;
28
+ this.currentHandler = this.defaultHandler;
29
+ // remove the default WebdriverIO handler because it makes any other listeners hang
30
+ // https://github.com/webdriverio/webdriverio/blob/518c56a61353b2f65436b83c618117021da7e622/packages/devtools/src/devtoolsdriver.ts#L69
31
+ this.page.removeAllListeners('dialog');
32
+ // register Serenity/JS handler instead
33
+ this.page.on('dialog', async (dialog) => {
34
+ // Puppeteer doesn't seem to synchronise async handlers correctly,
35
+ // hence the handleModalDialog wrapper and the `dialogHandlingInProgress` lock.
36
+ await this.handleModalDialog(() => this.currentHandler(dialog));
37
+ });
38
+ }
39
+ async acceptNext() {
40
+ this.currentHandler = async (dialog) => {
41
+ await dialog.accept(dialog.defaultValue());
42
+ return new web_1.AcceptedModalDialog(dialog.message());
43
+ };
44
+ }
45
+ async acceptNextWithValue(text) {
46
+ this.currentHandler = async (dialog) => {
47
+ await dialog.accept(String(text));
48
+ return new web_1.AcceptedModalDialog(dialog.message());
49
+ };
50
+ }
51
+ async dismissNext() {
52
+ this.currentHandler = async (dialog) => {
53
+ await dialog.dismiss();
54
+ return new web_1.DismissedModalDialog(dialog.message());
55
+ };
56
+ }
57
+ async reset() {
58
+ this.modalDialog = new web_1.AbsentModalDialog();
59
+ this.currentHandler = this.defaultHandler;
60
+ }
61
+ async discard() {
62
+ this.page.off('dialog', this.currentHandler);
63
+ }
64
+ async last() {
65
+ return new Promise((resolve, reject) => {
66
+ const interval = setInterval(() => {
67
+ if (!this.dialogHandlingInProgress) {
68
+ clearInterval(interval);
69
+ resolve(this.modalDialog);
70
+ }
71
+ }, 25);
72
+ });
73
+ }
74
+ async handleModalDialog(handler) {
75
+ this.dialogHandlingInProgress = true;
76
+ this.modalDialog = await handler();
77
+ this.dialogHandlingInProgress = false;
78
+ }
79
+ }
80
+ exports.WebdriverIOPuppeteerModalDialogHandler = WebdriverIOPuppeteerModalDialogHandler;
81
+ //# sourceMappingURL=WebdriverIOPuppeteerModalDialogHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOPuppeteerModalDialogHandler.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors#table_of_errors
3
+ * https://github.com/SeleniumHQ/selenium/blob/e70e22390000a65a6b706fbb33bbff8913555670/javascript/node/selenium-webdriver/lib/error.js#L441
4
+ *
5
+ * @package
6
+ */
7
+ export declare enum WebdriverProtocolErrorCode {
8
+ WebDriverError = "unknown error",
9
+ DetachedShadowRootError = "detached shadow root",
10
+ ElementClickInterceptedError = "element click intercepted",
11
+ ElementNotInteractableError = "element not interactable",
12
+ ElementNotSelectableError = "element not selectable",
13
+ InsecureCertificateError = "insecure certificate",
14
+ InvalidArgumentError = "invalid argument",
15
+ InvalidCookieDomainError = "invalid cookie domain",
16
+ InvalidCoordinatesError = "invalid coordinates",
17
+ InvalidElementStateError = "invalid element state",
18
+ InvalidSelectorError = "invalid selector",
19
+ NoSuchSessionError = "invalid session id",
20
+ JavascriptError = "javascript error",
21
+ MoveTargetOutOfBoundsError = "move target out of bounds",
22
+ NoSuchAlertError = "no such alert",
23
+ NoSuchCookieError = "no such cookie",
24
+ NoSuchElementError = "no such element",
25
+ NoSuchFrameError = "no such frame",
26
+ NoSuchShadowRootError = "no such shadow root",
27
+ NoSuchWindowError = "no such window",
28
+ ScriptTimeoutError = "script timeout",
29
+ SessionNotCreatedError = "session not created",
30
+ StaleElementReferenceError = "stale element reference",
31
+ TimeoutError = "timeout",
32
+ UnableToSetCookieError = "unable to set cookie",
33
+ UnableToCaptureScreenError = "unable to capture screen",
34
+ UnexpectedAlertOpenError = "unexpected alert open",
35
+ UnknownCommandError = "unknown command",
36
+ UnknownMethodError = "unknown method",
37
+ UnsupportedOperationError = "unsupported operation"
38
+ }
39
+ //# sourceMappingURL=WebdriverProtocolErrorCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverProtocolErrorCode.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverProtocolErrorCode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,0BAA0B;IAClC,cAAc,kBAAkB;IAChC,uBAAuB,yBAAyB;IAChD,4BAA4B,8BAA8B;IAC1D,2BAA2B,6BAA6B;IACxD,yBAAyB,2BAA2B;IACpD,wBAAwB,yBAAyB;IACjD,oBAAoB,qBAAqB;IACzC,wBAAwB,0BAA0B;IAClD,uBAAuB,wBAAwB;IAC/C,wBAAwB,0BAA0B;IAClD,oBAAoB,qBAAqB;IACzC,kBAAkB,uBAAuB;IACzC,eAAe,qBAAqB;IACpC,0BAA0B,8BAA8B;IACxD,gBAAgB,kBAAkB;IAClC,iBAAiB,mBAAmB;IACpC,kBAAkB,oBAAoB;IACtC,gBAAgB,kBAAkB;IAClC,qBAAqB,wBAAwB;IAC7C,iBAAiB,mBAAmB;IACpC,kBAAkB,mBAAmB;IACrC,sBAAsB,wBAAwB;IAC9C,0BAA0B,4BAA4B;IACtD,YAAY,YAAY;IACxB,sBAAsB,yBAAyB;IAC/C,0BAA0B,6BAA6B;IACvD,wBAAwB,0BAA0B;IAClD,mBAAmB,oBAAoB;IACvC,kBAAkB,mBAAmB;IACrC,yBAAyB,0BAA0B;CACtD"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebdriverProtocolErrorCode = void 0;
4
+ /**
5
+ * https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors#table_of_errors
6
+ * https://github.com/SeleniumHQ/selenium/blob/e70e22390000a65a6b706fbb33bbff8913555670/javascript/node/selenium-webdriver/lib/error.js#L441
7
+ *
8
+ * @package
9
+ */
10
+ var WebdriverProtocolErrorCode;
11
+ (function (WebdriverProtocolErrorCode) {
12
+ WebdriverProtocolErrorCode["WebDriverError"] = "unknown error";
13
+ WebdriverProtocolErrorCode["DetachedShadowRootError"] = "detached shadow root";
14
+ WebdriverProtocolErrorCode["ElementClickInterceptedError"] = "element click intercepted";
15
+ WebdriverProtocolErrorCode["ElementNotInteractableError"] = "element not interactable";
16
+ WebdriverProtocolErrorCode["ElementNotSelectableError"] = "element not selectable";
17
+ WebdriverProtocolErrorCode["InsecureCertificateError"] = "insecure certificate";
18
+ WebdriverProtocolErrorCode["InvalidArgumentError"] = "invalid argument";
19
+ WebdriverProtocolErrorCode["InvalidCookieDomainError"] = "invalid cookie domain";
20
+ WebdriverProtocolErrorCode["InvalidCoordinatesError"] = "invalid coordinates";
21
+ WebdriverProtocolErrorCode["InvalidElementStateError"] = "invalid element state";
22
+ WebdriverProtocolErrorCode["InvalidSelectorError"] = "invalid selector";
23
+ WebdriverProtocolErrorCode["NoSuchSessionError"] = "invalid session id";
24
+ WebdriverProtocolErrorCode["JavascriptError"] = "javascript error";
25
+ WebdriverProtocolErrorCode["MoveTargetOutOfBoundsError"] = "move target out of bounds";
26
+ WebdriverProtocolErrorCode["NoSuchAlertError"] = "no such alert";
27
+ WebdriverProtocolErrorCode["NoSuchCookieError"] = "no such cookie";
28
+ WebdriverProtocolErrorCode["NoSuchElementError"] = "no such element";
29
+ WebdriverProtocolErrorCode["NoSuchFrameError"] = "no such frame";
30
+ WebdriverProtocolErrorCode["NoSuchShadowRootError"] = "no such shadow root";
31
+ WebdriverProtocolErrorCode["NoSuchWindowError"] = "no such window";
32
+ WebdriverProtocolErrorCode["ScriptTimeoutError"] = "script timeout";
33
+ WebdriverProtocolErrorCode["SessionNotCreatedError"] = "session not created";
34
+ WebdriverProtocolErrorCode["StaleElementReferenceError"] = "stale element reference";
35
+ WebdriverProtocolErrorCode["TimeoutError"] = "timeout";
36
+ WebdriverProtocolErrorCode["UnableToSetCookieError"] = "unable to set cookie";
37
+ WebdriverProtocolErrorCode["UnableToCaptureScreenError"] = "unable to capture screen";
38
+ WebdriverProtocolErrorCode["UnexpectedAlertOpenError"] = "unexpected alert open";
39
+ WebdriverProtocolErrorCode["UnknownCommandError"] = "unknown command";
40
+ WebdriverProtocolErrorCode["UnknownMethodError"] = "unknown method";
41
+ WebdriverProtocolErrorCode["UnsupportedOperationError"] = "unsupported operation";
42
+ })(WebdriverProtocolErrorCode || (exports.WebdriverProtocolErrorCode = WebdriverProtocolErrorCode = {}));
43
+ //# sourceMappingURL=WebdriverProtocolErrorCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverProtocolErrorCode.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverProtocolErrorCode.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IAClC,8DAAgC,CAAA;IAChC,8EAAgD,CAAA;IAChD,wFAA0D,CAAA;IAC1D,sFAAwD,CAAA;IACxD,kFAAoD,CAAA;IACpD,+EAAiD,CAAA;IACjD,uEAAyC,CAAA;IACzC,gFAAkD,CAAA;IAClD,6EAA+C,CAAA;IAC/C,gFAAkD,CAAA;IAClD,uEAAyC,CAAA;IACzC,uEAAyC,CAAA;IACzC,kEAAoC,CAAA;IACpC,sFAAwD,CAAA;IACxD,gEAAkC,CAAA;IAClC,kEAAoC,CAAA;IACpC,oEAAsC,CAAA;IACtC,gEAAkC,CAAA;IAClC,2EAA6C,CAAA;IAC7C,kEAAoC,CAAA;IACpC,mEAAqC,CAAA;IACrC,4EAA8C,CAAA;IAC9C,oFAAsD,CAAA;IACtD,sDAAwB,CAAA;IACxB,6EAA+C,CAAA;IAC/C,qFAAuD,CAAA;IACvD,gFAAkD,CAAA;IAClD,qEAAuC,CAAA;IACvC,mEAAqC,CAAA;IACrC,iFAAmD,CAAA;AACvD,CAAC,EA/BW,0BAA0B,0CAA1B,0BAA0B,QA+BrC"}
@@ -0,0 +1,5 @@
1
+ export * from './WebdriverIOBrowsingSession.js';
2
+ export * from './WebdriverIOCookie.js';
3
+ export * from './WebdriverIOPage.js';
4
+ export * from './WebdriverIOPageElement.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./WebdriverIOBrowsingSession.js"), exports);
18
+ __exportStar(require("./WebdriverIOCookie.js"), exports);
19
+ __exportStar(require("./WebdriverIOPage.js"), exports);
20
+ __exportStar(require("./WebdriverIOPageElement.js"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,yDAAuC;AACvC,uDAAqC;AACrC,8DAA4C"}
@@ -0,0 +1,33 @@
1
+ import 'webdriverio';
2
+ import type { PageElement, RootLocator, Selector } from '@serenity-js/web';
3
+ import { Locator } from '@serenity-js/web';
4
+ import type { WebdriverIOErrorHandler } from '../WebdriverIOErrorHandler.js';
5
+ /**
6
+ * WebdriverIO-specific implementation of [`Locator`](https://serenity-js.org/api/web/class/Locator/).
7
+ *
8
+ * @group Models
9
+ */
10
+ export declare class WebdriverIOLocator extends Locator<WebdriverIO.Element, string> {
11
+ private readonly errorHandler;
12
+ constructor(parent: RootLocator<WebdriverIO.Element>, selector: Selector, errorHandler: WebdriverIOErrorHandler);
13
+ protected nativeSelector(): string;
14
+ isPresent(): Promise<boolean>;
15
+ nativeElement(): Promise<WebdriverIO.Element>;
16
+ protected resolveNativeElement(): Promise<WebdriverIO.Element>;
17
+ allNativeElements(): Promise<Array<WebdriverIO.Element>>;
18
+ of(parent: WebdriverIOLocator): Locator<WebdriverIO.Element, string>;
19
+ closestTo(child: WebdriverIOLocator): Locator<WebdriverIO.Element, string>;
20
+ locate(child: WebdriverIOLocator): Locator<WebdriverIO.Element, string>;
21
+ element(): PageElement<WebdriverIO.Element>;
22
+ allElements(): Promise<Array<PageElement<WebdriverIO.Element>>>;
23
+ }
24
+ /**
25
+ * @internal
26
+ */
27
+ export declare class WebdriverIOExistingElementLocator extends WebdriverIOLocator {
28
+ private readonly existingNativeElement;
29
+ constructor(parentRoot: RootLocator<WebdriverIO.Element>, selector: Selector, errorHandler: WebdriverIOErrorHandler, existingNativeElement: WebdriverIO.Element);
30
+ nativeElement(): Promise<WebdriverIO.Element>;
31
+ allNativeElements(): Promise<Array<WebdriverIO.Element>>;
32
+ }
33
+ //# sourceMappingURL=WebdriverIOLocator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/WebdriverIOLocator.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAmE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE5G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAI7E;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;IAKpE,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAF7B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EACxC,QAAQ,EAAE,QAAQ,EACD,YAAY,EAAE,uBAAuB;IAM1D,SAAS,CAAC,cAAc,IAAI,MAAM;IA4B5B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAU7B,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;cASnC,oBAAoB,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;IAgB9D,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAK9D,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;IAIpE,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;IAI1E,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;IAIvE,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;IAIrC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;CAcxE;AAED;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,kBAAkB;IAKjE,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAHtC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAC5C,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,uBAAuB,EACpB,qBAAqB,EAAE,WAAW,CAAC,OAAO;IAKzD,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;IAI7C,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CAGjE"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebdriverIOExistingElementLocator = exports.WebdriverIOLocator = void 0;
4
+ require("webdriverio");
5
+ const core_1 = require("@serenity-js/core");
6
+ const web_1 = require("@serenity-js/web");
7
+ const WebdriverIOPageElement_js_1 = require("../WebdriverIOPageElement.js");
8
+ /**
9
+ * WebdriverIO-specific implementation of [`Locator`](https://serenity-js.org/api/web/class/Locator/).
10
+ *
11
+ * @group Models
12
+ */
13
+ class WebdriverIOLocator extends web_1.Locator {
14
+ errorHandler;
15
+ constructor(parent, selector, errorHandler) {
16
+ super(parent, selector);
17
+ this.errorHandler = errorHandler;
18
+ }
19
+ // todo: refactor; replace with a map and some more generic lookup mechanism
20
+ nativeSelector() {
21
+ if (this.selector instanceof web_1.ByCss) {
22
+ return this.selector.value;
23
+ }
24
+ if (this.selector instanceof web_1.ByDeepCss) {
25
+ return `>>> ${this.selector.value}`;
26
+ }
27
+ if (this.selector instanceof web_1.ByCssContainingText) {
28
+ return `${this.selector.value}*=${this.selector.text}`;
29
+ }
30
+ if (this.selector instanceof web_1.ById) {
31
+ return `#${this.selector.value}`;
32
+ }
33
+ if (this.selector instanceof web_1.ByTagName) {
34
+ return `<${this.selector.value} />`;
35
+ }
36
+ if (this.selector instanceof web_1.ByXPath) {
37
+ return this.selector.value;
38
+ }
39
+ throw new core_1.LogicError((0, core_1.f) `${this.selector} is not supported by ${this.constructor.name}`);
40
+ }
41
+ async isPresent() {
42
+ try {
43
+ const element = await this.resolveNativeElement();
44
+ return Boolean(element);
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ async nativeElement() {
51
+ try {
52
+ return await this.resolveNativeElement();
53
+ }
54
+ catch (error) {
55
+ return await this.errorHandler.executeIfHandled(error, () => this.resolveNativeElement());
56
+ }
57
+ }
58
+ async resolveNativeElement() {
59
+ const parent = await this.parent.nativeElement();
60
+ if (parent.error) {
61
+ throw parent.error;
62
+ }
63
+ const element = await parent.$(this.nativeSelector());
64
+ if (element.error) {
65
+ throw element.error;
66
+ }
67
+ return element;
68
+ }
69
+ async allNativeElements() {
70
+ const parent = await this.parent.nativeElement();
71
+ return parent.$$(this.nativeSelector());
72
+ }
73
+ of(parent) {
74
+ return new WebdriverIOLocator(parent, this.selector, this.errorHandler);
75
+ }
76
+ closestTo(child) {
77
+ return new WebdriverIOParentElementLocator(this.parent, this.selector, child, this.errorHandler);
78
+ }
79
+ locate(child) {
80
+ return new WebdriverIOLocator(this, child.selector, this.errorHandler);
81
+ }
82
+ element() {
83
+ return new WebdriverIOPageElement_js_1.WebdriverIOPageElement(this);
84
+ }
85
+ async allElements() {
86
+ const elements = await this.allNativeElements();
87
+ return elements.map(childElement => new WebdriverIOPageElement_js_1.WebdriverIOPageElement(new WebdriverIOExistingElementLocator(this.parent, this.selector, this.errorHandler, childElement)));
88
+ }
89
+ }
90
+ exports.WebdriverIOLocator = WebdriverIOLocator;
91
+ /**
92
+ * @internal
93
+ */
94
+ class WebdriverIOExistingElementLocator extends WebdriverIOLocator {
95
+ existingNativeElement;
96
+ constructor(parentRoot, selector, errorHandler, existingNativeElement) {
97
+ super(parentRoot, selector, errorHandler);
98
+ this.existingNativeElement = existingNativeElement;
99
+ }
100
+ async nativeElement() {
101
+ return this.existingNativeElement;
102
+ }
103
+ async allNativeElements() {
104
+ return [this.existingNativeElement];
105
+ }
106
+ }
107
+ exports.WebdriverIOExistingElementLocator = WebdriverIOExistingElementLocator;
108
+ class WebdriverIOParentElementLocator extends WebdriverIOLocator {
109
+ child;
110
+ constructor(parentRoot, selector, child, errorHandler) {
111
+ super(parentRoot, selector, errorHandler);
112
+ this.child = child;
113
+ }
114
+ async resolveNativeElement() {
115
+ const cssSelector = this.asCssSelector(this.selector);
116
+ const child = await this.child.nativeElement();
117
+ if (child.error) {
118
+ throw child.error;
119
+ }
120
+ return child.$(
121
+ /* c8 ignore next */
122
+ new Function(`return this.closest(\`${cssSelector.value}\`)`));
123
+ }
124
+ async allNativeElements() {
125
+ return [await this.nativeElement()];
126
+ }
127
+ }
128
+ //# sourceMappingURL=WebdriverIOLocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/WebdriverIOLocator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import 'webdriverio';
2
+ import { RootLocator } from '@serenity-js/web';
3
+ /**
4
+ * WebdriverIO-specific implementation of [`RootLocator`](https://serenity-js.org/api/web/class/RootLocator/).
5
+ *
6
+ * @group Models
7
+ */
8
+ export declare class WebdriverIORootLocator extends RootLocator<WebdriverIO.Browser> {
9
+ private readonly browser;
10
+ constructor(browser: WebdriverIO.Browser);
11
+ isPresent(): Promise<boolean>;
12
+ nativeElement(): Promise<Pick<WebdriverIO.Browser, '$' | '$$'>>;
13
+ switchToFrame(frame: Element | object): Promise<void>;
14
+ switchToParentFrame(): Promise<void>;
15
+ switchToMainFrame(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=WebdriverIORootLocator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIORootLocator.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/WebdriverIORootLocator.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW,CAAC,OAAO;IAInD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;IAI/D,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3C"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebdriverIORootLocator = void 0;
4
+ require("webdriverio");
5
+ const web_1 = require("@serenity-js/web");
6
+ /**
7
+ * WebdriverIO-specific implementation of [`RootLocator`](https://serenity-js.org/api/web/class/RootLocator/).
8
+ *
9
+ * @group Models
10
+ */
11
+ class WebdriverIORootLocator extends web_1.RootLocator {
12
+ browser;
13
+ constructor(browser) {
14
+ super();
15
+ this.browser = browser;
16
+ }
17
+ async isPresent() {
18
+ return true;
19
+ }
20
+ async nativeElement() {
21
+ return this.browser;
22
+ }
23
+ async switchToFrame(frame) {
24
+ await this.browser.switchToFrame(frame);
25
+ }
26
+ async switchToParentFrame() {
27
+ await this.browser.switchToParentFrame();
28
+ }
29
+ async switchToMainFrame() {
30
+ await this.browser.switchToFrame(null); // eslint-disable-line unicorn/no-null
31
+ }
32
+ }
33
+ exports.WebdriverIORootLocator = WebdriverIORootLocator;
34
+ //# sourceMappingURL=WebdriverIORootLocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIORootLocator.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/WebdriverIORootLocator.ts"],"names":[],"mappings":";;;AAAA,uBAAqB;AAErB,0CAA+C;AAE/C;;;;GAIG;AACH,MAAa,sBAAuB,SAAQ,iBAAgC;IAC3C;IAA7B,YAA6B,OAA4B;QACrD,KAAK,EAAE,CAAC;QADiB,YAAO,GAAP,OAAO,CAAqB;IAEzD,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAuB;QACvC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,mBAAmB;QACrB,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAsC;IAClF,CAAC;CACJ;AAxBD,wDAwBC"}
@@ -0,0 +1,3 @@
1
+ export * from './WebdriverIOLocator.js';
2
+ export * from './WebdriverIORootLocator.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./WebdriverIOLocator.js"), exports);
18
+ __exportStar(require("./WebdriverIORootLocator.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,8DAA4C"}
package/package.json ADDED
@@ -0,0 +1,122 @@
1
+ {
2
+ "name": "@serenity-js/webdriverio-8",
3
+ "version": "3.31.0",
4
+ "description": "Adapter that integrates @serenity-js/web with WebdriverIO 8, enabling Serenity/JS reporting and using the Screenplay Pattern to write web and mobile test scenarios",
5
+ "author": {
6
+ "name": "Jan Molak",
7
+ "email": "jan.molak@smartcodeltd.co.uk",
8
+ "url": "https://janmolak.com"
9
+ },
10
+ "funding": {
11
+ "url": "https://github.com/sponsors/serenity-js"
12
+ },
13
+ "homepage": "https://serenity-js.org",
14
+ "license": "Apache-2.0",
15
+ "publishConfig": {
16
+ "access": "public",
17
+ "provenance": true
18
+ },
19
+ "main": "./lib/index.js",
20
+ "types": "./lib/index.d.ts",
21
+ "type": "module",
22
+ "module": "./esm/index.js",
23
+ "exports": {
24
+ ".": [
25
+ {
26
+ "types": "./esm/index.d.ts",
27
+ "import": "./esm/index.js",
28
+ "require": "./lib/index.js"
29
+ },
30
+ "./lib/index.js"
31
+ ],
32
+ "./package.json": "./package.json"
33
+ },
34
+ "keywords": [
35
+ "automation",
36
+ "browser",
37
+ "e2e",
38
+ "end-to-end",
39
+ "integration",
40
+ "serenity",
41
+ "serenity-js",
42
+ "screenplay",
43
+ "screenplay-pattern",
44
+ "runner",
45
+ "ui",
46
+ "frontend",
47
+ "bdd",
48
+ "tdd",
49
+ "test",
50
+ "testing",
51
+ "webdriverio",
52
+ "wdio",
53
+ "wdio-reporter"
54
+ ],
55
+ "scripts": {
56
+ "clean": "rimraf target",
57
+ "test": "c8 npm run test:no-coverage",
58
+ "test:no-coverage": "mocha --config .mocharc.yml 'spec/**/*.spec.*'",
59
+ "compile": "npm run compile:clean && npm run compile:esm && npm run compile:cjs && npm run compile:cjs-package",
60
+ "compile:clean": "rimraf lib esm",
61
+ "compile:esm": "tsc --project tsconfig-esm.build.json",
62
+ "compile:cjs": "tsc --project tsconfig-cjs.build.json",
63
+ "compile:cjs-package": "node -e \"require('fs').writeFileSync('lib/package.json', '{ \\\"type\\\": \\\"commonjs\\\" }')\""
64
+ },
65
+ "repository": {
66
+ "type": "git",
67
+ "url": "https://github.com/serenity-js/serenity-js.git",
68
+ "directory": "packages/webdriverio-8"
69
+ },
70
+ "bugs": {
71
+ "url": "https://github.com/serenity-js/serenity-js/issues"
72
+ },
73
+ "engines": {
74
+ "node": "^18.12 || ^20 || ^22"
75
+ },
76
+ "dependencies": {
77
+ "@serenity-js/core": "3.31.0",
78
+ "@serenity-js/rest": "3.31.0",
79
+ "@serenity-js/web": "3.31.0",
80
+ "@wdio/reporter": "8.40.6",
81
+ "deepmerge": "4.3.1",
82
+ "tiny-types": "1.23.0"
83
+ },
84
+ "peerDependencies": {
85
+ "@serenity-js/cucumber": "^3.0.0",
86
+ "@serenity-js/jasmine": "^3.0.0",
87
+ "@serenity-js/mocha": "^3.0.0",
88
+ "@wdio/cli": "^8.40.6",
89
+ "webdriverio": "^8.40.6"
90
+ },
91
+ "peerDependenciesMeta": {
92
+ "@serenity-js/cucumber": {
93
+ "optional": true
94
+ },
95
+ "@serenity-js/jasmine": {
96
+ "optional": true
97
+ },
98
+ "@serenity-js/mocha": {
99
+ "optional": true
100
+ }
101
+ },
102
+ "devDependencies": {
103
+ "@integration/testing-tools": "3.0.0",
104
+ "@types/mocha": "10.0.10",
105
+ "@wdio/cli": "8.40.6",
106
+ "@wdio/devtools-service": "8.40.2",
107
+ "@wdio/dot-reporter": "8.40.6",
108
+ "@wdio/local-runner": "8.40.6",
109
+ "@wdio/spec-reporter": "8.40.6",
110
+ "@wdio/types": "8.40.6",
111
+ "axios": "1.7.9",
112
+ "c8": "10.1.2",
113
+ "cross-env": "7.0.3",
114
+ "mocha": "10.8.2",
115
+ "mocha-multi": "1.1.7",
116
+ "mocha-testdata": "1.2.0",
117
+ "puppeteer-core": "20.9.0",
118
+ "start-server-and-test": "2.0.8",
119
+ "webdriverio": "8.40.6"
120
+ },
121
+ "gitHead": "fb557dbbcd41994306877ae4f464e5d8b38772ff"
122
+ }