@serenity-js/webdriverio 2.32.5 → 3.0.0-rc.3
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.
- package/CHANGELOG.md +81 -0
- package/lib/adapter/WebdriverIOFrameworkAdapter.js +1 -1
- package/lib/adapter/WebdriverIOFrameworkAdapter.js.map +1 -1
- package/lib/adapter/WebdriverIONotifier.d.ts +35 -1
- package/lib/adapter/WebdriverIONotifier.js +174 -13
- package/lib/adapter/WebdriverIONotifier.js.map +1 -1
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -3
- package/lib/index.js.map +1 -1
- package/lib/screenplay/abilities/{BrowseTheWeb.d.ts → BrowseTheWebWithWebdriverIO.d.ts} +53 -23
- package/lib/screenplay/abilities/{BrowseTheWeb.js → BrowseTheWebWithWebdriverIO.js} +122 -25
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -0
- package/lib/screenplay/abilities/index.d.ts +1 -1
- package/lib/screenplay/abilities/index.js +1 -1
- package/lib/screenplay/abilities/index.js.map +1 -1
- package/lib/screenplay/index.d.ts +1 -2
- package/lib/screenplay/index.js +1 -2
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOCookie.d.ts +8 -0
- package/lib/screenplay/models/WebdriverIOCookie.js +39 -0
- package/lib/screenplay/models/WebdriverIOCookie.js.map +1 -0
- package/lib/screenplay/models/WebdriverIOModalDialog.d.ts +11 -0
- package/lib/screenplay/models/WebdriverIOModalDialog.js +40 -0
- package/lib/screenplay/models/WebdriverIOModalDialog.js.map +1 -0
- package/lib/screenplay/models/WebdriverIONativeElementLocator.d.ts +27 -0
- package/lib/screenplay/models/WebdriverIONativeElementLocator.js +56 -0
- package/lib/screenplay/models/WebdriverIONativeElementLocator.js.map +1 -0
- package/lib/screenplay/models/WebdriverIONativeElementRoot.d.ts +2 -0
- package/lib/screenplay/{interactions/EnterBuilder.js → models/WebdriverIONativeElementRoot.js} +1 -1
- package/lib/screenplay/models/WebdriverIONativeElementRoot.js.map +1 -0
- package/lib/screenplay/models/WebdriverIOPage.d.ts +24 -0
- package/lib/screenplay/models/WebdriverIOPage.js +98 -0
- package/lib/screenplay/models/WebdriverIOPage.js.map +1 -0
- package/lib/screenplay/models/WebdriverIOPageElement.d.ts +31 -0
- package/lib/screenplay/models/WebdriverIOPageElement.js +114 -0
- package/lib/screenplay/models/WebdriverIOPageElement.js.map +1 -0
- package/lib/screenplay/models/index.d.ts +6 -0
- package/lib/{input → screenplay/models}/index.js +6 -1
- package/lib/screenplay/models/index.js.map +1 -0
- package/package.json +15 -25
- package/src/adapter/WebdriverIOFrameworkAdapter.ts +2 -0
- package/src/adapter/WebdriverIONotifier.ts +225 -23
- package/src/index.ts +0 -3
- package/src/screenplay/abilities/{BrowseTheWeb.ts → BrowseTheWebWithWebdriverIO.ts} +152 -31
- package/src/screenplay/abilities/index.ts +1 -1
- package/src/screenplay/index.ts +1 -2
- package/src/screenplay/models/WebdriverIOCookie.ts +44 -0
- package/src/screenplay/models/WebdriverIOModalDialog.ts +45 -0
- package/src/screenplay/models/WebdriverIONativeElementLocator.ts +78 -0
- package/src/screenplay/models/WebdriverIONativeElementRoot.ts +3 -0
- package/src/screenplay/models/WebdriverIOPage.ts +120 -0
- package/src/screenplay/models/WebdriverIOPageElement.ts +145 -0
- package/src/screenplay/models/index.ts +6 -0
- package/lib/expectations/ElementExpectation.d.ts +0 -11
- package/lib/expectations/ElementExpectation.js +0 -27
- package/lib/expectations/ElementExpectation.js.map +0 -1
- package/lib/expectations/index.d.ts +0 -6
- package/lib/expectations/index.js +0 -19
- package/lib/expectations/index.js.map +0 -1
- package/lib/expectations/isActive.d.ts +0 -15
- package/lib/expectations/isActive.js +0 -21
- package/lib/expectations/isActive.js.map +0 -1
- package/lib/expectations/isClickable.d.ts +0 -20
- package/lib/expectations/isClickable.js +0 -26
- package/lib/expectations/isClickable.js.map +0 -1
- package/lib/expectations/isEnabled.d.ts +0 -14
- package/lib/expectations/isEnabled.js +0 -20
- package/lib/expectations/isEnabled.js.map +0 -1
- package/lib/expectations/isPresent.d.ts +0 -15
- package/lib/expectations/isPresent.js +0 -21
- package/lib/expectations/isPresent.js.map +0 -1
- package/lib/expectations/isSelected.d.ts +0 -14
- package/lib/expectations/isSelected.js +0 -20
- package/lib/expectations/isSelected.js.map +0 -1
- package/lib/expectations/isVisible.d.ts +0 -14
- package/lib/expectations/isVisible.js +0 -20
- package/lib/expectations/isVisible.js.map +0 -1
- package/lib/input/Key.d.ts +0 -73
- package/lib/input/Key.js +0 -84
- package/lib/input/Key.js.map +0 -1
- package/lib/input/index.d.ts +0 -1
- package/lib/input/index.js.map +0 -1
- package/lib/screenplay/abilities/BrowseTheWeb.js.map +0 -1
- package/lib/screenplay/interactions/Clear.d.ts +0 -79
- package/lib/screenplay/interactions/Clear.js +0 -97
- package/lib/screenplay/interactions/Clear.js.map +0 -1
- package/lib/screenplay/interactions/Click.d.ts +0 -73
- package/lib/screenplay/interactions/Click.js +0 -84
- package/lib/screenplay/interactions/Click.js.map +0 -1
- package/lib/screenplay/interactions/DoubleClick.d.ts +0 -90
- package/lib/screenplay/interactions/DoubleClick.js +0 -101
- package/lib/screenplay/interactions/DoubleClick.js.map +0 -1
- package/lib/screenplay/interactions/Enter.d.ts +0 -73
- package/lib/screenplay/interactions/Enter.js +0 -87
- package/lib/screenplay/interactions/Enter.js.map +0 -1
- package/lib/screenplay/interactions/EnterBuilder.d.ts +0 -25
- package/lib/screenplay/interactions/EnterBuilder.js.map +0 -1
- package/lib/screenplay/interactions/ExecuteScript.d.ts +0 -206
- package/lib/screenplay/interactions/ExecuteScript.js +0 -311
- package/lib/screenplay/interactions/ExecuteScript.js.map +0 -1
- package/lib/screenplay/interactions/Hover.d.ts +0 -78
- package/lib/screenplay/interactions/Hover.js +0 -89
- package/lib/screenplay/interactions/Hover.js.map +0 -1
- package/lib/screenplay/interactions/Navigate.d.ts +0 -141
- package/lib/screenplay/interactions/Navigate.js +0 -197
- package/lib/screenplay/interactions/Navigate.js.map +0 -1
- package/lib/screenplay/interactions/Press.d.ts +0 -84
- package/lib/screenplay/interactions/Press.js +0 -152
- package/lib/screenplay/interactions/Press.js.map +0 -1
- package/lib/screenplay/interactions/PressBuilder.d.ts +0 -26
- package/lib/screenplay/interactions/PressBuilder.js +0 -3
- package/lib/screenplay/interactions/PressBuilder.js.map +0 -1
- package/lib/screenplay/interactions/RightClick.d.ts +0 -89
- package/lib/screenplay/interactions/RightClick.js +0 -100
- package/lib/screenplay/interactions/RightClick.js.map +0 -1
- package/lib/screenplay/interactions/Scroll.d.ts +0 -75
- package/lib/screenplay/interactions/Scroll.js +0 -86
- package/lib/screenplay/interactions/Scroll.js.map +0 -1
- package/lib/screenplay/interactions/Wait.d.ts +0 -143
- package/lib/screenplay/interactions/Wait.js +0 -247
- package/lib/screenplay/interactions/Wait.js.map +0 -1
- package/lib/screenplay/interactions/WaitBuilder.d.ts +0 -32
- package/lib/screenplay/interactions/WaitBuilder.js +0 -3
- package/lib/screenplay/interactions/WaitBuilder.js.map +0 -1
- package/lib/screenplay/interactions/WebElementInteraction.d.ts +0 -37
- package/lib/screenplay/interactions/WebElementInteraction.js +0 -52
- package/lib/screenplay/interactions/WebElementInteraction.js.map +0 -1
- package/lib/screenplay/interactions/index.d.ts +0 -13
- package/lib/screenplay/interactions/index.js +0 -26
- package/lib/screenplay/interactions/index.js.map +0 -1
- package/lib/screenplay/questions/Attribute.d.ts +0 -82
- package/lib/screenplay/questions/Attribute.js +0 -102
- package/lib/screenplay/questions/Attribute.js.map +0 -1
- package/lib/screenplay/questions/CSSClasses.d.ts +0 -92
- package/lib/screenplay/questions/CSSClasses.js +0 -112
- package/lib/screenplay/questions/CSSClasses.js.map +0 -1
- package/lib/screenplay/questions/LastScriptExecution.d.ts +0 -14
- package/lib/screenplay/questions/LastScriptExecution.js +0 -22
- package/lib/screenplay/questions/LastScriptExecution.js.map +0 -1
- package/lib/screenplay/questions/NestedTargetBuilder.d.ts +0 -27
- package/lib/screenplay/questions/NestedTargetBuilder.js +0 -3
- package/lib/screenplay/questions/NestedTargetBuilder.js.map +0 -1
- package/lib/screenplay/questions/TargetBuilder.d.ts +0 -25
- package/lib/screenplay/questions/TargetBuilder.js +0 -3
- package/lib/screenplay/questions/TargetBuilder.js.map +0 -1
- package/lib/screenplay/questions/Text.d.ts +0 -95
- package/lib/screenplay/questions/Text.js +0 -130
- package/lib/screenplay/questions/Text.js.map +0 -1
- package/lib/screenplay/questions/Value.d.ts +0 -63
- package/lib/screenplay/questions/Value.js +0 -78
- package/lib/screenplay/questions/Value.js.map +0 -1
- package/lib/screenplay/questions/Website.d.ts +0 -21
- package/lib/screenplay/questions/Website.js +0 -31
- package/lib/screenplay/questions/Website.js.map +0 -1
- package/lib/screenplay/questions/index.d.ts +0 -10
- package/lib/screenplay/questions/index.js +0 -23
- package/lib/screenplay/questions/index.js.map +0 -1
- package/lib/screenplay/questions/lists.d.ts +0 -86
- package/lib/screenplay/questions/lists.js +0 -137
- package/lib/screenplay/questions/lists.js.map +0 -1
- package/lib/screenplay/questions/locators.d.ts +0 -196
- package/lib/screenplay/questions/locators.js +0 -219
- package/lib/screenplay/questions/locators.js.map +0 -1
- package/lib/screenplay/questions/targets.d.ts +0 -254
- package/lib/screenplay/questions/targets.js +0 -334
- package/lib/screenplay/questions/targets.js.map +0 -1
- package/lib/stage/crew/index.d.ts +0 -1
- package/lib/stage/crew/index.js +0 -14
- package/lib/stage/crew/index.js.map +0 -1
- package/lib/stage/crew/photographer/Photographer.d.ts +0 -83
- package/lib/stage/crew/photographer/Photographer.js +0 -102
- package/lib/stage/crew/photographer/Photographer.js.map +0 -1
- package/lib/stage/crew/photographer/index.d.ts +0 -2
- package/lib/stage/crew/photographer/index.js +0 -15
- package/lib/stage/crew/photographer/index.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +0 -28
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +0 -65
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +0 -18
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +0 -30
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +0 -17
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +0 -28
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +0 -19
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +0 -28
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/index.d.ts +0 -4
- package/lib/stage/crew/photographer/strategies/index.js +0 -17
- package/lib/stage/crew/photographer/strategies/index.js.map +0 -1
- package/lib/stage/index.d.ts +0 -1
- package/lib/stage/index.js +0 -14
- package/lib/stage/index.js.map +0 -1
- package/src/expectations/ElementExpectation.ts +0 -31
- package/src/expectations/index.ts +0 -6
- package/src/expectations/isActive.ts +0 -21
- package/src/expectations/isClickable.ts +0 -26
- package/src/expectations/isEnabled.ts +0 -19
- package/src/expectations/isPresent.ts +0 -20
- package/src/expectations/isSelected.ts +0 -19
- package/src/expectations/isVisible.ts +0 -19
- package/src/input/Key.ts +0 -83
- package/src/input/index.ts +0 -1
- package/src/screenplay/interactions/Clear.ts +0 -102
- package/src/screenplay/interactions/Click.ts +0 -85
- package/src/screenplay/interactions/DoubleClick.ts +0 -102
- package/src/screenplay/interactions/Enter.ts +0 -93
- package/src/screenplay/interactions/EnterBuilder.ts +0 -27
- package/src/screenplay/interactions/ExecuteScript.ts +0 -344
- package/src/screenplay/interactions/Hover.ts +0 -90
- package/src/screenplay/interactions/Navigate.ts +0 -208
- package/src/screenplay/interactions/Press.ts +0 -172
- package/src/screenplay/interactions/PressBuilder.ts +0 -28
- package/src/screenplay/interactions/RightClick.ts +0 -100
- package/src/screenplay/interactions/Scroll.ts +0 -87
- package/src/screenplay/interactions/Wait.ts +0 -267
- package/src/screenplay/interactions/WaitBuilder.ts +0 -34
- package/src/screenplay/interactions/WebElementInteraction.ts +0 -56
- package/src/screenplay/interactions/index.ts +0 -13
- package/src/screenplay/questions/Attribute.ts +0 -112
- package/src/screenplay/questions/CSSClasses.ts +0 -116
- package/src/screenplay/questions/LastScriptExecution.ts +0 -21
- package/src/screenplay/questions/NestedTargetBuilder.ts +0 -30
- package/src/screenplay/questions/TargetBuilder.ts +0 -27
- package/src/screenplay/questions/Text.ts +0 -140
- package/src/screenplay/questions/Value.ts +0 -82
- package/src/screenplay/questions/Website.ts +0 -34
- package/src/screenplay/questions/index.ts +0 -10
- package/src/screenplay/questions/lists.ts +0 -161
- package/src/screenplay/questions/locators.ts +0 -254
- package/src/screenplay/questions/targets.ts +0 -401
- package/src/stage/crew/index.ts +0 -1
- package/src/stage/crew/photographer/Photographer.ts +0 -108
- package/src/stage/crew/photographer/index.ts +0 -2
- package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +0 -103
- package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +0 -28
- package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +0 -26
- package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +0 -26
- package/src/stage/crew/photographer/strategies/index.ts +0 -4
- package/src/stage/index.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,87 @@
|
|
|
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)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
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))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
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)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
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)
|
|
26
|
+
|
|
27
|
+
**Note:** Version bump only for package @serenity-js/webdriverio
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
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)
|
|
34
|
+
|
|
35
|
+
**Note:** Version bump only for package @serenity-js/webdriverio
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
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)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
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))
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
### Features
|
|
62
|
+
|
|
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
|
+
|
|
77
|
+
|
|
78
|
+
### BREAKING CHANGES
|
|
79
|
+
|
|
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
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
6
87
|
## [2.32.5](https://github.com/serenity-js/serenity-js/compare/v2.32.4...v2.32.5) (2021-12-08)
|
|
7
88
|
|
|
8
89
|
**Note:** Version bump only for package @serenity-js/webdriverio
|
|
@@ -30,7 +30,7 @@ class WebdriverIOFrameworkAdapter {
|
|
|
30
30
|
reporter._reporters.push(reporter.initReporter([
|
|
31
31
|
reporter_1.BrowserCapabilitiesReporter, { serenity: this.serenity },
|
|
32
32
|
]));
|
|
33
|
-
this.notifier = new WebdriverIONotifier_1.WebdriverIONotifier(reporter, this.adapter.successThreshold(), cid, this.specs);
|
|
33
|
+
this.notifier = new WebdriverIONotifier_1.WebdriverIONotifier(config, capabilities, reporter, this.adapter.successThreshold(), cid, this.specs);
|
|
34
34
|
const outputStreamBuffer = new reporter_1.OutputStreamBuffer(`[${this.cid}]`);
|
|
35
35
|
const outputStreamBufferPrinter = new OutputStreamBufferPrinter_1.OutputStreamBufferPrinter(outputStreamBuffer, reporter.getWriteStreamObject('@serenity-js/webdriverio'));
|
|
36
36
|
this.serenity.configure({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOFrameworkAdapter.js","sourceRoot":"","sources":["../../src/adapter/WebdriverIOFrameworkAdapter.ts"],"names":[],"mappings":";;;AAAA,4CAA+D;AAI/D,qDAAgD;AAEhD,yCAAwH;AACxH,oFAAiF;AACjF,yDAAsD;AAEtD,+DAA4D;AAC5D,uCAAwC;AAExC;;GAEG;AACH,MAAa,2BAA2B;IAKpC,YACqB,QAAkB,EAClB,MAAoB,EACpB,GAAS,EACT,GAAW,EAC5B,iBAAoC,EACnB,KAAe,EACf,YAA2C,EAC5D,QAAmE;QAPlD,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;QAG5D,MAAM,MAAM,GAAG,SAAS,CAAoB,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE;YACjF,iBAAiB,EAAE,+BAAa;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,mCAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;aAC/D,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE9B,yGAAyG;QACzG,0IAA0I;QAC1I,uIAAuI;QACtI,QAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACpD,sCAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC3D,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,QAAQ,GAAG,IAAI,yCAAmB,CACnC,QAAQ,EACR,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAC/B,GAAG,EACH,IAAI,CAAC,KAAK,CACb,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,6BAAkB,CAC7C,IAAI,IAAI,CAAC,GAAG,GAAG,CAClB,CAAC;QAEF,MAAM,yBAAyB,GAAG,IAAI,qDAAyB,CAC3D,kBAAkB,EAClB,QAAQ,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAC5D,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACpB,YAAY,EAAI,kBAAkB;YAClC,UAAU,EAAM,MAAM,CAAC,QAAQ,CAAC,UAAU;YAC1C,MAAM,EAAU,MAAM,CAAC,QAAQ,CAAC,MAAM;YACtC,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,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAC/B,CAAC;IACN,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;
|
|
1
|
+
{"version":3,"file":"WebdriverIOFrameworkAdapter.js","sourceRoot":"","sources":["../../src/adapter/WebdriverIOFrameworkAdapter.ts"],"names":[],"mappings":";;;AAAA,4CAA+D;AAI/D,qDAAgD;AAEhD,yCAAwH;AACxH,oFAAiF;AACjF,yDAAsD;AAEtD,+DAA4D;AAC5D,uCAAwC;AAExC;;GAEG;AACH,MAAa,2BAA2B;IAKpC,YACqB,QAAkB,EAClB,MAAoB,EACpB,GAAS,EACT,GAAW,EAC5B,iBAAoC,EACnB,KAAe,EACf,YAA2C,EAC5D,QAAmE;QAPlD,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;QAG5D,MAAM,MAAM,GAAG,SAAS,CAAoB,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE;YACjF,iBAAiB,EAAE,+BAAa;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,mCAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;aAC/D,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE9B,yGAAyG;QACzG,0IAA0I;QAC1I,uIAAuI;QACtI,QAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACpD,sCAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC3D,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,QAAQ,GAAG,IAAI,yCAAmB,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,IAAI,IAAI,CAAC,GAAG,GAAG,CAClB,CAAC;QAEF,MAAM,yBAAyB,GAAG,IAAI,qDAAyB,CAC3D,kBAAkB,EAClB,QAAQ,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAC5D,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACpB,YAAY,EAAI,kBAAkB;YAClC,UAAU,EAAM,MAAM,CAAC,QAAQ,CAAC,UAAU;YAC1C,MAAM,EAAU,MAAM,CAAC,QAAQ,CAAC,MAAM;YACtC,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,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG;QACC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAC/B,CAAC;IACN,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;AArFD,kEAqFC"}
|
|
@@ -2,24 +2,37 @@
|
|
|
2
2
|
import { Stage, StageCrewMember } from '@serenity-js/core';
|
|
3
3
|
import { DomainEvent } from '@serenity-js/core/lib/events';
|
|
4
4
|
import { Outcome } from '@serenity-js/core/lib/model';
|
|
5
|
+
import { RemoteCapability } from '@wdio/types/build/Capabilities';
|
|
5
6
|
import type { EventEmitter } from 'events';
|
|
7
|
+
import { WebdriverIOConfig } from './WebdriverIOConfig';
|
|
6
8
|
/**
|
|
7
9
|
* @package
|
|
8
10
|
*/
|
|
9
11
|
export declare class WebdriverIONotifier implements StageCrewMember {
|
|
12
|
+
private readonly config;
|
|
13
|
+
private readonly capabilities;
|
|
10
14
|
private readonly reporter;
|
|
11
15
|
private readonly successThreshold;
|
|
12
16
|
private readonly cid;
|
|
13
17
|
private readonly specs;
|
|
14
18
|
private failures;
|
|
15
19
|
private stage?;
|
|
20
|
+
/**
|
|
21
|
+
* We don't have access to the "context" object produced by Mocha,
|
|
22
|
+
* and can't assume that other test runners have a similar concept.
|
|
23
|
+
* Since, at the time of writing, none of the WebdriverIO rely on this parameter
|
|
24
|
+
* using a dummy seems to be sufficient.
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private static dummmyContext;
|
|
16
28
|
private readonly events;
|
|
17
29
|
private readonly suites;
|
|
18
|
-
constructor(reporter: EventEmitter, successThreshold: Outcome | {
|
|
30
|
+
constructor(config: WebdriverIOConfig, capabilities: RemoteCapability, reporter: EventEmitter, successThreshold: Outcome | {
|
|
19
31
|
Code: number;
|
|
20
32
|
}, cid: string, specs: string[], failures?: number, stage?: Stage);
|
|
21
33
|
assignedTo(stage: Stage): StageCrewMember;
|
|
22
34
|
notifyOf(event: DomainEvent): void;
|
|
35
|
+
private onTestRunFinishes;
|
|
23
36
|
failureCount(): number;
|
|
24
37
|
private onTestSuiteStarts;
|
|
25
38
|
private onTestSuiteFinished;
|
|
@@ -29,9 +42,30 @@ export declare class WebdriverIONotifier implements StageCrewMember {
|
|
|
29
42
|
private onSceneStarts;
|
|
30
43
|
private onSceneFinished;
|
|
31
44
|
private willBeRetried;
|
|
45
|
+
private testShortTitleFrom;
|
|
46
|
+
private testFrom;
|
|
32
47
|
private testStartEventFrom;
|
|
33
48
|
private parentSuiteName;
|
|
49
|
+
/**
|
|
50
|
+
* test status is 'passed' | 'pending' | 'skipped' | 'failed' | 'broken' | 'canceled'
|
|
51
|
+
* Since this is not documented, we're mimicking other WebdriverIO reporters, for example:
|
|
52
|
+
* https://github.com/webdriverio/webdriverio/blob/7415f3126e15a733b51721492e4995ceafae6046/packages/wdio-allure-reporter/src/constants.ts#L3-L9
|
|
53
|
+
*
|
|
54
|
+
* @param started
|
|
55
|
+
* @param finished
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
private testResultFrom;
|
|
34
59
|
private testEndEventFrom;
|
|
60
|
+
private whenSuccessful;
|
|
35
61
|
private testResultEventFrom;
|
|
36
62
|
private errorFrom;
|
|
63
|
+
/**
|
|
64
|
+
* @see https://github.com/webdriverio/webdriverio/blob/main/packages/wdio-utils/src/shim.ts
|
|
65
|
+
* @param hookName
|
|
66
|
+
* @param hookFunctions
|
|
67
|
+
* @param args
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
private invokeHooks;
|
|
37
71
|
}
|
|
@@ -9,7 +9,9 @@ const tiny_types_1 = require("tiny-types");
|
|
|
9
9
|
* @package
|
|
10
10
|
*/
|
|
11
11
|
class WebdriverIONotifier {
|
|
12
|
-
constructor(reporter, successThreshold, cid, specs, failures = 0, stage) {
|
|
12
|
+
constructor(config, capabilities, reporter, successThreshold, cid, specs, failures = 0, stage) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.capabilities = capabilities;
|
|
13
15
|
this.reporter = reporter;
|
|
14
16
|
this.successThreshold = successThreshold;
|
|
15
17
|
this.cid = cid;
|
|
@@ -29,20 +31,28 @@ class WebdriverIONotifier {
|
|
|
29
31
|
.when(events_1.TestSuiteFinished, WebdriverIONotifier.prototype.onTestSuiteFinished.bind(this))
|
|
30
32
|
.when(events_1.SceneStarts, WebdriverIONotifier.prototype.onSceneStarts.bind(this))
|
|
31
33
|
.when(events_1.SceneFinished, WebdriverIONotifier.prototype.onSceneFinished.bind(this))
|
|
34
|
+
.when(events_1.TestRunFinishes, WebdriverIONotifier.prototype.onTestRunFinishes.bind(this))
|
|
32
35
|
.else(() => void 0);
|
|
33
36
|
}
|
|
37
|
+
onTestRunFinishes() {
|
|
38
|
+
return this.invokeHooks('after', this.config.after, [this.failures, this.capabilities, this.specs]);
|
|
39
|
+
}
|
|
34
40
|
failureCount() {
|
|
35
41
|
return this.failures;
|
|
36
42
|
}
|
|
37
43
|
onTestSuiteStarts(started) {
|
|
38
44
|
this.events.record(started.details.correlationId, started);
|
|
39
|
-
|
|
45
|
+
const suite = this.suiteStartEventFrom(started);
|
|
46
|
+
this.reporter.emit('suite:start', suite);
|
|
40
47
|
this.suites.push(started.details);
|
|
48
|
+
return this.invokeHooks('beforeSuite', this.config.beforeSuite, [suite]); // todo: correct types
|
|
41
49
|
}
|
|
42
50
|
onTestSuiteFinished(finished) {
|
|
43
51
|
this.suites.pop();
|
|
44
52
|
const started = this.events.getByCorrelationId(finished.details.correlationId);
|
|
45
|
-
|
|
53
|
+
const suite = this.suiteEndEventFrom(started, finished);
|
|
54
|
+
this.reporter.emit('suite:end', suite);
|
|
55
|
+
return this.invokeHooks('afterSuite', this.config.afterSuite, [suite]); // todo: correct types
|
|
46
56
|
}
|
|
47
57
|
suiteStartEventFrom(started) {
|
|
48
58
|
return {
|
|
@@ -71,35 +81,54 @@ class WebdriverIONotifier {
|
|
|
71
81
|
const test = this.testStartEventFrom(started);
|
|
72
82
|
this.events.record(started.sceneId, started);
|
|
73
83
|
this.reporter.emit(test.type, test);
|
|
84
|
+
return this.invokeHooks('beforeTest', this.config.beforeTest, [this.testFrom(started), WebdriverIONotifier.dummmyContext]);
|
|
74
85
|
}
|
|
75
86
|
onSceneFinished(finished) {
|
|
76
87
|
if (finished.outcome.isWorseThan(this.successThreshold)) {
|
|
77
88
|
this.failures++;
|
|
78
89
|
}
|
|
79
90
|
const started = this.events.getByCorrelationId(finished.sceneId);
|
|
91
|
+
let testEnd;
|
|
80
92
|
if (this.willBeRetried(finished.outcome)) {
|
|
81
|
-
|
|
93
|
+
testEnd = this.testEndEventFrom(started, finished);
|
|
82
94
|
const type = 'test:retry';
|
|
83
95
|
this.reporter.emit(type, {
|
|
84
|
-
...
|
|
96
|
+
...testEnd,
|
|
85
97
|
type,
|
|
86
98
|
error: this.errorFrom(finished.outcome),
|
|
87
99
|
});
|
|
88
100
|
}
|
|
89
101
|
else {
|
|
90
|
-
const
|
|
91
|
-
this.reporter.emit(
|
|
92
|
-
|
|
102
|
+
const testResultEvent = this.testResultEventFrom(started, finished);
|
|
103
|
+
this.reporter.emit(testResultEvent.type, testResultEvent);
|
|
104
|
+
testEnd = this.testEndEventFrom(started, finished);
|
|
93
105
|
this.reporter.emit(testEnd.type, testEnd);
|
|
94
106
|
}
|
|
107
|
+
return this.invokeHooks('afterTest', this.config.afterTest, [this.testFrom(started), WebdriverIONotifier.dummmyContext, this.testResultFrom(started, finished)]);
|
|
95
108
|
}
|
|
96
109
|
willBeRetried(outcome) {
|
|
97
110
|
return outcome instanceof model_1.ExecutionIgnored;
|
|
98
111
|
}
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
testShortTitleFrom(started) {
|
|
113
|
+
return started.details.name.value
|
|
101
114
|
.replace(new RegExp(`^.*?(${this.parentSuiteName()})`), '')
|
|
102
115
|
.trim();
|
|
116
|
+
}
|
|
117
|
+
testFrom(started) {
|
|
118
|
+
const title = this.testShortTitleFrom(started);
|
|
119
|
+
return {
|
|
120
|
+
ctx: WebdriverIONotifier.dummmyContext,
|
|
121
|
+
file: started.details.location.path.value,
|
|
122
|
+
fullName: this.suiteNamesConcatenatedWith(title),
|
|
123
|
+
fullTitle: this.suiteNamesConcatenatedWith(title),
|
|
124
|
+
parent: this.parentSuiteName(),
|
|
125
|
+
pending: false,
|
|
126
|
+
title,
|
|
127
|
+
type: 'test' // I _think_ it's either 'test' or 'hook' - https://github.com/mochajs/mocha/blob/0ea732c1169c678ef116c3eb452cc94758fff150/lib/test.js#L31
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
testStartEventFrom(started) {
|
|
131
|
+
const title = this.testShortTitleFrom(started);
|
|
103
132
|
return {
|
|
104
133
|
type: 'test:start',
|
|
105
134
|
title,
|
|
@@ -116,6 +145,90 @@ class WebdriverIONotifier {
|
|
|
116
145
|
var _a;
|
|
117
146
|
return ((_a = this.suites[this.suites.length - 1]) === null || _a === void 0 ? void 0 : _a.name.value) || '';
|
|
118
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* test status is 'passed' | 'pending' | 'skipped' | 'failed' | 'broken' | 'canceled'
|
|
150
|
+
* Since this is not documented, we're mimicking other WebdriverIO reporters, for example:
|
|
151
|
+
* https://github.com/webdriverio/webdriverio/blob/7415f3126e15a733b51721492e4995ceafae6046/packages/wdio-allure-reporter/src/constants.ts#L3-L9
|
|
152
|
+
*
|
|
153
|
+
* @param started
|
|
154
|
+
* @param finished
|
|
155
|
+
* @private
|
|
156
|
+
*/
|
|
157
|
+
testResultFrom(started, finished) {
|
|
158
|
+
const duration = finished.timestamp.diff(started.timestamp).inMilliseconds();
|
|
159
|
+
const defaultRetries = { attempts: 0, limit: 0 };
|
|
160
|
+
const passedOrFailed = (outcome) => this.whenSuccessful(outcome, true, false);
|
|
161
|
+
return (0, tiny_types_1.match)(finished.outcome)
|
|
162
|
+
.when(model_1.ExecutionCompromised, (outcome) => {
|
|
163
|
+
const error = this.errorFrom(outcome);
|
|
164
|
+
return {
|
|
165
|
+
duration,
|
|
166
|
+
error,
|
|
167
|
+
exception: error.message,
|
|
168
|
+
passed: passedOrFailed(outcome),
|
|
169
|
+
status: 'broken',
|
|
170
|
+
retries: defaultRetries
|
|
171
|
+
};
|
|
172
|
+
})
|
|
173
|
+
.when(model_1.ExecutionFailedWithError, (outcome) => {
|
|
174
|
+
const error = this.errorFrom(outcome);
|
|
175
|
+
return {
|
|
176
|
+
duration,
|
|
177
|
+
error,
|
|
178
|
+
exception: error.message,
|
|
179
|
+
passed: passedOrFailed(outcome),
|
|
180
|
+
status: 'broken',
|
|
181
|
+
retries: defaultRetries
|
|
182
|
+
};
|
|
183
|
+
})
|
|
184
|
+
.when(model_1.ExecutionFailedWithAssertionError, (outcome) => {
|
|
185
|
+
const error = this.errorFrom(outcome);
|
|
186
|
+
return {
|
|
187
|
+
duration,
|
|
188
|
+
error,
|
|
189
|
+
exception: error.message,
|
|
190
|
+
passed: passedOrFailed(outcome),
|
|
191
|
+
status: 'failed',
|
|
192
|
+
retries: defaultRetries
|
|
193
|
+
};
|
|
194
|
+
})
|
|
195
|
+
.when(model_1.ImplementationPending, (outcome) => {
|
|
196
|
+
const error = this.errorFrom(outcome);
|
|
197
|
+
return {
|
|
198
|
+
duration,
|
|
199
|
+
error,
|
|
200
|
+
exception: error.message,
|
|
201
|
+
passed: passedOrFailed(outcome),
|
|
202
|
+
status: 'pending',
|
|
203
|
+
retries: defaultRetries
|
|
204
|
+
};
|
|
205
|
+
})
|
|
206
|
+
.when(model_1.ExecutionIgnored, (outcome) => {
|
|
207
|
+
const error = this.errorFrom(outcome);
|
|
208
|
+
return {
|
|
209
|
+
duration,
|
|
210
|
+
error,
|
|
211
|
+
exception: error.message,
|
|
212
|
+
passed: passedOrFailed(outcome),
|
|
213
|
+
status: 'canceled',
|
|
214
|
+
retries: defaultRetries // consider capturing info about retries from Mocha and putting it on the ExecutionIgnored event so we can pass it on
|
|
215
|
+
};
|
|
216
|
+
})
|
|
217
|
+
.when(model_1.ExecutionSkipped, (outcome) => ({
|
|
218
|
+
duration,
|
|
219
|
+
exception: '',
|
|
220
|
+
passed: passedOrFailed(outcome),
|
|
221
|
+
status: 'skipped',
|
|
222
|
+
retries: defaultRetries
|
|
223
|
+
}))
|
|
224
|
+
.else(() => ({
|
|
225
|
+
duration,
|
|
226
|
+
exception: '',
|
|
227
|
+
passed: true,
|
|
228
|
+
status: 'passed',
|
|
229
|
+
retries: defaultRetries
|
|
230
|
+
}));
|
|
231
|
+
}
|
|
119
232
|
testEndEventFrom(started, finished) {
|
|
120
233
|
const duration = finished.timestamp.diff(started.timestamp).inMilliseconds();
|
|
121
234
|
return {
|
|
@@ -124,11 +237,14 @@ class WebdriverIONotifier {
|
|
|
124
237
|
duration
|
|
125
238
|
};
|
|
126
239
|
}
|
|
240
|
+
whenSuccessful(outcome, resultWhenSuccessful, resultWhenNotSuccessful) {
|
|
241
|
+
return !outcome.isWorseThan(this.successThreshold) && (outcome instanceof model_1.ProblemIndication)
|
|
242
|
+
? resultWhenSuccessful
|
|
243
|
+
: resultWhenNotSuccessful;
|
|
244
|
+
}
|
|
127
245
|
testResultEventFrom(started, finished) {
|
|
128
246
|
const test = this.testEndEventFrom(started, finished);
|
|
129
|
-
const unlessSuccessful = (outcome, type) =>
|
|
130
|
-
? 'test:pass'
|
|
131
|
-
: type;
|
|
247
|
+
const unlessSuccessful = (outcome, type) => this.whenSuccessful(outcome, 'test:pass', type);
|
|
132
248
|
return (0, tiny_types_1.match)(finished.outcome)
|
|
133
249
|
.when(model_1.ExecutionCompromised, (outcome) => ({
|
|
134
250
|
...test,
|
|
@@ -185,8 +301,53 @@ class WebdriverIONotifier {
|
|
|
185
301
|
actual: error.actual
|
|
186
302
|
};
|
|
187
303
|
}
|
|
304
|
+
/**
|
|
305
|
+
* @see https://github.com/webdriverio/webdriverio/blob/main/packages/wdio-utils/src/shim.ts
|
|
306
|
+
* @param hookName
|
|
307
|
+
* @param hookFunctions
|
|
308
|
+
* @param args
|
|
309
|
+
* @private
|
|
310
|
+
*/
|
|
311
|
+
invokeHooks(hookName, hookFunctions, args) {
|
|
312
|
+
const hooks = !Array.isArray(hookFunctions)
|
|
313
|
+
? [hookFunctions]
|
|
314
|
+
: hookFunctions;
|
|
315
|
+
const asyncOperationId = model_1.CorrelationId.create();
|
|
316
|
+
this.stage.announce(new events_1.AsyncOperationAttempted(new model_1.Description(`[WebdriverIONotifier#invokeHooks] Invoking ${hookName} hook`), asyncOperationId));
|
|
317
|
+
return Promise.all(hooks.map((hook) => new Promise((resolve) => {
|
|
318
|
+
let result;
|
|
319
|
+
try {
|
|
320
|
+
result = hook(...args);
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
return resolve(error);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* if a promise is returned make sure we don't have a catch handler
|
|
327
|
+
* so in case of a rejection it won't cause the hook to fail
|
|
328
|
+
*/
|
|
329
|
+
if (result && typeof result.then === 'function') {
|
|
330
|
+
return result.then(resolve, (error) => {
|
|
331
|
+
resolve(error);
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
resolve(result);
|
|
335
|
+
}))).
|
|
336
|
+
then(results => {
|
|
337
|
+
this.stage.announce(new events_1.AsyncOperationCompleted(new model_1.Description(`[WebdriverIONotifier#invokeHooks] Invoking ${hookName} hook completed`), asyncOperationId));
|
|
338
|
+
return results;
|
|
339
|
+
});
|
|
340
|
+
}
|
|
188
341
|
}
|
|
189
342
|
exports.WebdriverIONotifier = WebdriverIONotifier;
|
|
343
|
+
/**
|
|
344
|
+
* We don't have access to the "context" object produced by Mocha,
|
|
345
|
+
* and can't assume that other test runners have a similar concept.
|
|
346
|
+
* Since, at the time of writing, none of the WebdriverIO rely on this parameter
|
|
347
|
+
* using a dummy seems to be sufficient.
|
|
348
|
+
* @private
|
|
349
|
+
*/
|
|
350
|
+
WebdriverIONotifier.dummmyContext = {};
|
|
190
351
|
class EventLog {
|
|
191
352
|
constructor() {
|
|
192
353
|
this.events = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIONotifier.js","sourceRoot":"","sources":["../../src/adapter/WebdriverIONotifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebdriverIONotifier.js","sourceRoot":"","sources":["../../src/adapter/WebdriverIONotifier.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -2,7 +2,4 @@ import { WebdriverIOFrameworkAdapterFactory } from './adapter';
|
|
|
2
2
|
declare const adapterFactory: WebdriverIOFrameworkAdapterFactory;
|
|
3
3
|
export default adapterFactory;
|
|
4
4
|
export { WebdriverIOConfig } from './adapter';
|
|
5
|
-
export * from './expectations';
|
|
6
|
-
export * from './input';
|
|
7
5
|
export * from './screenplay';
|
|
8
|
-
export * from './stage';
|
package/lib/index.js
CHANGED
|
@@ -15,8 +15,5 @@ const io_1 = require("@serenity-js/core/lib/io");
|
|
|
15
15
|
const adapter_1 = require("./adapter");
|
|
16
16
|
const adapterFactory = new adapter_1.WebdriverIOFrameworkAdapterFactory(core_1.serenity, new io_1.ModuleLoader(process.cwd()), io_1.Path.from(process.cwd()));
|
|
17
17
|
exports.default = adapterFactory;
|
|
18
|
-
__exportStar(require("./expectations"), exports);
|
|
19
|
-
__exportStar(require("./input"), exports);
|
|
20
18
|
__exportStar(require("./screenplay"), exports);
|
|
21
|
-
__exportStar(require("./stage"), exports);
|
|
22
19
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA6C;AAC7C,iDAA8D;AAE9D,uCAA+D;AAE/D,MAAM,cAAc,GAAG,IAAI,4CAAkC,CACzD,eAAQ,EACR,IAAI,iBAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAC/B,SAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAC3B,CAAC;AAEF,kBAAe,cAAc,CAAC;AAG9B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA6C;AAC7C,iDAA8D;AAE9D,uCAA+D;AAE/D,MAAM,cAAc,GAAG,IAAI,4CAAkC,CACzD,eAAQ,EACR,IAAI,iBAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAC/B,SAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAC3B,CAAC;AAEF,kBAAe,cAAc,CAAC;AAG9B,+CAA6B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { Duration, UsesAbilities } from '@serenity-js/core';
|
|
2
|
+
import { BrowserCapabilities, BrowseTheWeb, Cookie, CookieData, Key, ModalDialog, NativeElementLocator, Page, PageElement, Selector } from '@serenity-js/web';
|
|
3
|
+
import type * as wdio from 'webdriverio';
|
|
4
|
+
import { WebdriverIOPageElement } from '../models';
|
|
4
5
|
/**
|
|
5
6
|
* @desc
|
|
6
7
|
* An {@link @serenity-js/core/lib/screenplay~Ability} that enables the {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
@@ -10,8 +11,6 @@ import { Key } from '../../input';
|
|
|
10
11
|
* This means that its interface can change without affecting the major version of Serenity/JS itself.
|
|
11
12
|
* In particular, please don't rely on the `browser` field to remain `public` in future releases.
|
|
12
13
|
*
|
|
13
|
-
* @experimental
|
|
14
|
-
*
|
|
15
14
|
* @example <caption>Using the WebdriverIO browser</caption>
|
|
16
15
|
* import { Actor } from '@serenity-js/core';
|
|
17
16
|
* import { BrowseTheWeb, by, Navigate, Target } from '@serenity-js/webdriverio'
|
|
@@ -36,31 +35,38 @@ import { Key } from '../../input';
|
|
|
36
35
|
* @implements {@serenity-js/core/lib/screenplay~Ability}
|
|
37
36
|
* @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
38
37
|
*/
|
|
39
|
-
export declare class
|
|
40
|
-
readonly browser: Browser<'async'>;
|
|
41
|
-
/**
|
|
42
|
-
* @private
|
|
43
|
-
*/
|
|
44
|
-
private lastScriptExecutionSummary;
|
|
38
|
+
export declare class BrowseTheWebWithWebdriverIO extends BrowseTheWeb<wdio.Element<'async'>> {
|
|
39
|
+
readonly browser: wdio.Browser<'async'>;
|
|
45
40
|
/**
|
|
46
41
|
* @param {@wdio/types~Browser} browserInstance
|
|
47
|
-
* @returns {
|
|
42
|
+
* @returns {BrowseTheWebWithWebdriverIO}
|
|
48
43
|
*/
|
|
49
|
-
static using(browserInstance: Browser<'async'>):
|
|
44
|
+
static using(browserInstance: wdio.Browser<'async'>): BrowseTheWebWithWebdriverIO;
|
|
50
45
|
/**
|
|
51
46
|
* @desc
|
|
52
|
-
* Used to access the Actor's ability to {@link
|
|
47
|
+
* Used to access the Actor's ability to {@link BrowseTheWebWithWebdriverIO}
|
|
53
48
|
* from within the {@link @serenity-js/core/lib/screenplay~Interaction} classes,
|
|
54
|
-
* such as {@link Navigate}.
|
|
49
|
+
* such as {@link @serenity-js/web/lib/screenplay/interactions~Navigate}.
|
|
55
50
|
*
|
|
56
51
|
* @param {@serenity-js/core/lib/screenplay/actor~UsesAbilities} actor
|
|
57
|
-
* @return {
|
|
52
|
+
* @return {BrowseTheWebWithWebdriverIO}
|
|
58
53
|
*/
|
|
59
|
-
static as(actor: UsesAbilities):
|
|
54
|
+
static as(actor: UsesAbilities): BrowseTheWebWithWebdriverIO;
|
|
55
|
+
/**
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
private lastScriptExecutionSummary;
|
|
60
59
|
/**
|
|
61
60
|
* @param {@wdio/types~Browser} browser
|
|
62
61
|
*/
|
|
63
|
-
constructor(browser: Browser<'async'>);
|
|
62
|
+
constructor(browser: wdio.Browser<'async'>);
|
|
63
|
+
browserCapabilities(): Promise<BrowserCapabilities>;
|
|
64
|
+
cookie(name: string): Promise<Cookie>;
|
|
65
|
+
setCookie(cookieData: CookieData): Promise<void>;
|
|
66
|
+
deleteAllCookies(): Promise<void>;
|
|
67
|
+
locate<T>(selector: Selector<T>, locator?: NativeElementLocator<wdio.Element<'async'>>): WebdriverIOPageElement;
|
|
68
|
+
locateAll<T>(selector: Selector<T>, locator?: NativeElementLocator<wdio.Element<'async'>>): Promise<WebdriverIOPageElement[]>;
|
|
69
|
+
nativeElementLocator(): NativeElementLocator<wdio.Element<'async'>>;
|
|
64
70
|
/**
|
|
65
71
|
* @desc
|
|
66
72
|
* Navigate to a given destination, specified as an absolute URL
|
|
@@ -69,7 +75,29 @@ export declare class BrowseTheWeb implements Ability {
|
|
|
69
75
|
* @param {string} destination
|
|
70
76
|
* @returns {Promise<void>}
|
|
71
77
|
*/
|
|
72
|
-
|
|
78
|
+
navigateTo(destination: string): Promise<void>;
|
|
79
|
+
navigateBack(): Promise<void>;
|
|
80
|
+
navigateForward(): Promise<void>;
|
|
81
|
+
reloadPage(): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* @desc
|
|
84
|
+
* Returns a {@link Page} representing the currently active top-level browsing context.
|
|
85
|
+
*
|
|
86
|
+
* @returns {Promise<Page>}
|
|
87
|
+
*/
|
|
88
|
+
currentPage(): Promise<Page>;
|
|
89
|
+
/**
|
|
90
|
+
* @desc
|
|
91
|
+
* Returns an array of {@link Page} objects representing all the available
|
|
92
|
+
* top-level browsing context, e.g. all the open browser tabs.
|
|
93
|
+
*
|
|
94
|
+
* @returns {Promise<Array<Page>>}
|
|
95
|
+
*/
|
|
96
|
+
allPages(): Promise<Array<Page>>;
|
|
97
|
+
modalDialog(): Promise<ModalDialog>;
|
|
98
|
+
switchToFrame(targetOrIndex: PageElement | number | string): Promise<void>;
|
|
99
|
+
switchToParentFrame(): Promise<void>;
|
|
100
|
+
switchToDefaultContent(): Promise<void>;
|
|
73
101
|
/**
|
|
74
102
|
* @desc
|
|
75
103
|
* Send a sequence of {@link Key} strokes to the active element.
|
|
@@ -143,7 +171,7 @@ export declare class BrowseTheWeb implements Ability {
|
|
|
143
171
|
* Arrays and objects may also be used as script arguments as long as each item adheres
|
|
144
172
|
* to the types previously mentioned.
|
|
145
173
|
*
|
|
146
|
-
* Unlike executing synchronous JavaScript with {@link
|
|
174
|
+
* Unlike executing synchronous JavaScript with {@link BrowseTheWebWithWebdriverIO#executeScript},
|
|
147
175
|
* scripts executed with this function must explicitly signal they are finished by invoking the provided callback.
|
|
148
176
|
*
|
|
149
177
|
* This callback will always be injected into the executed function as the last argument,
|
|
@@ -185,10 +213,12 @@ export declare class BrowseTheWeb implements Ability {
|
|
|
185
213
|
executeAsyncScript<Result, Parameters extends any[]>(script: string | ((...args: [...parameters: Parameters, callback: (result: Result) => void]) => void), ...args: Parameters): Promise<Result>;
|
|
186
214
|
/**
|
|
187
215
|
* @desc
|
|
188
|
-
* Returns the last result of calling {@link
|
|
189
|
-
* or {@link
|
|
216
|
+
* Returns the last result of calling {@link BrowseTheWebWithWebdriverIO#executeAsyncScript}
|
|
217
|
+
* or {@link BrowseTheWebWithWebdriverIO#executeScript}
|
|
190
218
|
*
|
|
191
219
|
* @returns {any}
|
|
192
220
|
*/
|
|
193
|
-
|
|
221
|
+
lastScriptExecutionResult<Result = any>(): Result;
|
|
222
|
+
waitFor(duration: Duration): Promise<void>;
|
|
223
|
+
waitUntil(condition: () => boolean | Promise<boolean>, timeout: Duration): Promise<void>;
|
|
194
224
|
}
|