@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,123 @@
1
+ import 'webdriverio';
2
+ import { f, LogicError } from '@serenity-js/core';
3
+ import { ByCss, ByCssContainingText, ByDeepCss, ById, ByTagName, ByXPath, Locator } from '@serenity-js/web';
4
+ import { WebdriverIOPageElement } from '../WebdriverIOPageElement.js';
5
+ /**
6
+ * WebdriverIO-specific implementation of [`Locator`](https://serenity-js.org/api/web/class/Locator/).
7
+ *
8
+ * @group Models
9
+ */
10
+ export class WebdriverIOLocator extends Locator {
11
+ errorHandler;
12
+ constructor(parent, selector, errorHandler) {
13
+ super(parent, selector);
14
+ this.errorHandler = errorHandler;
15
+ }
16
+ // todo: refactor; replace with a map and some more generic lookup mechanism
17
+ nativeSelector() {
18
+ if (this.selector instanceof ByCss) {
19
+ return this.selector.value;
20
+ }
21
+ if (this.selector instanceof ByDeepCss) {
22
+ return `>>> ${this.selector.value}`;
23
+ }
24
+ if (this.selector instanceof ByCssContainingText) {
25
+ return `${this.selector.value}*=${this.selector.text}`;
26
+ }
27
+ if (this.selector instanceof ById) {
28
+ return `#${this.selector.value}`;
29
+ }
30
+ if (this.selector instanceof ByTagName) {
31
+ return `<${this.selector.value} />`;
32
+ }
33
+ if (this.selector instanceof ByXPath) {
34
+ return this.selector.value;
35
+ }
36
+ throw new LogicError(f `${this.selector} is not supported by ${this.constructor.name}`);
37
+ }
38
+ async isPresent() {
39
+ try {
40
+ const element = await this.resolveNativeElement();
41
+ return Boolean(element);
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ async nativeElement() {
48
+ try {
49
+ return await this.resolveNativeElement();
50
+ }
51
+ catch (error) {
52
+ return await this.errorHandler.executeIfHandled(error, () => this.resolveNativeElement());
53
+ }
54
+ }
55
+ async resolveNativeElement() {
56
+ const parent = await this.parent.nativeElement();
57
+ if (parent.error) {
58
+ throw parent.error;
59
+ }
60
+ const element = await parent.$(this.nativeSelector());
61
+ if (element.error) {
62
+ throw element.error;
63
+ }
64
+ return element;
65
+ }
66
+ async allNativeElements() {
67
+ const parent = await this.parent.nativeElement();
68
+ return parent.$$(this.nativeSelector());
69
+ }
70
+ of(parent) {
71
+ return new WebdriverIOLocator(parent, this.selector, this.errorHandler);
72
+ }
73
+ closestTo(child) {
74
+ return new WebdriverIOParentElementLocator(this.parent, this.selector, child, this.errorHandler);
75
+ }
76
+ locate(child) {
77
+ return new WebdriverIOLocator(this, child.selector, this.errorHandler);
78
+ }
79
+ element() {
80
+ return new WebdriverIOPageElement(this);
81
+ }
82
+ async allElements() {
83
+ const elements = await this.allNativeElements();
84
+ return elements.map(childElement => new WebdriverIOPageElement(new WebdriverIOExistingElementLocator(this.parent, this.selector, this.errorHandler, childElement)));
85
+ }
86
+ }
87
+ /**
88
+ * @internal
89
+ */
90
+ export class WebdriverIOExistingElementLocator extends WebdriverIOLocator {
91
+ existingNativeElement;
92
+ constructor(parentRoot, selector, errorHandler, existingNativeElement) {
93
+ super(parentRoot, selector, errorHandler);
94
+ this.existingNativeElement = existingNativeElement;
95
+ }
96
+ async nativeElement() {
97
+ return this.existingNativeElement;
98
+ }
99
+ async allNativeElements() {
100
+ return [this.existingNativeElement];
101
+ }
102
+ }
103
+ class WebdriverIOParentElementLocator extends WebdriverIOLocator {
104
+ child;
105
+ constructor(parentRoot, selector, child, errorHandler) {
106
+ super(parentRoot, selector, errorHandler);
107
+ this.child = child;
108
+ }
109
+ async resolveNativeElement() {
110
+ const cssSelector = this.asCssSelector(this.selector);
111
+ const child = await this.child.nativeElement();
112
+ if (child.error) {
113
+ throw child.error;
114
+ }
115
+ return child.$(
116
+ /* c8 ignore next */
117
+ new Function(`return this.closest(\`${cssSelector.value}\`)`));
118
+ }
119
+ async allNativeElements() {
120
+ return [await this.nativeElement()];
121
+ }
122
+ }
123
+ //# 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,30 @@
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 class WebdriverIORootLocator extends RootLocator {
9
+ browser;
10
+ constructor(browser) {
11
+ super();
12
+ this.browser = browser;
13
+ }
14
+ async isPresent() {
15
+ return true;
16
+ }
17
+ async nativeElement() {
18
+ return this.browser;
19
+ }
20
+ async switchToFrame(frame) {
21
+ await this.browser.switchToFrame(frame);
22
+ }
23
+ async switchToParentFrame() {
24
+ await this.browser.switchToParentFrame();
25
+ }
26
+ async switchToMainFrame() {
27
+ await this.browser.switchToFrame(null); // eslint-disable-line unicorn/no-null
28
+ }
29
+ }
30
+ //# sourceMappingURL=WebdriverIORootLocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIORootLocator.js","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,MAAM,OAAO,sBAAuB,SAAQ,WAAgC;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"}
@@ -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,3 @@
1
+ export * from './WebdriverIOLocator.js';
2
+ export * from './WebdriverIORootLocator.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { TestRunnerAdapter } from '@serenity-js/core/lib/adapter/index.js';
2
+ import type { ModuleLoader } from '@serenity-js/core/lib/io/index.js';
3
+ import { Path } from '@serenity-js/core/lib/io/index.js';
4
+ import type { WebdriverIOConfig } from '../config/index.js';
5
+ export declare class TestRunnerLoader {
6
+ private readonly loader;
7
+ private readonly cwd;
8
+ private readonly cid;
9
+ private readonly fileSystem;
10
+ private readonly finder;
11
+ constructor(loader: ModuleLoader, cwd: Path, cid: string);
12
+ runnerAdapterFor(config: WebdriverIOConfig): TestRunnerAdapter;
13
+ private cucumberAdapter;
14
+ private jasmineAdapter;
15
+ private mochaAdapter;
16
+ }
17
+ //# sourceMappingURL=TestRunnerLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestRunnerLoader.d.ts","sourceRoot":"","sources":["../../src/adapter/TestRunnerLoader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAC,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAkC,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAEzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQ5D,qBAAa,gBAAgB;IAKrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IANxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAGf,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,MAAM;IAMhC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB;IAiB9D,OAAO,CAAC,eAAe;IAoCvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;CAKvB"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestRunnerLoader = void 0;
4
+ const core_1 = require("@serenity-js/core");
5
+ const index_js_1 = require("@serenity-js/core/lib/io/index.js");
6
+ class TestRunnerLoader {
7
+ loader;
8
+ cwd;
9
+ cid;
10
+ fileSystem;
11
+ finder;
12
+ constructor(loader, cwd, cid) {
13
+ this.loader = loader;
14
+ this.cwd = cwd;
15
+ this.cid = cid;
16
+ this.fileSystem = new index_js_1.FileSystem(cwd);
17
+ this.finder = new index_js_1.FileFinder(cwd);
18
+ }
19
+ runnerAdapterFor(config) {
20
+ switch (config?.serenity?.runner) {
21
+ case 'cucumber':
22
+ return this.cucumberAdapter(config?.cucumberOpts);
23
+ case 'jasmine':
24
+ return this.jasmineAdapter(config?.jasmineOpts);
25
+ case 'mocha':
26
+ case undefined:
27
+ return this.mochaAdapter(config?.mochaOpts);
28
+ default:
29
+ throw new core_1.ConfigurationError(`"${config?.serenity?.runner}" is not a supported test runner. Please use "mocha", "jasmine", or "cucumber"`);
30
+ }
31
+ }
32
+ cucumberAdapter(cucumberOptions) {
33
+ const { CucumberCLIAdapter, CucumberFormat, StandardOutput, TempFileOutput } = this.loader.require('@serenity-js/cucumber/lib/adapter/index.js');
34
+ delete cucumberOptions?.timeout; // todo: support setting a timeout via config?
35
+ delete cucumberOptions?.parallel; // WebdriverIO handles that already
36
+ const cleanedCucumberOptions = new index_js_1.Config(cucumberOptions)
37
+ .where('format', values => [].concat(values).map(value => {
38
+ const format = new CucumberFormat(value);
39
+ if (format.output === '') {
40
+ return format.value;
41
+ }
42
+ const basename = index_js_1.Path.from(format.output).basename();
43
+ const filenameParts = basename.split('.');
44
+ if (filenameParts[0] === basename) {
45
+ return `${format.formatter}:${format.output}.${this.cid}`;
46
+ }
47
+ filenameParts.splice(-1, 0, `${this.cid}`);
48
+ return `${format.formatter}:${format.output.replace(basename, filenameParts.join('.'))}`;
49
+ })).object();
50
+ // check if we need to free up stdout for any native reporters
51
+ const output = cleanedCucumberOptions?.format?.some(format => new CucumberFormat(format).output === '')
52
+ ? new TempFileOutput(this.fileSystem)
53
+ : new StandardOutput();
54
+ return new CucumberCLIAdapter(cleanedCucumberOptions, this.loader, this.fileSystem, output);
55
+ }
56
+ jasmineAdapter(jasmineOptions) {
57
+ const { JasmineAdapter } = this.loader.require('@serenity-js/jasmine/adapter');
58
+ return new JasmineAdapter(jasmineOptions, this.loader);
59
+ }
60
+ mochaAdapter(mochaOptions) {
61
+ // todo: update path to mocha adapter too
62
+ const { MochaAdapter } = this.loader.require('@serenity-js/mocha/lib/adapter/index.js');
63
+ return new MochaAdapter(mochaOptions, this.loader);
64
+ }
65
+ }
66
+ exports.TestRunnerLoader = TestRunnerLoader;
67
+ //# sourceMappingURL=TestRunnerLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestRunnerLoader.js","sourceRoot":"","sources":["../../src/adapter/TestRunnerLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import 'webdriverio';
2
+ import type { Serenity } from '@serenity-js/core';
3
+ import type { ModuleLoader } from '@serenity-js/core/lib/io/index.js';
4
+ import { Path } from '@serenity-js/core/lib/io/index.js';
5
+ import type { Capabilities } from '@wdio/types';
6
+ import type { EventEmitter } from 'events';
7
+ import type { WebdriverIOConfig } from '../config/index.js';
8
+ import type { InitialisesReporters, ProvidesWriteStream } from './reporter/index.js';
9
+ export declare class WebdriverIOFrameworkAdapter {
10
+ private readonly serenity;
11
+ private readonly loader;
12
+ private readonly cwd;
13
+ private readonly cid;
14
+ private readonly specs;
15
+ private readonly capabilities;
16
+ private readonly reporter;
17
+ private adapter;
18
+ private notifier;
19
+ constructor(serenity: Serenity, loader: ModuleLoader, cwd: Path, cid: string, webdriverIOConfig: WebdriverIOConfig, specs: string[], capabilities: Capabilities.RemoteCapability, reporter: EventEmitter & ProvidesWriteStream & InitialisesReporters);
20
+ init(): Promise<WebdriverIOFrameworkAdapter>;
21
+ hasTests(): boolean;
22
+ run(): Promise<number>;
23
+ private defaultConfig;
24
+ }
25
+ //# sourceMappingURL=WebdriverIOFrameworkAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOFrameworkAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/WebdriverIOFrameworkAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAG3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAMrF,qBAAa,2BAA2B;IAMhC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX7B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAsB;gBAGjB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,MAAM,EAC5B,iBAAiB,EAAE,iBAAiB,EACnB,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAC3C,QAAQ,EAAE,YAAY,GAAG,mBAAmB,GAAG,oBAAoB;IAwDlF,IAAI,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAqBlD,QAAQ,IAAI,OAAO;IAIb,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5B,OAAO,CAAC,aAAa;CASxB"}
@@ -0,0 +1,127 @@
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.WebdriverIOFrameworkAdapter = void 0;
37
+ require("webdriverio");
38
+ const core_1 = require("@serenity-js/core");
39
+ const index_js_1 = require("@serenity-js/core/lib/io/index.js");
40
+ const rest_1 = require("@serenity-js/rest");
41
+ const deepmerge = __importStar(require("deepmerge"));
42
+ const isRecord_js_1 = require("tiny-types/lib/objects/isRecord.js");
43
+ const index_js_2 = require("../screenplay/index.js");
44
+ const index_js_3 = require("./reporter/index.js");
45
+ const OutputStreamBufferPrinter_js_1 = require("./reporter/OutputStreamBufferPrinter.js");
46
+ const TestRunnerLoader_js_1 = require("./TestRunnerLoader.js");
47
+ const WebdriverIONotifier_js_1 = require("./WebdriverIONotifier.js");
48
+ class WebdriverIOFrameworkAdapter {
49
+ serenity;
50
+ loader;
51
+ cwd;
52
+ cid;
53
+ specs;
54
+ capabilities;
55
+ reporter;
56
+ adapter;
57
+ notifier;
58
+ constructor(serenity, loader, cwd, cid, webdriverIOConfig, specs, capabilities, reporter) {
59
+ this.serenity = serenity;
60
+ this.loader = loader;
61
+ this.cwd = cwd;
62
+ this.cid = cid;
63
+ this.specs = specs;
64
+ this.capabilities = capabilities;
65
+ this.reporter = reporter;
66
+ const config = deepmerge.default(this.defaultConfig(), webdriverIOConfig, {
67
+ isMergeableObject: isRecord_js_1.isRecord,
68
+ });
69
+ // SauceLabs service serialises the config object for debugging.
70
+ // However, since Serenity/JS Stage is a pub/sub mechanism,
71
+ // it contains cyclic references which are not serialisable.
72
+ // We get rid of them from the config object to avoid confusing other services.
73
+ delete webdriverIOConfig.serenity;
74
+ this.adapter = new TestRunnerLoader_js_1.TestRunnerLoader(this.loader, this.cwd, this.cid)
75
+ .runnerAdapterFor(config);
76
+ this.notifier = new WebdriverIONotifier_js_1.WebdriverIONotifier(config, capabilities, reporter, this.adapter.successThreshold(), cid, this.specs);
77
+ const outputStreamBuffer = new index_js_3.OutputStreamBuffer(`[${this.cid}]`);
78
+ const outputStreamBufferPrinter = new OutputStreamBufferPrinter_js_1.OutputStreamBufferPrinter(outputStreamBuffer, reporter.getWriteStreamObject('@serenity-js/webdriverio-8'));
79
+ this.serenity.configure({
80
+ outputStream: outputStreamBuffer,
81
+ cueTimeout: config.serenity.cueTimeout,
82
+ interactionTimeout: config.serenity.interactionTimeout,
83
+ diffFormatter: config.serenity.diffFormatter ?? new core_1.AnsiDiffFormatter(),
84
+ actors: config.serenity.actors || core_1.Cast.where(actor => actor.whoCan(index_js_2.BrowseTheWebWithWebdriverIO.using(global.browser), core_1.TakeNotes.usingAnEmptyNotepad(), rest_1.CallAnApi.using({
85
+ baseURL: webdriverIOConfig.baseUrl,
86
+ }))),
87
+ crew: [
88
+ ...config.serenity.crew,
89
+ this.notifier,
90
+ outputStreamBufferPrinter,
91
+ ]
92
+ });
93
+ }
94
+ async init() {
95
+ // This is the only (hacky) way to register a fake reporter programmatically (as of @wdio/reporter 7.4.2)
96
+ // - https://github.com/webdriverio/webdriverio/blob/365fb0ad79fcf4471f21f23e18afa6818986dbdb/packages/wdio-runner/src/index.ts#L147-L181
97
+ // - https://github.com/webdriverio/webdriverio/blob/365fb0ad79fcf4471f21f23e18afa6818986dbdb/packages/wdio-runner/src/reporter.ts#L24
98
+ const browserCapabilitiesReporter = await (this.reporter._loadReporter([
99
+ index_js_3.BrowserCapabilitiesReporter, {
100
+ serenity: this.serenity
101
+ },
102
+ ]));
103
+ this.reporter._reporters.push(browserCapabilitiesReporter);
104
+ // WebdriverIO v8 represents paths to specs as file URIs, so they need to be converted to absolute paths to avoid confusing the test runners like Cucumber
105
+ const absolutePaths = this.specs.map(pathToSpec => index_js_1.Path.from(pathToSpec).value);
106
+ await this.adapter.load(absolutePaths);
107
+ return this;
108
+ }
109
+ hasTests() {
110
+ return this.adapter.scenarioCount() > 0;
111
+ }
112
+ async run() {
113
+ await this.adapter.run();
114
+ return this.notifier.failureCount();
115
+ }
116
+ defaultConfig() {
117
+ return {
118
+ serenity: {
119
+ crew: [
120
+ core_1.ArtifactArchiver.storingArtifactsAt(this.cwd.value, 'target/site/serenity'),
121
+ ]
122
+ }
123
+ };
124
+ }
125
+ }
126
+ exports.WebdriverIOFrameworkAdapter = WebdriverIOFrameworkAdapter;
127
+ //# sourceMappingURL=WebdriverIOFrameworkAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOFrameworkAdapter.js","sourceRoot":"","sources":["../../src/adapter/WebdriverIOFrameworkAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAqB;AAGrB,4CAAyF;AAGzF,gEAAyD;AACzD,4CAA8C;AAE9C,qDAAuC;AAEvC,oEAA8D;AAG9D,qDAAqE;AAErE,kDAAsF;AACtF,0FAAoF;AACpF,+DAAyD;AACzD,qEAA+D;AAE/D,MAAa,2BAA2B;IAMf;IACA;IACA;IACA;IAEA;IACA;IACA;IAXb,OAAO,CAAoB;IAC3B,QAAQ,CAAsB;IAEtC,YACqB,QAAkB,EAClB,MAAoB,EACpB,GAAS,EACT,GAAW,EAC5B,iBAAoC,EACnB,KAAe,EACf,YAA2C,EAC3C,QAAmE;QAPnE,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAM;QACT,QAAG,GAAH,GAAG,CAAQ;QAEX,UAAK,GAAL,KAAK,CAAU;QACf,iBAAY,GAAZ,YAAY,CAA+B;QAC3C,aAAQ,GAAR,QAAQ,CAA2D;QAEpF,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAoB,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE;YACzF,iBAAiB,EAAE,sBAAQ;SAC9B,CAAC,CAAC;QAEH,gEAAgE;QAChE,2DAA2D;QAC3D,4DAA4D;QAC5D,+EAA+E;QAC/E,OAAO,iBAAiB,CAAC,QAAQ,CAAC;QAElC,IAAI,CAAC,OAAO,GAAG,IAAI,sCAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;aAC/D,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,CAAC,QAAQ,GAAG,IAAI,4CAAmB,CACnC,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAC/B,GAAG,EACH,IAAI,CAAC,KAAK,CACb,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,6BAAkB,CAC7C,IAAK,IAAI,CAAC,GAAI,GAAG,CACpB,CAAC;QAEF,MAAM,yBAAyB,GAAG,IAAI,wDAAyB,CAC3D,kBAAkB,EAClB,QAAQ,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAC9D,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACpB,YAAY,EAAE,kBAAkB;YAChC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;YACtC,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB;YAEtD,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,IAAI,IAAI,wBAAiB,EAAE;YAEvE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,WAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAC9D,sCAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,OAAyC,CAAC,EACnF,gBAAS,CAAC,mBAAmB,EAAE,EAC/B,gBAAS,CAAC,KAAK,CAAC;gBACZ,OAAO,EAAE,iBAAiB,CAAC,OAAO;aACrC,CAAC,CACL,CAAC;YAEF,IAAI,EAAE;gBACF,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI;gBACvB,IAAI,CAAC,QAAQ;gBACb,yBAAyB;aAC5B;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,IAAI;QAEN,yGAAyG;QACzG,0IAA0I;QAC1I,uIAAuI;QACvI,MAAM,2BAA2B,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnE,sCAA2B,EAAE;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B;SACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEpE,0JAA0J;QAC1J,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,eAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;QAEhF,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAEO,aAAa;QACjB,OAAO;YACH,QAAQ,EAAE;gBACN,IAAI,EAAE;oBACF,uBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC;iBAC9E;aACJ;SACJ,CAAA;IACL,CAAC;CACJ;AA5GD,kEA4GC"}
@@ -0,0 +1,18 @@
1
+ import type { Serenity } from '@serenity-js/core';
2
+ import type { ModuleLoader, Path } from '@serenity-js/core/lib/io/index.js';
3
+ import type { Capabilities } from '@wdio/types';
4
+ import type { EventEmitter } from 'events';
5
+ import type { WebdriverIOConfig } from '../config/index.js';
6
+ import type { InitialisesReporters, ProvidesWriteStream } from './reporter/index.js';
7
+ import { WebdriverIOFrameworkAdapter } from './WebdriverIOFrameworkAdapter.js';
8
+ /**
9
+ * @group Test Runner Adapter
10
+ */
11
+ export declare class WebdriverIOFrameworkAdapterFactory {
12
+ private readonly serenity;
13
+ private readonly loader;
14
+ private readonly cwd;
15
+ constructor(serenity: Serenity, loader: ModuleLoader, cwd: Path);
16
+ init(cid: string, config: WebdriverIOConfig, specs: string[], capabilities: Capabilities.RemoteCapability, reporter: EventEmitter & ProvidesWriteStream & InitialisesReporters): Promise<WebdriverIOFrameworkAdapter>;
17
+ }
18
+ //# sourceMappingURL=WebdriverIOFrameworkAdapterFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOFrameworkAdapterFactory.d.ts","sourceRoot":"","sources":["../../src/adapter/WebdriverIOFrameworkAdapterFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E;;GAEG;AACH,qBAAa,kCAAkC;IAEvC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,IAAI;IAIvB,IAAI,CACP,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAC3C,QAAQ,EAAE,YAAY,GAAG,mBAAmB,GAAG,oBAAoB,GACpE,OAAO,CAAC,2BAA2B,CAAC;CAY1C"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebdriverIOFrameworkAdapterFactory = void 0;
4
+ const WebdriverIOFrameworkAdapter_js_1 = require("./WebdriverIOFrameworkAdapter.js");
5
+ /**
6
+ * @group Test Runner Adapter
7
+ */
8
+ class WebdriverIOFrameworkAdapterFactory {
9
+ serenity;
10
+ loader;
11
+ cwd;
12
+ constructor(serenity, loader, cwd) {
13
+ this.serenity = serenity;
14
+ this.loader = loader;
15
+ this.cwd = cwd;
16
+ }
17
+ init(cid, config, specs, capabilities, reporter) {
18
+ return new WebdriverIOFrameworkAdapter_js_1.WebdriverIOFrameworkAdapter(this.serenity, this.loader, this.cwd, cid, config, specs, capabilities, reporter).init();
19
+ }
20
+ }
21
+ exports.WebdriverIOFrameworkAdapterFactory = WebdriverIOFrameworkAdapterFactory;
22
+ //# sourceMappingURL=WebdriverIOFrameworkAdapterFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIOFrameworkAdapterFactory.js","sourceRoot":"","sources":["../../src/adapter/WebdriverIOFrameworkAdapterFactory.ts"],"names":[],"mappings":";;;AAOA,qFAA+E;AAE/E;;GAEG;AACH,MAAa,kCAAkC;IAEtB;IACA;IACA;IAHrB,YACqB,QAAkB,EAClB,MAAoB,EACpB,GAAS;QAFT,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAM;IAE9B,CAAC;IAEM,IAAI,CACP,GAAW,EACX,MAAyB,EACzB,KAAe,EACf,YAA2C,EAC3C,QAAmE;QAEnE,OAAO,IAAI,4DAA2B,CAClC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,GAAG,EACR,GAAG,EACH,MAAM,EACN,KAAK,EACL,YAAY,EACZ,QAAQ,CACX,CAAC,IAAI,EAAE,CAAA;IACZ,CAAC;CACJ;AA1BD,gFA0BC"}
@@ -0,0 +1,71 @@
1
+ import type { Stage, StageCrewMember } from '@serenity-js/core';
2
+ import type { DomainEvent } from '@serenity-js/core/lib/events/index.js';
3
+ import type { Outcome } from '@serenity-js/core/lib/model/index.js';
4
+ import type { Capabilities } from '@wdio/types';
5
+ import type { EventEmitter } from 'events';
6
+ import type { WebdriverIOConfig } from '../config/index.js';
7
+ /**
8
+ * @package
9
+ */
10
+ export declare class WebdriverIONotifier implements StageCrewMember {
11
+ private readonly config;
12
+ private readonly capabilities;
13
+ private readonly reporter;
14
+ private readonly successThreshold;
15
+ private readonly cid;
16
+ private readonly specs;
17
+ private failures;
18
+ private stage?;
19
+ /**
20
+ * We don't have access to the "context" object produced by Mocha,
21
+ * and can't assume that other test runners have a similar concept.
22
+ * Since, at the time of writing, none of the WebdriverIO rely on this parameter
23
+ * using a dummy seems to be sufficient.
24
+ * @private
25
+ */
26
+ private static dummmyContext;
27
+ private readonly events;
28
+ private readonly suites;
29
+ constructor(config: WebdriverIOConfig, capabilities: Capabilities.RemoteCapability, reporter: EventEmitter, successThreshold: Outcome | {
30
+ Code: number;
31
+ }, cid: string, specs: string[], failures?: number, stage?: Stage);
32
+ assignedTo(stage: Stage): StageCrewMember;
33
+ notifyOf(event: DomainEvent): void;
34
+ private onTestRunFinishes;
35
+ failureCount(): number;
36
+ private onTestSuiteStarts;
37
+ private onTestSuiteFinished;
38
+ private suiteStartEventFrom;
39
+ private suiteNamesConcatenatedWith;
40
+ private suiteEndEventFrom;
41
+ private onSceneStarts;
42
+ private onSceneFinished;
43
+ private willBeRetried;
44
+ private testShortTitleFrom;
45
+ private testFrom;
46
+ private testStartEventFrom;
47
+ private parentSuiteName;
48
+ /**
49
+ * test status is 'passed' | 'pending' | 'skipped' | 'failed' | 'broken' | 'canceled'
50
+ * Since this is not documented, we're mimicking other WebdriverIO reporters, for example:
51
+ * https://github.com/webdriverio/webdriverio/blob/7415f3126e15a733b51721492e4995ceafae6046/packages/wdio-allure-reporter/src/constants.ts#L3-L9
52
+ *
53
+ * @param started
54
+ * @param finished
55
+ * @private
56
+ */
57
+ private testResultFrom;
58
+ private testEndEventFrom;
59
+ private whenSuccessful;
60
+ private testResultEventFrom;
61
+ private errorFrom;
62
+ /**
63
+ * @see https://github.com/webdriverio/webdriverio/blob/main/packages/wdio-utils/src/shim.ts
64
+ * @param hookName
65
+ * @param hookFunctions
66
+ * @param args
67
+ * @private
68
+ */
69
+ private invokeHooks;
70
+ }
71
+ //# sourceMappingURL=WebdriverIONotifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebdriverIONotifier.d.ts","sourceRoot":"","sources":["../../src/adapter/WebdriverIONotifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAC,MAAM,uCAAuC,CAAC;AAExE,OAAO,KAAK,EACR,OAAO,EACU,MAAM,sCAAsC,CAAC;AAalE,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAG3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA2B5D;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAenD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK,CAAC;IApBlB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa,CAAM;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAG5B,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAC3C,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,OAAO,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,EACxB,QAAQ,GAAE,MAAU,EACpB,KAAK,CAAC,EAAE,KAAK;IAIzB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe;IAKzC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAUlC,OAAO,CAAC,iBAAiB;IAIzB,YAAY,IAAI,MAAM;IAItB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;IAIvB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IA+EtB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,mBAAmB;IAmD3B,OAAO,CAAC,SAAS;IAcjB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;CAkDtB"}