@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,256 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.WebdriverIOPage = void 0;
37
+ require("webdriverio");
38
+ const core_1 = require("@serenity-js/core");
39
+ const web_1 = require("@serenity-js/web");
40
+ const scripts = __importStar(require("@serenity-js/web/lib/scripts/index.js"));
41
+ const url_1 = require("url");
42
+ const index_js_1 = require("./locators/index.js");
43
+ const WebdriverIOCookie_js_1 = require("./WebdriverIOCookie.js");
44
+ const WebdriverIOPageElement_js_1 = require("./WebdriverIOPageElement.js");
45
+ /**
46
+ * WebdriverIO-specific implementation of [`Page`](https://serenity-js.org/api/web/class/Page/).
47
+ *
48
+ * @group Models
49
+ */
50
+ class WebdriverIOPage extends web_1.Page {
51
+ browser;
52
+ errorHandler;
53
+ lastScriptExecutionSummary;
54
+ /* eslint-disable unicorn/consistent-function-scoping */
55
+ dehydrator = new web_1.ArgumentDehydrator((item) => item instanceof web_1.PageElement, (item) => item.nativeElement());
56
+ /* eslint-enable */
57
+ constructor(session, browser, modalDialogHandler, errorHandler, pageId) {
58
+ super(session, new index_js_1.WebdriverIORootLocator(browser), modalDialogHandler, pageId);
59
+ this.browser = browser;
60
+ this.errorHandler = errorHandler;
61
+ }
62
+ createPageElement(nativeElement) {
63
+ return new WebdriverIOPageElement_js_1.WebdriverIOPageElement(new index_js_1.WebdriverIOExistingElementLocator(this.rootLocator, new web_1.ByCss(String(nativeElement.selector)), this.errorHandler, nativeElement));
64
+ }
65
+ locate(selector) {
66
+ return new WebdriverIOPageElement_js_1.WebdriverIOPageElement(new index_js_1.WebdriverIOLocator(this.rootLocator, selector, this.errorHandler));
67
+ }
68
+ locateAll(selector) {
69
+ return core_1.List.of(new web_1.PageElementsLocator(new index_js_1.WebdriverIOLocator(this.rootLocator, selector, this.errorHandler)));
70
+ }
71
+ async navigateTo(destination) {
72
+ await this.inContextOfThisPage(() => this.browser.url(destination));
73
+ }
74
+ async navigateBack() {
75
+ await this.inContextOfThisPage(() => this.browser.back());
76
+ }
77
+ async navigateForward() {
78
+ await this.inContextOfThisPage(() => this.browser.forward());
79
+ }
80
+ async reload() {
81
+ await this.inContextOfThisPage(() => this.browser.refresh());
82
+ }
83
+ async sendKeys(keys) {
84
+ const keySequence = keys.map(key => {
85
+ if (!web_1.Key.isKey(key)) {
86
+ return key;
87
+ }
88
+ return key.utf16codePoint;
89
+ });
90
+ await this.inContextOfThisPage(() => this.browser.keys(keySequence));
91
+ }
92
+ async executeScript(script, ...args) {
93
+ const serialisedScript = typeof script === 'function'
94
+ ? String(script)
95
+ : String(`function script() { ${script} }`);
96
+ const executableScript = new Function(`
97
+ var parameters = (${scripts.rehydrate}).apply(null, arguments);
98
+ return (${serialisedScript}).apply(null, parameters);
99
+ `);
100
+ const result = await this.inContextOfThisPage(async () => {
101
+ const dehydratedArguments = await this.dehydrator.dehydrate(args);
102
+ return await this.browser.execute(executableScript, ...dehydratedArguments);
103
+ });
104
+ this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
105
+ return result;
106
+ }
107
+ async executeAsyncScript(script, ...args) {
108
+ const serialisedScript = typeof script === 'function'
109
+ ? String(script)
110
+ : String(`function script() { ${script} }`);
111
+ const executableScript = new Function(`
112
+ var args = Array.prototype.slice.call(arguments, 0, -1);
113
+ var callback = arguments[arguments.length - 1];
114
+ var parameters = (${scripts.rehydrate}).apply(null, args);
115
+ (${serialisedScript}).apply(null, parameters.concat(callback));
116
+ `);
117
+ const result = await this.inContextOfThisPage(async () => {
118
+ const dehydratedArguments = await this.dehydrator.dehydrate(args);
119
+ return this.browser.executeAsync(executableScript, ...dehydratedArguments);
120
+ });
121
+ this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
122
+ return result;
123
+ }
124
+ lastScriptExecutionResult() {
125
+ if (!this.lastScriptExecutionSummary) {
126
+ throw new core_1.LogicError(`Make sure to execute a script before checking on the result`);
127
+ }
128
+ // Selenium returns `null` when the script it executed returns `undefined`
129
+ // so we're mapping the result back.
130
+ return this.lastScriptExecutionSummary.result === null
131
+ ? undefined
132
+ : this.lastScriptExecutionSummary.result;
133
+ }
134
+ async takeScreenshot() {
135
+ return await this.inContextOfThisPage(async () => {
136
+ try {
137
+ return await this.browser.takeScreenshot();
138
+ }
139
+ catch (error) {
140
+ if (error.name === 'ProtocolError' && error.message.includes('Target closed')) {
141
+ throw new web_1.BrowserWindowClosedError(`Couldn't take screenshot since the browser window is already closed`, error);
142
+ }
143
+ throw error;
144
+ }
145
+ });
146
+ }
147
+ async cookie(name) {
148
+ return new WebdriverIOCookie_js_1.WebdriverIOCookie(this.browser, name);
149
+ }
150
+ async setCookie(cookieData) {
151
+ return await this.inContextOfThisPage(() => {
152
+ return this.browser.setCookies({
153
+ name: cookieData.name,
154
+ value: cookieData.value,
155
+ path: cookieData.path,
156
+ domain: cookieData.domain,
157
+ secure: cookieData.secure,
158
+ httpOnly: cookieData.httpOnly,
159
+ expiry: cookieData.expiry
160
+ ? cookieData.expiry.toSeconds()
161
+ : undefined,
162
+ sameSite: cookieData.sameSite,
163
+ });
164
+ });
165
+ }
166
+ async deleteAllCookies() {
167
+ return await this.inContextOfThisPage(() => {
168
+ return this.browser.deleteCookies();
169
+ });
170
+ }
171
+ async title() {
172
+ return await this.inContextOfThisPage(() => this.browser.execute(`return document.title`));
173
+ }
174
+ async name() {
175
+ return await this.inContextOfThisPage(() => this.browser.execute(`return window.name`));
176
+ }
177
+ async url() {
178
+ return await this.inContextOfThisPage(async () => {
179
+ return new url_1.URL(await this.browser.execute(`return window.location.href`));
180
+ });
181
+ }
182
+ async viewportSize() {
183
+ return await this.inContextOfThisPage(async () => {
184
+ if (!this.browser.isDevTools) {
185
+ const calculatedViewportSize = await this.browser.execute(`
186
+ return {
187
+ width: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
188
+ height: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
189
+ }
190
+ `);
191
+ // Chrome headless hard-codes window.innerWidth and window.innerHeight to 0
192
+ if (calculatedViewportSize.width > 0 && calculatedViewportSize.height > 0) {
193
+ return calculatedViewportSize;
194
+ }
195
+ }
196
+ return this.browser.getWindowSize();
197
+ });
198
+ }
199
+ async setViewportSize(size) {
200
+ return await this.inContextOfThisPage(async () => {
201
+ let desiredWindowSize = size;
202
+ if (!this.browser.isDevTools) {
203
+ desiredWindowSize = await this.browser.execute(`
204
+ var currentViewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)
205
+ var currentViewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
206
+
207
+ return {
208
+ width: Math.max(window.outerWidth - currentViewportWidth + ${size.width}, ${size.width}),
209
+ height: Math.max(window.outerHeight - currentViewportHeight + ${size.height}, ${size.height}),
210
+ };
211
+ `);
212
+ }
213
+ return this.browser.setWindowSize(desiredWindowSize.width, desiredWindowSize.height);
214
+ });
215
+ }
216
+ async close() {
217
+ await this.inContextOfThisPage(() => this.browser.closeWindow());
218
+ }
219
+ async closeOthers() {
220
+ await this.session.closePagesOtherThan(this);
221
+ }
222
+ async isPresent() {
223
+ const allPages = await this.session.allPages();
224
+ for (const page of allPages) {
225
+ if (page === this) {
226
+ return true;
227
+ }
228
+ }
229
+ return false;
230
+ }
231
+ async inContextOfThisPage(action) {
232
+ let originalCurrentPage;
233
+ try {
234
+ originalCurrentPage = await this.session.currentPage();
235
+ await this.session.changeCurrentPageTo(this);
236
+ return await action();
237
+ }
238
+ catch (error) {
239
+ return await this.errorHandler.executeIfHandled(error, action);
240
+ }
241
+ finally {
242
+ await this.session.changeCurrentPageTo(originalCurrentPage);
243
+ }
244
+ }
245
+ }
246
+ exports.WebdriverIOPage = WebdriverIOPage;
247
+ /**
248
+ * @package
249
+ */
250
+ class LastScriptExecutionSummary {
251
+ result;
252
+ constructor(result) {
253
+ this.result = result;
254
+ }
255
+ }
256
+ //# sourceMappingURL=WebdriverIOPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import 'webdriverio';
2
+ import type { SwitchableOrigin } from '@serenity-js/web';
3
+ import { PageElement, SelectOption } from '@serenity-js/web';
4
+ /**
5
+ * WebdriverIO-specific implementation of [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
6
+ *
7
+ * @group Models
8
+ */
9
+ export declare class WebdriverIOPageElement extends PageElement<WebdriverIO.Element> {
10
+ of(parent: WebdriverIOPageElement): WebdriverIOPageElement;
11
+ closestTo(child: WebdriverIOPageElement): WebdriverIOPageElement;
12
+ clearValue(): Promise<void>;
13
+ click(): Promise<void>;
14
+ doubleClick(): Promise<void>;
15
+ enterValue(value: string | number | Array<string | number>): Promise<void>;
16
+ scrollIntoView(): Promise<void>;
17
+ hoverOver(): Promise<void>;
18
+ rightClick(): Promise<void>;
19
+ selectOptions(...options: SelectOption[]): Promise<void>;
20
+ selectedOptions(): Promise<SelectOption[]>;
21
+ attribute(name: string): Promise<string>;
22
+ text(): Promise<string>;
23
+ value(): Promise<string>;
24
+ html(): Promise<string>;
25
+ switchTo(): Promise<SwitchableOrigin>;
26
+ isActive(): Promise<boolean>;
27
+ isClickable(): Promise<boolean>;
28
+ isEnabled(): Promise<boolean>;
29
+ isPresent(): Promise<boolean>;
30
+ isSelected(): Promise<boolean>;
31
+ isVisible(): Promise<boolean>;
32
+ private browserFor;
33
+ }
34
+ //# sourceMappingURL=WebdriverIOPageElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOPageElement.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPageElement.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAO,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMlE;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;IACxE,EAAE,CAAC,MAAM,EAAE,sBAAsB,GAAG,sBAAsB;IAI1D,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,sBAAsB;IAI1D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,aAAa,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxD,eAAe,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA4B1C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKxC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA4DrC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAK5B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAK7B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAK7B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAK9B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;YAgCrB,UAAU;CAM3B"}
@@ -0,0 +1,257 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.WebdriverIOPageElement = void 0;
37
+ require("webdriverio");
38
+ const core_1 = require("@serenity-js/core");
39
+ const web_1 = require("@serenity-js/web");
40
+ const scripts = __importStar(require("@serenity-js/web/lib/scripts/index.js"));
41
+ const WebdriverProtocolErrorCode_js_1 = require("./WebdriverProtocolErrorCode.js");
42
+ /**
43
+ * WebdriverIO-specific implementation of [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
44
+ *
45
+ * @group Models
46
+ */
47
+ class WebdriverIOPageElement extends web_1.PageElement {
48
+ of(parent) {
49
+ return new WebdriverIOPageElement(this.locator.of(parent.locator));
50
+ }
51
+ closestTo(child) {
52
+ return new WebdriverIOPageElement(this.locator.closestTo(child.locator));
53
+ }
54
+ async clearValue() {
55
+ // eslint-disable-next-line unicorn/consistent-function-scoping
56
+ function times(length, key) {
57
+ return Array.from({ length }).map(() => key);
58
+ }
59
+ // eslint-disable-next-line unicorn/consistent-function-scoping
60
+ async function removeCharactersFrom(browser, inputElement, numberOfCharacters) {
61
+ await browser.execute(
62
+ /* c8 ignore next */
63
+ function focusOn(element) {
64
+ element.focus();
65
+ }, element);
66
+ await browser.keys([
67
+ web_1.Key.Home.utf16codePoint,
68
+ ...times(numberOfCharacters, web_1.Key.Delete.utf16codePoint),
69
+ ]);
70
+ }
71
+ const element = await this.nativeElement();
72
+ const value = await this.value();
73
+ const hasValue = value !== null && value !== undefined && value.length > 0;
74
+ const browser = await this.browserFor(element);
75
+ if (hasValue) {
76
+ return await removeCharactersFrom(browser, element, value.length);
77
+ }
78
+ const contentEditable = await element.getAttribute('contenteditable');
79
+ const hasContentEditable = contentEditable !== null && contentEditable !== undefined && contentEditable !== 'false';
80
+ if (hasContentEditable) {
81
+ const text = await element.getText();
82
+ return await removeCharactersFrom(browser, element, text.length);
83
+ }
84
+ }
85
+ async click() {
86
+ const element = await this.nativeElement();
87
+ await element.click();
88
+ }
89
+ async doubleClick() {
90
+ const element = await this.nativeElement();
91
+ await element.doubleClick();
92
+ }
93
+ async enterValue(value) {
94
+ const text = Array.isArray(value) ? value.join('') : value;
95
+ const element = await this.nativeElement();
96
+ await element.addValue(text);
97
+ }
98
+ async scrollIntoView() {
99
+ const element = await this.nativeElement();
100
+ await element.scrollIntoView();
101
+ }
102
+ async hoverOver() {
103
+ const element = await this.nativeElement();
104
+ await element.moveTo();
105
+ }
106
+ async rightClick() {
107
+ const element = await this.nativeElement();
108
+ await element.click({ button: 'right' });
109
+ }
110
+ async selectOptions(...options) {
111
+ const element = await this.nativeElement();
112
+ for (const option of options) {
113
+ if (option.value) {
114
+ await element.selectByAttribute('value', option.value);
115
+ }
116
+ else if (option.label) {
117
+ await element.selectByVisibleText(option.label);
118
+ }
119
+ }
120
+ }
121
+ async selectedOptions() {
122
+ const element = await this.nativeElement();
123
+ const browser = await this.browserFor(element);
124
+ const options = await browser.execute(
125
+ /* c8 ignore start */
126
+ (select) => {
127
+ const options = [];
128
+ select.querySelectorAll('option').forEach((option) => {
129
+ options.push({
130
+ selected: option.selected,
131
+ disabled: option.disabled,
132
+ label: option.label,
133
+ value: option.value,
134
+ });
135
+ });
136
+ return options;
137
+ }, element
138
+ /* c8 ignore stop */
139
+ );
140
+ return options.map(option => new web_1.SelectOption(option.label, option.value, option.selected, option.disabled));
141
+ }
142
+ async attribute(name) {
143
+ const element = await this.nativeElement();
144
+ return await element.getAttribute(name);
145
+ }
146
+ async text() {
147
+ const element = await this.nativeElement();
148
+ return await element.getText();
149
+ }
150
+ async value() {
151
+ const element = await this.nativeElement();
152
+ return await element.getValue();
153
+ }
154
+ async html() {
155
+ const element = await this.nativeElement();
156
+ return await element.getHTML(true);
157
+ }
158
+ async switchTo() {
159
+ try {
160
+ const element = await this.locator.nativeElement();
161
+ if (element.error) {
162
+ throw element.error;
163
+ }
164
+ const tagName = await element.getTagName();
165
+ const browser = await this.browserFor(element);
166
+ if (['iframe', 'frame'].includes(tagName)) {
167
+ const locator = this.locator;
168
+ await locator.switchToFrame(element);
169
+ return {
170
+ switchBack: async () => {
171
+ try {
172
+ await locator.switchToParentFrame();
173
+ }
174
+ catch {
175
+ // switchToParentFrame doesn't work on iOS devices, so we need a workaround
176
+ // https://github.com/appium/appium/issues/14882#issuecomment-1693326102
177
+ await locator.switchToFrame(null); // eslint-disable-line unicorn/no-null
178
+ }
179
+ }
180
+ };
181
+ }
182
+ else {
183
+ // focus on element
184
+ const previouslyFocusedElement = await browser.execute(
185
+ /* c8 ignore next */
186
+ function focusOn(element) {
187
+ const currentlyFocusedElement = document.activeElement;
188
+ element.focus();
189
+ return currentlyFocusedElement;
190
+ }, element);
191
+ return {
192
+ switchBack: async () => {
193
+ await browser.execute(
194
+ /* c8 ignore next */
195
+ function focusOn(element) {
196
+ element.focus();
197
+ }, previouslyFocusedElement);
198
+ }
199
+ };
200
+ }
201
+ }
202
+ catch (error) {
203
+ throw new core_1.LogicError(`Couldn't switch to page element located ${this.locator}`, error);
204
+ }
205
+ }
206
+ async isActive() {
207
+ const element = await this.nativeElement();
208
+ return await element.isFocused();
209
+ }
210
+ async isClickable() {
211
+ const element = await this.nativeElement();
212
+ return await element.isClickable();
213
+ }
214
+ async isEnabled() {
215
+ const element = await this.nativeElement();
216
+ return await element.isEnabled();
217
+ }
218
+ async isPresent() {
219
+ const element = await this.nativeElement();
220
+ return await element.isExisting();
221
+ }
222
+ async isSelected() {
223
+ const element = await this.nativeElement();
224
+ return await element.isSelected();
225
+ }
226
+ async isVisible() {
227
+ try {
228
+ const element = await this.nativeElement();
229
+ if (!await element.isDisplayed()) {
230
+ return false;
231
+ }
232
+ if (!await element.isDisplayedInViewport()) {
233
+ return false;
234
+ }
235
+ const browser = await this.browserFor(element);
236
+ return await browser.execute(scripts.isVisible, element);
237
+ }
238
+ catch (error) {
239
+ // an element that doesn't exist is treated as not visible
240
+ if (error.name === WebdriverProtocolErrorCode_js_1.WebdriverProtocolErrorCode.NoSuchElementError ||
241
+ error.error === WebdriverProtocolErrorCode_js_1.WebdriverProtocolErrorCode.NoSuchElementError ||
242
+ /element.*not found/i.test(error.message)) {
243
+ return false;
244
+ }
245
+ throw error;
246
+ }
247
+ }
248
+ // based on https://github.com/webdriverio/webdriverio/blob/dec6da76b0e218af935dbf39735ae3491d5edd8c/packages/webdriverio/src/utils/index.ts#L98
249
+ async browserFor(nativeElement) {
250
+ const element = nativeElement;
251
+ return element.parent
252
+ ? this.browserFor(element.parent)
253
+ : nativeElement;
254
+ }
255
+ }
256
+ exports.WebdriverIOPageElement = WebdriverIOPageElement;
257
+ //# sourceMappingURL=WebdriverIOPageElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPageElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ModalDialog } from '@serenity-js/web';
2
+ import { ModalDialogHandler } from '@serenity-js/web';
3
+ import type { Page } from 'puppeteer-core';
4
+ /**
5
+ * WebdriverIO-specific implementation of [`ModalDialogHandler`](https://serenity-js.org/api/web/class/ModalDialogHandler/), applicable when WebdriverIO
6
+ * uses [Puppeteer](https://developer.chrome.com/docs/puppeteer/).
7
+ *
8
+ * Automatically handles any simple JavaScript modal dialog windows, such as
9
+ * those opened by [`window.alert()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert),
10
+ * [`window.confirm()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm),
11
+ * or [`window.prompt()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt).
12
+ *
13
+ * This helps to avoid Puppeteer hanging when there's an interaction pending
14
+ * and a dialog is already open, see https://github.com/puppeteer/puppeteer/issues/2481
15
+ */
16
+ export declare class WebdriverIOPuppeteerModalDialogHandler extends ModalDialogHandler {
17
+ private readonly page;
18
+ private dialogHandlingInProgress;
19
+ private readonly defaultHandler;
20
+ private currentHandler;
21
+ constructor(page: Page);
22
+ acceptNext(): Promise<void>;
23
+ acceptNextWithValue(text: string | number): Promise<void>;
24
+ dismissNext(): Promise<void>;
25
+ reset(): Promise<void>;
26
+ discard(): Promise<void>;
27
+ last(): Promise<ModalDialog>;
28
+ private handleModalDialog;
29
+ }
30
+ //# sourceMappingURL=WebdriverIOPuppeteerModalDialogHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOPuppeteerModalDialogHandler.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAIH,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,qBAAa,sCAAuC,SAAQ,kBAAkB;IAY9D,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVjC,OAAO,CAAC,wBAAwB,CAAS;IAEzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI1B;IAEL,OAAO,CAAC,cAAc,CAA2C;gBAEpC,IAAI,EAAE,IAAI;IAiBjC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;YAWpB,iBAAiB;CAOlC"}