@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
|
@@ -4,17 +4,17 @@ import { Interaction, Task, the } from '@serenity-js/core';
|
|
|
4
4
|
import type { Switchable } from '../models';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Instructs an
|
|
8
|
-
* to switch the context for future activities to a
|
|
7
|
+
* 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/)
|
|
8
|
+
* to switch the context for future activities to a [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/), such as a [`Page`](https://serenity-js.org/api/web/class/Page/) or a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
|
|
9
9
|
*
|
|
10
|
-
* Please note that when the
|
|
11
|
-
* using
|
|
10
|
+
* Please note that when the [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) implementing [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/) represents an [`iframe`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe),
|
|
11
|
+
* using [`Switch`](https://serenity-js.org/api/web/class/Switch/) will result in switching the top-level browsing context to that [`iframe`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe).
|
|
12
12
|
*
|
|
13
|
-
* When the
|
|
14
|
-
* using
|
|
13
|
+
* When the [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) represents any other [HTMLElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement),
|
|
14
|
+
* using [`Switch`](https://serenity-js.org/api/web/class/Switch/) sets [`HTMLElement#focus`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus)
|
|
15
15
|
* on the specified element. Assuming it can be focused.
|
|
16
16
|
*
|
|
17
|
-
* **Note:** The focused element is the element which will receive keyboard
|
|
17
|
+
* **Note:** The focused element is the element which will receive keyboard [press](https://serenity-js.org/api/web/class/Press/) events by default.
|
|
18
18
|
*
|
|
19
19
|
* ## Perform activities in the context of an iframe
|
|
20
20
|
*
|
|
@@ -97,18 +97,18 @@ import type { Switchable } from '../models';
|
|
|
97
97
|
*
|
|
98
98
|
* ## Learn more
|
|
99
99
|
*
|
|
100
|
-
* -
|
|
101
|
-
* -
|
|
102
|
-
* -
|
|
100
|
+
* - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
101
|
+
* - [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/)
|
|
102
|
+
* - [`SwitchableOrigin`](https://serenity-js.org/api/web/interface/SwitchableOrigin/)
|
|
103
103
|
*
|
|
104
104
|
* @group Activities
|
|
105
105
|
*/
|
|
106
106
|
export class Switch extends Interaction {
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
|
-
* Instructs the
|
|
110
|
-
* to switch the context for future activities to a
|
|
111
|
-
* such as a
|
|
109
|
+
* Instructs the [`Actor`](https://serenity-js.org/api/core/class/Actor/)
|
|
110
|
+
* to switch the context for future activities to a [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/),
|
|
111
|
+
* such as a [`Page`](https://serenity-js.org/api/web/class/Page/) or a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
|
|
112
112
|
*
|
|
113
113
|
* @param switchable
|
|
114
114
|
*/
|
|
@@ -121,9 +121,9 @@ export class Switch extends Interaction {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
|
-
* Instructs the
|
|
125
|
-
* to switch the context for future activities to a
|
|
126
|
-
* such as a
|
|
124
|
+
* Instructs the [`Actor`](https://serenity-js.org/api/core/class/Actor/)
|
|
125
|
+
* to switch the context for future activities to a [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/),
|
|
126
|
+
* such as a [`Page`](https://serenity-js.org/api/web/class/Page/) or a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/),
|
|
127
127
|
* perform a sequence of `activities`, and then switch the context back.
|
|
128
128
|
*
|
|
129
129
|
* @param activities
|
|
@@ -5,10 +5,12 @@ import { Name, Photo } from '@serenity-js/core/lib/model';
|
|
|
5
5
|
import { BrowseTheWeb } from '../abilities';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Instructs an
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Instructs an [actor](https://serenity-js.org/api/core/class/Actor/)
|
|
9
|
+
* who has the [ability](https://serenity-js.org/api/core/class/Ability/)
|
|
10
|
+
* to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
11
|
+
* to take a screenshot and emit an artifact,
|
|
12
|
+
* which can then be persisted by [`ArtifactArchiver`](https://serenity-js.org/api/core/class/ArtifactArchiver/)
|
|
13
|
+
* and reported by [Serenity BDD reporter](https://serenity-js.org/api/serenity-bdd).
|
|
12
14
|
*
|
|
13
15
|
* #### Taking a screenshot
|
|
14
16
|
*
|
|
@@ -25,20 +27,19 @@ import { BrowseTheWeb } from '../abilities';
|
|
|
25
27
|
*
|
|
26
28
|
* ## Learn more
|
|
27
29
|
*
|
|
28
|
-
* -
|
|
29
|
-
* -
|
|
30
|
-
* -
|
|
31
|
-
* - {@apilink ArtifactArchiver}
|
|
30
|
+
* - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
31
|
+
* - [`CollectsArtifacts`](https://serenity-js.org/api/core/interface/CollectsArtifacts/)
|
|
32
|
+
* - [`ArtifactArchiver`](https://serenity-js.org/api/core/class/ArtifactArchiver/)
|
|
32
33
|
*
|
|
33
34
|
* @group Activities
|
|
34
35
|
*/
|
|
35
36
|
export class TakeScreenshot extends Interaction {
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
|
-
* Instantiates this
|
|
39
|
+
* Instantiates this [`Interaction`](https://serenity-js.org/api/core/class/Interaction/).
|
|
39
40
|
*
|
|
40
41
|
* @param name
|
|
41
|
-
* The name to give the emitted
|
|
42
|
+
* The name to give the emitted artifact
|
|
42
43
|
*/
|
|
43
44
|
static of(name: Answerable<string>): Interaction {
|
|
44
45
|
return new TakeScreenshot(name);
|
|
@@ -27,17 +27,17 @@ export abstract class BrowsingSession<Page_Type extends Page> {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* Opens a new browser page and associates it with a
|
|
30
|
+
* Opens a new browser page and associates it with a [`Page`](https://serenity-js.org/api/web/class/Page/) object.
|
|
31
31
|
*/
|
|
32
32
|
protected abstract registerCurrentPage(): Promise<Page_Type>;
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Returns
|
|
35
|
+
* Returns [basic meta-data](https://serenity-js.org/api/web/interface/BrowserCapabilities/) about the browser associated with this browsing session.
|
|
36
36
|
*/
|
|
37
37
|
public abstract browserCapabilities(): Promise<BrowserCapabilities>;
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
-
* Returns a
|
|
40
|
+
* Returns a [`Page`](https://serenity-js.org/api/web/class/Page/) representing the currently active top-level browsing context.
|
|
41
41
|
*/
|
|
42
42
|
async currentPage(): Promise<Page_Type> {
|
|
43
43
|
if (! this.currentBrowserPage || ! await this.currentBrowserPage.isPresent()) {
|
|
@@ -48,7 +48,7 @@ export abstract class BrowsingSession<Page_Type extends Page> {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
* Registers specified
|
|
51
|
+
* Registers specified [pages](https://serenity-js.org/api/web/class/Page/) to be managed by this [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/).
|
|
52
52
|
*
|
|
53
53
|
* @param pages
|
|
54
54
|
*/
|
|
@@ -59,7 +59,7 @@ export abstract class BrowsingSession<Page_Type extends Page> {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
|
-
* Informs this
|
|
62
|
+
* Informs this [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/) that it should no longer manage [pages](https://serenity-js.org/api/web/class/Page/)
|
|
63
63
|
* identified by the given `pageIds`.
|
|
64
64
|
*
|
|
65
65
|
* @param pageIds
|
|
@@ -71,7 +71,7 @@ export abstract class BrowsingSession<Page_Type extends Page> {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
|
-
* Returns a
|
|
74
|
+
* Returns a [pages](https://serenity-js.org/api/web/class/Page/) representing all the available
|
|
75
75
|
* top-level browsing context, e.g. all the open browser tabs.
|
|
76
76
|
*/
|
|
77
77
|
async allPages(): Promise<Array<Page_Type>> {
|
|
@@ -79,14 +79,14 @@ export abstract class BrowsingSession<Page_Type extends Page> {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
/**
|
|
82
|
-
* Returns the ids of any
|
|
82
|
+
* Returns the ids of any [pages](https://serenity-js.org/api/web/class/Page/) this [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/) is aware of.
|
|
83
83
|
*/
|
|
84
84
|
registeredPageIds(): Array<CorrelationId> {
|
|
85
85
|
return Array.from(this.pages.keys());
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
/**
|
|
89
|
-
* Informs the
|
|
89
|
+
* Informs the [`BrowsingSession`](https://serenity-js.org/api/web/class/BrowsingSession/) that the "current page" has changed to `page`.
|
|
90
90
|
*
|
|
91
91
|
* Please note that different Web integration tools have a different definition of what a "current page" is.
|
|
92
92
|
* For example, Selenium or WebdriverIO use a single "focused" window that a developer
|
|
@@ -8,7 +8,7 @@ import { BrowseTheWeb } from '../abilities';
|
|
|
8
8
|
import type { CookieData } from './CookieData';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* A Screenplay Pattern-style model responsible for managing cookies available to the current
|
|
11
|
+
* A Screenplay Pattern-style model responsible for managing cookies available to the current [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
12
12
|
*
|
|
13
13
|
* ## Checking if a cookie exists
|
|
14
14
|
*
|
|
@@ -69,15 +69,15 @@ import type { CookieData } from './CookieData';
|
|
|
69
69
|
* ```
|
|
70
70
|
*
|
|
71
71
|
* ## Learn more
|
|
72
|
-
* -
|
|
73
|
-
* -
|
|
72
|
+
* - [`CookieData`](https://serenity-js.org/api/web/interface/CookieData/)
|
|
73
|
+
* - [`Page.cookie`](https://serenity-js.org/api/web/class/Page/#cookie)
|
|
74
74
|
*
|
|
75
75
|
* @group Models
|
|
76
76
|
*/
|
|
77
77
|
export abstract class Cookie implements Optional {
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
|
-
* Creates a
|
|
80
|
+
* Creates a [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to [`Cookie`](https://serenity-js.org/api/web/class/Cookie/) identified by `name`.
|
|
81
81
|
*
|
|
82
82
|
* @param name
|
|
83
83
|
*/
|
|
@@ -90,7 +90,7 @@ export abstract class Cookie implements Optional {
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
|
-
* Sets a cookie for the current
|
|
93
|
+
* Sets a cookie for the current [`Page`](https://serenity-js.org/api/web/class/Page/). Note that [`CookieData`](https://serenity-js.org/api/web/interface/CookieData/) can be either a plain-old JavaScript object, or an [`Answerable`](https://serenity-js.org/api/core/#Answerable) [`WithAnswerableProperties`](https://serenity-js.org/api/core/#WithAnswerableProperties).
|
|
94
94
|
*
|
|
95
95
|
* :::info
|
|
96
96
|
* Make sure that the actor performing this interaction is on the page that should receive the cookie.
|
|
@@ -122,7 +122,7 @@ export abstract class Cookie implements Optional {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
/**
|
|
125
|
-
* Creates an
|
|
125
|
+
* Creates an [interaction](https://serenity-js.org/api/core/class/Interaction/) to delete all cookies available to the current [`Page`](https://serenity-js.org/api/web/class/Page/)..
|
|
126
126
|
*/
|
|
127
127
|
static deleteAll(): Interaction {
|
|
128
128
|
return Interaction.where(`#actor deletes all cookies`, async actor => {
|
|
@@ -148,7 +148,7 @@ export abstract class Cookie implements Optional {
|
|
|
148
148
|
* Checks if a given cookie is set.
|
|
149
149
|
*
|
|
150
150
|
* #### Learn more
|
|
151
|
-
* -
|
|
151
|
+
* - [`Optional`](https://serenity-js.org/api/core/interface/Optional/)
|
|
152
152
|
*/
|
|
153
153
|
async isPresent(): Promise<boolean> {
|
|
154
154
|
try {
|
|
@@ -214,7 +214,7 @@ export abstract class Cookie implements Optional {
|
|
|
214
214
|
* Returns the expiry date of a given cookie
|
|
215
215
|
*
|
|
216
216
|
* #### Learn more
|
|
217
|
-
* -
|
|
217
|
+
* - [`Timestamp`](https://serenity-js.org/api/core/class/Timestamp/)
|
|
218
218
|
*/
|
|
219
219
|
async expiry(): Promise<Timestamp> {
|
|
220
220
|
const cookie = await this.lazyLoadCookie();
|
|
@@ -232,12 +232,12 @@ export abstract class Cookie implements Optional {
|
|
|
232
232
|
* This method is to be implemented by test integration tool-specific adapters.
|
|
233
233
|
*
|
|
234
234
|
* **Please note**: you don't need to implement any response caching here
|
|
235
|
-
* since it is covered by
|
|
235
|
+
* since it is covered by [`Cookie`](https://serenity-js.org/api/web/class/Cookie/).lazyLoadCookie} method.
|
|
236
236
|
*/
|
|
237
237
|
protected abstract read(): Promise<CookieData>;
|
|
238
238
|
|
|
239
239
|
/**
|
|
240
|
-
* Invokes
|
|
240
|
+
* Invokes `Cookie.read` and caches the result in memory.
|
|
241
241
|
*/
|
|
242
242
|
private async lazyLoadCookie(): Promise<CookieData> {
|
|
243
243
|
if (! this.cookie) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Timestamp } from '@serenity-js/core';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* A data structure describing a
|
|
4
|
+
* A data structure describing a [`Cookie`](https://serenity-js.org/api/web/class/Cookie/) to be set, or one that's been read.
|
|
5
5
|
*
|
|
6
6
|
* ## Learn more
|
|
7
7
|
*
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
8
|
+
* - [`Cookie`](https://serenity-js.org/api/web/class/Cookie/)
|
|
9
|
+
* - [`Page.cookie`](https://serenity-js.org/api/web/class/Page/#cookie)
|
|
10
10
|
*
|
|
11
11
|
* @group Models
|
|
12
12
|
*/
|
|
@@ -35,7 +35,7 @@ export interface CookieData {
|
|
|
35
35
|
path?: string;
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* The
|
|
38
|
+
* The [timestamp](https://serenity-js.org/api/core/class/Timestamp/) describing the point in time when this cookie expires.
|
|
39
39
|
*/
|
|
40
40
|
expiry?: Timestamp;
|
|
41
41
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Represents keyboard keys that aren't text, and that can be used with the
|
|
2
|
+
* Represents keyboard keys that aren't text, and that can be used with the [interaction](https://serenity-js.org/api/core/class/Interaction/) to [`Press`](https://serenity-js.org/api/web/class/Press/).
|
|
3
3
|
*
|
|
4
|
-
* **Note:** Modifier keys like
|
|
4
|
+
* **Note:** Modifier keys like [`Key.Shift`](https://serenity-js.org/api/web/class/Key/#Shift), [`Key.Alt`](https://serenity-js.org/api/web/class/Key/#Alt) and [`Key.Meta`](https://serenity-js.org/api/web/class/Key/#Meta) (a.k.a. "Command" on Mac) will stay pressed,
|
|
5
5
|
* so there's no need to depress them.
|
|
6
6
|
*
|
|
7
7
|
* ## Learn more
|
|
8
8
|
*
|
|
9
|
-
* -
|
|
10
|
-
* -
|
|
9
|
+
* - [`Press`](https://serenity-js.org/api/web/class/Press/)
|
|
10
|
+
* - [`Page.sendKeys`](https://serenity-js.org/api/web/class/Page/#sendKeys)
|
|
11
11
|
* - [W3C WebDriver Spec: Keyboard Actions](https://w3c.github.io/webdriver/webdriver-spec.html#keyboard-actions)
|
|
12
12
|
* - [Selenium WebDriver: Inputs](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/lib/input.js#L46)
|
|
13
13
|
* - [WebdriverIO: Constants](https://github.com/webdriverio/webdriverio/blob/main/packages/wdio-utils/src/constants.ts#L5)
|
|
@@ -7,14 +7,14 @@ import { RootLocator } from './RootLocator';
|
|
|
7
7
|
import { ByCss, ById, ByTagName, type Selector } from './selectors';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
* within the
|
|
10
|
+
* [`Locator`](https://serenity-js.org/api/web/class/Locator/) uses a [`Selector`](https://serenity-js.org/api/web/class/Selector/) to locate a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) or [`PageElement`](https://serenity-js.org/api/web/class/PageElements/)
|
|
11
|
+
* within the [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
12
12
|
*
|
|
13
13
|
* ## Learn more
|
|
14
|
-
* -
|
|
15
|
-
* -
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
14
|
+
* - [`RootLocator`](https://serenity-js.org/api/web/class/RootLocator/)
|
|
15
|
+
* - [`Page.locate`](https://serenity-js.org/api/web/class/Page/#locate)
|
|
16
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElement/)
|
|
17
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElements/)
|
|
18
18
|
*
|
|
19
19
|
* @group Models
|
|
20
20
|
*/
|
|
@@ -50,10 +50,10 @@ export abstract class Locator<Native_Element_Type, Native_Selector_Type = any>
|
|
|
50
50
|
abstract locate(child: Locator<Native_Element_Type>): Locator<Native_Element_Type>;
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
|
-
* Expresses
|
|
53
|
+
* Expresses [`ByCss`](https://serenity-js.org/api/web/class/ByCss/), [`ById`](https://serenity-js.org/api/web/class/ById/), or [`ByTagName`](https://serenity-js.org/api/web/class/ByTagName/) as a [`ByCss`](https://serenity-js.org/api/web/class/ByCss/) selector.
|
|
54
54
|
*
|
|
55
55
|
* @throws LogicError
|
|
56
|
-
* if the `selector` can't be expressed as
|
|
56
|
+
* if the `selector` can't be expressed as [`ByCss`](https://serenity-js.org/api/web/class/ByCss/)
|
|
57
57
|
*
|
|
58
58
|
* @param selector
|
|
59
59
|
* @protected
|
|
@@ -123,17 +123,17 @@ import type { SwitchableOrigin } from './SwitchableOrigin';
|
|
|
123
123
|
*
|
|
124
124
|
* ## Learn more
|
|
125
125
|
*
|
|
126
|
-
* -
|
|
127
|
-
* -
|
|
128
|
-
* -
|
|
129
|
-
* -
|
|
126
|
+
* - [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/)
|
|
127
|
+
* - [`PageElement`](https://serenity-js.org/api/web/class/PageElement/)
|
|
128
|
+
* - [`Optional`](https://serenity-js.org/api/core/interface/Optional/)
|
|
129
|
+
* - [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/)
|
|
130
130
|
*
|
|
131
131
|
* @group Models
|
|
132
132
|
*/
|
|
133
133
|
export abstract class Page<Native_Element_Type = any> implements Optional, Switchable {
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
|
-
* Creates a
|
|
136
|
+
* Creates a [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) representing the currently active [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
137
137
|
*/
|
|
138
138
|
static current(): QuestionAdapter<Page> {
|
|
139
139
|
return Question.about<Page>('current page', actor => {
|
|
@@ -142,8 +142,8 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
|
-
* Creates a
|
|
146
|
-
* meets the
|
|
145
|
+
* Creates a [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to a [`Page`](https://serenity-js.org/api/web/class/Page/) which [`Page.name`](https://serenity-js.org/api/web/class/Page/#name)
|
|
146
|
+
* meets the [expectation](https://serenity-js.org/api/core/class/Expectation/).
|
|
147
147
|
*
|
|
148
148
|
* #### Switching to a page with the desired name
|
|
149
149
|
*
|
|
@@ -172,8 +172,8 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
/**
|
|
175
|
-
* Creates a
|
|
176
|
-
* meets the
|
|
175
|
+
* Creates a [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to a [`Page`](https://serenity-js.org/api/web/class/Page/) which [`Page.title`](https://serenity-js.org/api/web/class/Page/#title)
|
|
176
|
+
* meets the [expectation](https://serenity-js.org/api/core/class/Expectation/).
|
|
177
177
|
*
|
|
178
178
|
* #### Switching to a page with the desired title
|
|
179
179
|
*
|
|
@@ -202,8 +202,8 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
/**
|
|
205
|
-
* Creates a
|
|
206
|
-
* meets the
|
|
205
|
+
* Creates a [`QuestionAdapter`](https://serenity-js.org/api/core/#QuestionAdapter) that resolves to a [`Page`](https://serenity-js.org/api/web/class/Page/) which [`Page.url`](https://serenity-js.org/api/web/class/Page/#url)
|
|
206
|
+
* meets the [expectation](https://serenity-js.org/api/core/class/Expectation/).
|
|
207
207
|
*
|
|
208
208
|
* #### Switching to a page with the desired URL
|
|
209
209
|
*
|
|
@@ -258,21 +258,21 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
/**
|
|
261
|
-
* Creates a
|
|
261
|
+
* Creates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) wrapping a native element.
|
|
262
262
|
*
|
|
263
263
|
* @param nativeElement
|
|
264
264
|
*/
|
|
265
265
|
abstract createPageElement(nativeElement: Native_Element_Type): PageElement<Native_Element_Type>;
|
|
266
266
|
|
|
267
267
|
/**
|
|
268
|
-
* Creates a
|
|
268
|
+
* Creates a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/), retrieving an element located by [`Selector`](https://serenity-js.org/api/web/class/Selector/).
|
|
269
269
|
*
|
|
270
270
|
* @param selector
|
|
271
271
|
*/
|
|
272
272
|
abstract locate(selector: Selector): PageElement<Native_Element_Type>;
|
|
273
273
|
|
|
274
274
|
/**
|
|
275
|
-
* Creates
|
|
275
|
+
* Creates [`PageElement`](https://serenity-js.org/api/web/class/PageElements/), retrieving a collection of elements located by [`Selector`](https://serenity-js.org/api/web/class/Selector/).
|
|
276
276
|
*
|
|
277
277
|
* @param selector
|
|
278
278
|
*/
|
|
@@ -296,7 +296,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
296
296
|
|
|
297
297
|
/**
|
|
298
298
|
* Causes the browser to traverse one step backward in the joint session history
|
|
299
|
-
* of the current
|
|
299
|
+
* of the current [`Page`](https://serenity-js.org/api/web/class/Page/) (the current top-level browsing context).
|
|
300
300
|
*
|
|
301
301
|
* This is equivalent to pressing the back button in the browser UI,
|
|
302
302
|
* or calling [`window.history.back`](https://developer.mozilla.org/en-US/docs/Web/API/History/back).
|
|
@@ -305,7 +305,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
305
305
|
|
|
306
306
|
/**
|
|
307
307
|
* Causes the browser to traverse one step forward in the joint session history
|
|
308
|
-
* of the current
|
|
308
|
+
* of the current [`Page`](https://serenity-js.org/api/web/class/Page/) (the current top-level browsing context).
|
|
309
309
|
*
|
|
310
310
|
* This is equivalent to pressing the back button in the browser UI,
|
|
311
311
|
* or calling [`window.history.forward`](https://developer.mozilla.org/en-US/docs/Web/API/History/forward).
|
|
@@ -313,12 +313,12 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
313
313
|
abstract navigateForward(): Promise<void>;
|
|
314
314
|
|
|
315
315
|
/**
|
|
316
|
-
* Causes the browser to reload the
|
|
316
|
+
* Causes the browser to reload the [`Page`](https://serenity-js.org/api/web/class/Page/) in the current top-level browsing context.
|
|
317
317
|
*/
|
|
318
318
|
abstract reload(): Promise<void>;
|
|
319
319
|
|
|
320
320
|
/**
|
|
321
|
-
* Send a sequence of
|
|
321
|
+
* Send a sequence of [`Key`](https://serenity-js.org/api/web/class/Key/) strokes to the active element.
|
|
322
322
|
*
|
|
323
323
|
* @param keys
|
|
324
324
|
* Keys to enter
|
|
@@ -345,7 +345,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
345
345
|
* If the script has a return value (i.e. if the script contains a `return` statement),
|
|
346
346
|
* then the following steps will be taken for resolving this functions return value:
|
|
347
347
|
*
|
|
348
|
-
* - For a
|
|
348
|
+
* - For a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/), the value will resolve to a [HTMLElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement)
|
|
349
349
|
* - `null` and `undefined` return values will resolve to `null`
|
|
350
350
|
* - `boolean`, `number`, and `string` values will resolve as is
|
|
351
351
|
* - Functions will resolve to their string representation
|
|
@@ -363,7 +363,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
363
363
|
*
|
|
364
364
|
* #### Learn more
|
|
365
365
|
* - [Selenium WebDriver: JavaScript Executor](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html#executeAsyncScript-java.lang.String-java.lang.Object...-)
|
|
366
|
-
* -
|
|
366
|
+
* - [`Page.lastScriptExecutionResult`](https://serenity-js.org/api/web/class/Page/#lastScriptExecutionResult)
|
|
367
367
|
*
|
|
368
368
|
* @param script
|
|
369
369
|
* @param args
|
|
@@ -385,7 +385,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
385
385
|
* Arrays and objects may also be used as script arguments as long as each item adheres
|
|
386
386
|
* to the types previously mentioned.
|
|
387
387
|
*
|
|
388
|
-
* Unlike executing synchronous JavaScript with
|
|
388
|
+
* Unlike executing synchronous JavaScript with [`Page.executeScript`](https://serenity-js.org/api/web/class/Page/#executeScript),
|
|
389
389
|
* scripts executed with this function must explicitly signal they are finished by invoking the provided callback.
|
|
390
390
|
*
|
|
391
391
|
* This callback will always be injected into the executed function as the last argument,
|
|
@@ -394,7 +394,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
394
394
|
* The following steps will be taken for resolving this functions return value against
|
|
395
395
|
* the first argument to the script's callback function:
|
|
396
396
|
*
|
|
397
|
-
* - For a
|
|
397
|
+
* - For a [`PageElement`](https://serenity-js.org/api/web/class/PageElement/), the value will resolve to a [HTMLElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement)
|
|
398
398
|
* - `null` and `undefined` return values will resolve to `null`
|
|
399
399
|
* - `boolean`, `number`, and `string` values will resolve as is
|
|
400
400
|
* - Functions will resolve to their string representation
|
|
@@ -423,7 +423,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
423
423
|
*
|
|
424
424
|
* #### Learn more
|
|
425
425
|
* - [Selenium WebDriver: JavaScript Executor](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html#executeAsyncScript-java.lang.String-java.lang.Object...-)
|
|
426
|
-
* -
|
|
426
|
+
* - [`Page.lastScriptExecutionResult`](https://serenity-js.org/api/web/class/Page/#lastScriptExecutionResult)
|
|
427
427
|
*
|
|
428
428
|
* @param script
|
|
429
429
|
* @param args
|
|
@@ -434,15 +434,15 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
434
434
|
): Promise<Result>;
|
|
435
435
|
|
|
436
436
|
/**
|
|
437
|
-
* Returns the last result of calling
|
|
438
|
-
* or
|
|
437
|
+
* Returns the last result of calling [`Page.executeAsyncScript`](https://serenity-js.org/api/web/class/Page/#executeAsyncScript)
|
|
438
|
+
* or [`Page.executeScript`](https://serenity-js.org/api/web/class/Page/#executeScript)
|
|
439
439
|
*/
|
|
440
440
|
abstract lastScriptExecutionResult<R = any>(): R;
|
|
441
441
|
|
|
442
442
|
/**
|
|
443
443
|
* Take a screenshot of the top-level browsing context's viewport.
|
|
444
444
|
*
|
|
445
|
-
* @throws
|
|
445
|
+
* @throws [`BrowserWindowClosedError`](https://serenity-js.org/api/web/class/BrowserWindowClosedError/)
|
|
446
446
|
* When the page you're trying to take the screenshot of has already been closed
|
|
447
447
|
*
|
|
448
448
|
* @return
|
|
@@ -451,15 +451,15 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
451
451
|
abstract takeScreenshot(): Promise<string>;
|
|
452
452
|
|
|
453
453
|
/**
|
|
454
|
-
* Retrieves a cookie identified by `name` and visible to this
|
|
454
|
+
* Retrieves a cookie identified by `name` and visible to this [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
455
455
|
*
|
|
456
456
|
* @param name
|
|
457
457
|
*/
|
|
458
458
|
abstract cookie(name: string): Promise<Cookie>;
|
|
459
459
|
|
|
460
460
|
/**
|
|
461
|
-
* Adds a single cookie with
|
|
462
|
-
* with the active
|
|
461
|
+
* Adds a single cookie with [`CookieData`](https://serenity-js.org/api/web/interface/CookieData/) to the cookie store associated
|
|
462
|
+
* with the active [`Page`](https://serenity-js.org/api/web/class/Page/)'s address.
|
|
463
463
|
*
|
|
464
464
|
* @param cookieData
|
|
465
465
|
*/
|
|
@@ -512,8 +512,8 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
512
512
|
* to the previous context when needed.
|
|
513
513
|
*
|
|
514
514
|
* ## Learn more
|
|
515
|
-
* -
|
|
516
|
-
* -
|
|
515
|
+
* - [`Switch`](https://serenity-js.org/api/web/class/Switch/)
|
|
516
|
+
* - [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/)
|
|
517
517
|
*/
|
|
518
518
|
async switchTo(): Promise<SwitchableOrigin> {
|
|
519
519
|
|
|
@@ -539,7 +539,7 @@ export abstract class Page<Native_Element_Type = any> implements Optional, Switc
|
|
|
539
539
|
abstract closeOthers(): Promise<void>;
|
|
540
540
|
|
|
541
541
|
/**
|
|
542
|
-
* Returns the
|
|
542
|
+
* Returns the [`ModalDialogHandler`](https://serenity-js.org/api/web/class/ModalDialogHandler/) for the current [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
543
543
|
*/
|
|
544
544
|
modalDialog(): ModalDialogHandler {
|
|
545
545
|
return this.modalDialogHandler;
|
|
@@ -10,13 +10,13 @@ import type { Switchable } from './Switchable';
|
|
|
10
10
|
import type { SwitchableOrigin } from './SwitchableOrigin';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Uses the
|
|
14
|
-
* a single Web element located by
|
|
13
|
+
* Uses the [actor's](https://serenity-js.org/api/core/class/Actor/) [ability](https://serenity-js.org/api/core/class/Ability/) to [`BrowseTheWeb`](https://serenity-js.org/api/web/class/BrowseTheWeb/) to identify
|
|
14
|
+
* a single Web element located by [`Selector`](https://serenity-js.org/api/web/class/Selector/).
|
|
15
15
|
*
|
|
16
16
|
* ## Learn more
|
|
17
|
-
* - [Page Element Query Language](/handbook/web-testing/page-element-query-language)
|
|
18
|
-
* -
|
|
19
|
-
* -
|
|
17
|
+
* - [Page Element Query Language](https://serenity-js.org/handbook/web-testing/page-element-query-language)
|
|
18
|
+
* - [`Optional`](https://serenity-js.org/api/core/interface/Optional/)
|
|
19
|
+
* - [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/)
|
|
20
20
|
*
|
|
21
21
|
* @group Models
|
|
22
22
|
*/
|
|
@@ -52,7 +52,7 @@ export abstract class PageElement<Native_Element_Type = any> implements Optional
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
* A static method producing a
|
|
55
|
+
* A static method producing a [`MetaQuestion`](https://serenity-js.org/api/core/interface/MetaQuestion/) that can be used with [`PageElements.eachMappedTo`](https://serenity-js.org/api/web/class/PageElements/#eachMappedTo) method
|
|
56
56
|
* to extract the HTML of each element in a collection.
|
|
57
57
|
*
|
|
58
58
|
* #### Example
|
|
@@ -98,7 +98,7 @@ export abstract class PageElement<Native_Element_Type = any> implements Optional
|
|
|
98
98
|
|
|
99
99
|
/**
|
|
100
100
|
* Traverses the element and its parents, heading toward the document root,
|
|
101
|
-
* until it finds a parent
|
|
101
|
+
* until it finds a parent [`PageElement`](https://serenity-js.org/api/web/class/PageElement/) that matches its associated CSS selector.
|
|
102
102
|
*
|
|
103
103
|
* #### Example
|
|
104
104
|
*
|
|
@@ -133,9 +133,9 @@ export abstract class PageElement<Native_Element_Type = any> implements Optional
|
|
|
133
133
|
* :::info
|
|
134
134
|
* This method relies on [Element: closest() API](https://developer.mozilla.org/en-US/docs/Web/API/Element/closest),
|
|
135
135
|
* and so is only compatible with locating parent elements specified using the following CSS selectors:
|
|
136
|
-
* -
|
|
137
|
-
* -
|
|
138
|
-
* -
|
|
136
|
+
* - [`ByCss`](https://serenity-js.org/api/web/class/ByCss/)
|
|
137
|
+
* - [`ById`](https://serenity-js.org/api/web/class/ById/)
|
|
138
|
+
* - [`ByTagName`](https://serenity-js.org/api/web/class/ByTagName/)
|
|
139
139
|
* :::
|
|
140
140
|
*
|
|
141
141
|
* @param childElement
|
|
@@ -204,8 +204,8 @@ export abstract class PageElement<Native_Element_Type = any> implements Optional
|
|
|
204
204
|
* to the previous context if needed.
|
|
205
205
|
*
|
|
206
206
|
* #### Learn more
|
|
207
|
-
* -
|
|
208
|
-
* -
|
|
207
|
+
* - [`Switch`](https://serenity-js.org/api/web/class/Switch/)
|
|
208
|
+
* - [`Switchable`](https://serenity-js.org/api/web/interface/Switchable/)
|
|
209
209
|
*/
|
|
210
210
|
abstract switchTo(): Promise<SwitchableOrigin>;
|
|
211
211
|
|
|
@@ -232,7 +232,7 @@ export abstract class PageElement<Native_Element_Type = any> implements Optional
|
|
|
232
232
|
abstract isEnabled(): Promise<boolean>;
|
|
233
233
|
|
|
234
234
|
/**
|
|
235
|
-
* Returns a
|
|
235
|
+
* Returns a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) that resolves to `true` when the element
|
|
236
236
|
* is present in the [Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model),
|
|
237
237
|
* `false` otherwise.
|
|
238
238
|
*/
|