@serenity-js/web 3.25.0 → 3.25.1
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 +11 -0
- package/README.md +1 -1
- package/lib/errors/BrowserWindowClosedError.d.ts +2 -2
- package/lib/errors/BrowserWindowClosedError.js +2 -2
- package/lib/errors/CookieMissingError.d.ts +2 -2
- package/lib/errors/CookieMissingError.js +2 -2
- package/lib/errors/ModalDialogObstructsScreenshotError.d.ts +3 -3
- package/lib/errors/ModalDialogObstructsScreenshotError.js +3 -3
- package/lib/expectations/isActive.d.ts +8 -8
- package/lib/expectations/isActive.js +8 -8
- package/lib/expectations/isClickable.d.ts +8 -8
- package/lib/expectations/isClickable.js +8 -8
- package/lib/expectations/isEnabled.d.ts +8 -8
- package/lib/expectations/isEnabled.js +8 -8
- package/lib/expectations/isSelected.d.ts +8 -8
- package/lib/expectations/isSelected.js +8 -8
- package/lib/expectations/isVisible.d.ts +8 -8
- package/lib/expectations/isVisible.js +8 -8
- package/lib/screenplay/abilities/BrowseTheWeb.d.ts +25 -23
- package/lib/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -1
- package/lib/screenplay/abilities/BrowseTheWeb.js +25 -23
- package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
- package/lib/screenplay/interactions/Clear.d.ts +7 -7
- package/lib/screenplay/interactions/Clear.js +7 -7
- package/lib/screenplay/interactions/Click.d.ts +5 -5
- package/lib/screenplay/interactions/Click.js +5 -5
- package/lib/screenplay/interactions/DoubleClick.d.ts +5 -5
- package/lib/screenplay/interactions/DoubleClick.js +5 -5
- package/lib/screenplay/interactions/Enter.d.ts +5 -5
- package/lib/screenplay/interactions/Enter.js +5 -5
- package/lib/screenplay/interactions/ExecuteScript.d.ts +19 -19
- package/lib/screenplay/interactions/ExecuteScript.js +18 -18
- package/lib/screenplay/interactions/Hover.d.ts +5 -5
- package/lib/screenplay/interactions/Hover.js +5 -5
- package/lib/screenplay/interactions/Navigate.d.ts +8 -8
- package/lib/screenplay/interactions/Navigate.js +8 -8
- package/lib/screenplay/interactions/PageElementInteraction.d.ts +3 -3
- package/lib/screenplay/interactions/PageElementInteraction.js +3 -3
- package/lib/screenplay/interactions/Press.d.ts +10 -10
- package/lib/screenplay/interactions/Press.js +10 -10
- package/lib/screenplay/interactions/RightClick.d.ts +5 -5
- package/lib/screenplay/interactions/RightClick.js +5 -5
- package/lib/screenplay/interactions/Scroll.d.ts +5 -5
- package/lib/screenplay/interactions/Scroll.js +5 -5
- package/lib/screenplay/interactions/Select.d.ts +22 -22
- package/lib/screenplay/interactions/Select.js +22 -22
- package/lib/screenplay/interactions/Switch.d.ts +16 -16
- package/lib/screenplay/interactions/Switch.js +16 -16
- package/lib/screenplay/interactions/TakeScreenshot.d.ts +11 -10
- package/lib/screenplay/interactions/TakeScreenshot.d.ts.map +1 -1
- package/lib/screenplay/interactions/TakeScreenshot.js +11 -10
- package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
- package/lib/screenplay/models/BrowserCapabilities.d.ts +1 -1
- package/lib/screenplay/models/BrowsingSession.d.ts +8 -8
- package/lib/screenplay/models/BrowsingSession.js +6 -6
- package/lib/screenplay/models/Cookie.d.ts +10 -10
- package/lib/screenplay/models/Cookie.js +9 -9
- package/lib/screenplay/models/CookieData.d.ts +4 -4
- package/lib/screenplay/models/Key.d.ts +4 -4
- package/lib/screenplay/models/Key.js +4 -4
- package/lib/screenplay/models/Locator.d.ts +8 -8
- package/lib/screenplay/models/Locator.js +8 -8
- package/lib/screenplay/models/Page.d.ts +32 -32
- package/lib/screenplay/models/Page.js +14 -14
- package/lib/screenplay/models/PageElement.d.ts +13 -13
- package/lib/screenplay/models/PageElement.js +7 -7
- package/lib/screenplay/models/PageElements.d.ts +6 -6
- package/lib/screenplay/models/PageElements.js +6 -6
- package/lib/screenplay/models/RootLocator.d.ts +5 -5
- package/lib/screenplay/models/RootLocator.js +5 -5
- package/lib/screenplay/models/SelectOption.d.ts +4 -4
- package/lib/screenplay/models/SelectOption.js +4 -4
- package/lib/screenplay/models/Switchable.d.ts +6 -6
- package/lib/screenplay/models/SwitchableOrigin.d.ts +4 -4
- package/lib/screenplay/models/dialogs/AbsentModalDialog.d.ts +2 -2
- package/lib/screenplay/models/dialogs/AbsentModalDialog.js +2 -2
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.d.ts +3 -3
- package/lib/screenplay/models/dialogs/AcceptedModalDialog.js +3 -3
- package/lib/screenplay/models/dialogs/DismissedModalDialog.d.ts +3 -3
- package/lib/screenplay/models/dialogs/DismissedModalDialog.js +3 -3
- package/lib/screenplay/models/dialogs/ModalDialog.d.ts +12 -9
- package/lib/screenplay/models/dialogs/ModalDialog.d.ts.map +1 -1
- package/lib/screenplay/models/dialogs/ModalDialog.js +10 -7
- package/lib/screenplay/models/dialogs/ModalDialog.js.map +1 -1
- package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts +5 -5
- package/lib/screenplay/models/dialogs/ModalDialogHandler.js +5 -5
- package/lib/screenplay/models/selectors/By.d.ts +14 -14
- package/lib/screenplay/models/selectors/By.js +14 -14
- package/lib/screenplay/models/selectors/ByCss.d.ts +2 -2
- package/lib/screenplay/models/selectors/ByCss.js +2 -2
- package/lib/screenplay/models/selectors/ByCssContainingText.d.ts +2 -2
- package/lib/screenplay/models/selectors/ByCssContainingText.js +2 -2
- package/lib/screenplay/models/selectors/ByDeepCss.d.ts +2 -2
- package/lib/screenplay/models/selectors/ByDeepCss.js +2 -2
- package/lib/screenplay/models/selectors/ById.d.ts +2 -2
- package/lib/screenplay/models/selectors/ById.js +2 -2
- package/lib/screenplay/models/selectors/ByTagName.d.ts +2 -2
- package/lib/screenplay/models/selectors/ByTagName.js +2 -2
- package/lib/screenplay/models/selectors/ByXPath.d.ts +2 -2
- package/lib/screenplay/models/selectors/ByXPath.js +2 -2
- package/lib/screenplay/models/selectors/Selector.d.ts +1 -1
- package/lib/screenplay/models/selectors/Selector.js +1 -1
- package/lib/screenplay/questions/Attribute.d.ts +13 -13
- package/lib/screenplay/questions/Attribute.js +13 -13
- package/lib/screenplay/questions/ComputedStyle.d.ts +16 -16
- package/lib/screenplay/questions/ComputedStyle.js +16 -16
- package/lib/screenplay/questions/CssClasses.d.ts +13 -13
- package/lib/screenplay/questions/CssClasses.js +13 -13
- package/lib/screenplay/questions/LastScriptExecution.d.ts +7 -7
- package/lib/screenplay/questions/LastScriptExecution.js +7 -7
- package/lib/screenplay/questions/Selected.d.ts +17 -17
- package/lib/screenplay/questions/Selected.js +17 -17
- package/lib/screenplay/questions/Text.d.ts +18 -18
- package/lib/screenplay/questions/Text.js +14 -14
- package/lib/screenplay/questions/Value.d.ts +12 -12
- package/lib/screenplay/questions/Value.js +12 -12
- package/lib/stage/crew/photographer/Photographer.d.ts +18 -17
- package/lib/stage/crew/photographer/Photographer.d.ts.map +1 -1
- package/lib/stage/crew/photographer/Photographer.js +18 -17
- package/lib/stage/crew/photographer/Photographer.js.map +1 -1
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +6 -6
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +6 -6
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +3 -3
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +3 -3
- package/package.json +4 -4
- package/src/errors/BrowserWindowClosedError.ts +2 -2
- package/src/errors/CookieMissingError.ts +2 -2
- package/src/errors/ModalDialogObstructsScreenshotError.ts +3 -3
- package/src/expectations/isActive.ts +8 -8
- package/src/expectations/isClickable.ts +8 -8
- package/src/expectations/isEnabled.ts +8 -8
- package/src/expectations/isSelected.ts +8 -8
- package/src/expectations/isVisible.ts +8 -8
- package/src/screenplay/abilities/BrowseTheWeb.ts +25 -23
- package/src/screenplay/interactions/Clear.ts +7 -7
- package/src/screenplay/interactions/Click.ts +5 -5
- package/src/screenplay/interactions/DoubleClick.ts +5 -5
- package/src/screenplay/interactions/Enter.ts +5 -5
- package/src/screenplay/interactions/ExecuteScript.ts +19 -19
- package/src/screenplay/interactions/Hover.ts +5 -5
- package/src/screenplay/interactions/Navigate.ts +8 -8
- package/src/screenplay/interactions/PageElementInteraction.ts +3 -3
- package/src/screenplay/interactions/Press.ts +10 -10
- package/src/screenplay/interactions/RightClick.ts +5 -5
- package/src/screenplay/interactions/Scroll.ts +5 -5
- package/src/screenplay/interactions/Select.ts +22 -22
- package/src/screenplay/interactions/Switch.ts +16 -16
- package/src/screenplay/interactions/TakeScreenshot.ts +11 -10
- package/src/screenplay/models/BrowserCapabilities.ts +1 -1
- package/src/screenplay/models/BrowsingSession.ts +8 -8
- package/src/screenplay/models/Cookie.ts +10 -10
- package/src/screenplay/models/CookieData.ts +4 -4
- package/src/screenplay/models/Key.ts +4 -4
- package/src/screenplay/models/Locator.ts +8 -8
- package/src/screenplay/models/Page.ts +32 -32
- package/src/screenplay/models/PageElement.ts +13 -13
- package/src/screenplay/models/PageElements.ts +6 -6
- package/src/screenplay/models/RootLocator.ts +5 -5
- package/src/screenplay/models/SelectOption.ts +4 -4
- package/src/screenplay/models/Switchable.ts +6 -6
- package/src/screenplay/models/SwitchableOrigin.ts +4 -4
- package/src/screenplay/models/dialogs/AbsentModalDialog.ts +2 -2
- package/src/screenplay/models/dialogs/AcceptedModalDialog.ts +3 -3
- package/src/screenplay/models/dialogs/DismissedModalDialog.ts +3 -3
- package/src/screenplay/models/dialogs/ModalDialog.ts +12 -9
- package/src/screenplay/models/dialogs/ModalDialogHandler.ts +5 -5
- package/src/screenplay/models/selectors/By.ts +14 -14
- package/src/screenplay/models/selectors/ByCss.ts +2 -2
- package/src/screenplay/models/selectors/ByCssContainingText.ts +2 -2
- package/src/screenplay/models/selectors/ByDeepCss.ts +2 -2
- package/src/screenplay/models/selectors/ById.ts +2 -2
- package/src/screenplay/models/selectors/ByTagName.ts +2 -2
- package/src/screenplay/models/selectors/ByXPath.ts +2 -2
- package/src/screenplay/models/selectors/Selector.ts +1 -1
- package/src/screenplay/questions/Attribute.ts +13 -13
- package/src/screenplay/questions/ComputedStyle.ts +16 -16
- package/src/screenplay/questions/CssClasses.ts +13 -13
- package/src/screenplay/questions/LastScriptExecution.ts +7 -7
- package/src/screenplay/questions/Selected.ts +17 -17
- package/src/screenplay/questions/Text.ts +18 -18
- package/src/screenplay/questions/Value.ts +12 -12
- package/src/stage/crew/photographer/Photographer.ts +18 -17
- package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +6 -6
- package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +3 -3
- package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +3 -3
- package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +3 -3
|
@@ -5,10 +5,10 @@ import { TinyType } from 'tiny-types';
|
|
|
5
5
|
*
|
|
6
6
|
* ## Learn more
|
|
7
7
|
*
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
10
|
-
* -
|
|
11
|
-
* -
|
|
8
|
+
* - [`Select`](https://serenity-js.org/api/web/class/Select/)
|
|
9
|
+
* - [`Selected`](https://serenity-js.org/api/web/class/Selected/)
|
|
10
|
+
* - [`PageElement.selectOptions`](https://serenity-js.org/api/web/class/PageElement/#selectOptions)
|
|
11
|
+
* - [`PageElement.selectedOptions`](https://serenity-js.org/api/web/class/PageElement/#selectedOptions)
|
|
12
12
|
*
|
|
13
13
|
* @group Models
|
|
14
14
|
*/
|
|
@@ -8,10 +8,10 @@ const tiny_types_1 = require("tiny-types");
|
|
|
8
8
|
*
|
|
9
9
|
* ## Learn more
|
|
10
10
|
*
|
|
11
|
-
* -
|
|
12
|
-
* -
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
11
|
+
* - [`Select`](https://serenity-js.org/api/web/class/Select/)
|
|
12
|
+
* - [`Selected`](https://serenity-js.org/api/web/class/Selected/)
|
|
13
|
+
* - [`PageElement.selectOptions`](https://serenity-js.org/api/web/class/PageElement/#selectOptions)
|
|
14
|
+
* - [`PageElement.selectedOptions`](https://serenity-js.org/api/web/class/PageElement/#selectedOptions)
|
|
15
15
|
*
|
|
16
16
|
* @group Models
|
|
17
17
|
*/
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import type { SwitchableOrigin } from './SwitchableOrigin';
|
|
2
2
|
/**
|
|
3
3
|
* Describes a Serenity/JS model object that can be switched _to_ and switched back _from_
|
|
4
|
-
* using the
|
|
4
|
+
* using the [task](https://serenity-js.org/api/core/class/Task/) to [`Switch`](https://serenity-js.org/api/web/class/Switch/).
|
|
5
5
|
*
|
|
6
|
-
* Examples of switchable models include a
|
|
6
|
+
* Examples of switchable models include a [`Page`](https://serenity-js.org/api/web/class/Page/) and [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
|
|
7
7
|
*
|
|
8
8
|
* ## Learn more
|
|
9
|
-
* -
|
|
10
|
-
* -
|
|
11
|
-
* -
|
|
9
|
+
* - [`Page`](https://serenity-js.org/api/web/class/Page/)
|
|
10
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElement/)
|
|
11
|
+
* - [`Switch`](https://serenity-js.org/api/web/class/Switch/)
|
|
12
12
|
*
|
|
13
13
|
* @group Models
|
|
14
14
|
*/
|
|
15
15
|
export interface Switchable {
|
|
16
16
|
/**
|
|
17
17
|
* Switches the context to the object implementing this interface
|
|
18
|
-
* and returns
|
|
18
|
+
* and returns [`SwitchableOrigin`](https://serenity-js.org/api/web/interface/SwitchableOrigin/) that allows for the context to be switched
|
|
19
19
|
* back when needed.
|
|
20
20
|
*/
|
|
21
21
|
switchTo(): Promise<SwitchableOrigin>;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Enables the
|
|
2
|
+
* Enables the [`Task`](https://serenity-js.org/api/core/class/Task/) to [`Switch`](https://serenity-js.org/api/web/class/Switch/) to perform a sequence of activities
|
|
3
3
|
* and switch back to the original context afterwards.
|
|
4
4
|
*
|
|
5
5
|
* ## Learn more
|
|
6
6
|
*
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
7
|
+
* - [`Switch`](https://serenity-js.org/api/web/class/Switch/)
|
|
8
|
+
* - [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/)
|
|
9
9
|
*
|
|
10
10
|
* @group Models
|
|
11
11
|
*/
|
|
12
12
|
export interface SwitchableOrigin {
|
|
13
13
|
/**
|
|
14
|
-
* Switches the context back to the original
|
|
14
|
+
* Switches the context back to the original [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/)
|
|
15
15
|
*/
|
|
16
16
|
switchBack(): Promise<void>;
|
|
17
17
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ModalDialog } from './ModalDialog';
|
|
2
2
|
/**
|
|
3
3
|
* `AbsentModalDialog` is a [null object](https://en.wikipedia.org/wiki/Null_object_pattern)
|
|
4
|
-
* representing a
|
|
4
|
+
* representing a [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) that hasn't appeared yet.
|
|
5
5
|
*
|
|
6
6
|
* ## Learn more
|
|
7
|
-
* -
|
|
7
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
8
8
|
*
|
|
9
9
|
* @group Models
|
|
10
10
|
*/
|
|
@@ -5,10 +5,10 @@ const core_1 = require("@serenity-js/core");
|
|
|
5
5
|
const ModalDialog_1 = require("./ModalDialog");
|
|
6
6
|
/**
|
|
7
7
|
* `AbsentModalDialog` is a [null object](https://en.wikipedia.org/wiki/Null_object_pattern)
|
|
8
|
-
* representing a
|
|
8
|
+
* representing a [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) that hasn't appeared yet.
|
|
9
9
|
*
|
|
10
10
|
* ## Learn more
|
|
11
|
-
* -
|
|
11
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
12
12
|
*
|
|
13
13
|
* @group Models
|
|
14
14
|
*/
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ModalDialog } from './ModalDialog';
|
|
2
2
|
/**
|
|
3
|
-
* `AcceptedModalDialog` represents a
|
|
4
|
-
* via
|
|
3
|
+
* `AcceptedModalDialog` represents a [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) that has been accepted
|
|
4
|
+
* via [`ModalDialog.acceptNext`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNext).
|
|
5
5
|
*
|
|
6
6
|
* ## Learn more
|
|
7
|
-
* -
|
|
7
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
8
8
|
*
|
|
9
9
|
* @group Models
|
|
10
10
|
*/
|
|
@@ -4,11 +4,11 @@ exports.AcceptedModalDialog = void 0;
|
|
|
4
4
|
const tiny_types_1 = require("tiny-types");
|
|
5
5
|
const ModalDialog_1 = require("./ModalDialog");
|
|
6
6
|
/**
|
|
7
|
-
* `AcceptedModalDialog` represents a
|
|
8
|
-
* via
|
|
7
|
+
* `AcceptedModalDialog` represents a [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) that has been accepted
|
|
8
|
+
* via [`ModalDialog.acceptNext`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNext).
|
|
9
9
|
*
|
|
10
10
|
* ## Learn more
|
|
11
|
-
* -
|
|
11
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
12
12
|
*
|
|
13
13
|
* @group Models
|
|
14
14
|
*/
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ModalDialog } from './ModalDialog';
|
|
2
2
|
/**
|
|
3
|
-
* `DismissedModalDialog` represents a
|
|
4
|
-
* via
|
|
3
|
+
* `DismissedModalDialog` represents a [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) that has been dismissed
|
|
4
|
+
* via [`ModalDialog.dismissNext`](https://serenity-js.org/api/web/class/ModalDialog/#dismissNext).
|
|
5
5
|
*
|
|
6
6
|
* ## Learn more
|
|
7
|
-
* -
|
|
7
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
8
8
|
*
|
|
9
9
|
* @group Models
|
|
10
10
|
*/
|
|
@@ -4,11 +4,11 @@ exports.DismissedModalDialog = void 0;
|
|
|
4
4
|
const tiny_types_1 = require("tiny-types");
|
|
5
5
|
const ModalDialog_1 = require("./ModalDialog");
|
|
6
6
|
/**
|
|
7
|
-
* `DismissedModalDialog` represents a
|
|
8
|
-
* via
|
|
7
|
+
* `DismissedModalDialog` represents a [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) that has been dismissed
|
|
8
|
+
* via [`ModalDialog.dismissNext`](https://serenity-js.org/api/web/class/ModalDialog/#dismissNext).
|
|
9
9
|
*
|
|
10
10
|
* ## Learn more
|
|
11
|
-
* -
|
|
11
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
12
12
|
*
|
|
13
13
|
* @group Models
|
|
14
14
|
*/
|
|
@@ -10,7 +10,10 @@ import type { Answerable, Interaction, Optional, Question, QuestionAdapter } fro
|
|
|
10
10
|
* consistent across the various Web integration tools (such as Playwright, Puppeteer,
|
|
11
11
|
* WebdriverIO or Selenium), Serenity/JS works as follows:
|
|
12
12
|
* - Serenity/JS dismisses any modal dialogs by default and stores their message so that it can be asserted on.
|
|
13
|
-
* - This behaviour can be changed by invoking
|
|
13
|
+
* - This behaviour can be changed by invoking [`ModalDialog.acceptNext`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNext),
|
|
14
|
+
* [`ModalDialog.acceptNextWithValue`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNextWithValue),
|
|
15
|
+
* or [`ModalDialog.dismissNext`](https://serenity-js.org/api/web/class/ModalDialog/#dismissNext)
|
|
16
|
+
* before the dialog is triggered, as per the below examples.
|
|
14
17
|
* - Serenity/JS also allows you to `Wait.until(ModalDialog, isPresent())` so that you can synchronise your tests
|
|
15
18
|
* with modal dialogs that appear after a delay.
|
|
16
19
|
*
|
|
@@ -89,7 +92,7 @@ import type { Answerable, Interaction, Optional, Question, QuestionAdapter } fro
|
|
|
89
92
|
* ```
|
|
90
93
|
*
|
|
91
94
|
* ## Learn more
|
|
92
|
-
* -
|
|
95
|
+
* - [`Optional`](https://serenity-js.org/api/core/interface/Optional/)
|
|
93
96
|
*
|
|
94
97
|
* @group Models
|
|
95
98
|
*/
|
|
@@ -118,35 +121,35 @@ export declare abstract class ModalDialog implements Optional {
|
|
|
118
121
|
*/
|
|
119
122
|
static isPresent(): Question<Promise<boolean>>;
|
|
120
123
|
/**
|
|
121
|
-
* Produces an
|
|
124
|
+
* Produces an [interaction](https://serenity-js.org/api/core/class/Interaction/) that invokes [`ModalDialog.acceptNext`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNext).
|
|
122
125
|
*/
|
|
123
126
|
static acceptNext(): Interaction;
|
|
124
127
|
/**
|
|
125
|
-
* Produces an
|
|
128
|
+
* Produces an [interaction](https://serenity-js.org/api/core/class/Interaction/) that invokes [`ModalDialog.acceptNextWithValue`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNextWithValue).
|
|
126
129
|
*
|
|
127
130
|
* @param value
|
|
128
131
|
*/
|
|
129
132
|
static acceptNextWithValue(value: Answerable<string | number>): Interaction;
|
|
130
133
|
/**
|
|
131
|
-
* Produces an
|
|
134
|
+
* Produces an [interaction](https://serenity-js.org/api/core/class/Interaction/) that invokes [`ModalDialog.dismissNext`](https://serenity-js.org/api/web/class/ModalDialog/#dismissNext).
|
|
132
135
|
*/
|
|
133
136
|
static dismissNext(): Interaction;
|
|
134
137
|
/**
|
|
135
|
-
*
|
|
138
|
+
* [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to [`ModalDialog.message`](https://serenity-js.org/api/web/class/ModalDialog/#message) for the current [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
136
139
|
*/
|
|
137
140
|
static lastDialogMessage(): QuestionAdapter<string>;
|
|
138
141
|
/**
|
|
139
|
-
*
|
|
142
|
+
* [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to [`ModalDialog.state`](https://serenity-js.org/api/web/class/ModalDialog/#state) for the current [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
140
143
|
*/
|
|
141
144
|
static lastDialogState(): QuestionAdapter<string>;
|
|
142
145
|
/**
|
|
143
146
|
* Returns the message of the last modal dialog handled,
|
|
144
|
-
* or rejects the promise with a
|
|
147
|
+
* or rejects the promise with a [`LogicError`](https://serenity-js.org/api/core/class/LogicError/)
|
|
145
148
|
* when no modal dialogs have been observed yet.
|
|
146
149
|
*
|
|
147
150
|
* @returns
|
|
148
151
|
* Message of the last handled dialog, or a `Promise`
|
|
149
|
-
* rejected with a
|
|
152
|
+
* rejected with a [`LogicError`](https://serenity-js.org/api/core/class/LogicError/)
|
|
150
153
|
* when no dialog has been handled yet.
|
|
151
154
|
*/
|
|
152
155
|
abstract message(): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalDialog.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/ModalDialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKtG
|
|
1
|
+
{"version":3,"file":"ModalDialog.d.ts","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/ModalDialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKtG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,8BAAsB,WAAY,YAAW,QAAQ;IAEjD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAI9C;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,WAAW;IAKhC;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,WAAW;IAK3E;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,WAAW;IAKjC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC,MAAM,CAAC;IAKnD;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC;IAKjD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAEnC;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAEtC;;;OAGG;IACH,KAAK,IAAI,MAAM;CAKlB"}
|
|
@@ -14,7 +14,10 @@ const Page_1 = require("../Page");
|
|
|
14
14
|
* consistent across the various Web integration tools (such as Playwright, Puppeteer,
|
|
15
15
|
* WebdriverIO or Selenium), Serenity/JS works as follows:
|
|
16
16
|
* - Serenity/JS dismisses any modal dialogs by default and stores their message so that it can be asserted on.
|
|
17
|
-
* - This behaviour can be changed by invoking
|
|
17
|
+
* - This behaviour can be changed by invoking [`ModalDialog.acceptNext`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNext),
|
|
18
|
+
* [`ModalDialog.acceptNextWithValue`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNextWithValue),
|
|
19
|
+
* or [`ModalDialog.dismissNext`](https://serenity-js.org/api/web/class/ModalDialog/#dismissNext)
|
|
20
|
+
* before the dialog is triggered, as per the below examples.
|
|
18
21
|
* - Serenity/JS also allows you to `Wait.until(ModalDialog, isPresent())` so that you can synchronise your tests
|
|
19
22
|
* with modal dialogs that appear after a delay.
|
|
20
23
|
*
|
|
@@ -93,7 +96,7 @@ const Page_1 = require("../Page");
|
|
|
93
96
|
* ```
|
|
94
97
|
*
|
|
95
98
|
* ## Learn more
|
|
96
|
-
* -
|
|
99
|
+
* - [`Optional`](https://serenity-js.org/api/core/interface/Optional/)
|
|
97
100
|
*
|
|
98
101
|
* @group Models
|
|
99
102
|
*/
|
|
@@ -124,14 +127,14 @@ class ModalDialog {
|
|
|
124
127
|
return Page_1.Page.current().modalDialog().last().isPresent();
|
|
125
128
|
}
|
|
126
129
|
/**
|
|
127
|
-
* Produces an
|
|
130
|
+
* Produces an [interaction](https://serenity-js.org/api/core/class/Interaction/) that invokes [`ModalDialog.acceptNext`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNext).
|
|
128
131
|
*/
|
|
129
132
|
static acceptNext() {
|
|
130
133
|
return Page_1.Page.current().modalDialog().acceptNext()
|
|
131
134
|
.describedAs('#actor accepts next modal dialog window');
|
|
132
135
|
}
|
|
133
136
|
/**
|
|
134
|
-
* Produces an
|
|
137
|
+
* Produces an [interaction](https://serenity-js.org/api/core/class/Interaction/) that invokes [`ModalDialog.acceptNextWithValue`](https://serenity-js.org/api/web/class/ModalDialog/#acceptNextWithValue).
|
|
135
138
|
*
|
|
136
139
|
* @param value
|
|
137
140
|
*/
|
|
@@ -140,21 +143,21 @@ class ModalDialog {
|
|
|
140
143
|
.describedAs((0, core_1.the) `#actor accepts next modal dialog window with value ${value}`);
|
|
141
144
|
}
|
|
142
145
|
/**
|
|
143
|
-
* Produces an
|
|
146
|
+
* Produces an [interaction](https://serenity-js.org/api/core/class/Interaction/) that invokes [`ModalDialog.dismissNext`](https://serenity-js.org/api/web/class/ModalDialog/#dismissNext).
|
|
144
147
|
*/
|
|
145
148
|
static dismissNext() {
|
|
146
149
|
return Page_1.Page.current().modalDialog().dismissNext()
|
|
147
150
|
.describedAs((0, core_1.the) `#actor dismisses next modal dialog window`);
|
|
148
151
|
}
|
|
149
152
|
/**
|
|
150
|
-
*
|
|
153
|
+
* [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to [`ModalDialog.message`](https://serenity-js.org/api/web/class/ModalDialog/#message) for the current [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
151
154
|
*/
|
|
152
155
|
static lastDialogMessage() {
|
|
153
156
|
return Page_1.Page.current().modalDialog().last().message()
|
|
154
157
|
.describedAs(`last dialog message`);
|
|
155
158
|
}
|
|
156
159
|
/**
|
|
157
|
-
*
|
|
160
|
+
* [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to [`ModalDialog.state`](https://serenity-js.org/api/web/class/ModalDialog/#state) for the current [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
158
161
|
*/
|
|
159
162
|
static lastDialogState() {
|
|
160
163
|
return Page_1.Page.current().modalDialog().last().state()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalDialog.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/ModalDialog.ts"],"names":[],"mappings":";;;AACA,4CAAwC;AAExC,kCAA+B;AAE/B
|
|
1
|
+
{"version":3,"file":"ModalDialog.js","sourceRoot":"","sources":["../../../../src/screenplay/models/dialogs/ModalDialog.ts"],"names":[],"mappings":";;;AACA,4CAAwC;AAExC,kCAA+B;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,MAAsB,WAAW;IAE7B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,SAAS;QACZ,OAAO,WAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU;QACb,OAAO,WAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE;aAC3C,WAAW,CAAC,yCAAyC,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAkC;QACzD,OAAO,WAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC;aACzD,WAAW,CAAC,IAAA,UAAG,EAAA,sDAAuD,KAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW;QACd,OAAO,WAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE;aAC5C,WAAW,CAAC,IAAA,UAAG,EAAA,2CAA2C,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACpB,OAAO,WAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;aAC/C,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe;QAClB,OAAO,WAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;aAC7C,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IAwBD;;;OAGG;IACH,KAAK;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI;aACvB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;aAC1B,WAAW,EAAE,CAAC;IACvB,CAAC;CACJ;AArGD,kCAqGC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { ModalDialog } from './ModalDialog';
|
|
2
2
|
/**
|
|
3
|
-
* Represent the strategy to use with any upcoming
|
|
3
|
+
* Represent the strategy to use with any upcoming [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) windows.
|
|
4
4
|
*
|
|
5
5
|
* ## Learn more
|
|
6
6
|
*
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
7
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
8
|
+
* - [`Page.modalDialog`](https://serenity-js.org/api/web/class/Page/#modalDialog)
|
|
9
9
|
*
|
|
10
10
|
* @group Models
|
|
11
11
|
*/
|
|
@@ -30,8 +30,8 @@ export declare abstract class ModalDialogHandler {
|
|
|
30
30
|
*/
|
|
31
31
|
abstract reset(): Promise<void>;
|
|
32
32
|
/**
|
|
33
|
-
* Returns the most recently handled
|
|
34
|
-
* or
|
|
33
|
+
* Returns the most recently handled [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/),
|
|
34
|
+
* or [`AbsentModalDialog`](https://serenity-js.org/api/web/class/AbsentModalDialog/) when no dialogs have been handled yet.
|
|
35
35
|
*/
|
|
36
36
|
last(): Promise<ModalDialog>;
|
|
37
37
|
}
|
|
@@ -4,12 +4,12 @@ exports.ModalDialogHandler = void 0;
|
|
|
4
4
|
const tiny_types_1 = require("tiny-types");
|
|
5
5
|
const AbsentModalDialog_1 = require("./AbsentModalDialog");
|
|
6
6
|
/**
|
|
7
|
-
* Represent the strategy to use with any upcoming
|
|
7
|
+
* Represent the strategy to use with any upcoming [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/) windows.
|
|
8
8
|
*
|
|
9
9
|
* ## Learn more
|
|
10
10
|
*
|
|
11
|
-
* -
|
|
12
|
-
* -
|
|
11
|
+
* - [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/)
|
|
12
|
+
* - [`Page.modalDialog`](https://serenity-js.org/api/web/class/Page/#modalDialog)
|
|
13
13
|
*
|
|
14
14
|
* @group Models
|
|
15
15
|
*/
|
|
@@ -20,8 +20,8 @@ class ModalDialogHandler {
|
|
|
20
20
|
(0, tiny_types_1.ensure)('modalDialog', modalDialog, (0, tiny_types_1.isDefined)());
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
* Returns the most recently handled
|
|
24
|
-
* or
|
|
23
|
+
* Returns the most recently handled [`ModalDialog`](https://serenity-js.org/api/web/class/ModalDialog/),
|
|
24
|
+
* or [`AbsentModalDialog`](https://serenity-js.org/api/web/class/AbsentModalDialog/) when no dialogs have been handled yet.
|
|
25
25
|
*/
|
|
26
26
|
async last() {
|
|
27
27
|
return this.modalDialog;
|
|
@@ -6,8 +6,8 @@ import { ById } from './ById';
|
|
|
6
6
|
import { ByTagName } from './ByTagName';
|
|
7
7
|
import { ByXPath } from './ByXPath';
|
|
8
8
|
/**
|
|
9
|
-
* `By` produces a
|
|
10
|
-
* Selectors can be defined using a static value or a
|
|
9
|
+
* `By` produces a [`Selector`](https://serenity-js.org/api/web/class/Selector/) used to locate a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) or [`PageElement`](https://serenity-js.org/api/web/class/PageElements/) on a web page.
|
|
10
|
+
* Selectors can be defined using a static value or a [`Question`](https://serenity-js.org/api/core/class/Question/) to be resolved at runtime.
|
|
11
11
|
*
|
|
12
12
|
* ### Defining a selector using a static value
|
|
13
13
|
*
|
|
@@ -27,11 +27,11 @@ import { ByXPath } from './ByXPath';
|
|
|
27
27
|
*
|
|
28
28
|
* ### Defining a selector using a Question
|
|
29
29
|
*
|
|
30
|
-
* Each method on this class accepts an
|
|
30
|
+
* Each method on this class accepts an [`Answerable`](https://serenity-js.org/api/core/#Answerable) to allow for dynamic resolution of the selector.
|
|
31
31
|
* This can be useful when the selector is not known at the time of writing the test, or when the selector
|
|
32
32
|
* needs to be calculated based on the state of the system under test.
|
|
33
33
|
*
|
|
34
|
-
* The example below demonstrates how to use
|
|
34
|
+
* The example below demonstrates how to use [`q`](https://serenity-js.org/api/core/function/q/) to define a selector that includes a dynamic value.
|
|
35
35
|
*
|
|
36
36
|
* ```typescript
|
|
37
37
|
* import { q } from '@serenity-js/core'
|
|
@@ -46,22 +46,22 @@ import { ByXPath } from './ByXPath';
|
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* ### Learn more
|
|
49
|
-
* - [Page Element Query Language](/handbook/web-testing/page-element-query-language)
|
|
50
|
-
* -
|
|
51
|
-
* -
|
|
52
|
-
* -
|
|
49
|
+
* - [Page Element Query Language](https://serenity-js.org/handbook/web-testing/page-element-query-language)
|
|
50
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElement/)
|
|
51
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElements/)
|
|
52
|
+
* - [`q`](https://serenity-js.org/api/core/function/q/)
|
|
53
53
|
*
|
|
54
54
|
* @group Models
|
|
55
55
|
*/
|
|
56
56
|
export declare class By {
|
|
57
57
|
/**
|
|
58
|
-
* Locates a
|
|
58
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
59
59
|
*
|
|
60
60
|
* @param selector
|
|
61
61
|
*/
|
|
62
62
|
static css(selector: Answerable<string>): Question<Promise<ByCss>>;
|
|
63
63
|
/**
|
|
64
|
-
* Locates a
|
|
64
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) with a given [`innerText`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText)
|
|
65
65
|
* using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
66
66
|
*
|
|
67
67
|
* @param selector
|
|
@@ -69,26 +69,26 @@ export declare class By {
|
|
|
69
69
|
*/
|
|
70
70
|
static cssContainingText(selector: Answerable<string>, text: Answerable<string>): Question<Promise<ByCssContainingText>>;
|
|
71
71
|
/**
|
|
72
|
-
* Locates a
|
|
72
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors)
|
|
73
73
|
* capable of piercing [shadow DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM)-piercing
|
|
74
74
|
*
|
|
75
75
|
* @param selector
|
|
76
76
|
*/
|
|
77
77
|
static deepCss(selector: Answerable<string>): Question<Promise<ByCss>>;
|
|
78
78
|
/**
|
|
79
|
-
* Locates a
|
|
79
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using its [id](https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors).
|
|
80
80
|
*
|
|
81
81
|
* @param selector
|
|
82
82
|
*/
|
|
83
83
|
static id(selector: Answerable<string>): Question<Promise<ById>>;
|
|
84
84
|
/**
|
|
85
|
-
* Locates a
|
|
85
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using the name of its [HTML tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element).
|
|
86
86
|
*
|
|
87
87
|
* @param selector
|
|
88
88
|
*/
|
|
89
89
|
static tagName(selector: Answerable<string>): Question<Promise<ByTagName>>;
|
|
90
90
|
/**
|
|
91
|
-
* Locates a
|
|
91
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using an [XPath selector](https://developer.mozilla.org/en-US/docs/Web/XPath).
|
|
92
92
|
*
|
|
93
93
|
* @param selector
|
|
94
94
|
*/
|
|
@@ -9,8 +9,8 @@ const ById_1 = require("./ById");
|
|
|
9
9
|
const ByTagName_1 = require("./ByTagName");
|
|
10
10
|
const ByXPath_1 = require("./ByXPath");
|
|
11
11
|
/**
|
|
12
|
-
* `By` produces a
|
|
13
|
-
* Selectors can be defined using a static value or a
|
|
12
|
+
* `By` produces a [`Selector`](https://serenity-js.org/api/web/class/Selector/) used to locate a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) or [`PageElement`](https://serenity-js.org/api/web/class/PageElements/) on a web page.
|
|
13
|
+
* Selectors can be defined using a static value or a [`Question`](https://serenity-js.org/api/core/class/Question/) to be resolved at runtime.
|
|
14
14
|
*
|
|
15
15
|
* ### Defining a selector using a static value
|
|
16
16
|
*
|
|
@@ -30,11 +30,11 @@ const ByXPath_1 = require("./ByXPath");
|
|
|
30
30
|
*
|
|
31
31
|
* ### Defining a selector using a Question
|
|
32
32
|
*
|
|
33
|
-
* Each method on this class accepts an
|
|
33
|
+
* Each method on this class accepts an [`Answerable`](https://serenity-js.org/api/core/#Answerable) to allow for dynamic resolution of the selector.
|
|
34
34
|
* This can be useful when the selector is not known at the time of writing the test, or when the selector
|
|
35
35
|
* needs to be calculated based on the state of the system under test.
|
|
36
36
|
*
|
|
37
|
-
* The example below demonstrates how to use
|
|
37
|
+
* The example below demonstrates how to use [`q`](https://serenity-js.org/api/core/function/q/) to define a selector that includes a dynamic value.
|
|
38
38
|
*
|
|
39
39
|
* ```typescript
|
|
40
40
|
* import { q } from '@serenity-js/core'
|
|
@@ -49,16 +49,16 @@ const ByXPath_1 = require("./ByXPath");
|
|
|
49
49
|
* ```
|
|
50
50
|
*
|
|
51
51
|
* ### Learn more
|
|
52
|
-
* - [Page Element Query Language](/handbook/web-testing/page-element-query-language)
|
|
53
|
-
* -
|
|
54
|
-
* -
|
|
55
|
-
* -
|
|
52
|
+
* - [Page Element Query Language](https://serenity-js.org/handbook/web-testing/page-element-query-language)
|
|
53
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElement/)
|
|
54
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElements/)
|
|
55
|
+
* - [`q`](https://serenity-js.org/api/core/function/q/)
|
|
56
56
|
*
|
|
57
57
|
* @group Models
|
|
58
58
|
*/
|
|
59
59
|
class By {
|
|
60
60
|
/**
|
|
61
|
-
* Locates a
|
|
61
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
62
62
|
*
|
|
63
63
|
* @param selector
|
|
64
64
|
*/
|
|
@@ -69,7 +69,7 @@ class By {
|
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* Locates a
|
|
72
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) with a given [`innerText`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText)
|
|
73
73
|
* using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
74
74
|
*
|
|
75
75
|
* @param selector
|
|
@@ -83,7 +83,7 @@ class By {
|
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
|
-
* Locates a
|
|
86
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors)
|
|
87
87
|
* capable of piercing [shadow DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM)-piercing
|
|
88
88
|
*
|
|
89
89
|
* @param selector
|
|
@@ -95,7 +95,7 @@ class By {
|
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
|
-
* Locates a
|
|
98
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using its [id](https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors).
|
|
99
99
|
*
|
|
100
100
|
* @param selector
|
|
101
101
|
*/
|
|
@@ -106,7 +106,7 @@ class By {
|
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
|
-
* Locates a
|
|
109
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using the name of its [HTML tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element).
|
|
110
110
|
*
|
|
111
111
|
* @param selector
|
|
112
112
|
*/
|
|
@@ -117,7 +117,7 @@ class By {
|
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
|
-
* Locates a
|
|
120
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using an [XPath selector](https://developer.mozilla.org/en-US/docs/Web/XPath).
|
|
121
121
|
*
|
|
122
122
|
* @param selector
|
|
123
123
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Selector } from './Selector';
|
|
2
2
|
/**
|
|
3
|
-
* Locates a
|
|
3
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
4
4
|
*
|
|
5
|
-
* **Pro tip:** Instantiate using
|
|
5
|
+
* **Pro tip:** Instantiate using [`By.css`](https://serenity-js.org/api/web/class/By/#css)
|
|
6
6
|
*
|
|
7
7
|
* @group Models
|
|
8
8
|
*/
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ByCss = void 0;
|
|
4
4
|
const Selector_1 = require("./Selector");
|
|
5
5
|
/**
|
|
6
|
-
* Locates a
|
|
6
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
7
7
|
*
|
|
8
|
-
* **Pro tip:** Instantiate using
|
|
8
|
+
* **Pro tip:** Instantiate using [`By.css`](https://serenity-js.org/api/web/class/By/#css)
|
|
9
9
|
*
|
|
10
10
|
* @group Models
|
|
11
11
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Selector } from './Selector';
|
|
2
2
|
/**
|
|
3
|
-
* Locates a
|
|
3
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) with a given [`innerText`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText)
|
|
4
4
|
* using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
5
5
|
*
|
|
6
|
-
* **Pro tip:** Instantiate using
|
|
6
|
+
* **Pro tip:** Instantiate using [`By.cssContainingText`](https://serenity-js.org/api/web/class/By/#cssContainingText)
|
|
7
7
|
*
|
|
8
8
|
* @group Models
|
|
9
9
|
*/
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ByCssContainingText = void 0;
|
|
4
4
|
const Selector_1 = require("./Selector");
|
|
5
5
|
/**
|
|
6
|
-
* Locates a
|
|
6
|
+
* Locates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) with a given [`innerText`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText)
|
|
7
7
|
* using a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
|
|
8
8
|
*
|
|
9
|
-
* **Pro tip:** Instantiate using
|
|
9
|
+
* **Pro tip:** Instantiate using [`By.cssContainingText`](https://serenity-js.org/api/web/class/By/#cssContainingText)
|
|
10
10
|
*
|
|
11
11
|
* @group Models
|
|
12
12
|
*/
|