@serenity-js/web 3.0.0-rc.8 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +336 -73
- package/README.md +8 -12
- package/lib/errors/BrowserWindowClosedError.d.ts +15 -0
- package/lib/errors/BrowserWindowClosedError.d.ts.map +1 -0
- package/lib/errors/BrowserWindowClosedError.js +21 -0
- package/lib/errors/BrowserWindowClosedError.js.map +1 -0
- package/lib/errors/CookieMissingError.d.ts +11 -0
- package/lib/errors/CookieMissingError.d.ts.map +1 -0
- package/lib/errors/CookieMissingError.js +10 -0
- package/lib/errors/CookieMissingError.js.map +1 -1
- package/lib/errors/ModalDialogObstructsScreenshotError.d.ts +15 -0
- package/lib/errors/ModalDialogObstructsScreenshotError.d.ts.map +1 -0
- package/lib/errors/ModalDialogObstructsScreenshotError.js +21 -0
- package/lib/errors/ModalDialogObstructsScreenshotError.js.map +1 -0
- package/lib/errors/index.d.ts +3 -0
- package/lib/errors/index.d.ts.map +1 -0
- package/lib/errors/index.js +7 -1
- package/lib/errors/index.js.map +1 -1
- package/lib/expectations/index.d.ts +1 -1
- package/lib/expectations/index.d.ts.map +1 -0
- package/lib/expectations/index.js +5 -2
- package/lib/expectations/index.js.map +1 -1
- package/lib/expectations/isActive.d.ts +14 -8
- package/lib/expectations/isActive.d.ts.map +1 -0
- package/lib/expectations/isActive.js +17 -11
- package/lib/expectations/isActive.js.map +1 -1
- package/lib/expectations/isClickable.d.ts +14 -13
- package/lib/expectations/isClickable.d.ts.map +1 -0
- package/lib/expectations/isClickable.js +15 -17
- package/lib/expectations/isClickable.js.map +1 -1
- package/lib/expectations/isEnabled.d.ts +14 -7
- package/lib/expectations/isEnabled.d.ts.map +1 -0
- package/lib/expectations/isEnabled.js +17 -9
- package/lib/expectations/isEnabled.js.map +1 -1
- package/lib/expectations/isSelected.d.ts +14 -7
- package/lib/expectations/isSelected.d.ts.map +1 -0
- package/lib/expectations/isSelected.js +15 -9
- package/lib/expectations/isSelected.js.map +1 -1
- package/lib/expectations/isVisible.d.ts +14 -7
- package/lib/expectations/isVisible.d.ts.map +1 -0
- package/lib/expectations/isVisible.js +17 -9
- package/lib/expectations/isVisible.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/screenplay/abilities/BrowseTheWeb.d.ts +88 -45
- package/lib/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -0
- package/lib/screenplay/abilities/BrowseTheWeb.js +89 -19
- package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
- package/lib/screenplay/abilities/index.d.ts +1 -1
- package/lib/screenplay/abilities/index.d.ts.map +1 -0
- package/lib/screenplay/abilities/index.js +5 -2
- package/lib/screenplay/abilities/index.js.map +1 -1
- package/lib/screenplay/index.d.ts +1 -0
- package/lib/screenplay/index.d.ts.map +1 -0
- package/lib/screenplay/index.js +5 -1
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/interactions/Clear.d.ts +50 -55
- package/lib/screenplay/interactions/Clear.d.ts.map +1 -0
- package/lib/screenplay/interactions/Clear.js +70 -63
- package/lib/screenplay/interactions/Clear.js.map +1 -1
- package/lib/screenplay/interactions/Click.d.ts +41 -50
- package/lib/screenplay/interactions/Click.d.ts.map +1 -0
- package/lib/screenplay/interactions/Click.js +45 -55
- package/lib/screenplay/interactions/Click.js.map +1 -1
- package/lib/screenplay/interactions/DoubleClick.d.ts +64 -67
- package/lib/screenplay/interactions/DoubleClick.d.ts.map +1 -0
- package/lib/screenplay/interactions/DoubleClick.js +68 -72
- package/lib/screenplay/interactions/DoubleClick.js.map +1 -1
- package/lib/screenplay/interactions/Enter.d.ts +42 -51
- package/lib/screenplay/interactions/Enter.d.ts.map +1 -0
- package/lib/screenplay/interactions/Enter.js +42 -52
- package/lib/screenplay/interactions/Enter.js.map +1 -1
- package/lib/screenplay/interactions/ExecuteScript.d.ts +144 -148
- package/lib/screenplay/interactions/ExecuteScript.d.ts.map +1 -0
- package/lib/screenplay/interactions/ExecuteScript.js +163 -185
- package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
- package/lib/screenplay/interactions/Hover.d.ts +40 -50
- package/lib/screenplay/interactions/Hover.d.ts.map +1 -0
- package/lib/screenplay/interactions/Hover.js +44 -55
- package/lib/screenplay/interactions/Hover.js.map +1 -1
- package/lib/screenplay/interactions/Navigate.d.ts +106 -113
- package/lib/screenplay/interactions/Navigate.d.ts.map +1 -0
- package/lib/screenplay/interactions/Navigate.js +124 -146
- package/lib/screenplay/interactions/Navigate.js.map +1 -1
- package/lib/screenplay/interactions/PageElementInteraction.d.ts +12 -28
- package/lib/screenplay/interactions/PageElementInteraction.d.ts.map +1 -0
- package/lib/screenplay/interactions/PageElementInteraction.js +12 -33
- package/lib/screenplay/interactions/PageElementInteraction.js.map +1 -1
- package/lib/screenplay/interactions/Press.d.ts +61 -55
- package/lib/screenplay/interactions/Press.d.ts.map +1 -0
- package/lib/screenplay/interactions/Press.js +83 -72
- package/lib/screenplay/interactions/Press.js.map +1 -1
- package/lib/screenplay/interactions/RightClick.d.ts +59 -65
- package/lib/screenplay/interactions/RightClick.d.ts.map +1 -0
- package/lib/screenplay/interactions/RightClick.js +63 -70
- package/lib/screenplay/interactions/RightClick.js.map +1 -1
- package/lib/screenplay/interactions/Scroll.d.ts +46 -64
- package/lib/screenplay/interactions/Scroll.d.ts.map +1 -0
- package/lib/screenplay/interactions/Scroll.js +49 -71
- package/lib/screenplay/interactions/Scroll.js.map +1 -1
- package/lib/screenplay/interactions/Select.d.ts +217 -193
- package/lib/screenplay/interactions/Select.d.ts.map +1 -0
- package/lib/screenplay/interactions/Select.js +218 -245
- package/lib/screenplay/interactions/Select.js.map +1 -1
- package/lib/screenplay/interactions/Switch.d.ts +105 -128
- package/lib/screenplay/interactions/Switch.d.ts.map +1 -0
- package/lib/screenplay/interactions/Switch.js +121 -172
- package/lib/screenplay/interactions/Switch.js.map +1 -1
- package/lib/screenplay/interactions/TakeScreenshot.d.ts +28 -50
- package/lib/screenplay/interactions/TakeScreenshot.d.ts.map +1 -0
- package/lib/screenplay/interactions/TakeScreenshot.js +32 -57
- package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
- package/lib/screenplay/interactions/index.d.ts +2 -3
- package/lib/screenplay/interactions/index.d.ts.map +1 -0
- package/lib/screenplay/interactions/index.js +6 -4
- package/lib/screenplay/interactions/index.js.map +1 -1
- package/lib/screenplay/models/BrowserCapabilities.d.ts +24 -0
- package/lib/screenplay/models/BrowserCapabilities.d.ts.map +1 -0
- package/lib/screenplay/models/BrowserCapabilities.js.map +1 -0
- package/lib/screenplay/models/BrowsingSession.d.ts +69 -0
- package/lib/screenplay/models/BrowsingSession.d.ts.map +1 -0
- package/lib/screenplay/models/BrowsingSession.js +101 -0
- package/lib/screenplay/models/BrowsingSession.js.map +1 -0
- package/lib/screenplay/models/Cookie.d.ts +104 -64
- package/lib/screenplay/models/Cookie.d.ts.map +1 -0
- package/lib/screenplay/models/Cookie.js +110 -59
- package/lib/screenplay/models/Cookie.js.map +1 -1
- package/lib/screenplay/models/CookieData.d.ts +20 -58
- package/lib/screenplay/models/CookieData.d.ts.map +1 -0
- package/lib/{input → screenplay/models}/Key.d.ts +13 -9
- package/lib/screenplay/models/Key.d.ts.map +1 -0
- package/lib/{input → screenplay/models}/Key.js +16 -13
- package/lib/screenplay/models/Key.js.map +1 -0
- package/lib/screenplay/models/Locator.d.ts +29 -8
- package/lib/screenplay/models/Locator.d.ts.map +1 -0
- package/lib/screenplay/models/Locator.js +53 -7
- package/lib/screenplay/models/Locator.js.map +1 -1
- package/lib/screenplay/models/Page.d.ts +398 -36
- package/lib/screenplay/models/Page.d.ts.map +1 -0
- package/lib/screenplay/models/Page.js +209 -4
- package/lib/screenplay/models/Page.js.map +1 -1
- package/lib/screenplay/models/PageElement.d.ts +77 -5
- package/lib/screenplay/models/PageElement.d.ts.map +1 -0
- package/lib/screenplay/models/PageElement.js +29 -7
- package/lib/screenplay/models/PageElement.js.map +1 -1
- package/lib/screenplay/models/PageElements.d.ts +16 -3
- package/lib/screenplay/models/PageElements.d.ts.map +1 -0
- package/lib/screenplay/models/PageElements.js +21 -8
- package/lib/screenplay/models/PageElements.js.map +1 -1
- package/lib/screenplay/models/RootLocator.d.ts +25 -0
- package/lib/screenplay/models/RootLocator.d.ts.map +1 -0
- package/lib/screenplay/models/RootLocator.js +52 -0
- package/lib/screenplay/models/RootLocator.js.map +1 -0
- package/lib/screenplay/models/SelectOption.d.ts +25 -0
- package/lib/screenplay/models/SelectOption.d.ts.map +1 -0
- package/lib/screenplay/models/SelectOption.js +37 -0
- package/lib/screenplay/models/SelectOption.js.map +1 -0
- package/lib/screenplay/models/Switchable.d.ts +23 -0
- package/lib/screenplay/models/Switchable.d.ts.map +1 -0
- package/lib/screenplay/{interactions/WaitBuilder.js → models/Switchable.js} +1 -1
- package/lib/screenplay/models/Switchable.js.map +1 -0
- package/lib/screenplay/models/SwitchableOrigin.d.ts +18 -0
- package/lib/screenplay/models/SwitchableOrigin.d.ts.map +1 -0
- package/lib/screenplay/{interactions/EnterBuilder.js → models/SwitchableOrigin.js} +1 -1
- package/lib/screenplay/models/SwitchableOrigin.js.map +1 -0
- package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts +15 -0
- package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts.map +1 -0
- package/lib/screenplay/models/dialogs/AbsentModalDialog.js +24 -0
- package/lib/screenplay/models/dialogs/AbsentModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts +17 -0
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts.map +1 -0
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.js +29 -0
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts +17 -0
- package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts.map +1 -0
- package/lib/screenplay/models/dialogs/DismissedModalDialog.js +29 -0
- package/lib/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/ModalDialog.d.ts +168 -0
- package/lib/screenplay/models/dialogs/ModalDialog.d.ts.map +1 -0
- package/lib/screenplay/models/dialogs/ModalDialog.js +174 -0
- package/lib/screenplay/models/dialogs/ModalDialog.js.map +1 -0
- package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts +38 -0
- package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts.map +1 -0
- package/lib/screenplay/models/dialogs/ModalDialogHandler.js +30 -0
- package/lib/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -0
- package/lib/screenplay/models/dialogs/index.d.ts +6 -0
- package/lib/screenplay/models/dialogs/index.d.ts.map +1 -0
- package/lib/screenplay/models/dialogs/index.js +22 -0
- package/lib/screenplay/models/dialogs/index.js.map +1 -0
- package/lib/screenplay/models/index.d.ts +9 -1
- package/lib/screenplay/models/index.d.ts.map +1 -0
- package/lib/screenplay/models/index.js +13 -2
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/selectors/By.d.ts +38 -0
- package/lib/screenplay/models/selectors/By.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/By.js +43 -0
- package/lib/screenplay/models/selectors/By.js.map +1 -1
- package/lib/screenplay/models/selectors/ByCss.d.ts +8 -0
- package/lib/screenplay/models/selectors/ByCss.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/ByCss.js +7 -0
- package/lib/screenplay/models/selectors/ByCss.js.map +1 -1
- package/lib/screenplay/models/selectors/ByCssContainingText.d.ts +9 -0
- package/lib/screenplay/models/selectors/ByCssContainingText.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/ByCssContainingText.js +8 -0
- package/lib/screenplay/models/selectors/ByCssContainingText.js.map +1 -1
- package/lib/screenplay/models/selectors/ByDeepCss.d.ts +14 -0
- package/lib/screenplay/models/selectors/ByDeepCss.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/ByDeepCss.js +20 -0
- package/lib/screenplay/models/selectors/ByDeepCss.js.map +1 -0
- package/lib/screenplay/models/selectors/ById.d.ts +8 -0
- package/lib/screenplay/models/selectors/ById.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/ById.js +7 -0
- package/lib/screenplay/models/selectors/ById.js.map +1 -1
- package/lib/screenplay/models/selectors/ByTagName.d.ts +8 -0
- package/lib/screenplay/models/selectors/ByTagName.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/ByTagName.js +7 -0
- package/lib/screenplay/models/selectors/ByTagName.js.map +1 -1
- package/lib/screenplay/models/selectors/ByXPath.d.ts +8 -0
- package/lib/screenplay/models/selectors/ByXPath.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/ByXPath.js +7 -0
- package/lib/screenplay/models/selectors/ByXPath.js.map +1 -1
- package/lib/screenplay/models/selectors/Selector.d.ts +6 -0
- package/lib/screenplay/models/selectors/Selector.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/Selector.js +6 -1
- package/lib/screenplay/models/selectors/Selector.js.map +1 -1
- package/lib/screenplay/models/selectors/index.d.ts +2 -0
- package/lib/screenplay/models/selectors/index.d.ts.map +1 -0
- package/lib/screenplay/models/selectors/index.js +6 -1
- package/lib/screenplay/models/selectors/index.js.map +1 -1
- package/lib/screenplay/questions/Attribute.d.ts +115 -67
- package/lib/screenplay/questions/Attribute.d.ts.map +1 -0
- package/lib/screenplay/questions/Attribute.js +128 -74
- package/lib/screenplay/questions/Attribute.js.map +1 -1
- package/lib/screenplay/questions/CssClasses.d.ts +124 -79
- package/lib/screenplay/questions/CssClasses.d.ts.map +1 -0
- package/lib/screenplay/questions/CssClasses.js +132 -83
- package/lib/screenplay/questions/CssClasses.js.map +1 -1
- package/lib/screenplay/questions/LastScriptExecution.d.ts +42 -6
- package/lib/screenplay/questions/LastScriptExecution.d.ts.map +1 -0
- package/lib/screenplay/questions/LastScriptExecution.js +45 -7
- package/lib/screenplay/questions/LastScriptExecution.js.map +1 -1
- package/lib/screenplay/questions/Selected.d.ts +202 -171
- package/lib/screenplay/questions/Selected.d.ts.map +1 -0
- package/lib/screenplay/questions/Selected.js +225 -186
- package/lib/screenplay/questions/Selected.js.map +1 -1
- package/lib/screenplay/questions/Text.d.ts +101 -82
- package/lib/screenplay/questions/Text.d.ts.map +1 -0
- package/lib/screenplay/questions/Text.js +143 -92
- package/lib/screenplay/questions/Text.js.map +1 -1
- package/lib/screenplay/questions/Value.d.ts +77 -44
- package/lib/screenplay/questions/Value.d.ts.map +1 -0
- package/lib/screenplay/questions/Value.js +84 -47
- package/lib/screenplay/questions/Value.js.map +1 -1
- package/lib/screenplay/questions/index.d.ts +1 -0
- package/lib/screenplay/questions/index.d.ts.map +1 -0
- package/lib/screenplay/questions/index.js +5 -1
- package/lib/screenplay/questions/index.js.map +1 -1
- package/lib/scripts/index.d.ts +2 -0
- package/lib/scripts/index.d.ts.map +1 -0
- package/lib/{input → scripts}/index.js +6 -2
- package/lib/scripts/index.js.map +1 -0
- package/lib/scripts/isVisible.d.ts +2 -0
- package/lib/scripts/isVisible.d.ts.map +1 -0
- package/lib/scripts/isVisible.js +96 -0
- package/lib/scripts/isVisible.js.map +1 -0
- package/lib/stage/crew/index.d.ts +1 -0
- package/lib/stage/crew/index.d.ts.map +1 -0
- package/lib/stage/crew/index.js +5 -1
- package/lib/stage/crew/index.js.map +1 -1
- package/lib/stage/crew/photographer/Photographer.d.ts +126 -39
- package/lib/stage/crew/photographer/Photographer.d.ts.map +1 -0
- package/lib/stage/crew/photographer/Photographer.js +161 -42
- package/lib/stage/crew/photographer/Photographer.js.map +1 -1
- package/lib/stage/crew/photographer/index.d.ts +1 -0
- package/lib/stage/crew/photographer/index.d.ts.map +1 -0
- package/lib/stage/crew/photographer/index.js +5 -1
- package/lib/stage/crew/photographer/index.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +13 -12
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts.map +1 -0
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +22 -33
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +8 -8
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts.map +1 -0
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +7 -8
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +8 -7
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts.map +1 -0
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +7 -7
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +8 -8
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts.map +1 -0
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +7 -8
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/index.d.ts +1 -0
- package/lib/stage/crew/photographer/strategies/index.d.ts.map +1 -0
- package/lib/stage/crew/photographer/strategies/index.js +5 -1
- package/lib/stage/crew/photographer/strategies/index.js.map +1 -1
- package/lib/stage/index.d.ts +1 -0
- package/lib/stage/index.d.ts.map +1 -0
- package/lib/stage/index.js +5 -1
- package/lib/stage/index.js.map +1 -1
- package/package.json +20 -43
- package/src/errors/BrowserWindowClosedError.ts +17 -0
- package/src/errors/CookieMissingError.ts +10 -0
- package/src/errors/ModalDialogObstructsScreenshotError.ts +17 -0
- package/src/errors/index.ts +2 -0
- package/src/expectations/index.ts +0 -1
- package/src/expectations/isActive.ts +23 -12
- package/src/expectations/isClickable.ts +22 -21
- package/src/expectations/isEnabled.ts +23 -9
- package/src/expectations/isSelected.ts +20 -10
- package/src/expectations/isVisible.ts +23 -9
- package/src/index.ts +0 -1
- package/src/screenplay/abilities/BrowseTheWeb.ts +95 -87
- package/src/screenplay/abilities/index.ts +0 -1
- package/src/screenplay/interactions/Clear.ts +75 -63
- package/src/screenplay/interactions/Click.ts +43 -54
- package/src/screenplay/interactions/DoubleClick.ts +66 -71
- package/src/screenplay/interactions/Enter.ts +41 -53
- package/src/screenplay/interactions/ExecuteScript.ts +207 -220
- package/src/screenplay/interactions/Hover.ts +42 -54
- package/src/screenplay/interactions/Navigate.ts +129 -156
- package/src/screenplay/interactions/PageElementInteraction.ts +14 -34
- package/src/screenplay/interactions/Press.ts +78 -69
- package/src/screenplay/interactions/RightClick.ts +61 -69
- package/src/screenplay/interactions/Scroll.ts +48 -71
- package/src/screenplay/interactions/Select.ts +229 -269
- package/src/screenplay/interactions/Switch.ts +123 -179
- package/src/screenplay/interactions/TakeScreenshot.ts +31 -57
- package/src/screenplay/interactions/index.ts +1 -3
- package/src/screenplay/models/BrowserCapabilities.ts +26 -0
- package/src/screenplay/models/BrowsingSession.ts +115 -0
- package/src/screenplay/models/Cookie.ts +115 -73
- package/src/screenplay/models/CookieData.ts +20 -58
- package/src/{input → screenplay/models}/Key.ts +12 -9
- package/src/screenplay/models/Locator.ts +43 -9
- package/src/screenplay/models/Page.ts +438 -37
- package/src/screenplay/models/PageElement.ts +92 -12
- package/src/screenplay/models/PageElements.ts +23 -9
- package/src/screenplay/models/RootLocator.ts +30 -0
- package/src/screenplay/models/SelectOption.ts +38 -0
- package/src/screenplay/models/Switchable.ts +24 -0
- package/src/screenplay/models/SwitchableOrigin.ts +18 -0
- package/src/screenplay/models/dialogs/AbsentModalDialog.ts +22 -0
- package/src/screenplay/models/dialogs/AcceptedModalDialog.ts +27 -0
- package/src/screenplay/models/dialogs/DismissedModalDialog.ts +27 -0
- package/src/screenplay/models/dialogs/ModalDialog.ts +200 -0
- package/src/screenplay/models/dialogs/ModalDialogHandler.ts +50 -0
- package/src/screenplay/models/dialogs/index.ts +5 -0
- package/src/screenplay/models/index.ts +8 -1
- package/src/screenplay/models/selectors/By.ts +45 -0
- package/src/screenplay/models/selectors/ByCss.ts +7 -0
- package/src/screenplay/models/selectors/ByCssContainingText.ts +8 -0
- package/src/screenplay/models/selectors/ByDeepCss.ts +15 -0
- package/src/screenplay/models/selectors/ById.ts +7 -0
- package/src/screenplay/models/selectors/ByTagName.ts +7 -0
- package/src/screenplay/models/selectors/ByXPath.ts +7 -0
- package/src/screenplay/models/selectors/Selector.ts +6 -1
- package/src/screenplay/models/selectors/index.ts +1 -0
- package/src/screenplay/questions/Attribute.ts +137 -76
- package/src/screenplay/questions/CssClasses.ts +135 -83
- package/src/screenplay/questions/LastScriptExecution.ts +45 -8
- package/src/screenplay/questions/Selected.ts +237 -191
- package/src/screenplay/questions/Text.ts +161 -96
- package/src/screenplay/questions/Value.ts +88 -48
- package/src/scripts/index.ts +1 -0
- package/src/scripts/isVisible.ts +113 -0
- package/src/stage/crew/photographer/Photographer.ts +142 -41
- package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +27 -42
- package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +7 -8
- package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +7 -7
- package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +7 -8
- package/tsconfig.build.json +14 -0
- package/lib/expectations/ElementExpectation.d.ts +0 -83
- package/lib/expectations/ElementExpectation.js +0 -102
- package/lib/expectations/ElementExpectation.js.map +0 -1
- 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/BrowserCapabilities.d.ts +0 -5
- package/lib/screenplay/abilities/BrowserCapabilities.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/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/SelectBuilder.d.ts +0 -33
- package/lib/screenplay/interactions/SelectBuilder.js +0 -3
- package/lib/screenplay/interactions/SelectBuilder.js.map +0 -1
- package/lib/screenplay/interactions/Wait.d.ts +0 -143
- package/lib/screenplay/interactions/Wait.js +0 -238
- package/lib/screenplay/interactions/Wait.js.map +0 -1
- package/lib/screenplay/interactions/WaitBuilder.d.ts +0 -32
- package/lib/screenplay/interactions/WaitBuilder.js.map +0 -1
- package/lib/screenplay/models/ModalDialog.d.ts +0 -9
- package/lib/screenplay/models/ModalDialog.js +0 -14
- package/lib/screenplay/models/ModalDialog.js.map +0 -1
- package/lib/screenplay/questions/ElementQuestion.d.ts +0 -33
- package/lib/screenplay/questions/ElementQuestion.js +0 -53
- package/lib/screenplay/questions/ElementQuestion.js.map +0 -1
- package/src/expectations/ElementExpectation.ts +0 -108
- package/src/input/index.ts +0 -1
- package/src/screenplay/abilities/BrowserCapabilities.ts +0 -5
- package/src/screenplay/interactions/EnterBuilder.ts +0 -28
- package/src/screenplay/interactions/PressBuilder.ts +0 -29
- package/src/screenplay/interactions/SelectBuilder.ts +0 -36
- package/src/screenplay/interactions/Wait.ts +0 -260
- package/src/screenplay/interactions/WaitBuilder.ts +0 -34
- package/src/screenplay/models/ModalDialog.ts +0 -19
- package/src/screenplay/questions/ElementQuestion.ts +0 -58
- package/tsconfig.eslint.json +0 -10
- /package/lib/screenplay/{abilities → models}/BrowserCapabilities.js +0 -0
|
@@ -6,204 +6,203 @@ const io_1 = require("@serenity-js/core/lib/io");
|
|
|
6
6
|
const model_1 = require("@serenity-js/core/lib/model");
|
|
7
7
|
const abilities_1 = require("../abilities");
|
|
8
8
|
/**
|
|
9
|
-
* @
|
|
10
|
-
*
|
|
11
|
-
* execute a script within the context of the current browser window.
|
|
9
|
+
* Instructs an {@apilink Actor|actor} who has the {@apilink Ability|ability} to {@apilink BrowseTheWeb}
|
|
10
|
+
* to execute a script within the context of the current browser tab.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
12
|
+
* ## Learn more
|
|
14
13
|
*
|
|
15
|
-
*
|
|
14
|
+
* - {@apilink BrowseTheWeb}
|
|
15
|
+
* - {@apilink LastScriptExecution.result}
|
|
16
|
+
*
|
|
17
|
+
* @group Activities
|
|
16
18
|
*/
|
|
17
19
|
class ExecuteScript {
|
|
18
20
|
/**
|
|
19
|
-
* @
|
|
20
|
-
*
|
|
21
|
-
* configured to load a script from `sourceUrl`.
|
|
21
|
+
* Instantiates a version of this {@apilink Interaction}
|
|
22
|
+
* configured to load a script from `sourceUrl`.
|
|
22
23
|
*
|
|
23
|
-
* @param
|
|
24
|
+
* @param sourceUrl
|
|
24
25
|
* The URL to load the script from
|
|
25
|
-
*
|
|
26
|
-
* @returns {@serenity-js/core/lib/screenplay~Interaction}
|
|
27
26
|
*/
|
|
28
27
|
static from(sourceUrl) {
|
|
29
28
|
return new ExecuteScriptFromUrl(sourceUrl);
|
|
30
29
|
}
|
|
31
30
|
/**
|
|
32
|
-
* @
|
|
33
|
-
*
|
|
34
|
-
* The script fragment will be executed as the body of an anonymous function.
|
|
35
|
-
* If the script is provided as a function object, that function will be converted to a string for injection
|
|
36
|
-
* into the target window.
|
|
31
|
+
* Instructs an {@apilink Actor|actor} who has the {@apilink Ability|ability} to {@apilink BrowseTheWeb}
|
|
32
|
+
* to execute an asynchronous script within the context of the current browser tab.
|
|
37
33
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* Arrays and objects may also be used as script arguments as long as each item adheres
|
|
42
|
-
* to the types previously mentioned.
|
|
34
|
+
* The script fragment will be executed as the body of an anonymous function.
|
|
35
|
+
* If the script is provided as a function object, that function will be converted to a string for injection
|
|
36
|
+
* into the target window.
|
|
43
37
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
38
|
+
* Any arguments provided in addition to the script will be included as script arguments and may be referenced
|
|
39
|
+
* using the `arguments` object. Arguments may be a `boolean`, `number`, `string`
|
|
40
|
+
* or {@apilink PageElement}.
|
|
41
|
+
* Arrays and objects may also be used as script arguments as long as each item adheres
|
|
42
|
+
* to the types previously mentioned.
|
|
46
43
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
44
|
+
* Unlike executing synchronous JavaScript with {@apilink ExecuteScript.sync},
|
|
45
|
+
* scripts executed with this function must explicitly signal they are finished by invoking the provided callback.
|
|
49
46
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
47
|
+
* This callback will always be injected into the executed function as the last argument,
|
|
48
|
+
* and thus may be referenced with `arguments[arguments.length - 1]`.
|
|
52
49
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
50
|
+
* If the script invokes the `callback` with a return value, this will be made available
|
|
51
|
+
* via the {@apilink LastScriptExecution.result}.
|
|
55
52
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
53
|
+
* **Please note** that in order to signal an error in the `script` you need to throw an {@apilink Error}
|
|
54
|
+
* instead of passing it to the callback function.
|
|
58
55
|
*
|
|
59
|
-
*
|
|
60
|
-
* ExecuteScript.async(`
|
|
61
|
-
* var callback = arguments[arguments.length - 1];
|
|
56
|
+
* #### Executing an async script
|
|
62
57
|
*
|
|
63
|
-
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
60
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
64
61
|
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
62
|
+
* await actorCalled('Esti').attemptsTo(
|
|
63
|
+
* ExecuteScript.async(`
|
|
64
|
+
* var callback = arguments[arguments.length - 1]
|
|
68
65
|
*
|
|
69
|
-
*
|
|
70
|
-
* import { ExecuteScript } from '@serenity-js/webdriverio';
|
|
66
|
+
* // do stuff
|
|
71
67
|
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* var callback = arguments[arguments.length - 1];
|
|
68
|
+
* callback(result)
|
|
69
|
+
* `)
|
|
70
|
+
* )
|
|
71
|
+
* ```
|
|
77
72
|
*
|
|
78
|
-
*
|
|
73
|
+
* #### Passing arguments to an async script
|
|
79
74
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
75
|
+
* ```ts
|
|
76
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
77
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
83
78
|
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
79
|
+
* await actorCalled('Esti').attemptsTo(
|
|
80
|
+
* ExecuteScript.async(`
|
|
81
|
+
* var name = arguments[0];
|
|
82
|
+
* var age = arguments[1];
|
|
83
|
+
* var callback = arguments[arguments.length - 1]
|
|
86
84
|
*
|
|
87
|
-
*
|
|
88
|
-
* ExecuteScript.async(`
|
|
89
|
-
* var header = arguments[0]; // Target gets converted to a WebElement
|
|
90
|
-
* var callback = arguments[arguments.length - 1];
|
|
85
|
+
* // do stuff
|
|
91
86
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
87
|
+
* callback(result)
|
|
88
|
+
* `).withArguments('Bob', 24)
|
|
89
|
+
* )
|
|
90
|
+
* ```
|
|
95
91
|
*
|
|
96
|
-
*
|
|
97
|
-
* import { ExecuteScript } from '@serenity-js/webdriverio';
|
|
92
|
+
* #### Passing Target arguments to an async script
|
|
98
93
|
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* }).withArguments(Target.the('header').located(by.css('h1')))
|
|
103
|
-
* );
|
|
94
|
+
* ```ts
|
|
95
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
96
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
104
97
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
98
|
+
* await actorCalled('Esti').attemptsTo(
|
|
99
|
+
* ExecuteScript.async(`
|
|
100
|
+
* var header = arguments[0] // PageElement object gets converted to a WebElement
|
|
101
|
+
* var callback = arguments[arguments.length - 1]
|
|
102
|
+
*
|
|
103
|
+
* callback(header.innerText)
|
|
104
|
+
* `).withArguments(PageElement.located(By.css('h1')).describedAs('header'))
|
|
105
|
+
* )
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* #### Executing async script as function
|
|
107
109
|
*
|
|
108
|
-
*
|
|
110
|
+
* ```ts
|
|
111
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
112
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
109
113
|
*
|
|
110
|
-
*
|
|
114
|
+
* await actorCalled('Esti').attemptsTo(
|
|
115
|
+
* ExecuteScript.async(function getText(header, callback) {
|
|
116
|
+
* callback(header.innerText)
|
|
117
|
+
* }).withArguments(PageElement.located(By.css('h1')).describedAs('header'))
|
|
118
|
+
* )
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* #### Learn more
|
|
122
|
+
* - {@apilink LastScriptExecution.result}
|
|
123
|
+
*
|
|
124
|
+
* @param script
|
|
125
|
+
* The script to be executed
|
|
111
126
|
*/
|
|
112
127
|
static async(script) {
|
|
113
|
-
return new ExecuteAsynchronousScript(script);
|
|
128
|
+
return new ExecuteAsynchronousScript(`#actor executes an asynchronous script`, script);
|
|
114
129
|
}
|
|
115
130
|
/**
|
|
116
|
-
* @
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
131
|
+
* Instructs an {@apilink Actor|actor} who has the {@apilink Ability|ability} to {@apilink BrowseTheWeb}
|
|
132
|
+
* to execute a synchronous script within the context of the current browser tab.
|
|
133
|
+
*
|
|
134
|
+
* If the script returns a value, it will be made available via {@apilink LastScriptExecution.result}.
|
|
135
|
+
*
|
|
136
|
+
* #### Executing a sync script as string and reading the result
|
|
137
|
+
*
|
|
138
|
+
* ```ts
|
|
139
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
140
|
+
* import { ExecuteScript, LastScriptExecution } from '@serenity-js/web'
|
|
141
|
+
* import { Ensure, includes } from '@serenity-js/assertions'
|
|
142
|
+
*
|
|
143
|
+
* await actorCalled('Joseph')
|
|
144
|
+
* .attemptsTo(
|
|
145
|
+
* ExecuteScript.sync('return navigator.userAgent'),
|
|
146
|
+
* Ensure.that(LastScriptExecution.result<string>(), includes('Chrome')),
|
|
147
|
+
* )
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* #### Executing a sync script as function and reading the result
|
|
151
|
+
*
|
|
152
|
+
* ```ts
|
|
153
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
154
|
+
* import { By, Enter, ExecuteScript, LastScriptExecution, PageElement } from '@serenity-js/web'
|
|
155
|
+
*
|
|
156
|
+
* const someOfferField = () =>
|
|
157
|
+
* PageElement.located(By.id('offer-code'))
|
|
158
|
+
* .describedAs('offer code')
|
|
159
|
+
*
|
|
160
|
+
* const applyOfferCodeField = () =>
|
|
161
|
+
* PageElement.located(By.id('apply-offer-code'))
|
|
162
|
+
* .describedAs('apply offer field')
|
|
163
|
+
*
|
|
164
|
+
* await actorCalled('Joseph')
|
|
165
|
+
* .attemptsTo(
|
|
166
|
+
* // inject JavaScript to read some property of an element
|
|
167
|
+
* ExecuteScript.sync(function getValue(element) {
|
|
168
|
+
* return element.value;
|
|
169
|
+
* }).withArguments(someOfferField),
|
|
170
|
+
*
|
|
171
|
+
* // use LastScriptExecution.result() to read the value
|
|
172
|
+
* // returned from the injected script
|
|
173
|
+
* // and pass it to another interaction
|
|
174
|
+
* Enter.theValue(LastScriptExecution.result<string>()).into(applyOfferCodeField),
|
|
175
|
+
* )
|
|
176
|
+
* ```
|
|
157
177
|
*
|
|
158
|
-
*
|
|
178
|
+
* #### Learn more
|
|
179
|
+
* - {@apilink LastScriptExecution.result}
|
|
159
180
|
*
|
|
160
|
-
* @
|
|
181
|
+
* @param script
|
|
182
|
+
* The script to be executed
|
|
161
183
|
*/
|
|
162
184
|
static sync(script) {
|
|
163
|
-
return new ExecuteSynchronousScript(script);
|
|
185
|
+
return new ExecuteSynchronousScript(`#actor executes a synchronous script`, script);
|
|
164
186
|
}
|
|
165
187
|
}
|
|
166
188
|
exports.ExecuteScript = ExecuteScript;
|
|
167
189
|
/**
|
|
168
|
-
*
|
|
169
|
-
* Allows for a script to be executed to be parametrised.
|
|
170
|
-
*
|
|
171
|
-
* **Please note** that the arguments can be both synchronous and asynchronous {@link @serenity-js/core/lib/screenplay~Question}s
|
|
172
|
-
* as well as regular static values.
|
|
173
|
-
*
|
|
174
|
-
* @abstract
|
|
190
|
+
* Allows for a script to be executed to be parametrised.
|
|
175
191
|
*
|
|
176
|
-
*
|
|
192
|
+
* ## Learn more
|
|
193
|
+
* - {@apilink ExecuteScript}
|
|
177
194
|
*
|
|
178
|
-
* @
|
|
195
|
+
* @group Activities
|
|
179
196
|
*/
|
|
180
197
|
class ExecuteScriptWithArguments extends core_1.Interaction {
|
|
181
|
-
|
|
182
|
-
* @param {string | Function} script
|
|
183
|
-
* The script to be executed
|
|
184
|
-
*
|
|
185
|
-
* @param {Array<Answerable<any>>} args
|
|
186
|
-
* Arguments to parametrise the script with
|
|
187
|
-
*/
|
|
188
|
-
constructor(script, // eslint-disable-line @typescript-eslint/ban-types
|
|
198
|
+
constructor(description, script, // eslint-disable-line @typescript-eslint/ban-types
|
|
189
199
|
args = []) {
|
|
190
|
-
super();
|
|
200
|
+
super(description, core_1.Interaction.callerLocation(5));
|
|
191
201
|
this.script = script;
|
|
192
202
|
this.args = args;
|
|
193
203
|
}
|
|
194
204
|
/**
|
|
195
|
-
* @
|
|
196
|
-
* Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
197
|
-
* perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
|
|
198
|
-
*
|
|
199
|
-
* @param {UsesAbilities & AnswersQuestions} actor
|
|
200
|
-
* An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
|
|
201
|
-
*
|
|
202
|
-
* @returns {PromiseLike<void>}
|
|
203
|
-
*
|
|
204
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
205
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
|
|
206
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
205
|
+
* @inheritDoc
|
|
207
206
|
*/
|
|
208
207
|
async performAs(actor) {
|
|
209
208
|
const args = await (0, io_1.asyncMap)(this.args, arg => actor.answer(arg));
|
|
@@ -220,15 +219,13 @@ exports.ExecuteScriptWithArguments = ExecuteScriptWithArguments;
|
|
|
220
219
|
*/
|
|
221
220
|
class ExecuteAsynchronousScript extends ExecuteScriptWithArguments {
|
|
222
221
|
withArguments(...args) {
|
|
223
|
-
return new ExecuteAsynchronousScript(
|
|
222
|
+
return new ExecuteAsynchronousScript(args.length > 0
|
|
223
|
+
? (0, core_1.f) `#actor executes an asynchronous script with arguments: ${args}`
|
|
224
|
+
: this.toString(), this.script, args);
|
|
224
225
|
}
|
|
225
|
-
executeAs(actor, args) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
toString() {
|
|
229
|
-
return this.args.length > 0
|
|
230
|
-
? (0, io_1.formatted) `#actor executes an asynchronous script with arguments: ${this.args}`
|
|
231
|
-
: `#actor executes an asynchronous script`;
|
|
226
|
+
async executeAs(actor, args) {
|
|
227
|
+
const page = await abilities_1.BrowseTheWeb.as(actor).currentPage();
|
|
228
|
+
return page.executeAsyncScript(this.script, ...args); // todo: fix types
|
|
232
229
|
}
|
|
233
230
|
}
|
|
234
231
|
/**
|
|
@@ -239,24 +236,16 @@ class ExecuteAsynchronousScript extends ExecuteScriptWithArguments {
|
|
|
239
236
|
*/
|
|
240
237
|
class ExecuteScriptFromUrl extends core_1.Interaction {
|
|
241
238
|
constructor(sourceUrl) {
|
|
242
|
-
super();
|
|
239
|
+
super((0, core_1.f) `#actor executes a script from ${sourceUrl}`);
|
|
243
240
|
this.sourceUrl = sourceUrl;
|
|
244
241
|
}
|
|
245
242
|
/**
|
|
246
|
-
* @
|
|
247
|
-
* Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
248
|
-
* perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
|
|
249
|
-
*
|
|
250
|
-
* @param {UsesAbilities & AnswersQuestions} actor
|
|
251
|
-
* @returns {Promise<void>}
|
|
252
|
-
*
|
|
253
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
254
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
|
|
255
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
243
|
+
* @inheritDoc
|
|
256
244
|
*/
|
|
257
|
-
performAs(actor) {
|
|
258
|
-
|
|
259
|
-
|
|
245
|
+
async performAs(actor) {
|
|
246
|
+
const page = await abilities_1.BrowseTheWeb.as(actor).currentPage();
|
|
247
|
+
const sourceUrl = await actor.answer(this.sourceUrl);
|
|
248
|
+
return page.executeAsyncScript(
|
|
260
249
|
/* istanbul ignore next */
|
|
261
250
|
function executeScriptFromUrl(sourceUrl, callback) {
|
|
262
251
|
const alreadyLoadedScripts = Array.prototype.slice
|
|
@@ -270,42 +259,31 @@ class ExecuteScriptFromUrl extends core_1.Interaction {
|
|
|
270
259
|
callback();
|
|
271
260
|
});
|
|
272
261
|
script.addEventListener('error', function () {
|
|
273
|
-
return callback(
|
|
262
|
+
return callback(`Couldn't load script from ${sourceUrl}`);
|
|
274
263
|
});
|
|
275
264
|
script.src = sourceUrl;
|
|
276
265
|
script.async = true;
|
|
277
266
|
document.head.append(script);
|
|
278
|
-
},
|
|
267
|
+
}, sourceUrl)
|
|
279
268
|
.then(errorMessage => {
|
|
280
269
|
if (errorMessage) {
|
|
281
270
|
throw new core_1.LogicError(errorMessage);
|
|
282
271
|
}
|
|
283
272
|
});
|
|
284
273
|
}
|
|
285
|
-
/**
|
|
286
|
-
* @desc
|
|
287
|
-
* Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
|
|
288
|
-
*
|
|
289
|
-
* @returns {string}
|
|
290
|
-
*/
|
|
291
|
-
toString() {
|
|
292
|
-
return `#actor executes a script from ${this.sourceUrl}`;
|
|
293
|
-
}
|
|
294
274
|
}
|
|
295
275
|
/**
|
|
296
276
|
* @package
|
|
297
277
|
*/
|
|
298
278
|
class ExecuteSynchronousScript extends ExecuteScriptWithArguments {
|
|
299
279
|
withArguments(...args) {
|
|
300
|
-
return new ExecuteSynchronousScript(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
return abilities_1.BrowseTheWeb.as(actor).executeScript(this.script, ...args); // todo fix type
|
|
280
|
+
return new ExecuteSynchronousScript(args.length > 0
|
|
281
|
+
? (0, core_1.f) `#actor executes a synchronous script with arguments: ${args}`
|
|
282
|
+
: this.toString(), this.script, args);
|
|
304
283
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
: `#actor executes a synchronous script`;
|
|
284
|
+
async executeAs(actor, args) {
|
|
285
|
+
const page = await abilities_1.BrowseTheWeb.as(actor).currentPage();
|
|
286
|
+
return page.executeScript(this.script, ...args); // todo fix type
|
|
309
287
|
}
|
|
310
288
|
}
|
|
311
289
|
//# sourceMappingURL=ExecuteScript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecuteScript.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"ExecuteScript.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,77 +2,67 @@ import { Answerable, AnswersQuestions, Interaction, UsesAbilities } from '@seren
|
|
|
2
2
|
import { PageElement } from '../models';
|
|
3
3
|
import { PageElementInteraction } from './PageElementInteraction';
|
|
4
4
|
/**
|
|
5
|
-
* @
|
|
6
|
-
*
|
|
7
|
-
* hover the mouse pointer over a given Web element.
|
|
5
|
+
* Instructs an {@apilink Actor|actor} who has the {@apilink Ability|ability} to {@apilink BrowseTheWeb}
|
|
6
|
+
* to hover the mouse pointer over a given {@apilink PageElement}.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
8
|
+
* ## Example widget
|
|
9
|
+
* ```html
|
|
10
10
|
* <a data-test="example-link"
|
|
11
11
|
* class="off"
|
|
12
12
|
* onmouseover="this.className='on';"
|
|
13
13
|
* onmouseout="this.className='off';"
|
|
14
14
|
* href="/">hover over me</a>
|
|
15
|
+
* ```
|
|
15
16
|
*
|
|
16
|
-
*
|
|
17
|
-
* import { by, Target } from '@serenity-js/webdriverio';
|
|
17
|
+
* ## Lean Page Object describing the widget
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { By, PageElement } from '@serenity-js/web'
|
|
21
|
+
*
|
|
22
|
+
* class Example {
|
|
23
|
+
* static link = () =>
|
|
24
|
+
* PageElement.located(By.css('[data-test="example-link"]'))
|
|
25
|
+
* .describedAs('example link')
|
|
22
26
|
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ## Hovering over an element
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
33
|
+
* import { Hover, CssClasses } from '@serenity-js/web'
|
|
34
|
+
* import { Ensure, equals } from '@serenity-js/assertions'
|
|
23
35
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
36
|
+
* await actorCalled('Hank')
|
|
37
|
+
* .whoCan(BrowseTheWeb.using(browser))
|
|
38
|
+
* .attemptsTo(
|
|
39
|
+
* Ensure.that(CssClasses.of(Example.link()), equals([ 'off' ])),
|
|
28
40
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
41
|
+
* Hover.over(Example.link),
|
|
42
|
+
* Ensure.that(CssClasses.of(Example.link()), equals([ 'on' ])),
|
|
43
|
+
* )
|
|
44
|
+
* ```
|
|
33
45
|
*
|
|
34
|
-
*
|
|
35
|
-
* Ensure.that(CssClasses.of(Example.link), equals([ 'on' ])),
|
|
36
|
-
* );
|
|
46
|
+
* ## Learn more
|
|
37
47
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* @see {@link CssClasses}
|
|
41
|
-
* @see {@link @serenity-js/assertions~Ensure}
|
|
42
|
-
* @see {@link @serenity-js/assertions/lib/expectations~equals}
|
|
48
|
+
* - {@apilink BrowseTheWeb}
|
|
49
|
+
* - {@apilink PageElement}
|
|
43
50
|
*
|
|
44
|
-
* @
|
|
51
|
+
* @group Activities
|
|
45
52
|
*/
|
|
46
53
|
export declare class Hover extends PageElementInteraction {
|
|
47
|
-
private readonly
|
|
54
|
+
private readonly element;
|
|
48
55
|
/**
|
|
49
|
-
* @
|
|
50
|
-
* Instantiates this {@link @serenity-js/core/lib/screenplay~Interaction}.
|
|
51
|
-
*
|
|
52
|
-
* @param {Answerable<PageElement>} target
|
|
53
|
-
* The element to be hovered over
|
|
56
|
+
* Instantiates this {@apilink Interaction}
|
|
54
57
|
*
|
|
55
|
-
* @
|
|
56
|
-
*/
|
|
57
|
-
static over(target: Answerable<PageElement>): Interaction;
|
|
58
|
-
/**
|
|
59
|
-
* @param {Answerable<PageElement>} target
|
|
58
|
+
* @param pageElement
|
|
60
59
|
* The element to be hovered over
|
|
61
60
|
*/
|
|
62
|
-
|
|
61
|
+
static over(pageElement: Answerable<PageElement>): Interaction;
|
|
62
|
+
protected constructor(element: Answerable<PageElement>);
|
|
63
63
|
/**
|
|
64
|
-
* @
|
|
65
|
-
* Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
66
|
-
* perform this {@link @serenity-js/core/lib/screenplay~Interaction}.
|
|
67
|
-
*
|
|
68
|
-
* @param {UsesAbilities & AnswersQuestions} actor
|
|
69
|
-
* An {@link @serenity-js/core/lib/screenplay/actor~Actor} to perform this {@link @serenity-js/core/lib/screenplay~Interaction}
|
|
70
|
-
*
|
|
71
|
-
* @returns {PromiseLike<void>}
|
|
72
|
-
*
|
|
73
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
74
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
|
|
75
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
64
|
+
* @inheritDoc
|
|
76
65
|
*/
|
|
77
66
|
performAs(actor: UsesAbilities & AnswersQuestions): Promise<void>;
|
|
78
67
|
}
|
|
68
|
+
//# sourceMappingURL=Hover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hover.d.ts","sourceRoot":"","sources":["../../../src/screenplay/interactions/Hover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAK,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,qBAAa,KAAM,SAAQ,sBAAsB;IAYvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV9C;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW;IAI9D,SAAS,aAA8B,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC;IAIvE;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAI1E"}
|