@serenity-js/web 3.41.1 → 3.42.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 +24 -0
- package/esm/errors/BrowserWindowClosedError.d.ts +15 -0
- package/esm/errors/BrowserWindowClosedError.d.ts.map +1 -0
- package/esm/errors/BrowserWindowClosedError.js +17 -0
- package/esm/errors/BrowserWindowClosedError.js.map +1 -0
- package/esm/errors/CookieMissingError.d.ts +15 -0
- package/esm/errors/CookieMissingError.d.ts.map +1 -0
- package/esm/errors/CookieMissingError.js +17 -0
- package/esm/errors/CookieMissingError.js.map +1 -0
- package/esm/errors/ModalDialogObstructsScreenshotError.d.ts +15 -0
- package/esm/errors/ModalDialogObstructsScreenshotError.d.ts.map +1 -0
- package/esm/errors/ModalDialogObstructsScreenshotError.js +17 -0
- package/esm/errors/ModalDialogObstructsScreenshotError.js.map +1 -0
- package/esm/errors/index.d.ts +4 -0
- package/esm/errors/index.d.ts.map +1 -0
- package/esm/errors/index.js +4 -0
- package/esm/errors/index.js.map +1 -0
- package/esm/expectations/index.d.ts +6 -0
- package/esm/expectations/index.d.ts.map +1 -0
- package/esm/expectations/index.js +6 -0
- package/esm/expectations/index.js.map +1 -0
- package/esm/expectations/isActive.d.ts +20 -0
- package/esm/expectations/isActive.d.ts.map +1 -0
- package/esm/expectations/isActive.js +23 -0
- package/esm/expectations/isActive.js.map +1 -0
- package/esm/expectations/isClickable.d.ts +20 -0
- package/esm/expectations/isClickable.d.ts.map +1 -0
- package/esm/expectations/isClickable.js +23 -0
- package/esm/expectations/isClickable.js.map +1 -0
- package/esm/expectations/isEnabled.d.ts +20 -0
- package/esm/expectations/isEnabled.d.ts.map +1 -0
- package/esm/expectations/isEnabled.js +23 -0
- package/esm/expectations/isEnabled.js.map +1 -0
- package/esm/expectations/isSelected.d.ts +20 -0
- package/esm/expectations/isSelected.d.ts.map +1 -0
- package/esm/expectations/isSelected.js +23 -0
- package/esm/expectations/isSelected.js.map +1 -0
- package/esm/expectations/isVisible.d.ts +20 -0
- package/esm/expectations/isVisible.d.ts.map +1 -0
- package/esm/expectations/isVisible.js +23 -0
- package/esm/expectations/isVisible.js.map +1 -0
- package/esm/index.d.ts +5 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +5 -0
- package/esm/index.js.map +1 -0
- package/esm/screenplay/abilities/BrowseTheWeb.d.ts +98 -0
- package/esm/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -0
- package/esm/screenplay/abilities/BrowseTheWeb.js +106 -0
- package/esm/screenplay/abilities/BrowseTheWeb.js.map +1 -0
- package/esm/screenplay/abilities/index.d.ts +2 -0
- package/esm/screenplay/abilities/index.d.ts.map +1 -0
- package/esm/screenplay/abilities/index.js +2 -0
- package/esm/screenplay/abilities/index.js.map +1 -0
- package/esm/screenplay/index.d.ts +5 -0
- package/esm/screenplay/index.d.ts.map +1 -0
- package/esm/screenplay/index.js +5 -0
- package/esm/screenplay/index.js.map +1 -0
- package/esm/screenplay/interactions/Clear.d.ts +74 -0
- package/esm/screenplay/interactions/Clear.d.ts.map +1 -0
- package/esm/screenplay/interactions/Clear.js +101 -0
- package/esm/screenplay/interactions/Clear.js.map +1 -0
- package/esm/screenplay/interactions/Click.d.ts +64 -0
- package/esm/screenplay/interactions/Click.d.ts.map +1 -0
- package/esm/screenplay/interactions/Click.js +72 -0
- package/esm/screenplay/interactions/Click.js.map +1 -0
- package/esm/screenplay/interactions/DoubleClick.d.ts +87 -0
- package/esm/screenplay/interactions/DoubleClick.d.ts.map +1 -0
- package/esm/screenplay/interactions/DoubleClick.js +95 -0
- package/esm/screenplay/interactions/DoubleClick.js.map +1 -0
- package/esm/screenplay/interactions/Drag.d.ts +95 -0
- package/esm/screenplay/interactions/Drag.d.ts.map +1 -0
- package/esm/screenplay/interactions/Drag.js +119 -0
- package/esm/screenplay/interactions/Drag.js.map +1 -0
- package/esm/screenplay/interactions/Enter.d.ts +81 -0
- package/esm/screenplay/interactions/Enter.d.ts.map +1 -0
- package/esm/screenplay/interactions/Enter.js +93 -0
- package/esm/screenplay/interactions/Enter.js.map +1 -0
- package/esm/screenplay/interactions/ExecuteScript.d.ts +297 -0
- package/esm/screenplay/interactions/ExecuteScript.d.ts.map +1 -0
- package/esm/screenplay/interactions/ExecuteScript.js +383 -0
- package/esm/screenplay/interactions/ExecuteScript.js.map +1 -0
- package/esm/screenplay/interactions/Hover.d.ts +68 -0
- package/esm/screenplay/interactions/Hover.d.ts.map +1 -0
- package/esm/screenplay/interactions/Hover.js +76 -0
- package/esm/screenplay/interactions/Hover.js.map +1 -0
- package/esm/screenplay/interactions/Navigate.d.ts +137 -0
- package/esm/screenplay/interactions/Navigate.d.ts.map +1 -0
- package/esm/screenplay/interactions/Navigate.js +174 -0
- package/esm/screenplay/interactions/Navigate.js.map +1 -0
- package/esm/screenplay/interactions/PageElementInteraction.d.ts +24 -0
- package/esm/screenplay/interactions/PageElementInteraction.d.ts.map +1 -0
- package/esm/screenplay/interactions/PageElementInteraction.js +29 -0
- package/esm/screenplay/interactions/PageElementInteraction.js.map +1 -0
- package/esm/screenplay/interactions/Press.d.ts +92 -0
- package/esm/screenplay/interactions/Press.d.ts.map +1 -0
- package/esm/screenplay/interactions/Press.js +166 -0
- package/esm/screenplay/interactions/Press.js.map +1 -0
- package/esm/screenplay/interactions/RightClick.d.ts +83 -0
- package/esm/screenplay/interactions/RightClick.d.ts.map +1 -0
- package/esm/screenplay/interactions/RightClick.js +91 -0
- package/esm/screenplay/interactions/RightClick.js.map +1 -0
- package/esm/screenplay/interactions/Scroll.d.ts +66 -0
- package/esm/screenplay/interactions/Scroll.d.ts.map +1 -0
- package/esm/screenplay/interactions/Scroll.js +72 -0
- package/esm/screenplay/interactions/Scroll.js.map +1 -0
- package/esm/screenplay/interactions/Select.d.ts +235 -0
- package/esm/screenplay/interactions/Select.d.ts.map +1 -0
- package/esm/screenplay/interactions/Select.js +262 -0
- package/esm/screenplay/interactions/Select.js.map +1 -0
- package/esm/screenplay/interactions/Switch.d.ts +130 -0
- package/esm/screenplay/interactions/Switch.d.ts.map +1 -0
- package/esm/screenplay/interactions/Switch.js +159 -0
- package/esm/screenplay/interactions/Switch.js.map +1 -0
- package/esm/screenplay/interactions/TakeScreenshot.d.ts +47 -0
- package/esm/screenplay/interactions/TakeScreenshot.d.ts.map +1 -0
- package/esm/screenplay/interactions/TakeScreenshot.js +58 -0
- package/esm/screenplay/interactions/TakeScreenshot.js.map +1 -0
- package/esm/screenplay/interactions/index.d.ts +16 -0
- package/esm/screenplay/interactions/index.d.ts.map +1 -0
- package/esm/screenplay/interactions/index.js +16 -0
- package/esm/screenplay/interactions/index.js.map +1 -0
- package/esm/screenplay/models/ArgumentDehydrator.d.ts +14 -0
- package/esm/screenplay/models/ArgumentDehydrator.d.ts.map +1 -0
- package/esm/screenplay/models/ArgumentDehydrator.js +45 -0
- package/esm/screenplay/models/ArgumentDehydrator.js.map +1 -0
- package/esm/screenplay/models/BrowserCapabilities.d.ts +24 -0
- package/esm/screenplay/models/BrowserCapabilities.d.ts.map +1 -0
- package/esm/screenplay/models/BrowserCapabilities.js +2 -0
- package/esm/screenplay/models/BrowserCapabilities.js.map +1 -0
- package/esm/screenplay/models/BrowsingSession.d.ts +74 -0
- package/esm/screenplay/models/BrowsingSession.d.ts.map +1 -0
- package/esm/screenplay/models/BrowsingSession.js +96 -0
- package/esm/screenplay/models/BrowsingSession.js.map +1 -0
- package/esm/screenplay/models/Cookie.d.ts +158 -0
- package/esm/screenplay/models/Cookie.d.ts.map +1 -0
- package/esm/screenplay/models/Cookie.js +225 -0
- package/esm/screenplay/models/Cookie.js.map +1 -0
- package/esm/screenplay/models/CookieData.d.ts +51 -0
- package/esm/screenplay/models/CookieData.d.ts.map +1 -0
- package/esm/screenplay/models/CookieData.js +2 -0
- package/esm/screenplay/models/CookieData.js.map +1 -0
- package/esm/screenplay/models/Key.d.ts +82 -0
- package/esm/screenplay/models/Key.d.ts.map +1 -0
- package/esm/screenplay/models/Key.js +97 -0
- package/esm/screenplay/models/Key.js.map +1 -0
- package/esm/screenplay/models/Locator.d.ts +48 -0
- package/esm/screenplay/models/Locator.d.ts.map +1 -0
- package/esm/screenplay/models/Locator.js +64 -0
- package/esm/screenplay/models/Locator.js.map +1 -0
- package/esm/screenplay/models/Page.d.ts +453 -0
- package/esm/screenplay/models/Page.d.ts.map +1 -0
- package/esm/screenplay/models/Page.js +252 -0
- package/esm/screenplay/models/Page.js.map +1 -0
- package/esm/screenplay/models/PageElement.d.ts +207 -0
- package/esm/screenplay/models/PageElement.d.ts.map +1 -0
- package/esm/screenplay/models/PageElement.js +89 -0
- package/esm/screenplay/models/PageElement.js.map +1 -0
- package/esm/screenplay/models/PageElements.d.ts +21 -0
- package/esm/screenplay/models/PageElements.d.ts.map +1 -0
- package/esm/screenplay/models/PageElements.js +21 -0
- package/esm/screenplay/models/PageElements.js.map +1 -0
- package/esm/screenplay/models/PageElementsLocator.d.ts +16 -0
- package/esm/screenplay/models/PageElementsLocator.d.ts.map +1 -0
- package/esm/screenplay/models/PageElementsLocator.js +31 -0
- package/esm/screenplay/models/PageElementsLocator.js.map +1 -0
- package/esm/screenplay/models/RootLocator.d.ts +24 -0
- package/esm/screenplay/models/RootLocator.d.ts.map +1 -0
- package/esm/screenplay/models/RootLocator.js +21 -0
- package/esm/screenplay/models/RootLocator.js.map +1 -0
- package/esm/screenplay/models/SelectOption.d.ts +25 -0
- package/esm/screenplay/models/SelectOption.d.ts.map +1 -0
- package/esm/screenplay/models/SelectOption.js +37 -0
- package/esm/screenplay/models/SelectOption.js.map +1 -0
- package/esm/screenplay/models/Switchable.d.ts +23 -0
- package/esm/screenplay/models/Switchable.d.ts.map +1 -0
- package/esm/screenplay/models/Switchable.js +2 -0
- package/esm/screenplay/models/Switchable.js.map +1 -0
- package/esm/screenplay/models/SwitchableOrigin.d.ts +18 -0
- package/esm/screenplay/models/SwitchableOrigin.d.ts.map +1 -0
- package/esm/screenplay/models/SwitchableOrigin.js +2 -0
- package/esm/screenplay/models/SwitchableOrigin.js.map +1 -0
- package/esm/screenplay/models/dialogs/AbsentModalDialog.d.ts +15 -0
- package/esm/screenplay/models/dialogs/AbsentModalDialog.d.ts.map +1 -0
- package/esm/screenplay/models/dialogs/AbsentModalDialog.js +20 -0
- package/esm/screenplay/models/dialogs/AbsentModalDialog.js.map +1 -0
- package/esm/screenplay/models/dialogs/AcceptedModalDialog.d.ts +17 -0
- package/esm/screenplay/models/dialogs/AcceptedModalDialog.d.ts.map +1 -0
- package/esm/screenplay/models/dialogs/AcceptedModalDialog.js +26 -0
- package/esm/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -0
- package/esm/screenplay/models/dialogs/DismissedModalDialog.d.ts +17 -0
- package/esm/screenplay/models/dialogs/DismissedModalDialog.d.ts.map +1 -0
- package/esm/screenplay/models/dialogs/DismissedModalDialog.js +26 -0
- package/esm/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -0
- package/esm/screenplay/models/dialogs/ModalDialog.d.ts +171 -0
- package/esm/screenplay/models/dialogs/ModalDialog.d.ts.map +1 -0
- package/esm/screenplay/models/dialogs/ModalDialog.js +173 -0
- package/esm/screenplay/models/dialogs/ModalDialog.js.map +1 -0
- package/esm/screenplay/models/dialogs/ModalDialogHandler.d.ts +38 -0
- package/esm/screenplay/models/dialogs/ModalDialogHandler.d.ts.map +1 -0
- package/esm/screenplay/models/dialogs/ModalDialogHandler.js +27 -0
- package/esm/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -0
- package/esm/screenplay/models/dialogs/index.d.ts +6 -0
- package/esm/screenplay/models/dialogs/index.d.ts.map +1 -0
- package/esm/screenplay/models/dialogs/index.js +6 -0
- package/esm/screenplay/models/dialogs/index.js.map +1 -0
- package/esm/screenplay/models/index.d.ts +18 -0
- package/esm/screenplay/models/index.d.ts.map +1 -0
- package/esm/screenplay/models/index.js +18 -0
- package/esm/screenplay/models/index.js.map +1 -0
- package/esm/screenplay/models/selectors/By.d.ts +169 -0
- package/esm/screenplay/models/selectors/By.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/By.js +217 -0
- package/esm/screenplay/models/selectors/By.js.map +1 -0
- package/esm/screenplay/models/selectors/ByCss.d.ts +13 -0
- package/esm/screenplay/models/selectors/ByCss.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/ByCss.js +16 -0
- package/esm/screenplay/models/selectors/ByCss.js.map +1 -0
- package/esm/screenplay/models/selectors/ByCssContainingText.d.ts +15 -0
- package/esm/screenplay/models/selectors/ByCssContainingText.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/ByCssContainingText.js +19 -0
- package/esm/screenplay/models/selectors/ByCssContainingText.js.map +1 -0
- package/esm/screenplay/models/selectors/ByDeepCss.d.ts +14 -0
- package/esm/screenplay/models/selectors/ByDeepCss.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/ByDeepCss.js +17 -0
- package/esm/screenplay/models/selectors/ByDeepCss.js.map +1 -0
- package/esm/screenplay/models/selectors/ById.d.ts +13 -0
- package/esm/screenplay/models/selectors/ById.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/ById.js +16 -0
- package/esm/screenplay/models/selectors/ById.js.map +1 -0
- package/esm/screenplay/models/selectors/ByRole.d.ts +126 -0
- package/esm/screenplay/models/selectors/ByRole.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/ByRole.js +19 -0
- package/esm/screenplay/models/selectors/ByRole.js.map +1 -0
- package/esm/screenplay/models/selectors/ByTagName.d.ts +13 -0
- package/esm/screenplay/models/selectors/ByTagName.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/ByTagName.js +16 -0
- package/esm/screenplay/models/selectors/ByTagName.js.map +1 -0
- package/esm/screenplay/models/selectors/ByXPath.d.ts +13 -0
- package/esm/screenplay/models/selectors/ByXPath.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/ByXPath.js +16 -0
- package/esm/screenplay/models/selectors/ByXPath.js.map +1 -0
- package/esm/screenplay/models/selectors/Selector.d.ts +10 -0
- package/esm/screenplay/models/selectors/Selector.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/Selector.js +15 -0
- package/esm/screenplay/models/selectors/Selector.js.map +1 -0
- package/esm/screenplay/models/selectors/index.d.ts +10 -0
- package/esm/screenplay/models/selectors/index.d.ts.map +1 -0
- package/esm/screenplay/models/selectors/index.js +10 -0
- package/esm/screenplay/models/selectors/index.js.map +1 -0
- package/esm/screenplay/questions/Attribute.d.ts +127 -0
- package/esm/screenplay/questions/Attribute.d.ts.map +1 -0
- package/esm/screenplay/questions/Attribute.js +150 -0
- package/esm/screenplay/questions/Attribute.js.map +1 -0
- package/esm/screenplay/questions/ComputedStyle.d.ts +131 -0
- package/esm/screenplay/questions/ComputedStyle.d.ts.map +1 -0
- package/esm/screenplay/questions/ComputedStyle.js +157 -0
- package/esm/screenplay/questions/ComputedStyle.js.map +1 -0
- package/esm/screenplay/questions/CssClasses.d.ts +110 -0
- package/esm/screenplay/questions/CssClasses.d.ts.map +1 -0
- package/esm/screenplay/questions/CssClasses.js +121 -0
- package/esm/screenplay/questions/CssClasses.js.map +1 -0
- package/esm/screenplay/questions/LastScriptExecution.d.ts +50 -0
- package/esm/screenplay/questions/LastScriptExecution.d.ts.map +1 -0
- package/esm/screenplay/questions/LastScriptExecution.js +56 -0
- package/esm/screenplay/questions/LastScriptExecution.js.map +1 -0
- package/esm/screenplay/questions/Selected.d.ts +216 -0
- package/esm/screenplay/questions/Selected.d.ts.map +1 -0
- package/esm/screenplay/questions/Selected.js +247 -0
- package/esm/screenplay/questions/Selected.js.map +1 -0
- package/esm/screenplay/questions/Text.d.ts +116 -0
- package/esm/screenplay/questions/Text.d.ts.map +1 -0
- package/esm/screenplay/questions/Text.js +121 -0
- package/esm/screenplay/questions/Text.js.map +1 -0
- package/esm/screenplay/questions/Value.d.ts +70 -0
- package/esm/screenplay/questions/Value.d.ts.map +1 -0
- package/esm/screenplay/questions/Value.js +75 -0
- package/esm/screenplay/questions/Value.js.map +1 -0
- package/esm/screenplay/questions/index.d.ts +8 -0
- package/esm/screenplay/questions/index.d.ts.map +1 -0
- package/esm/screenplay/questions/index.js +8 -0
- package/esm/screenplay/questions/index.js.map +1 -0
- package/esm/scripts/dragAndDrop.d.ts +13 -0
- package/esm/scripts/dragAndDrop.d.ts.map +1 -0
- package/esm/scripts/dragAndDrop.js +72 -0
- package/esm/scripts/dragAndDrop.js.map +1 -0
- package/esm/scripts/index.d.ts +4 -0
- package/esm/scripts/index.d.ts.map +1 -0
- package/esm/scripts/index.js +4 -0
- package/esm/scripts/index.js.map +1 -0
- package/esm/scripts/isVisible.d.ts +2 -0
- package/esm/scripts/isVisible.d.ts.map +1 -0
- package/esm/scripts/isVisible.js +92 -0
- package/esm/scripts/isVisible.js.map +1 -0
- package/esm/scripts/rehydrate.d.ts +5 -0
- package/esm/scripts/rehydrate.d.ts.map +1 -0
- package/esm/scripts/rehydrate.js +31 -0
- package/esm/scripts/rehydrate.js.map +1 -0
- package/esm/stage/crew/index.d.ts +2 -0
- package/esm/stage/crew/index.d.ts.map +1 -0
- package/esm/stage/crew/index.js +2 -0
- package/esm/stage/crew/index.js.map +1 -0
- package/esm/stage/crew/photographer/Photographer.d.ts +189 -0
- package/esm/stage/crew/photographer/Photographer.d.ts.map +1 -0
- package/esm/stage/crew/photographer/Photographer.js +215 -0
- package/esm/stage/crew/photographer/Photographer.js.map +1 -0
- package/esm/stage/crew/photographer/index.d.ts +3 -0
- package/esm/stage/crew/photographer/index.d.ts.map +1 -0
- package/esm/stage/crew/photographer/index.js +3 -0
- package/esm/stage/crew/photographer/index.js.map +1 -0
- package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +29 -0
- package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts.map +1 -0
- package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.js +64 -0
- package/esm/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +19 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts.map +1 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +25 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +1 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +19 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts.map +1 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.js +24 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +1 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +20 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts.map +1 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +23 -0
- package/esm/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +1 -0
- package/esm/stage/crew/photographer/strategies/index.d.ts +5 -0
- package/esm/stage/crew/photographer/strategies/index.d.ts.map +1 -0
- package/esm/stage/crew/photographer/strategies/index.js +5 -0
- package/esm/stage/crew/photographer/strategies/index.js.map +1 -0
- package/esm/stage/index.d.ts +2 -0
- package/esm/stage/index.d.ts.map +1 -0
- package/esm/stage/index.js +2 -0
- package/esm/stage/index.js.map +1 -0
- package/lib/errors/index.d.ts +3 -3
- package/lib/errors/index.d.ts.map +1 -1
- package/lib/errors/index.js +3 -3
- package/lib/errors/index.js.map +1 -1
- package/lib/expectations/index.d.ts +5 -5
- package/lib/expectations/index.d.ts.map +1 -1
- package/lib/expectations/index.js +5 -5
- package/lib/expectations/index.js.map +1 -1
- package/lib/expectations/isActive.d.ts +1 -1
- package/lib/expectations/isActive.d.ts.map +1 -1
- package/lib/expectations/isClickable.d.ts +1 -1
- package/lib/expectations/isClickable.d.ts.map +1 -1
- package/lib/expectations/isEnabled.d.ts +1 -1
- package/lib/expectations/isEnabled.d.ts.map +1 -1
- package/lib/expectations/isSelected.d.ts +1 -1
- package/lib/expectations/isSelected.d.ts.map +1 -1
- package/lib/expectations/isVisible.d.ts +1 -1
- package/lib/expectations/isVisible.d.ts.map +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -4
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -0
- package/lib/screenplay/abilities/BrowseTheWeb.d.ts +1 -1
- package/lib/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -1
- package/lib/screenplay/abilities/index.d.ts +1 -1
- package/lib/screenplay/abilities/index.d.ts.map +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 +4 -4
- package/lib/screenplay/index.d.ts.map +1 -1
- package/lib/screenplay/index.js +4 -4
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/interactions/Clear.d.ts +2 -2
- package/lib/screenplay/interactions/Clear.d.ts.map +1 -1
- package/lib/screenplay/interactions/Clear.js +2 -2
- package/lib/screenplay/interactions/Clear.js.map +1 -1
- package/lib/screenplay/interactions/Click.d.ts +2 -2
- package/lib/screenplay/interactions/Click.d.ts.map +1 -1
- package/lib/screenplay/interactions/Click.js +2 -2
- package/lib/screenplay/interactions/Click.js.map +1 -1
- package/lib/screenplay/interactions/DoubleClick.d.ts +2 -2
- package/lib/screenplay/interactions/DoubleClick.d.ts.map +1 -1
- package/lib/screenplay/interactions/DoubleClick.js +2 -2
- package/lib/screenplay/interactions/DoubleClick.js.map +1 -1
- package/lib/screenplay/interactions/Drag.d.ts +1 -1
- package/lib/screenplay/interactions/Drag.d.ts.map +1 -1
- package/lib/screenplay/interactions/Enter.d.ts +2 -2
- package/lib/screenplay/interactions/Enter.d.ts.map +1 -1
- package/lib/screenplay/interactions/Enter.js +3 -3
- package/lib/screenplay/interactions/Enter.js.map +1 -1
- package/lib/screenplay/interactions/ExecuteScript.js +6 -6
- package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
- package/lib/screenplay/interactions/Hover.d.ts +2 -2
- package/lib/screenplay/interactions/Hover.d.ts.map +1 -1
- package/lib/screenplay/interactions/Hover.js +2 -2
- package/lib/screenplay/interactions/Hover.js.map +1 -1
- package/lib/screenplay/interactions/Navigate.js +5 -5
- package/lib/screenplay/interactions/Navigate.js.map +1 -1
- package/lib/screenplay/interactions/PageElementInteraction.d.ts +2 -2
- package/lib/screenplay/interactions/PageElementInteraction.d.ts.map +1 -1
- package/lib/screenplay/interactions/Press.d.ts +3 -3
- package/lib/screenplay/interactions/Press.d.ts.map +1 -1
- package/lib/screenplay/interactions/Press.js +9 -9
- package/lib/screenplay/interactions/Press.js.map +1 -1
- package/lib/screenplay/interactions/RightClick.d.ts +2 -2
- package/lib/screenplay/interactions/RightClick.d.ts.map +1 -1
- package/lib/screenplay/interactions/RightClick.js +2 -2
- package/lib/screenplay/interactions/RightClick.js.map +1 -1
- package/lib/screenplay/interactions/Scroll.d.ts +1 -1
- package/lib/screenplay/interactions/Scroll.d.ts.map +1 -1
- package/lib/screenplay/interactions/Select.d.ts +1 -1
- package/lib/screenplay/interactions/Select.d.ts.map +1 -1
- package/lib/screenplay/interactions/Select.js +8 -9
- package/lib/screenplay/interactions/Select.js.map +1 -1
- package/lib/screenplay/interactions/Switch.d.ts +1 -1
- package/lib/screenplay/interactions/Switch.d.ts.map +1 -1
- package/lib/screenplay/interactions/TakeScreenshot.js +3 -3
- package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
- package/lib/screenplay/interactions/index.d.ts +15 -15
- package/lib/screenplay/interactions/index.d.ts.map +1 -1
- package/lib/screenplay/interactions/index.js +15 -15
- package/lib/screenplay/interactions/index.js.map +1 -1
- package/lib/screenplay/models/ArgumentDehydrator.js +1 -1
- package/lib/screenplay/models/ArgumentDehydrator.js.map +1 -1
- package/lib/screenplay/models/BrowsingSession.d.ts +3 -3
- package/lib/screenplay/models/BrowsingSession.d.ts.map +1 -1
- package/lib/screenplay/models/Cookie.d.ts +1 -1
- package/lib/screenplay/models/Cookie.d.ts.map +1 -1
- package/lib/screenplay/models/Cookie.js +6 -6
- package/lib/screenplay/models/Cookie.js.map +1 -1
- package/lib/screenplay/models/Key.d.ts +5 -0
- package/lib/screenplay/models/Key.d.ts.map +1 -1
- package/lib/screenplay/models/Key.js +13 -2
- package/lib/screenplay/models/Key.js.map +1 -1
- package/lib/screenplay/models/Locator.d.ts +3 -3
- package/lib/screenplay/models/Locator.d.ts.map +1 -1
- package/lib/screenplay/models/Locator.js +9 -9
- package/lib/screenplay/models/Locator.js.map +1 -1
- package/lib/screenplay/models/Page.d.ts +12 -12
- package/lib/screenplay/models/Page.d.ts.map +1 -1
- package/lib/screenplay/models/Page.js +5 -5
- package/lib/screenplay/models/Page.js.map +1 -1
- package/lib/screenplay/models/PageElement.d.ts +5 -5
- package/lib/screenplay/models/PageElement.d.ts.map +1 -1
- package/lib/screenplay/models/PageElement.js +3 -3
- package/lib/screenplay/models/PageElement.js.map +1 -1
- package/lib/screenplay/models/PageElements.d.ts +2 -2
- package/lib/screenplay/models/PageElements.d.ts.map +1 -1
- package/lib/screenplay/models/PageElements.js +2 -2
- package/lib/screenplay/models/PageElements.js.map +1 -1
- package/lib/screenplay/models/PageElementsLocator.d.ts +3 -3
- package/lib/screenplay/models/PageElementsLocator.d.ts.map +1 -1
- package/lib/screenplay/models/PageElementsLocator.js +2 -2
- package/lib/screenplay/models/PageElementsLocator.js.map +1 -1
- package/lib/screenplay/models/RootLocator.js +1 -1
- package/lib/screenplay/models/RootLocator.js.map +1 -1
- package/lib/screenplay/models/Switchable.d.ts +1 -1
- package/lib/screenplay/models/Switchable.d.ts.map +1 -1
- package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts +1 -1
- package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts.map +1 -1
- package/lib/screenplay/models/dialogs/AbsentModalDialog.js +2 -2
- package/lib/screenplay/models/dialogs/AbsentModalDialog.js.map +1 -1
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts +1 -1
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts.map +1 -1
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.js +2 -2
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.js.map +1 -1
- package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts +1 -1
- package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts.map +1 -1
- package/lib/screenplay/models/dialogs/DismissedModalDialog.js +2 -2
- package/lib/screenplay/models/dialogs/DismissedModalDialog.js.map +1 -1
- package/lib/screenplay/models/dialogs/ModalDialog.js +7 -7
- package/lib/screenplay/models/dialogs/ModalDialog.js.map +1 -1
- package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts +1 -1
- package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts.map +1 -1
- package/lib/screenplay/models/dialogs/ModalDialogHandler.js +2 -2
- package/lib/screenplay/models/dialogs/ModalDialogHandler.js.map +1 -1
- package/lib/screenplay/models/dialogs/index.d.ts +5 -5
- package/lib/screenplay/models/dialogs/index.d.ts.map +1 -1
- package/lib/screenplay/models/dialogs/index.js +5 -5
- package/lib/screenplay/models/dialogs/index.js.map +1 -1
- package/lib/screenplay/models/index.d.ts +17 -17
- package/lib/screenplay/models/index.d.ts.map +1 -1
- package/lib/screenplay/models/index.js +17 -17
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/selectors/By.d.ts +7 -7
- package/lib/screenplay/models/selectors/By.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/By.js +14 -14
- package/lib/screenplay/models/selectors/By.js.map +1 -1
- package/lib/screenplay/models/selectors/ByCss.d.ts +1 -1
- package/lib/screenplay/models/selectors/ByCss.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/ByCss.js +2 -2
- package/lib/screenplay/models/selectors/ByCss.js.map +1 -1
- package/lib/screenplay/models/selectors/ByCssContainingText.d.ts +1 -1
- package/lib/screenplay/models/selectors/ByCssContainingText.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/ByCssContainingText.js +2 -2
- package/lib/screenplay/models/selectors/ByCssContainingText.js.map +1 -1
- package/lib/screenplay/models/selectors/ByDeepCss.d.ts +1 -1
- package/lib/screenplay/models/selectors/ByDeepCss.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/ByDeepCss.js +2 -2
- package/lib/screenplay/models/selectors/ByDeepCss.js.map +1 -1
- package/lib/screenplay/models/selectors/ById.d.ts +1 -1
- package/lib/screenplay/models/selectors/ById.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/ById.js +2 -2
- package/lib/screenplay/models/selectors/ById.js.map +1 -1
- package/lib/screenplay/models/selectors/ByRole.d.ts +1 -1
- package/lib/screenplay/models/selectors/ByRole.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/ByRole.js +2 -2
- package/lib/screenplay/models/selectors/ByRole.js.map +1 -1
- package/lib/screenplay/models/selectors/ByTagName.d.ts +1 -1
- package/lib/screenplay/models/selectors/ByTagName.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/ByTagName.js +2 -2
- package/lib/screenplay/models/selectors/ByTagName.js.map +1 -1
- package/lib/screenplay/models/selectors/ByXPath.d.ts +1 -1
- package/lib/screenplay/models/selectors/ByXPath.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/ByXPath.js +2 -2
- package/lib/screenplay/models/selectors/ByXPath.js.map +1 -1
- package/lib/screenplay/models/selectors/index.d.ts +9 -9
- package/lib/screenplay/models/selectors/index.d.ts.map +1 -1
- package/lib/screenplay/models/selectors/index.js +9 -9
- package/lib/screenplay/models/selectors/index.js.map +1 -1
- package/lib/screenplay/questions/Attribute.d.ts +1 -1
- package/lib/screenplay/questions/Attribute.d.ts.map +1 -1
- package/lib/screenplay/questions/Attribute.js +2 -2
- package/lib/screenplay/questions/Attribute.js.map +1 -1
- package/lib/screenplay/questions/ComputedStyle.d.ts +1 -1
- package/lib/screenplay/questions/ComputedStyle.d.ts.map +1 -1
- package/lib/screenplay/questions/ComputedStyle.js +4 -4
- package/lib/screenplay/questions/ComputedStyle.js.map +1 -1
- package/lib/screenplay/questions/CssClasses.d.ts +1 -1
- package/lib/screenplay/questions/CssClasses.d.ts.map +1 -1
- package/lib/screenplay/questions/CssClasses.js +2 -2
- package/lib/screenplay/questions/CssClasses.js.map +1 -1
- package/lib/screenplay/questions/LastScriptExecution.js +2 -2
- package/lib/screenplay/questions/LastScriptExecution.js.map +1 -1
- package/lib/screenplay/questions/Selected.d.ts +1 -1
- package/lib/screenplay/questions/Selected.d.ts.map +1 -1
- package/lib/screenplay/questions/Text.d.ts +2 -2
- package/lib/screenplay/questions/Text.d.ts.map +1 -1
- package/lib/screenplay/questions/Text.js +3 -3
- package/lib/screenplay/questions/Text.js.map +1 -1
- package/lib/screenplay/questions/Value.d.ts +1 -1
- package/lib/screenplay/questions/Value.d.ts.map +1 -1
- package/lib/screenplay/questions/Value.js +2 -2
- package/lib/screenplay/questions/Value.js.map +1 -1
- package/lib/screenplay/questions/index.d.ts +7 -7
- package/lib/screenplay/questions/index.d.ts.map +1 -1
- package/lib/screenplay/questions/index.js +7 -7
- package/lib/screenplay/questions/index.js.map +1 -1
- package/lib/scripts/index.d.ts +3 -3
- package/lib/scripts/index.d.ts.map +1 -1
- package/lib/scripts/index.js +3 -3
- package/lib/scripts/index.js.map +1 -1
- package/lib/stage/crew/index.d.ts +1 -1
- package/lib/stage/crew/index.d.ts.map +1 -1
- package/lib/stage/crew/index.js +1 -1
- package/lib/stage/crew/index.js.map +1 -1
- package/lib/stage/crew/photographer/Photographer.d.ts +3 -3
- package/lib/stage/crew/photographer/Photographer.d.ts.map +1 -1
- package/lib/stage/crew/photographer/Photographer.js +2 -2
- package/lib/stage/crew/photographer/Photographer.js.map +1 -1
- package/lib/stage/crew/photographer/index.d.ts +2 -2
- package/lib/stage/crew/photographer/index.d.ts.map +1 -1
- package/lib/stage/crew/photographer/index.js +2 -2
- package/lib/stage/crew/photographer/index.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +1 -1
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts.map +1 -1
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +4 -4
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +4 -4
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts.map +1 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/index.d.ts +4 -4
- package/lib/stage/crew/photographer/strategies/index.d.ts.map +1 -1
- package/lib/stage/crew/photographer/strategies/index.js +4 -4
- package/lib/stage/crew/photographer/strategies/index.js.map +1 -1
- package/lib/stage/index.d.ts +1 -1
- package/lib/stage/index.d.ts.map +1 -1
- package/lib/stage/index.js +1 -1
- package/lib/stage/index.js.map +1 -1
- package/package.json +48 -7
- package/src/errors/index.ts +3 -3
- package/src/expectations/index.ts +5 -5
- package/src/expectations/isActive.ts +1 -1
- package/src/expectations/isClickable.ts +1 -1
- package/src/expectations/isEnabled.ts +1 -1
- package/src/expectations/isSelected.ts +1 -1
- package/src/expectations/isVisible.ts +1 -1
- package/src/index.ts +4 -4
- package/src/screenplay/abilities/BrowseTheWeb.ts +1 -1
- package/src/screenplay/abilities/index.ts +1 -1
- package/src/screenplay/index.ts +4 -4
- package/src/screenplay/interactions/Clear.ts +2 -2
- package/src/screenplay/interactions/Click.ts +2 -2
- package/src/screenplay/interactions/DoubleClick.ts +2 -2
- package/src/screenplay/interactions/Drag.ts +1 -1
- package/src/screenplay/interactions/Enter.ts +3 -3
- package/src/screenplay/interactions/ExecuteScript.ts +3 -3
- package/src/screenplay/interactions/Hover.ts +2 -2
- package/src/screenplay/interactions/Navigate.ts +1 -1
- package/src/screenplay/interactions/PageElementInteraction.ts +2 -2
- package/src/screenplay/interactions/Press.ts +5 -5
- package/src/screenplay/interactions/RightClick.ts +94 -94
- package/src/screenplay/interactions/Scroll.ts +1 -1
- package/src/screenplay/interactions/Select.ts +3 -4
- package/src/screenplay/interactions/Switch.ts +1 -1
- package/src/screenplay/interactions/TakeScreenshot.ts +2 -2
- package/src/screenplay/interactions/index.ts +15 -15
- package/src/screenplay/models/ArgumentDehydrator.ts +1 -1
- package/src/screenplay/models/BrowsingSession.ts +3 -3
- package/src/screenplay/models/Cookie.ts +3 -3
- package/src/screenplay/models/Key.ts +14 -2
- package/src/screenplay/models/Locator.ts +4 -4
- package/src/screenplay/models/Page.ts +13 -13
- package/src/screenplay/models/PageElement.ts +6 -6
- package/src/screenplay/models/PageElements.ts +3 -3
- package/src/screenplay/models/PageElementsLocator.ts +4 -4
- package/src/screenplay/models/RootLocator.ts +1 -1
- package/src/screenplay/models/Switchable.ts +1 -1
- package/src/screenplay/models/dialogs/AbsentModalDialog.ts +1 -1
- package/src/screenplay/models/dialogs/AcceptedModalDialog.ts +1 -1
- package/src/screenplay/models/dialogs/DismissedModalDialog.ts +1 -1
- package/src/screenplay/models/dialogs/ModalDialog.ts +1 -1
- package/src/screenplay/models/dialogs/ModalDialogHandler.ts +2 -2
- package/src/screenplay/models/dialogs/index.ts +5 -5
- package/src/screenplay/models/index.ts +17 -17
- package/src/screenplay/models/selectors/By.ts +8 -8
- package/src/screenplay/models/selectors/ByCss.ts +1 -1
- package/src/screenplay/models/selectors/ByCssContainingText.ts +1 -1
- package/src/screenplay/models/selectors/ByDeepCss.ts +1 -1
- package/src/screenplay/models/selectors/ById.ts +1 -1
- package/src/screenplay/models/selectors/ByRole.ts +1 -1
- package/src/screenplay/models/selectors/ByTagName.ts +1 -1
- package/src/screenplay/models/selectors/ByXPath.ts +1 -1
- package/src/screenplay/models/selectors/index.ts +9 -9
- package/src/screenplay/questions/Attribute.ts +1 -1
- package/src/screenplay/questions/ComputedStyle.ts +2 -2
- package/src/screenplay/questions/CssClasses.ts +1 -1
- package/src/screenplay/questions/LastScriptExecution.ts +1 -1
- package/src/screenplay/questions/Selected.ts +1 -1
- package/src/screenplay/questions/Text.ts +3 -3
- package/src/screenplay/questions/Value.ts +1 -1
- package/src/screenplay/questions/index.ts +7 -7
- package/src/scripts/index.ts +3 -3
- package/src/stage/crew/index.ts +1 -1
- package/src/stage/crew/photographer/Photographer.ts +4 -4
- package/src/stage/crew/photographer/index.ts +2 -2
- package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +4 -4
- package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +3 -3
- package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +4 -4
- package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +3 -3
- package/src/stage/crew/photographer/strategies/index.ts +4 -4
- package/src/stage/index.ts +1 -1
- package/tsconfig-cjs.build.json +18 -0
- package/tsconfig-esm.build.json +18 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import type { Answerable, AnswersQuestions, CollectsArtifacts, UsesAbilities } from '@serenity-js/core';
|
|
2
|
+
import { Interaction } from '@serenity-js/core';
|
|
3
|
+
/**
|
|
4
|
+
* Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
5
|
+
* to inject a script into the browser and execute it in the context of the current browser tab.
|
|
6
|
+
*
|
|
7
|
+
* ## Learn more
|
|
8
|
+
*
|
|
9
|
+
* - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
10
|
+
* - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
|
|
11
|
+
*
|
|
12
|
+
* @group Activities
|
|
13
|
+
*/
|
|
14
|
+
export declare class ExecuteScript {
|
|
15
|
+
/**
|
|
16
|
+
* Instantiates a version of this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/)
|
|
17
|
+
* configured to load a script from `sourceUrl`.
|
|
18
|
+
*
|
|
19
|
+
* @param sourceUrl
|
|
20
|
+
* The URL to load the script from
|
|
21
|
+
*/
|
|
22
|
+
static from(sourceUrl: Answerable<string>): Interaction;
|
|
23
|
+
/**
|
|
24
|
+
* Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
25
|
+
* to execute an asynchronous script within the context of the current browser tab.
|
|
26
|
+
*
|
|
27
|
+
* The script fragment will be executed as the body of an anonymous function.
|
|
28
|
+
* If the script is provided as a function object, that function will be converted to a string for injection
|
|
29
|
+
* into the target window.
|
|
30
|
+
*
|
|
31
|
+
* Any arguments provided in addition to the script will be included as script arguments and may be referenced
|
|
32
|
+
* using the `arguments` object. Arguments may be a `boolean`, `number`, `string`
|
|
33
|
+
* or [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
|
|
34
|
+
* Arrays and objects may also be used as script arguments as long as each item adheres
|
|
35
|
+
* to the types previously mentioned.
|
|
36
|
+
*
|
|
37
|
+
* Unlike executing synchronous JavaScript with [`ExecuteScript.sync`](https://serenity-js.org/api/web/class/ExecuteScript/#sync),
|
|
38
|
+
* scripts executed with this function must explicitly signal they are finished by invoking the provided callback.
|
|
39
|
+
*
|
|
40
|
+
* This callback will always be injected into the executed function as the last argument,
|
|
41
|
+
* and thus may be referenced with `arguments[arguments.length - 1]`.
|
|
42
|
+
*
|
|
43
|
+
* If the script invokes the `callback` with a return value, this will be made available
|
|
44
|
+
* via the [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
|
|
45
|
+
*
|
|
46
|
+
* **Please note** that in order to signal an error in the `script` you need to throw an [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
|
|
47
|
+
* instead of passing it to the callback function.
|
|
48
|
+
*
|
|
49
|
+
* #### Executing an async script
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
53
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
54
|
+
*
|
|
55
|
+
* await actorCalled('Esti').attemptsTo(
|
|
56
|
+
* ExecuteScript.async(`
|
|
57
|
+
* var callback = arguments[arguments.length - 1]
|
|
58
|
+
*
|
|
59
|
+
* // do stuff
|
|
60
|
+
*
|
|
61
|
+
* callback(result)
|
|
62
|
+
* `)
|
|
63
|
+
* )
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* #### Executing async script as function
|
|
67
|
+
*
|
|
68
|
+
* ```ts
|
|
69
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
70
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
71
|
+
*
|
|
72
|
+
* const MyPage = {
|
|
73
|
+
* header: () =>
|
|
74
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
75
|
+
* }
|
|
76
|
+
*
|
|
77
|
+
* await actorCalled('Esti').attemptsTo(
|
|
78
|
+
* ExecuteScript.async(function getText(header, callback) {
|
|
79
|
+
* callback(header.innerText)
|
|
80
|
+
* }).withArguments(MyPage.header())
|
|
81
|
+
* )
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* #### Passing arguments to an async script
|
|
85
|
+
*
|
|
86
|
+
* ```ts
|
|
87
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
88
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
89
|
+
*
|
|
90
|
+
* await actorCalled('Esti').attemptsTo(
|
|
91
|
+
* ExecuteScript.async(`
|
|
92
|
+
* var name = arguments[0];
|
|
93
|
+
* var age = arguments[1];
|
|
94
|
+
* var callback = arguments[arguments.length - 1]
|
|
95
|
+
*
|
|
96
|
+
* // do stuff
|
|
97
|
+
*
|
|
98
|
+
* callback(result)
|
|
99
|
+
* `).withArguments('Bob', 24)
|
|
100
|
+
* )
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* #### Passing PageElement arguments to an async script
|
|
104
|
+
*
|
|
105
|
+
* Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
|
|
106
|
+
* into their corresponding DOM elements.
|
|
107
|
+
*
|
|
108
|
+
* ```ts
|
|
109
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
110
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
111
|
+
*
|
|
112
|
+
* const MyPage = {
|
|
113
|
+
* header: () =>
|
|
114
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
115
|
+
* }
|
|
116
|
+
*
|
|
117
|
+
* await actorCalled('Esti').attemptsTo(
|
|
118
|
+
* ExecuteScript.async(`
|
|
119
|
+
* var header = arguments[0]
|
|
120
|
+
* var callback = arguments[arguments.length - 1]
|
|
121
|
+
*
|
|
122
|
+
* callback(header.innerText)
|
|
123
|
+
* `).withArguments(MyPage.header())
|
|
124
|
+
* )
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* #### Using nested data structures containing PageElement objects
|
|
128
|
+
*
|
|
129
|
+
* Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
|
|
130
|
+
* contained in nested data structures passed to the script
|
|
131
|
+
* into their corresponding DOM elements.
|
|
132
|
+
*
|
|
133
|
+
* ```ts
|
|
134
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
135
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
136
|
+
*
|
|
137
|
+
* const MyPage = {
|
|
138
|
+
* header: () =>
|
|
139
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
140
|
+
*
|
|
141
|
+
* article: () =>
|
|
142
|
+
* PageElement.located(By.css('article')).describedAs('article'),
|
|
143
|
+
* }
|
|
144
|
+
*
|
|
145
|
+
* await actorCalled('Esti').attemptsTo(
|
|
146
|
+
* ExecuteScript.async(`
|
|
147
|
+
* var { include, exclude } = arguments[0]
|
|
148
|
+
* var callback = arguments[arguments.length - 1]
|
|
149
|
+
*
|
|
150
|
+
* callback(include[0].innerText)
|
|
151
|
+
* `).withArguments({
|
|
152
|
+
* include: [ MyPage.article() ],
|
|
153
|
+
* exclude: [ MyPage.header() ],
|
|
154
|
+
* })
|
|
155
|
+
* )
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
158
|
+
* #### Learn more
|
|
159
|
+
* - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
|
|
160
|
+
*
|
|
161
|
+
* @param script
|
|
162
|
+
* The script to be executed
|
|
163
|
+
*/
|
|
164
|
+
static async(script: string | Function): ExecuteScriptWithArguments;
|
|
165
|
+
/**
|
|
166
|
+
* Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
167
|
+
* to execute a synchronous script within the context of the current browser tab.
|
|
168
|
+
*
|
|
169
|
+
* If the script returns a value, it will be made available via [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
|
|
170
|
+
*
|
|
171
|
+
* #### Executing a sync script as string and reading the result
|
|
172
|
+
*
|
|
173
|
+
* ```ts
|
|
174
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
175
|
+
* import { ExecuteScript, LastScriptExecution } from '@serenity-js/web'
|
|
176
|
+
* import { Ensure, includes } from '@serenity-js/assertions'
|
|
177
|
+
*
|
|
178
|
+
* await actorCalled('Joseph')
|
|
179
|
+
* .attemptsTo(
|
|
180
|
+
* ExecuteScript.sync('return navigator.userAgent'),
|
|
181
|
+
* Ensure.that(LastScriptExecution.result<string>(), includes('Chrome')),
|
|
182
|
+
* )
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* #### Executing a sync script as function and retrieving the result
|
|
186
|
+
*
|
|
187
|
+
* ```ts
|
|
188
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
189
|
+
* import { By, Enter, ExecuteScript, LastScriptExecution, PageElement } from '@serenity-js/web'
|
|
190
|
+
*
|
|
191
|
+
* const Checkout = {
|
|
192
|
+
* someOfferField: () =>
|
|
193
|
+
* PageElement.located(By.id('offer-code'))
|
|
194
|
+
* .describedAs('offer code')
|
|
195
|
+
*
|
|
196
|
+
* applyOfferCodeField = () =>
|
|
197
|
+
* PageElement.located(By.id('apply-offer-code'))
|
|
198
|
+
* .describedAs('apply offer field')
|
|
199
|
+
* }
|
|
200
|
+
*
|
|
201
|
+
* await actorCalled('Joseph')
|
|
202
|
+
* .attemptsTo(
|
|
203
|
+
* // inject JavaScript to read some property of an element
|
|
204
|
+
* ExecuteScript.sync(function getValue(element) {
|
|
205
|
+
* return element.value;
|
|
206
|
+
* }).withArguments(Checkout.someOfferField()),
|
|
207
|
+
*
|
|
208
|
+
* // use LastScriptExecution.result() to read the value
|
|
209
|
+
* // returned from the injected script
|
|
210
|
+
* // and pass it to another interaction
|
|
211
|
+
* Enter.theValue(LastScriptExecution.result<string>()).into(Checkout.applyOfferCodeField()),
|
|
212
|
+
* )
|
|
213
|
+
* ```
|
|
214
|
+
*
|
|
215
|
+
* #### Passing PageElement arguments to a sync script
|
|
216
|
+
*
|
|
217
|
+
* Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
|
|
218
|
+
* into their corresponding DOM elements.
|
|
219
|
+
*
|
|
220
|
+
* ```ts
|
|
221
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
222
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
223
|
+
*
|
|
224
|
+
* const MyPage = {
|
|
225
|
+
* header: () =>
|
|
226
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
227
|
+
* }
|
|
228
|
+
*
|
|
229
|
+
* await actorCalled('Esti').attemptsTo(
|
|
230
|
+
* ExecuteScript.sync(function getInnerHtml(element) {
|
|
231
|
+
* return element.innerHTML;
|
|
232
|
+
* }).withArguments(MyPage.header())
|
|
233
|
+
* )
|
|
234
|
+
* ```
|
|
235
|
+
*
|
|
236
|
+
* #### Using nested data structures containing PageElement objects
|
|
237
|
+
*
|
|
238
|
+
* Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
|
|
239
|
+
* contained in nested data structures passed to the script
|
|
240
|
+
* into their corresponding DOM elements.
|
|
241
|
+
*
|
|
242
|
+
* ```ts
|
|
243
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
244
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
245
|
+
*
|
|
246
|
+
* const MyPage = {
|
|
247
|
+
* header: () =>
|
|
248
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
249
|
+
*
|
|
250
|
+
* article: () =>
|
|
251
|
+
* PageElement.located(By.css('article')).describedAs('article'),
|
|
252
|
+
* }
|
|
253
|
+
*
|
|
254
|
+
* await actorCalled('Esti').attemptsTo(
|
|
255
|
+
* ExecuteScript.async(function getInnerHtml(scope) {
|
|
256
|
+
* return scope.include[0].innerHTML;
|
|
257
|
+
* `).withArguments({
|
|
258
|
+
* include: [ MyPage.article() ],
|
|
259
|
+
* exclude: [ MyPage.header() ],
|
|
260
|
+
* })
|
|
261
|
+
* )
|
|
262
|
+
* ```
|
|
263
|
+
*
|
|
264
|
+
* #### Learn more
|
|
265
|
+
* - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
|
|
266
|
+
*
|
|
267
|
+
* @param script
|
|
268
|
+
* The script to be executed
|
|
269
|
+
*/
|
|
270
|
+
static sync(script: string | Function): ExecuteScriptWithArguments;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Allows for a script to be executed to be parametrised.
|
|
274
|
+
*
|
|
275
|
+
* ## Learn more
|
|
276
|
+
* - [`ExecuteScript`](https://serenity-js.org/api/web/class/ExecuteScript/)
|
|
277
|
+
*
|
|
278
|
+
* @group Activities
|
|
279
|
+
*/
|
|
280
|
+
export declare abstract class ExecuteScriptWithArguments extends Interaction {
|
|
281
|
+
protected readonly script: string | Function;
|
|
282
|
+
protected readonly args: Array<Answerable<any>>;
|
|
283
|
+
constructor(description: Answerable<string>, script: string | Function, args?: Array<Answerable<any>>);
|
|
284
|
+
/**
|
|
285
|
+
* Instantiates this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/)
|
|
286
|
+
*
|
|
287
|
+
* @param args
|
|
288
|
+
* Arguments to parametrise the script with
|
|
289
|
+
*/
|
|
290
|
+
abstract withArguments(...args: Array<Answerable<any>>): Interaction;
|
|
291
|
+
/**
|
|
292
|
+
* @inheritDoc
|
|
293
|
+
*/
|
|
294
|
+
performAs(actor: UsesAbilities & CollectsArtifacts & AnswersQuestions): Promise<void>;
|
|
295
|
+
protected abstract executeAs(actor: UsesAbilities & AnswersQuestions, args: any[]): Promise<any>;
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=ExecuteScript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecuteScript.d.ts","sourceRoot":"","sources":["../../../src/screenplay/interactions/ExecuteScript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAMjE;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IAEtB;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW;IAIvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4IG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,0BAA0B;IAOnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwGG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,0BAA0B;CAMrE;AAED;;;;;;;GAOG;AACH,8BAAsB,0BAA2B,SAAQ,WAAW;IAI5D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAC5C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAF/C,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,EACZ,MAAM,EAAE,MAAM,GAAG,QAAQ,EACzB,IAAI,GAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAM;IAKxD;;;;;OAKG;aACa,aAAa,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;IAE3E;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3F,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CACnG"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import { Interaction, LogicError, the } from '@serenity-js/core';
|
|
2
|
+
import { asyncMap } from '@serenity-js/core/io';
|
|
3
|
+
import { Name, TextData } from '@serenity-js/core/model';
|
|
4
|
+
import { BrowseTheWeb } from '../abilities/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
7
|
+
* to inject a script into the browser and execute it in the context of the current browser tab.
|
|
8
|
+
*
|
|
9
|
+
* ## Learn more
|
|
10
|
+
*
|
|
11
|
+
* - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
12
|
+
* - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
|
|
13
|
+
*
|
|
14
|
+
* @group Activities
|
|
15
|
+
*/
|
|
16
|
+
export class ExecuteScript {
|
|
17
|
+
/**
|
|
18
|
+
* Instantiates a version of this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/)
|
|
19
|
+
* configured to load a script from `sourceUrl`.
|
|
20
|
+
*
|
|
21
|
+
* @param sourceUrl
|
|
22
|
+
* The URL to load the script from
|
|
23
|
+
*/
|
|
24
|
+
static from(sourceUrl) {
|
|
25
|
+
return new ExecuteScriptFromUrl(sourceUrl);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
29
|
+
* to execute an asynchronous script within the context of the current browser tab.
|
|
30
|
+
*
|
|
31
|
+
* The script fragment will be executed as the body of an anonymous function.
|
|
32
|
+
* If the script is provided as a function object, that function will be converted to a string for injection
|
|
33
|
+
* into the target window.
|
|
34
|
+
*
|
|
35
|
+
* Any arguments provided in addition to the script will be included as script arguments and may be referenced
|
|
36
|
+
* using the `arguments` object. Arguments may be a `boolean`, `number`, `string`
|
|
37
|
+
* or [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
|
|
38
|
+
* Arrays and objects may also be used as script arguments as long as each item adheres
|
|
39
|
+
* to the types previously mentioned.
|
|
40
|
+
*
|
|
41
|
+
* Unlike executing synchronous JavaScript with [`ExecuteScript.sync`](https://serenity-js.org/api/web/class/ExecuteScript/#sync),
|
|
42
|
+
* scripts executed with this function must explicitly signal they are finished by invoking the provided callback.
|
|
43
|
+
*
|
|
44
|
+
* This callback will always be injected into the executed function as the last argument,
|
|
45
|
+
* and thus may be referenced with `arguments[arguments.length - 1]`.
|
|
46
|
+
*
|
|
47
|
+
* If the script invokes the `callback` with a return value, this will be made available
|
|
48
|
+
* via the [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
|
|
49
|
+
*
|
|
50
|
+
* **Please note** that in order to signal an error in the `script` you need to throw an [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
|
|
51
|
+
* instead of passing it to the callback function.
|
|
52
|
+
*
|
|
53
|
+
* #### Executing an async script
|
|
54
|
+
*
|
|
55
|
+
* ```ts
|
|
56
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
57
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
58
|
+
*
|
|
59
|
+
* await actorCalled('Esti').attemptsTo(
|
|
60
|
+
* ExecuteScript.async(`
|
|
61
|
+
* var callback = arguments[arguments.length - 1]
|
|
62
|
+
*
|
|
63
|
+
* // do stuff
|
|
64
|
+
*
|
|
65
|
+
* callback(result)
|
|
66
|
+
* `)
|
|
67
|
+
* )
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* #### Executing async script as function
|
|
71
|
+
*
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
74
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
75
|
+
*
|
|
76
|
+
* const MyPage = {
|
|
77
|
+
* header: () =>
|
|
78
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* await actorCalled('Esti').attemptsTo(
|
|
82
|
+
* ExecuteScript.async(function getText(header, callback) {
|
|
83
|
+
* callback(header.innerText)
|
|
84
|
+
* }).withArguments(MyPage.header())
|
|
85
|
+
* )
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* #### Passing arguments to an async script
|
|
89
|
+
*
|
|
90
|
+
* ```ts
|
|
91
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
92
|
+
* import { ExecuteScript } from '@serenity-js/web'
|
|
93
|
+
*
|
|
94
|
+
* await actorCalled('Esti').attemptsTo(
|
|
95
|
+
* ExecuteScript.async(`
|
|
96
|
+
* var name = arguments[0];
|
|
97
|
+
* var age = arguments[1];
|
|
98
|
+
* var callback = arguments[arguments.length - 1]
|
|
99
|
+
*
|
|
100
|
+
* // do stuff
|
|
101
|
+
*
|
|
102
|
+
* callback(result)
|
|
103
|
+
* `).withArguments('Bob', 24)
|
|
104
|
+
* )
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* #### Passing PageElement arguments to an async script
|
|
108
|
+
*
|
|
109
|
+
* Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
|
|
110
|
+
* into their corresponding DOM elements.
|
|
111
|
+
*
|
|
112
|
+
* ```ts
|
|
113
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
114
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
115
|
+
*
|
|
116
|
+
* const MyPage = {
|
|
117
|
+
* header: () =>
|
|
118
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
119
|
+
* }
|
|
120
|
+
*
|
|
121
|
+
* await actorCalled('Esti').attemptsTo(
|
|
122
|
+
* ExecuteScript.async(`
|
|
123
|
+
* var header = arguments[0]
|
|
124
|
+
* var callback = arguments[arguments.length - 1]
|
|
125
|
+
*
|
|
126
|
+
* callback(header.innerText)
|
|
127
|
+
* `).withArguments(MyPage.header())
|
|
128
|
+
* )
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* #### Using nested data structures containing PageElement objects
|
|
132
|
+
*
|
|
133
|
+
* Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
|
|
134
|
+
* contained in nested data structures passed to the script
|
|
135
|
+
* into their corresponding DOM elements.
|
|
136
|
+
*
|
|
137
|
+
* ```ts
|
|
138
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
139
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
140
|
+
*
|
|
141
|
+
* const MyPage = {
|
|
142
|
+
* header: () =>
|
|
143
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
144
|
+
*
|
|
145
|
+
* article: () =>
|
|
146
|
+
* PageElement.located(By.css('article')).describedAs('article'),
|
|
147
|
+
* }
|
|
148
|
+
*
|
|
149
|
+
* await actorCalled('Esti').attemptsTo(
|
|
150
|
+
* ExecuteScript.async(`
|
|
151
|
+
* var { include, exclude } = arguments[0]
|
|
152
|
+
* var callback = arguments[arguments.length - 1]
|
|
153
|
+
*
|
|
154
|
+
* callback(include[0].innerText)
|
|
155
|
+
* `).withArguments({
|
|
156
|
+
* include: [ MyPage.article() ],
|
|
157
|
+
* exclude: [ MyPage.header() ],
|
|
158
|
+
* })
|
|
159
|
+
* )
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* #### Learn more
|
|
163
|
+
* - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
|
|
164
|
+
*
|
|
165
|
+
* @param script
|
|
166
|
+
* The script to be executed
|
|
167
|
+
*/
|
|
168
|
+
static async(script) {
|
|
169
|
+
return new ExecuteAsynchronousScript(`#actor executes an asynchronous script`, script);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Instructs an [actor](https://serenity-js.org/api/core/class/Actor/) who has the [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
173
|
+
* to execute a synchronous script within the context of the current browser tab.
|
|
174
|
+
*
|
|
175
|
+
* If the script returns a value, it will be made available via [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result).
|
|
176
|
+
*
|
|
177
|
+
* #### Executing a sync script as string and reading the result
|
|
178
|
+
*
|
|
179
|
+
* ```ts
|
|
180
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
181
|
+
* import { ExecuteScript, LastScriptExecution } from '@serenity-js/web'
|
|
182
|
+
* import { Ensure, includes } from '@serenity-js/assertions'
|
|
183
|
+
*
|
|
184
|
+
* await actorCalled('Joseph')
|
|
185
|
+
* .attemptsTo(
|
|
186
|
+
* ExecuteScript.sync('return navigator.userAgent'),
|
|
187
|
+
* Ensure.that(LastScriptExecution.result<string>(), includes('Chrome')),
|
|
188
|
+
* )
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* #### Executing a sync script as function and retrieving the result
|
|
192
|
+
*
|
|
193
|
+
* ```ts
|
|
194
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
195
|
+
* import { By, Enter, ExecuteScript, LastScriptExecution, PageElement } from '@serenity-js/web'
|
|
196
|
+
*
|
|
197
|
+
* const Checkout = {
|
|
198
|
+
* someOfferField: () =>
|
|
199
|
+
* PageElement.located(By.id('offer-code'))
|
|
200
|
+
* .describedAs('offer code')
|
|
201
|
+
*
|
|
202
|
+
* applyOfferCodeField = () =>
|
|
203
|
+
* PageElement.located(By.id('apply-offer-code'))
|
|
204
|
+
* .describedAs('apply offer field')
|
|
205
|
+
* }
|
|
206
|
+
*
|
|
207
|
+
* await actorCalled('Joseph')
|
|
208
|
+
* .attemptsTo(
|
|
209
|
+
* // inject JavaScript to read some property of an element
|
|
210
|
+
* ExecuteScript.sync(function getValue(element) {
|
|
211
|
+
* return element.value;
|
|
212
|
+
* }).withArguments(Checkout.someOfferField()),
|
|
213
|
+
*
|
|
214
|
+
* // use LastScriptExecution.result() to read the value
|
|
215
|
+
* // returned from the injected script
|
|
216
|
+
* // and pass it to another interaction
|
|
217
|
+
* Enter.theValue(LastScriptExecution.result<string>()).into(Checkout.applyOfferCodeField()),
|
|
218
|
+
* )
|
|
219
|
+
* ```
|
|
220
|
+
*
|
|
221
|
+
* #### Passing PageElement arguments to a sync script
|
|
222
|
+
*
|
|
223
|
+
* Serenity/JS automatically converts [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects passed as arguments to the script
|
|
224
|
+
* into their corresponding DOM elements.
|
|
225
|
+
*
|
|
226
|
+
* ```ts
|
|
227
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
228
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
229
|
+
*
|
|
230
|
+
* const MyPage = {
|
|
231
|
+
* header: () =>
|
|
232
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
233
|
+
* }
|
|
234
|
+
*
|
|
235
|
+
* await actorCalled('Esti').attemptsTo(
|
|
236
|
+
* ExecuteScript.sync(function getInnerHtml(element) {
|
|
237
|
+
* return element.innerHTML;
|
|
238
|
+
* }).withArguments(MyPage.header())
|
|
239
|
+
* )
|
|
240
|
+
* ```
|
|
241
|
+
*
|
|
242
|
+
* #### Using nested data structures containing PageElement objects
|
|
243
|
+
*
|
|
244
|
+
* Serenity/JS automatically converts any [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) objects
|
|
245
|
+
* contained in nested data structures passed to the script
|
|
246
|
+
* into their corresponding DOM elements.
|
|
247
|
+
*
|
|
248
|
+
* ```ts
|
|
249
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
250
|
+
* import { ExecuteScript, PageElement } from '@serenity-js/web'
|
|
251
|
+
*
|
|
252
|
+
* const MyPage = {
|
|
253
|
+
* header: () =>
|
|
254
|
+
* PageElement.located(By.css('h1')).describedAs('header'),
|
|
255
|
+
*
|
|
256
|
+
* article: () =>
|
|
257
|
+
* PageElement.located(By.css('article')).describedAs('article'),
|
|
258
|
+
* }
|
|
259
|
+
*
|
|
260
|
+
* await actorCalled('Esti').attemptsTo(
|
|
261
|
+
* ExecuteScript.async(function getInnerHtml(scope) {
|
|
262
|
+
* return scope.include[0].innerHTML;
|
|
263
|
+
* `).withArguments({
|
|
264
|
+
* include: [ MyPage.article() ],
|
|
265
|
+
* exclude: [ MyPage.header() ],
|
|
266
|
+
* })
|
|
267
|
+
* )
|
|
268
|
+
* ```
|
|
269
|
+
*
|
|
270
|
+
* #### Learn more
|
|
271
|
+
* - [`LastScriptExecution.result`](https://serenity-js.org/api/web/class/LastScriptExecution/#result)
|
|
272
|
+
*
|
|
273
|
+
* @param script
|
|
274
|
+
* The script to be executed
|
|
275
|
+
*/
|
|
276
|
+
static sync(script) {
|
|
277
|
+
return new ExecuteSynchronousScript(`#actor executes a synchronous script`, script);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Allows for a script to be executed to be parametrised.
|
|
282
|
+
*
|
|
283
|
+
* ## Learn more
|
|
284
|
+
* - [`ExecuteScript`](https://serenity-js.org/api/web/class/ExecuteScript/)
|
|
285
|
+
*
|
|
286
|
+
* @group Activities
|
|
287
|
+
*/
|
|
288
|
+
export class ExecuteScriptWithArguments extends Interaction {
|
|
289
|
+
script;
|
|
290
|
+
args;
|
|
291
|
+
constructor(description, script, args = []) {
|
|
292
|
+
super(description, Interaction.callerLocation(5));
|
|
293
|
+
this.script = script;
|
|
294
|
+
this.args = args;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* @inheritDoc
|
|
298
|
+
*/
|
|
299
|
+
async performAs(actor) {
|
|
300
|
+
const args = await asyncMap(this.args, arg => actor.answer(arg));
|
|
301
|
+
await this.executeAs(actor, args);
|
|
302
|
+
actor.collect(TextData.fromJSON({
|
|
303
|
+
contentType: 'text/javascript;charset=UTF-8',
|
|
304
|
+
data: this.script.toString(),
|
|
305
|
+
}), new Name('Script source'));
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* @package
|
|
310
|
+
*/
|
|
311
|
+
class ExecuteAsynchronousScript extends ExecuteScriptWithArguments {
|
|
312
|
+
withArguments(...args) {
|
|
313
|
+
return new ExecuteAsynchronousScript(args.length > 0
|
|
314
|
+
? the `#actor executes an asynchronous script with arguments: ${args}`
|
|
315
|
+
: this.toString(), this.script, args);
|
|
316
|
+
}
|
|
317
|
+
async executeAs(actor, args) {
|
|
318
|
+
const page = await BrowseTheWeb.as(actor).currentPage();
|
|
319
|
+
return page.executeAsyncScript(this.script, ...args); // todo: fix types
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* @package
|
|
324
|
+
*
|
|
325
|
+
* https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html
|
|
326
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement
|
|
327
|
+
*/
|
|
328
|
+
class ExecuteScriptFromUrl extends Interaction {
|
|
329
|
+
sourceUrl;
|
|
330
|
+
constructor(sourceUrl) {
|
|
331
|
+
super(the `#actor executes a script from ${sourceUrl}`);
|
|
332
|
+
this.sourceUrl = sourceUrl;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* @inheritDoc
|
|
336
|
+
*/
|
|
337
|
+
async performAs(actor) {
|
|
338
|
+
const page = await BrowseTheWeb.as(actor).currentPage();
|
|
339
|
+
const sourceUrl = await actor.answer(this.sourceUrl);
|
|
340
|
+
return page.executeAsyncScript(
|
|
341
|
+
/* c8 ignore start */
|
|
342
|
+
function executeScriptFromUrl(sourceUrl, callback) {
|
|
343
|
+
const alreadyLoadedScripts = Array.prototype.slice
|
|
344
|
+
.call(document.querySelectorAll('script'))
|
|
345
|
+
.map(script => script.src);
|
|
346
|
+
if (~alreadyLoadedScripts.indexOf(sourceUrl)) {
|
|
347
|
+
return callback('Script from ' + sourceUrl + ' has already been loaded');
|
|
348
|
+
}
|
|
349
|
+
const script = document.createElement('script');
|
|
350
|
+
script.addEventListener('load', function () {
|
|
351
|
+
callback();
|
|
352
|
+
});
|
|
353
|
+
script.addEventListener('error', function () {
|
|
354
|
+
return callback(`Couldn't load script from ${sourceUrl}`);
|
|
355
|
+
});
|
|
356
|
+
script.src = sourceUrl;
|
|
357
|
+
script.async = true;
|
|
358
|
+
document.head.append(script);
|
|
359
|
+
}, sourceUrl
|
|
360
|
+
/* c8 ignore stop */
|
|
361
|
+
)
|
|
362
|
+
.then(errorMessage => {
|
|
363
|
+
if (errorMessage) {
|
|
364
|
+
throw new LogicError(errorMessage);
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* @package
|
|
371
|
+
*/
|
|
372
|
+
class ExecuteSynchronousScript extends ExecuteScriptWithArguments {
|
|
373
|
+
withArguments(...args) {
|
|
374
|
+
return new ExecuteSynchronousScript(args.length > 0
|
|
375
|
+
? the `#actor executes a synchronous script with arguments: ${args}`
|
|
376
|
+
: this.toString(), this.script, args);
|
|
377
|
+
}
|
|
378
|
+
async executeAs(actor, args) {
|
|
379
|
+
const page = await BrowseTheWeb.as(actor).currentPage();
|
|
380
|
+
return page.executeScript(this.script, ...args); // todo fix type
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=ExecuteScript.js.map
|