@serenity-js/webdriverio 3.0.0-rc.3 → 3.0.0-rc.30

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 (140) hide show
  1. package/CHANGELOG.md +169 -63
  2. package/README.md +52 -19
  3. package/lib/adapter/TestRunnerLoader.d.ts +3 -4
  4. package/lib/adapter/TestRunnerLoader.d.ts.map +1 -0
  5. package/lib/adapter/TestRunnerLoader.js +1 -4
  6. package/lib/adapter/TestRunnerLoader.js.map +1 -1
  7. package/lib/adapter/WebdriverIOConfig.d.ts +115 -109
  8. package/lib/adapter/WebdriverIOConfig.d.ts.map +1 -0
  9. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts +1 -3
  10. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts.map +1 -0
  11. package/lib/adapter/WebdriverIOFrameworkAdapter.js +10 -7
  12. package/lib/adapter/WebdriverIOFrameworkAdapter.js.map +1 -1
  13. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts +2 -1
  14. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts.map +1 -0
  15. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.js +1 -1
  16. package/lib/adapter/WebdriverIONotifier.d.ts +1 -0
  17. package/lib/adapter/WebdriverIONotifier.d.ts.map +1 -0
  18. package/lib/adapter/index.d.ts +1 -1
  19. package/lib/adapter/index.d.ts.map +1 -0
  20. package/lib/adapter/index.js +5 -2
  21. package/lib/adapter/index.js.map +1 -1
  22. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts +1 -0
  23. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts.map +1 -0
  24. package/lib/adapter/reporter/BrowserCapabilitiesReporter.js +4 -1
  25. package/lib/adapter/reporter/BrowserCapabilitiesReporter.js.map +1 -1
  26. package/lib/adapter/reporter/InitialisesReporters.d.ts +1 -0
  27. package/lib/adapter/reporter/InitialisesReporters.d.ts.map +1 -0
  28. package/lib/adapter/reporter/OutputStreamBuffer.d.ts +2 -1
  29. package/lib/adapter/reporter/OutputStreamBuffer.d.ts.map +1 -0
  30. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts +2 -1
  31. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts.map +1 -0
  32. package/lib/adapter/reporter/OutputStreamBufferPrinter.js.map +1 -1
  33. package/lib/adapter/reporter/ProvidesWriteStream.d.ts +2 -1
  34. package/lib/adapter/reporter/ProvidesWriteStream.d.ts.map +1 -0
  35. package/lib/adapter/reporter/TagPrinter.d.ts +1 -0
  36. package/lib/adapter/reporter/TagPrinter.d.ts.map +1 -0
  37. package/lib/adapter/reporter/index.d.ts +1 -0
  38. package/lib/adapter/reporter/index.d.ts.map +1 -0
  39. package/lib/adapter/reporter/index.js +5 -1
  40. package/lib/adapter/reporter/index.js.map +1 -1
  41. package/lib/index.d.ts +1 -0
  42. package/lib/index.d.ts.map +1 -0
  43. package/lib/index.js +5 -1
  44. package/lib/index.js.map +1 -1
  45. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +28 -210
  46. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts.map +1 -0
  47. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +26 -310
  48. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -1
  49. package/lib/screenplay/abilities/index.d.ts +1 -0
  50. package/lib/screenplay/abilities/index.d.ts.map +1 -0
  51. package/lib/screenplay/abilities/index.js +5 -1
  52. package/lib/screenplay/abilities/index.js.map +1 -1
  53. package/lib/screenplay/index.d.ts +1 -0
  54. package/lib/screenplay/index.d.ts.map +1 -0
  55. package/lib/screenplay/index.js +5 -1
  56. package/lib/screenplay/index.js.map +1 -1
  57. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts +24 -0
  58. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts.map +1 -0
  59. package/lib/screenplay/models/WebdriverIOBrowsingSession.js +125 -0
  60. package/lib/screenplay/models/WebdriverIOBrowsingSession.js.map +1 -0
  61. package/lib/screenplay/models/WebdriverIOCookie.d.ts +6 -0
  62. package/lib/screenplay/models/WebdriverIOCookie.d.ts.map +1 -0
  63. package/lib/screenplay/models/WebdriverIOCookie.js +5 -0
  64. package/lib/screenplay/models/WebdriverIOCookie.js.map +1 -1
  65. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts +9 -0
  66. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts.map +1 -0
  67. package/lib/screenplay/models/WebdriverIOErrorHandler.js +23 -0
  68. package/lib/screenplay/models/WebdriverIOErrorHandler.js.map +1 -0
  69. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts +29 -0
  70. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts.map +1 -0
  71. package/lib/screenplay/models/WebdriverIOModalDialogHandler.js +77 -0
  72. package/lib/screenplay/models/WebdriverIOModalDialogHandler.js.map +1 -0
  73. package/lib/screenplay/models/WebdriverIOPage.d.ts +29 -5
  74. package/lib/screenplay/models/WebdriverIOPage.d.ts.map +1 -0
  75. package/lib/screenplay/models/WebdriverIOPage.js +169 -51
  76. package/lib/screenplay/models/WebdriverIOPage.js.map +1 -1
  77. package/lib/screenplay/models/WebdriverIOPageElement.d.ts +10 -10
  78. package/lib/screenplay/models/WebdriverIOPageElement.d.ts.map +1 -0
  79. package/lib/screenplay/models/WebdriverIOPageElement.js +135 -33
  80. package/lib/screenplay/models/WebdriverIOPageElement.js.map +1 -1
  81. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts +32 -0
  82. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts.map +1 -0
  83. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js +82 -0
  84. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js.map +1 -0
  85. package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts +39 -0
  86. package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts.map +1 -0
  87. package/lib/screenplay/models/WebdriverProtocolErrorCode.js +43 -0
  88. package/lib/screenplay/models/WebdriverProtocolErrorCode.js.map +1 -0
  89. package/lib/screenplay/models/index.d.ts +2 -3
  90. package/lib/screenplay/models/index.d.ts.map +1 -0
  91. package/lib/screenplay/models/index.js +6 -4
  92. package/lib/screenplay/models/index.js.map +1 -1
  93. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts +22 -0
  94. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts.map +1 -0
  95. package/lib/screenplay/models/locators/WebdriverIOLocator.js +101 -0
  96. package/lib/screenplay/models/locators/WebdriverIOLocator.js.map +1 -0
  97. package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts +17 -0
  98. package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts.map +1 -0
  99. package/lib/screenplay/models/locators/WebdriverIORootLocator.js +32 -0
  100. package/lib/screenplay/models/locators/WebdriverIORootLocator.js.map +1 -0
  101. package/lib/screenplay/models/locators/index.d.ts +3 -0
  102. package/lib/screenplay/models/locators/index.d.ts.map +1 -0
  103. package/lib/screenplay/models/locators/index.js +19 -0
  104. package/lib/screenplay/models/locators/index.js.map +1 -0
  105. package/package.json +26 -28
  106. package/src/adapter/TestRunnerLoader.ts +3 -5
  107. package/src/adapter/WebdriverIOConfig.ts +114 -109
  108. package/src/adapter/WebdriverIOFrameworkAdapter.ts +13 -10
  109. package/src/adapter/WebdriverIOFrameworkAdapterFactory.ts +1 -1
  110. package/src/adapter/index.ts +0 -1
  111. package/src/adapter/reporter/OutputStreamBuffer.ts +1 -1
  112. package/src/adapter/reporter/OutputStreamBufferPrinter.ts +1 -1
  113. package/src/adapter/reporter/ProvidesWriteStream.ts +1 -1
  114. package/src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts +29 -362
  115. package/src/screenplay/models/WebdriverIOBrowsingSession.ts +171 -0
  116. package/src/screenplay/models/WebdriverIOCookie.ts +5 -0
  117. package/src/screenplay/models/WebdriverIOErrorHandler.ts +25 -0
  118. package/src/screenplay/models/WebdriverIOModalDialogHandler.ts +100 -0
  119. package/src/screenplay/models/WebdriverIOPage.ts +225 -60
  120. package/src/screenplay/models/WebdriverIOPageElement.ts +149 -49
  121. package/src/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.ts +97 -0
  122. package/src/screenplay/models/WebdriverProtocolErrorCode.ts +38 -0
  123. package/src/screenplay/models/index.ts +1 -3
  124. package/src/screenplay/models/locators/WebdriverIOLocator.ts +141 -0
  125. package/src/screenplay/models/locators/WebdriverIORootLocator.ts +33 -0
  126. package/src/screenplay/models/locators/index.ts +2 -0
  127. package/tsconfig.build.json +17 -0
  128. package/lib/screenplay/models/WebdriverIOModalDialog.d.ts +0 -11
  129. package/lib/screenplay/models/WebdriverIOModalDialog.js +0 -40
  130. package/lib/screenplay/models/WebdriverIOModalDialog.js.map +0 -1
  131. package/lib/screenplay/models/WebdriverIONativeElementLocator.d.ts +0 -27
  132. package/lib/screenplay/models/WebdriverIONativeElementLocator.js +0 -56
  133. package/lib/screenplay/models/WebdriverIONativeElementLocator.js.map +0 -1
  134. package/lib/screenplay/models/WebdriverIONativeElementRoot.d.ts +0 -2
  135. package/lib/screenplay/models/WebdriverIONativeElementRoot.js +0 -3
  136. package/lib/screenplay/models/WebdriverIONativeElementRoot.js.map +0 -1
  137. package/src/screenplay/models/WebdriverIOModalDialog.ts +0 -45
  138. package/src/screenplay/models/WebdriverIONativeElementLocator.ts +0 -78
  139. package/src/screenplay/models/WebdriverIONativeElementRoot.ts +0 -3
  140. package/tsconfig.eslint.json +0 -10
package/CHANGELOG.md CHANGED
@@ -3,26 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- # [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
6
+ # [3.0.0-rc.30](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.29...v3.0.0-rc.30) (2022-10-05)
7
7
 
8
8
 
9
9
  ### Bug Fixes
10
10
 
11
- * **core:** refactored Mappable so that it's easier to implement filters ([176e0cd](https://github.com/serenity-js/serenity-js/commit/176e0cd0303d63271477b2b7a8e7b0572dda99a0)), closes [#1074](https://github.com/serenity-js/serenity-js/issues/1074)
12
- * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
13
- * **web:** refactored Selector and NativeElementLocator classes to simplify the implementation ([f0c8f11](https://github.com/serenity-js/serenity-js/commit/f0c8f113433958877d36f13d0bc7f355ea68d280))
11
+ * **web:** all web modules now correctly support handling iframe context for the current page ([bcb8672](https://github.com/serenity-js/serenity-js/commit/bcb86722dfcaa023613e63fb8bd2e14d6d546efd)), closes [#1310](https://github.com/serenity-js/serenity-js/issues/1310)
12
+ * **web:** improve handling of closed windows on remote grids ([79d387d](https://github.com/serenity-js/serenity-js/commit/79d387d2d4a55367c3505f4c98f29f71a6a753f5)), closes [#1310](https://github.com/serenity-js/serenity-js/issues/1310)
14
13
 
15
14
 
16
15
  ### Features
17
16
 
18
- * **web:** isVisible checks if the element is in viewport and not hidden behind other elements ([429040f](https://github.com/serenity-js/serenity-js/commit/429040fb32b04cd4bc7524100635203fd8128eb6))
19
- * **web:** re-introduced PageElements.where DSL and universal By selectors ([39fe0a1](https://github.com/serenity-js/serenity-js/commit/39fe0a10edf7f652e93911159e4a4689c36d6876)), closes [#1081](https://github.com/serenity-js/serenity-js/issues/1081)
17
+ * **web:** interaction to Clear works with "contenteditable" elements across all the web tools ([c53b00d](https://github.com/serenity-js/serenity-js/commit/c53b00dac512977c00e5eadc101e281997f8e0de)), closes [#1306](https://github.com/serenity-js/serenity-js/issues/1306)
20
18
 
21
19
 
22
20
 
23
21
 
24
22
 
25
- # [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
23
+ # [3.0.0-rc.29](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.28...v3.0.0-rc.29) (2022-10-01)
26
24
 
27
25
  **Note:** Version bump only for package @serenity-js/webdriverio
28
26
 
@@ -30,7 +28,20 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
30
28
 
31
29
 
32
30
 
33
- # [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
31
+ # [3.0.0-rc.28](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.27...v3.0.0-rc.28) (2022-09-30)
32
+
33
+
34
+ ### Bug Fixes
35
+
36
+ * **core:** activity is now able to detect invocation location on Node 14 ([41f4776](https://github.com/serenity-js/serenity-js/commit/41f4776736620bc32d474d9b66f69c742f8eca96)), closes [#1240](https://github.com/serenity-js/serenity-js/issues/1240)
37
+ * **core:** simplified SceneFinishes event ([9ad947a](https://github.com/serenity-js/serenity-js/commit/9ad947adc49cefd9b64f48b02bc173f073f545c4)), closes [#1240](https://github.com/serenity-js/serenity-js/issues/1240)
38
+ * **playwright:** corrected not(isPresent()) for PlaywrightPageElement ([0693b2f](https://github.com/serenity-js/serenity-js/commit/0693b2f2666a8de327c990c72ecf42fc3d7da498)), closes [#1240](https://github.com/serenity-js/serenity-js/issues/1240)
39
+
40
+
41
+
42
+
43
+
44
+ # [3.0.0-rc.27](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.26...v3.0.0-rc.27) (2022-08-26)
34
45
 
35
46
  **Note:** Version bump only for package @serenity-js/webdriverio
36
47
 
@@ -38,53 +49,32 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
38
49
 
39
50
 
40
51
 
41
- # [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
52
+ # [3.0.0-rc.26](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.25...v3.0.0-rc.26) (2022-08-15)
42
53
 
43
54
 
44
55
  ### Bug Fixes
45
56
 
46
- * **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
47
- * **deps:** updated WebdriverIO ([9de63d4](https://github.com/serenity-js/serenity-js/commit/9de63d460d9735abfc5bb066671f6f28c3274597))
48
- * **deps:** web ([b075b8e](https://github.com/serenity-js/serenity-js/commit/b075b8ecd8e00014469dda15a90175d60ed80c91))
49
- * **web:** corrected timestamp rounding when retrieving the expiry date of a cookie ([d636965](https://github.com/serenity-js/serenity-js/commit/d63696586618cd701e703e33dd8b476efaac65b6))
50
- * **webdriverio:** ensure getLastScriptExecutionResult returns undefined for void functions ([aa00dfd](https://github.com/serenity-js/serenity-js/commit/aa00dfd3ab320a5d7ee786feea1ce0355ac42638))
51
- * **webdriverio:** fixed synchronisation issue in ModalDialog ([12324b2](https://github.com/serenity-js/serenity-js/commit/12324b2cef9c161df8b68960d5b958c1f208f70a)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
52
- * **webdriverio:** separated UIElement.hoverOver from UIElement.scrollIntoView ([cf4ca2c](https://github.com/serenity-js/serenity-js/commit/cf4ca2c531e0f90f9a27917e322359c13bfbc6e6))
53
- * **webdriverio:** updated WebdriverIO to 7.13.2 ([ef79d19](https://github.com/serenity-js/serenity-js/commit/ef79d1962224e8dd04a1b0e099662c91ea118dfe))
54
- * **webdriverio:** updated WebdriverIO to 7.16.7 ([3316e29](https://github.com/serenity-js/serenity-js/commit/3316e2905e68b1cabf76086da353072376f95f4a))
55
- * **web:** removed window-specific APIs from BrowseTheWeb that got replaced by Page ([918f447](https://github.com/serenity-js/serenity-js/commit/918f447c1d8f326fbf5730f1aa61108045556212)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
56
- * **web:** renamed Element and associated classes to PageElement to avoid name conflicts ([1e4204b](https://github.com/serenity-js/serenity-js/commit/1e4204b5507469e6574c87a6d84454e39e8a813e))
57
- * **web:** renamed PageElementList to PageElements to improve readability ([a9903a7](https://github.com/serenity-js/serenity-js/commit/a9903a7389b00106ef94d2bdb9f86a7fd04be541)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
58
- * **web:** standardised getters across PageElement implementations ([336472b](https://github.com/serenity-js/serenity-js/commit/336472b1a6882412f6a88483e51266909a1d51d0))
57
+ * **webdriverio:** updated WebdriverIO dependencies to 7.20.9 ([da3ff9c](https://github.com/serenity-js/serenity-js/commit/da3ff9c4c55f59758450fc8428e0596f3d372ce6))
59
58
 
60
59
 
61
- ### Features
62
60
 
63
- * **protractor:** compatibility with @serenity-js/web ([9df4db2](https://github.com/serenity-js/serenity-js/commit/9df4db27a6e0ae62bf0d0e679a170d4865041043)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
64
- * **web:** a common way to run the tests for all the web adapters ([c7e584a](https://github.com/serenity-js/serenity-js/commit/c7e584a9bf288ebc7781affdb720097527e8ed3a))
65
- * **web:** added Page.viewportSize and Page.setViewportSize methods ([4cabbe2](https://github.com/serenity-js/serenity-js/commit/4cabbe21a7fbac3457c6a6ea3d4442a62c3f1f3c))
66
- * **web:** all Screenplay APIs migrated from @serenity-js/webdriverio to @serenity-js/web ([7b6b95d](https://github.com/serenity-js/serenity-js/commit/7b6b95dc255446c29ae213ba2a1d142d426d16c8))
67
- * **webdriverio:** support for native WebdriverIO services ([8d5ad22](https://github.com/serenity-js/serenity-js/commit/8d5ad22594cdb2ebddedc58a30259ca8430e360c))
68
- * **web:** interaction to set a Cookie ([c056439](https://github.com/serenity-js/serenity-js/commit/c056439746a8f57c3edd937b8862f2babb70e94e)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
69
- * **web:** interaction to setViewportSize of a Page ([dd7f180](https://github.com/serenity-js/serenity-js/commit/dd7f18057b857d2e69c19265888bfd5b15fda21b))
70
- * **web:** ModalDialog available for both Protractor and WebdriverIO adapters ([ef3c566](https://github.com/serenity-js/serenity-js/commit/ef3c566aed12b52aa22c54058992d369172b8597)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
71
- * **web:** new module @serenity-js/web to provide Web-related Screenplay Pattern APIs ([bead861](https://github.com/serenity-js/serenity-js/commit/bead8612af1a5c99b775e680a3904f44d0281cf9))
72
- * **web:** Page.url() and Page.title() replace Website.url() and Website.title() ([49fe009](https://github.com/serenity-js/serenity-js/commit/49fe0094422ab53ec67d4ba303f80c33e382eebd)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
73
- * **web:** removed Target in favour of PageElement ([69496c4](https://github.com/serenity-js/serenity-js/commit/69496c47c4a1ec7b92e7ab6c83da1559e926f28e)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
74
- * **web:** support for switching browsing context ([a73a635](https://github.com/serenity-js/serenity-js/commit/a73a635f93183d67229acde78e74526564008869)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
75
- * **web:** support for working with cookies ([39cde6d](https://github.com/serenity-js/serenity-js/commit/39cde6de7a36d27a8b1c596493efbec94900af6b)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
76
61
 
77
62
 
78
- ### BREAKING CHANGES
63
+ # [3.0.0-rc.25](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.24...v3.0.0-rc.25) (2022-08-15)
79
64
 
80
- * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
81
- modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
82
65
 
66
+ ### Bug Fixes
83
67
 
68
+ * **core:** extracted common TypeScript configuration ([0108370](https://github.com/serenity-js/serenity-js/commit/0108370a6a7ebb4bcd71773482801d29f5660268))
69
+ * **deps:** updated TinyTypes to 1.19.0 ([f6d53e4](https://github.com/serenity-js/serenity-js/commit/f6d53e4dbbfcb81139bd888ac11441b6344e47f5))
70
+ * **webdriverio:** ensure Serenity/JS-specific config is not passed to WebdriverIO-specific services ([384738e](https://github.com/serenity-js/serenity-js/commit/384738e0d7b61b69de24b11ff1fbc32b835a440c))
71
+ * **webdriverio:** use local instead of global browser object in WebdriverioPage ([323be75](https://github.com/serenity-js/serenity-js/commit/323be7517ea8b90f967f510c03c744330c5ba2b0))
84
72
 
85
73
 
86
74
 
87
- ## [2.32.5](https://github.com/serenity-js/serenity-js/compare/v2.32.4...v2.32.5) (2021-12-08)
75
+
76
+
77
+ # [3.0.0-rc.24](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.23...v3.0.0-rc.24) (2022-07-23)
88
78
 
89
79
  **Note:** Version bump only for package @serenity-js/webdriverio
90
80
 
@@ -92,104 +82,220 @@ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped su
92
82
 
93
83
 
94
84
 
95
- ## [2.32.4](https://github.com/serenity-js/serenity-js/compare/v2.32.3...v2.32.4) (2021-11-25)
85
+ # [3.0.0-rc.23](https://github.com/serenity-js/serenity-js/compare/v2.33.10...v3.0.0-rc.23) (2022-07-19)
96
86
 
97
- **Note:** Version bump only for package @serenity-js/webdriverio
87
+
88
+ ### Bug Fixes
89
+
90
+ * **node:** support for Node 18 ([73212bc](https://github.com/serenity-js/serenity-js/commit/73212bc9deb1998d871b0720a6b437687b3ceddc)), closes [#1243](https://github.com/serenity-js/serenity-js/issues/1243)
91
+
92
+
93
+
94
+ # [3.0.0-rc.22](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.21...v3.0.0-rc.22) (2022-07-15)
98
95
 
99
96
 
97
+ ### Bug Fixes
98
+
99
+ * **web:** improved reliability of PageElementLocator for WebdriverIO and Protractor ([b19d19a](https://github.com/serenity-js/serenity-js/commit/b19d19aedc0d60d4068191e7eb83943b9268e39a)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
100
+
101
+
102
+
103
+ # [3.0.0-rc.21](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.20...v3.0.0-rc.21) (2022-07-11)
100
104
 
101
105
 
106
+ ### Bug Fixes
107
+
108
+ * **web:** corrected promise handling to avoid the unhandled promise rejection warning ([daac705](https://github.com/serenity-js/serenity-js/commit/daac705174683425109591e25139b5172fbdd7d3))
109
+
102
110
 
103
- ## [2.32.3](https://github.com/serenity-js/serenity-js/compare/v2.32.2...v2.32.3) (2021-11-06)
111
+
112
+ # [3.0.0-rc.20](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.19...v3.0.0-rc.20) (2022-07-11)
104
113
 
105
114
 
106
115
  ### Bug Fixes
107
116
 
108
- * **core:** support for NPM 8 ([7cb470c](https://github.com/serenity-js/serenity-js/commit/7cb470c985a7149f058a317dcb14e6294913f9ff))
117
+ * **webdriverio:** improved resiliency of the WebdriverIOPuppeteerModalDialogHandler ([5e56edf](https://github.com/serenity-js/serenity-js/commit/5e56edf875a6d21cabbe02505179e98d05bc89b7)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
118
+ * **webdriverio:** updated WebdriverIO dependencies ([0833a3c](https://github.com/serenity-js/serenity-js/commit/0833a3cb804bf800645c564877277c8498412ef2))
119
+ * **web:** improved JavaScript dialog-related error handling when taking screenshots ([3cd1149](https://github.com/serenity-js/serenity-js/commit/3cd1149ed74df95da17f1054cd4da93b095a4eed)), closes [puppeteer/puppeteer#2481](https://github.com/puppeteer/puppeteer/issues/2481) [#1156](https://github.com/serenity-js/serenity-js/issues/1156)
120
+ * **web:** removed dependency on is-plain-object ([cbe76a6](https://github.com/serenity-js/serenity-js/commit/cbe76a6e36f3ccc4a012e81244aa108a040b2d45))
121
+ * **web:** renamed PagesContext to BrowsingSession to make the name more descriptive ([6b4e998](https://github.com/serenity-js/serenity-js/commit/6b4e9984d80f8f349f367e59bd0e615cd01703ec)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
109
122
 
110
123
 
124
+ ### Features
111
125
 
126
+ * **playwright:** initial support for Playwright ([87e88a1](https://github.com/serenity-js/serenity-js/commit/87e88a16cdc06477ed25eb83f9597fd370fdc109)), closes [#493](https://github.com/serenity-js/serenity-js/issues/493) [#563](https://github.com/serenity-js/serenity-js/issues/563) [#911](https://github.com/serenity-js/serenity-js/issues/911)
127
+ * **playwright:** interaction to Select option(s) from a <select /> dropdown ([009041d](https://github.com/serenity-js/serenity-js/commit/009041d83e22ddf3fef14670e0e5fd6d11cdfc73)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
128
+ * **playwright:** support for isVisible, plus consistent visibility checks across the board ([2c5c929](https://github.com/serenity-js/serenity-js/commit/2c5c929802f894f9fe59438a01f08b1b7bec3318)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
129
+ * **playwright:** support for working with frames ([89d4621](https://github.com/serenity-js/serenity-js/commit/89d46212073a342fe812a3ad2638a2ad0c39b620)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
130
+ * **web:** introduced PagesContext and implemented PlaywrightPage ([0045a72](https://github.com/serenity-js/serenity-js/commit/0045a726d540871333f644928218aed00bcd372c)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236)
131
+ * **web:** new portable APIs to handle ModalDialog windows ([c94d0ec](https://github.com/serenity-js/serenity-js/commit/c94d0ec43d2bc8aa39f8824f5d0f1e1cbcf137a1)), closes [#1236](https://github.com/serenity-js/serenity-js/issues/1236) [#805](https://github.com/serenity-js/serenity-js/issues/805) [#1156](https://github.com/serenity-js/serenity-js/issues/1156)
132
+ * **web:** standardised support for deep CSS selectors across the Web integration modules ([e9e3f28](https://github.com/serenity-js/serenity-js/commit/e9e3f281191fc5c891841b6c8aab41213da3b0f5)), closes [#1238](https://github.com/serenity-js/serenity-js/issues/1238)
112
133
 
113
134
 
114
- ## [2.32.2](https://github.com/serenity-js/serenity-js/compare/v2.32.1...v2.32.2) (2021-10-04)
135
+
136
+ # [3.0.0-rc.19](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.18...v3.0.0-rc.19) (2022-06-11)
115
137
 
116
138
 
117
139
  ### Bug Fixes
118
140
 
119
- * **rest:** reverted axios to 0.21.4 to avoid issue axios/axios[#4124](https://github.com/serenity-js/serenity-js/issues/4124) introduced in version 0.22.0 ([ce1fc7f](https://github.com/serenity-js/serenity-js/commit/ce1fc7f8c8dcee0c0f41a2a2663b9ebe18de740d))
141
+ * **rest:** updated Axios to 0.27.2 ([b54694b](https://github.com/serenity-js/serenity-js/commit/b54694ba3dd2b8e0316d94c44381f51b1ab79ad0)), closes [axios/axios#4124](https://github.com/axios/axios/issues/4124) [#1223](https://github.com/serenity-js/serenity-js/issues/1223)
120
142
 
121
143
 
122
144
 
145
+ # [3.0.0-rc.18](https://github.com/serenity-js/serenity-js/compare/v2.33.9...v3.0.0-rc.18) (2022-06-06)
123
146
 
124
147
 
125
- ## [2.32.1](https://github.com/serenity-js/serenity-js/compare/v2.32.0...v2.32.1) (2021-09-17)
148
+ ### Bug Fixes
126
149
 
127
- **Note:** Version bump only for package @serenity-js/webdriverio
150
+ * **deps:** updated tiny-types ([f1951cf](https://github.com/serenity-js/serenity-js/commit/f1951cf753df3807b5778d116f8e8bc3f24830a7))
151
+ * **deps:** updated tiny-types to 1.18.2 ([83a651c](https://github.com/serenity-js/serenity-js/commit/83a651c4c2f3f8dbaabcdacba94c720efdff45dd))
152
+
153
+
154
+
155
+ # [3.0.0-rc.17](https://github.com/serenity-js/serenity-js/compare/v2.33.8...v3.0.0-rc.17) (2022-06-02)
156
+
157
+
158
+
159
+ # [3.0.0-rc.16](https://github.com/serenity-js/serenity-js/compare/v2.33.6...v3.0.0-rc.16) (2022-04-15)
128
160
 
129
161
 
130
162
 
163
+ # [3.0.0-rc.15](https://github.com/serenity-js/serenity-js/compare/v2.33.5...v3.0.0-rc.15) (2022-04-10)
131
164
 
132
165
 
133
- # [2.32.0](https://github.com/serenity-js/serenity-js/compare/v2.31.1...v2.32.0) (2021-09-08)
166
+
167
+ # [3.0.0-rc.14](https://github.com/serenity-js/serenity-js/compare/v2.33.3...v3.0.0-rc.14) (2022-03-28)
168
+
169
+
170
+
171
+ # [3.0.0-rc.13](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.12...v3.0.0-rc.13) (2022-03-02)
134
172
 
135
173
 
136
174
  ### Features
137
175
 
138
- * **webdriverio:** implemented Scroll interaction ([fcea8a3](https://github.com/serenity-js/serenity-js/commit/fcea8a3bcf57beecf170198b5f43628f30a8c98b))
176
+ * **web:** combined Frame and PageElement so they can be Switch-ed to ([1b7ab7c](https://github.com/serenity-js/serenity-js/commit/1b7ab7c828034a14ba801cbfa97acc203fd55adf)), closes [#82](https://github.com/serenity-js/serenity-js/issues/82) [#227](https://github.com/serenity-js/serenity-js/issues/227) [#233](https://github.com/serenity-js/serenity-js/issues/233) [#365](https://github.com/serenity-js/serenity-js/issues/365)
139
177
 
140
178
 
141
179
 
180
+ # [3.0.0-rc.12](https://github.com/serenity-js/serenity-js/compare/v2.33.2...v3.0.0-rc.12) (2022-02-23)
142
181
 
143
182
 
144
- ## [2.31.1](https://github.com/serenity-js/serenity-js/compare/v2.31.0...v2.31.1) (2021-08-27)
145
183
 
184
+ # [3.0.0-rc.11](https://github.com/serenity-js/serenity-js/compare/v2.33.1...v3.0.0-rc.11) (2022-02-13)
146
185
 
147
- ### Bug Fixes
148
186
 
149
- * **cucumber:** don't pass the "rerun" file to Cucumber if it doesn't exist ([b08eca2](https://github.com/serenity-js/serenity-js/commit/b08eca2b849194835385d0966b0f4a9895fe1d24)), closes [#971](https://github.com/serenity-js/serenity-js/issues/971) [protractor-cucumber-framework/protractor-cucumber-framework#219](https://github.com/protractor-cucumber-framework/protractor-cucumber-framework/issues/219)
187
+ ### Features
150
188
 
189
+ * **web:** support for working with frames and an interaction to Switch.to(frameOrPage) ([ef73ef2](https://github.com/serenity-js/serenity-js/commit/ef73ef273f8a17e48d396d5ef03f6b761b136c9a)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
151
190
 
152
191
 
153
192
 
193
+ # [3.0.0-rc.10](https://github.com/serenity-js/serenity-js/compare/v2.33.0...v3.0.0-rc.10) (2022-02-03)
154
194
 
155
- # [2.31.0](https://github.com/serenity-js/serenity-js/compare/v2.30.3...v2.31.0) (2021-08-23)
156
195
 
157
- **Note:** Version bump only for package @serenity-js/webdriverio
158
196
 
197
+ # [3.0.0-rc.9](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.8...v3.0.0-rc.9) (2022-02-01)
159
198
 
160
199
 
200
+ ### Features
161
201
 
202
+ * **web:** isVisible() works with Web elements in Shadow DOM ([cf84fb0](https://github.com/serenity-js/serenity-js/commit/cf84fb072a6b813338b68bb1dec3932ea8709e3e)), closes [#1085](https://github.com/serenity-js/serenity-js/issues/1085)
162
203
 
163
- ## [2.30.3](https://github.com/serenity-js/serenity-js/compare/v2.30.2...v2.30.3) (2021-08-16)
164
204
 
165
- **Note:** Version bump only for package @serenity-js/webdriverio
166
205
 
206
+ # [3.0.0-rc.8](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.7...v3.0.0-rc.8) (2022-01-28)
167
207
 
168
208
 
209
+ ### Bug Fixes
169
210
 
211
+ * **webdriverio:** corrected visibility of the `browser` field on BrowseTheWebWithWebdriverIO ([0de725f](https://github.com/serenity-js/serenity-js/commit/0de725f71ec67c496b16fabdbc7e1a06715732fa))
170
212
 
171
- ## [2.30.2](https://github.com/serenity-js/serenity-js/compare/v2.30.1...v2.30.2) (2021-08-13)
172
213
 
173
- **Note:** Version bump only for package @serenity-js/webdriverio
214
+
215
+ # [3.0.0-rc.7](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.6...v3.0.0-rc.7) (2022-01-28)
216
+
217
+
218
+
219
+ # [3.0.0-rc.6](https://github.com/serenity-js/serenity-js/compare/v2.32.7...v3.0.0-rc.6) (2022-01-10)
220
+
221
+
222
+
223
+ # [3.0.0-rc.5](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.4...v3.0.0-rc.5) (2022-01-07)
224
+
225
+
226
+ ### Features
227
+
228
+ * **web:** support for advanced PageElement locator patterns ([c1ff8b7](https://github.com/serenity-js/serenity-js/commit/c1ff8b7539ebc1da8f79ea2b6d17bb01c42f443d)), closes [#1084](https://github.com/serenity-js/serenity-js/issues/1084)
174
229
 
175
230
 
176
231
 
232
+ # [3.0.0-rc.4](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.3...v3.0.0-rc.4) (2021-12-30)
177
233
 
178
234
 
179
- ## [2.30.1](https://github.com/serenity-js/serenity-js/compare/v2.30.0...v2.30.1) (2021-08-09)
235
+
236
+ # [3.0.0-rc.3](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.2...v3.0.0-rc.3) (2021-12-29)
180
237
 
181
238
 
182
239
  ### Bug Fixes
183
240
 
184
- * **webdriverio:** you can import WebdriverIOConfig from @serenity-js/webdriverio ([59703bf](https://github.com/serenity-js/serenity-js/commit/59703bf4fb13488bce2382eb411e67b4342e0e2d))
241
+ * **core:** refactored Mappable so that it's easier to implement filters ([176e0cd](https://github.com/serenity-js/serenity-js/commit/176e0cd0303d63271477b2b7a8e7b0572dda99a0)), closes [#1074](https://github.com/serenity-js/serenity-js/issues/1074)
242
+ * **deps:** updated tiny-types to 1.17.0 ([3187051](https://github.com/serenity-js/serenity-js/commit/3187051594158b4b450c82e851e417fd2ed21652))
243
+ * **web:** refactored Selector and NativeElementLocator classes to simplify the implementation ([f0c8f11](https://github.com/serenity-js/serenity-js/commit/f0c8f113433958877d36f13d0bc7f355ea68d280))
244
+
245
+
246
+ ### Features
247
+
248
+ * **web:** isVisible checks if the element is in viewport and not hidden behind other elements ([429040f](https://github.com/serenity-js/serenity-js/commit/429040fb32b04cd4bc7524100635203fd8128eb6))
249
+ * **web:** re-introduced PageElements.where DSL and universal By selectors ([39fe0a1](https://github.com/serenity-js/serenity-js/commit/39fe0a10edf7f652e93911159e4a4689c36d6876)), closes [#1081](https://github.com/serenity-js/serenity-js/issues/1081)
250
+
251
+
252
+
253
+ # [3.0.0-rc.2](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.1...v3.0.0-rc.2) (2021-12-09)
254
+
185
255
 
186
256
 
257
+ # [3.0.0-rc.1](https://github.com/serenity-js/serenity-js/compare/v3.0.0-rc.0...v3.0.0-rc.1) (2021-12-09)
258
+
259
+
260
+
261
+ # [3.0.0-rc.0](https://github.com/serenity-js/serenity-js/compare/v2.32.5...v3.0.0-rc.0) (2021-12-08)
187
262
 
188
263
 
264
+ ### Bug Fixes
189
265
 
190
- # [2.30.0](https://github.com/serenity-js/serenity-js/compare/v2.29.9...v2.30.0) (2021-08-06)
266
+ * **core:** 3.0 RC ([469d54e](https://github.com/serenity-js/serenity-js/commit/469d54e4f81ef430566b93852e3174826f8ef672)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
267
+ * **deps:** updated WebdriverIO ([9de63d4](https://github.com/serenity-js/serenity-js/commit/9de63d460d9735abfc5bb066671f6f28c3274597))
268
+ * **deps:** web ([b075b8e](https://github.com/serenity-js/serenity-js/commit/b075b8ecd8e00014469dda15a90175d60ed80c91))
269
+ * **web:** corrected timestamp rounding when retrieving the expiry date of a cookie ([d636965](https://github.com/serenity-js/serenity-js/commit/d63696586618cd701e703e33dd8b476efaac65b6))
270
+ * **webdriverio:** ensure getLastScriptExecutionResult returns undefined for void functions ([aa00dfd](https://github.com/serenity-js/serenity-js/commit/aa00dfd3ab320a5d7ee786feea1ce0355ac42638))
271
+ * **webdriverio:** fixed synchronisation issue in ModalDialog ([12324b2](https://github.com/serenity-js/serenity-js/commit/12324b2cef9c161df8b68960d5b958c1f208f70a)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
272
+ * **webdriverio:** separated UIElement.hoverOver from UIElement.scrollIntoView ([cf4ca2c](https://github.com/serenity-js/serenity-js/commit/cf4ca2c531e0f90f9a27917e322359c13bfbc6e6))
273
+ * **webdriverio:** updated WebdriverIO to 7.13.2 ([ef79d19](https://github.com/serenity-js/serenity-js/commit/ef79d1962224e8dd04a1b0e099662c91ea118dfe))
274
+ * **webdriverio:** updated WebdriverIO to 7.16.7 ([3316e29](https://github.com/serenity-js/serenity-js/commit/3316e2905e68b1cabf76086da353072376f95f4a))
275
+ * **web:** removed window-specific APIs from BrowseTheWeb that got replaced by Page ([918f447](https://github.com/serenity-js/serenity-js/commit/918f447c1d8f326fbf5730f1aa61108045556212)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
276
+ * **web:** renamed Element and associated classes to PageElement to avoid name conflicts ([1e4204b](https://github.com/serenity-js/serenity-js/commit/1e4204b5507469e6574c87a6d84454e39e8a813e))
277
+ * **web:** renamed PageElementList to PageElements to improve readability ([a9903a7](https://github.com/serenity-js/serenity-js/commit/a9903a7389b00106ef94d2bdb9f86a7fd04be541)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
278
+ * **web:** standardised getters across PageElement implementations ([336472b](https://github.com/serenity-js/serenity-js/commit/336472b1a6882412f6a88483e51266909a1d51d0))
191
279
 
192
280
 
193
281
  ### Features
194
282
 
195
- * **webdriverio:** enabled integration with WebdriverIO ([c025086](https://github.com/serenity-js/serenity-js/commit/c0250864b4492e7a619e3ac746f1d058cbe26794)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
283
+ * **protractor:** compatibility with @serenity-js/web ([9df4db2](https://github.com/serenity-js/serenity-js/commit/9df4db27a6e0ae62bf0d0e679a170d4865041043)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
284
+ * **web:** a common way to run the tests for all the web adapters ([c7e584a](https://github.com/serenity-js/serenity-js/commit/c7e584a9bf288ebc7781affdb720097527e8ed3a))
285
+ * **web:** added Page.viewportSize and Page.setViewportSize methods ([4cabbe2](https://github.com/serenity-js/serenity-js/commit/4cabbe21a7fbac3457c6a6ea3d4442a62c3f1f3c))
286
+ * **web:** all Screenplay APIs migrated from @serenity-js/webdriverio to @serenity-js/web ([7b6b95d](https://github.com/serenity-js/serenity-js/commit/7b6b95dc255446c29ae213ba2a1d142d426d16c8))
287
+ * **webdriverio:** support for native WebdriverIO services ([8d5ad22](https://github.com/serenity-js/serenity-js/commit/8d5ad22594cdb2ebddedc58a30259ca8430e360c))
288
+ * **web:** interaction to set a Cookie ([c056439](https://github.com/serenity-js/serenity-js/commit/c056439746a8f57c3edd937b8862f2babb70e94e)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
289
+ * **web:** interaction to setViewportSize of a Page ([dd7f180](https://github.com/serenity-js/serenity-js/commit/dd7f18057b857d2e69c19265888bfd5b15fda21b))
290
+ * **web:** ModalDialog available for both Protractor and WebdriverIO adapters ([ef3c566](https://github.com/serenity-js/serenity-js/commit/ef3c566aed12b52aa22c54058992d369172b8597)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
291
+ * **web:** new module @serenity-js/web to provide Web-related Screenplay Pattern APIs ([bead861](https://github.com/serenity-js/serenity-js/commit/bead8612af1a5c99b775e680a3904f44d0281cf9))
292
+ * **web:** Page.url() and Page.title() replace Website.url() and Website.title() ([49fe009](https://github.com/serenity-js/serenity-js/commit/49fe0094422ab53ec67d4ba303f80c33e382eebd)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
293
+ * **web:** removed Target in favour of PageElement ([69496c4](https://github.com/serenity-js/serenity-js/commit/69496c47c4a1ec7b92e7ab6c83da1559e926f28e)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
294
+ * **web:** support for switching browsing context ([a73a635](https://github.com/serenity-js/serenity-js/commit/a73a635f93183d67229acde78e74526564008869)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
295
+ * **web:** support for working with cookies ([39cde6d](https://github.com/serenity-js/serenity-js/commit/39cde6de7a36d27a8b1c596493efbec94900af6b)), closes [#805](https://github.com/serenity-js/serenity-js/issues/805)
296
+
297
+
298
+ ### BREAKING CHANGES
299
+
300
+ * **core:** Introduced @serenity-js/web - a shared library for Serenity/JS Web integration
301
+ modules such as @serenity-js/protractor and @serenity-js/webdriverio. Dropped support for Node 12.
package/README.md CHANGED
@@ -14,7 +14,7 @@ Subscribe to [Serenity/JS YouTube channel](https://www.youtube.com/channel/UC0Rd
14
14
 
15
15
  ### Learning Serenity/JS
16
16
 
17
- To learn more about Serenity/JS, [follow the tutorial](https://serenity-js.org/handbook/thinking-in-serenity-js/index.html), [review the examples](https://github.com/serenity-js/serenity-js/tree/master/examples), and create your own test suite with [Serenity/JS template projects](https://github.com/serenity-js).
17
+ To learn more about Serenity/JS, [follow the tutorial](https://serenity-js.org/handbook/thinking-in-serenity-js/index.html), [review the examples](https://github.com/serenity-js/serenity-js/tree/main/examples), and create your own test suite with [Serenity/JS template projects](https://github.com/serenity-js).
18
18
 
19
19
  If you have any questions, join us on [Serenity/JS Community Chat](https://gitter.im/serenity-js/Lobby).
20
20
 
@@ -28,7 +28,7 @@ for [WebdriverIO](https://webdriver.io/), that helps with testing Web-based and
28
28
  To install this module, run the following command in your [WebdriverIO project directory](https://webdriver.io/docs/gettingstarted/):
29
29
 
30
30
  ```bash
31
- npm install --save-dev @serenity-js/{core,webdriverio}
31
+ npm install --save-dev @serenity-js/{assertions,console-reporter,core,serenity-bdd,web,webdriverio}
32
32
  ```
33
33
 
34
34
  Next, install one of the below test runner adapters.
@@ -40,7 +40,7 @@ To use Serenity/JS WebdriverIO with Cucumber.js, install the following adapter:
40
40
  npm install --save-dev @serenity-js/cucumber
41
41
  ```
42
42
 
43
- **Please note** that Serenity/JS WebdriverIO / Cucumber integration supports both [Serenity/JS reporting services](https://serenity-js.org/handbook/reporting/index.html) and [native Cucumber.js reporters](https://github.com/cucumber/cucumber-js/blob/master/docs/cli.md#built-in-formatters).
43
+ **Please note** that Serenity/JS WebdriverIO / Cucumber integration supports both [Serenity/JS reporting services](https://serenity-js.org/handbook/reporting/index.html) and [native Cucumber.js reporters](https://github.com/cucumber/cucumber-js/blob/main/docs/cli.md#built-in-formatters).
44
44
 
45
45
  #### Usage with Jasmine
46
46
 
@@ -58,6 +58,27 @@ npm install --save-dev @serenity-js/mocha
58
58
 
59
59
  ### Configuring Webdriverio
60
60
 
61
+ ```typescript
62
+ // serenity/Actors.ts
63
+ import { Actor, Cast } from '@serenity-js/core';
64
+ import { BrowseTheWebWithWebdriverIO } from '@serenity-js/webdriverio';
65
+ import * as wdio from 'webdriverio';
66
+
67
+ // example Actors class, confgures Serenity/JS actors to use WebdriverIO
68
+ class Actors implements Cast {
69
+ constructor(private readonly browser: wdio.Browser<'async'>) {
70
+ }
71
+
72
+ prepare(actor: Actor): Actor {
73
+ return actor.whoCan(
74
+ BrowseTheWebWithWebdriverIO.using(this.browser),
75
+ // ... add other abilities as needed, like CallAnApi or TakeNotes
76
+ );
77
+ }
78
+ }
79
+
80
+ ```
81
+
61
82
  ```typescript
62
83
  // wdio.conf.ts
63
84
 
@@ -66,6 +87,7 @@ import { ArtifactArchiver } from '@serenity-js/core';
66
87
  import { ConsoleReporter } from '@serenity-js/console-reporter';
67
88
  import { SerenityBDDReporter } from '@serenity-js/serenity-bdd';
68
89
  import { Photographer, TakePhotosOfFailures, WebdriverIOConfig } from '@serenity-js/webdriverio';
90
+ import { Actors } from './serenity/Actors.ts'
69
91
 
70
92
  export const config: WebdriverIOConfig = {
71
93
  // Tell WebdriverIO to use Serenity/JS framework
@@ -77,6 +99,9 @@ export const config: WebdriverIOConfig = {
77
99
  // runner: 'mocha',
78
100
  // runner: 'jasmine',
79
101
 
102
+ // register custom Actors class to configure your Serenity/JS actors
103
+ actors: new Actors(),
104
+
80
105
  // Register StageCrewMembers we've imported at the top of this file
81
106
  crew: [
82
107
  ArtifactArchiver.storingArtifactsAt(process.cwd(), 'target/site/serenity'),
@@ -123,38 +148,46 @@ Learn more about:
123
148
  - [Mocha configuration options](https://serenity-js.org/modules/mocha/class/src/adapter/MochaConfig.ts~MochaConfig.html)
124
149
  - [WebdriverIO configuration file](https://webdriver.io/docs/configurationfile/)
125
150
 
126
- ### Interacting with websites and web apps
151
+ ### Usage with Mocha
127
152
 
128
153
  ```typescript
129
154
  import { actorCalled } from '@serenity-js/core';
130
155
  import { Ensure, equals } from '@serenity-js/assertions';
131
- import { by, BrowseTheWeb, Navigate, Target, Text } from '@serenity-js/webdriverio';
156
+ import { By, Navigate, PageElement, Text } from '@serenity-js/web';
157
+ import { BrowseTheWebWithWebdriverIO } from '@serenity-js/webdriverio';
132
158
 
159
+ // example Lean Page Object describing a widget we interact with in the test
133
160
  class SerenityJSWebsite {
134
- static header = Target.the('header').located(by.css('h1'));
161
+ static header = () =>
162
+ PageElement.located(By.css('h1')) // selector to identify the interactable element
163
+ .describedAs('header'); // description to be used in reports
135
164
  }
136
165
 
137
- actorCalled('Wendy')
138
- .whoCan(
139
- BrowseTheWeb.using(browser)
140
- )
141
- .attemptsTo(
142
- Navigate.to('https://serenity-js.org'),
143
- Ensure.that(
144
- Text.of(SerenityJSWebsite.header),
145
- equals('Next generation acceptance testing')
146
- ),
147
- )
166
+ describe('Serenity/JS', () => {
167
+
168
+ it('works with WebdriverIO and Mocha', async () => {
169
+ // actorCalled(name) instantiates or retrieves an existing actor identified by name
170
+ // Actors class configures the actors to use WebdriverIO
171
+ await actorCalled('Wendy')
172
+ .attemptsTo(
173
+ Navigate.to('https://serenity-js.org'),
174
+ Ensure.that(
175
+ Text.of(SerenityJSWebsite.header()),
176
+ equals('Next generation acceptance testing')
177
+ ),
178
+ )
179
+ })
180
+ });
148
181
  ```
149
182
 
150
- To learn more, check out the [example projects](https://github.com/serenity-js/serenity-js/tree/master/examples).
183
+ To learn more, check out the [example projects](https://github.com/serenity-js/serenity-js/tree/main/examples).
151
184
 
152
185
  ### Template Repositories
153
186
 
154
187
  The easiest way for you to start writing web-based acceptance tests using Serenity/JS, WebdriverIO and either [Mocha](https://mochajs.org/), [Cucumber](https://github.com/cucumber/cucumber-js) or [Jasmine](https://jasmine.github.io/) is by using one of the below template repositories:
155
188
 
156
189
  - [Serenity/JS, Mocha, and WebdriverIO template](https://github.com/serenity-js/serenity-js-mocha-webdriverio-template)
157
- - Serenity/JS, Cucumber, and WebdriverIO template (coming soon!)
190
+ - [Serenity/JS, Cucumber, and WebdriverIO template](https://github.com/serenity-js/serenity-js-cucumber-webdriverio-template)
158
191
  - Serenity/JS, Jasmine, and WebdriverIO template (coming soon!)
159
192
 
160
193
  ## More coming soon!
@@ -1,8 +1,6 @@
1
- import { ModuleLoader, Path, TestRunnerAdapter } from '@serenity-js/core/lib/io';
1
+ import { TestRunnerAdapter } from '@serenity-js/core/lib/adapter';
2
+ import { ModuleLoader, Path } from '@serenity-js/core/lib/io';
2
3
  import { WebdriverIOConfig } from './WebdriverIOConfig';
3
- /**
4
- * @package
5
- */
6
4
  export declare class TestRunnerLoader {
7
5
  private readonly loader;
8
6
  private readonly cwd;
@@ -15,3 +13,4 @@ export declare class TestRunnerLoader {
15
13
  private jasmineAdapter;
16
14
  private mochaAdapter;
17
15
  }
16
+ //# 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,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAkC,YAAY,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAG9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,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;IAuCvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;CAIvB"}
@@ -3,9 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TestRunnerLoader = void 0;
4
4
  const core_1 = require("@serenity-js/core");
5
5
  const io_1 = require("@serenity-js/core/lib/io");
6
- /**
7
- * @package
8
- */
9
6
  class TestRunnerLoader {
10
7
  constructor(loader, cwd, cid) {
11
8
  this.loader = loader;
@@ -30,7 +27,7 @@ class TestRunnerLoader {
30
27
  }
31
28
  cucumberAdapter(cucumberOptions) {
32
29
  var _a;
33
- const { CucumberCLIAdapter, CucumberFormat, StandardOutput, TempFileOutput } = this.loader.require('@serenity-js/cucumber/lib/cli');
30
+ const { CucumberCLIAdapter, CucumberFormat, StandardOutput, TempFileOutput } = this.loader.require('@serenity-js/cucumber/lib/adapter');
34
31
  cucumberOptions === null || cucumberOptions === void 0 ? true : delete cucumberOptions.timeout; // todo: support setting a timeout via config?
35
32
  cucumberOptions === null || cucumberOptions === void 0 ? true : delete cucumberOptions.parallel; // WebdriverIO handles that already
36
33
  const cleanedCucumberOptions = new io_1.Config(cucumberOptions)
@@ -1 +1 @@
1
- {"version":3,"file":"TestRunnerLoader.js","sourceRoot":"","sources":["../../src/adapter/TestRunnerLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TestRunnerLoader.js","sourceRoot":"","sources":["../../src/adapter/TestRunnerLoader.ts"],"names":[],"mappings":";;;AAAA,4CAAuD;AAEvD,iDAA8F;AAK9F,MAAa,gBAAgB;IAIzB,YACqB,MAAoB,EACpB,GAAS,EACT,GAAW;QAFX,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAM;QACT,QAAG,GAAH,GAAG,CAAQ;QAE5B,IAAI,CAAC,UAAU,GAAG,IAAI,eAAU,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAO,IAAI,eAAU,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB,CAAC,MAAyB;;QACtC,QAAQ,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAE,MAAM,EAAE;YAC9B,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,CAAC;YAEtD,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAC,CAAC;YAEpD,KAAK,OAAO,CAAC;YACb,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,CAAC;YAEhD;gBACI,MAAM,IAAI,yBAAkB,CAAC,IAAK,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAE,MAAO,gFAAgF,CAAC,CAAC;SACpJ;IACL,CAAC;IAEO,eAAe,CAAC,eAA0C;;QAC9D,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAEjI,eAAe,aAAf,eAAe,4BAAf,eAAe,CAAE,OAAO,CAAC,CAAG,8CAA8C;QAC1E,eAAe,aAAf,eAAe,4BAAf,eAAe,CAAE,QAAQ,CAAC,CAAE,mCAAmC;QAEtE,MAAM,sBAAsB,GAAG,IAAI,WAAM,CAAC,eAAe,CAAC;aACrD,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CACzB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACxD;aACA,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CACtB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;YAEzC,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE;gBACtB,OAAO,MAAM,CAAC,KAAK,CAAC;aACvB;YAED,MAAM,QAAQ,GAAG,SAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBAC/B,OAAO,GAAI,MAAM,CAAC,SAAU,IAAK,MAAM,CAAC,MAAO,IAAK,IAAI,CAAC,GAAI,EAAE,CAAC;aACnE;YAED,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAI,IAAI,CAAC,GAAI,EAAE,CAAC,CAAC;YAE7C,OAAO,GAAI,MAAM,CAAC,SAAU,IAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,EAAE,CAAC;QACjG,CAAC,CAAC,CACL,CAAC,MAAM,EAAE,CAAC;QAEf,8DAA8D;QAC9D,MAAM,MAAM,GAAG,CAAA,MAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,MAAM,0CAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;YACnG,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;YACrC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;QAE3B,OAAO,IAAI,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChG,CAAC;IAEO,cAAc,CAAC,cAAuC;QAC1D,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAA;QAClF,OAAO,IAAI,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAEO,YAAY,CAAC,YAAmC;QACpD,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAA;QAC9E,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;CACJ;AA9ED,4CA8EC"}