@serenity-js/protractor 2.32.4 → 3.0.0-rc.2
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 +75 -0
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/index.js.map +1 -1
- package/lib/screenplay/abilities/{BrowseTheWeb.d.ts → BrowseTheWebWithProtractor.d.ts} +52 -160
- package/lib/screenplay/abilities/{BrowseTheWeb.js → BrowseTheWebWithProtractor.js} +169 -218
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -0
- package/lib/screenplay/abilities/index.d.ts +1 -1
- package/lib/screenplay/abilities/index.js +1 -1
- package/lib/screenplay/abilities/index.js.map +1 -1
- package/lib/screenplay/index.d.ts +1 -0
- package/lib/screenplay/index.js +1 -0
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/interactions/UseAngular.js +2 -2
- package/lib/screenplay/interactions/UseAngular.js.map +1 -1
- package/lib/screenplay/interactions/index.d.ts +0 -19
- package/lib/screenplay/interactions/index.js +0 -19
- package/lib/screenplay/interactions/index.js.map +1 -1
- package/lib/screenplay/models/ProtractorCookie.d.ts +11 -0
- package/lib/screenplay/models/ProtractorCookie.js +39 -0
- package/lib/screenplay/models/ProtractorCookie.js.map +1 -0
- package/lib/screenplay/models/ProtractorModalDialog.d.ts +11 -0
- package/lib/screenplay/models/ProtractorModalDialog.js +43 -0
- package/lib/screenplay/models/ProtractorModalDialog.js.map +1 -0
- package/lib/screenplay/models/ProtractorNativeElementRoot.d.ts +5 -0
- package/lib/screenplay/{interactions/EnterBuilder.js → models/ProtractorNativeElementRoot.js} +1 -1
- package/lib/screenplay/models/ProtractorNativeElementRoot.js.map +1 -0
- package/lib/screenplay/models/ProtractorPage.d.ts +24 -0
- package/lib/screenplay/models/ProtractorPage.js +92 -0
- package/lib/screenplay/models/ProtractorPage.js.map +1 -0
- package/lib/screenplay/models/ProtractorPageElement.d.ts +23 -0
- package/lib/screenplay/models/ProtractorPageElement.js +112 -0
- package/lib/screenplay/models/ProtractorPageElement.js.map +1 -0
- package/lib/screenplay/models/ProtractorPageElements.d.ts +16 -0
- package/lib/screenplay/models/ProtractorPageElements.js +62 -0
- package/lib/screenplay/models/ProtractorPageElements.js.map +1 -0
- package/lib/screenplay/models/index.d.ts +6 -0
- package/lib/{expectations → screenplay/models}/index.js +6 -6
- package/lib/screenplay/models/index.js.map +1 -0
- package/lib/{promiseOf.d.ts → screenplay/promised.d.ts} +1 -1
- package/lib/{promiseOf.js → screenplay/promised.js} +4 -4
- package/lib/screenplay/promised.js.map +1 -0
- package/lib/screenplay/promisedWebElement.d.ts +11 -0
- package/lib/screenplay/promisedWebElement.js +27 -0
- package/lib/screenplay/promisedWebElement.js.map +1 -0
- package/lib/screenplay/questions/ProtractorParam.d.ts +24 -29
- package/lib/screenplay/questions/ProtractorParam.js +26 -33
- package/lib/screenplay/questions/ProtractorParam.js.map +1 -1
- package/lib/screenplay/questions/index.d.ts +0 -13
- package/lib/screenplay/questions/index.js +0 -16
- package/lib/screenplay/questions/index.js.map +1 -1
- package/package.json +19 -21
- package/src/index.ts +0 -2
- package/src/screenplay/abilities/{BrowseTheWeb.ts → BrowseTheWebWithProtractor.ts} +216 -241
- package/src/screenplay/abilities/index.ts +1 -1
- package/src/screenplay/index.ts +1 -0
- package/src/screenplay/interactions/UseAngular.ts +3 -3
- package/src/screenplay/interactions/index.ts +0 -19
- package/src/screenplay/models/ProtractorCookie.ts +41 -0
- package/src/screenplay/models/ProtractorModalDialog.ts +49 -0
- package/src/screenplay/models/ProtractorNativeElementRoot.ts +6 -0
- package/src/screenplay/models/ProtractorPage.ts +116 -0
- package/src/screenplay/models/ProtractorPageElement.ts +167 -0
- package/src/screenplay/models/ProtractorPageElements.ts +86 -0
- package/src/screenplay/models/index.ts +7 -0
- package/src/{promiseOf.ts → screenplay/promised.ts} +1 -1
- package/src/screenplay/promisedWebElement.ts +28 -0
- package/src/screenplay/questions/ProtractorParam.ts +29 -38
- package/src/screenplay/questions/index.ts +0 -13
- package/lib/expectations/ElementFinderExpectation.d.ts +0 -11
- package/lib/expectations/ElementFinderExpectation.js +0 -24
- package/lib/expectations/ElementFinderExpectation.js.map +0 -1
- package/lib/expectations/index.d.ts +0 -6
- package/lib/expectations/index.js.map +0 -1
- package/lib/expectations/isActive.d.ts +0 -13
- package/lib/expectations/isActive.js +0 -19
- package/lib/expectations/isActive.js.map +0 -1
- package/lib/expectations/isClickable.d.ts +0 -13
- package/lib/expectations/isClickable.js +0 -22
- package/lib/expectations/isClickable.js.map +0 -1
- package/lib/expectations/isEnabled.d.ts +0 -13
- package/lib/expectations/isEnabled.js +0 -19
- package/lib/expectations/isEnabled.js.map +0 -1
- package/lib/expectations/isPresent.d.ts +0 -14
- package/lib/expectations/isPresent.js +0 -20
- package/lib/expectations/isPresent.js.map +0 -1
- package/lib/expectations/isSelected.d.ts +0 -13
- package/lib/expectations/isSelected.js +0 -22
- package/lib/expectations/isSelected.js.map +0 -1
- package/lib/expectations/isVisible.d.ts +0 -13
- package/lib/expectations/isVisible.js +0 -25
- package/lib/expectations/isVisible.js.map +0 -1
- package/lib/promiseOf.js.map +0 -1
- package/lib/screenplay/abilities/BrowseTheWeb.js.map +0 -1
- package/lib/screenplay/interactions/Accept.d.ts +0 -81
- package/lib/screenplay/interactions/Accept.js +0 -95
- package/lib/screenplay/interactions/Accept.js.map +0 -1
- package/lib/screenplay/interactions/Clear.d.ts +0 -88
- package/lib/screenplay/interactions/Clear.js +0 -121
- package/lib/screenplay/interactions/Clear.js.map +0 -1
- package/lib/screenplay/interactions/Click.d.ts +0 -81
- package/lib/screenplay/interactions/Click.js +0 -95
- package/lib/screenplay/interactions/Click.js.map +0 -1
- package/lib/screenplay/interactions/Close.d.ts +0 -89
- package/lib/screenplay/interactions/Close.js +0 -169
- package/lib/screenplay/interactions/Close.js.map +0 -1
- package/lib/screenplay/interactions/DeleteCookies.d.ts +0 -72
- package/lib/screenplay/interactions/DeleteCookies.js +0 -149
- package/lib/screenplay/interactions/DeleteCookies.js.map +0 -1
- package/lib/screenplay/interactions/Dismiss.d.ts +0 -85
- package/lib/screenplay/interactions/Dismiss.js +0 -99
- package/lib/screenplay/interactions/Dismiss.js.map +0 -1
- package/lib/screenplay/interactions/DoubleClick.d.ts +0 -99
- package/lib/screenplay/interactions/DoubleClick.js +0 -121
- package/lib/screenplay/interactions/DoubleClick.js.map +0 -1
- package/lib/screenplay/interactions/Enter.d.ts +0 -81
- package/lib/screenplay/interactions/Enter.js +0 -96
- package/lib/screenplay/interactions/Enter.js.map +0 -1
- package/lib/screenplay/interactions/EnterBuilder.d.ts +0 -27
- package/lib/screenplay/interactions/EnterBuilder.js.map +0 -1
- package/lib/screenplay/interactions/ExecuteScript.d.ts +0 -171
- package/lib/screenplay/interactions/ExecuteScript.js +0 -291
- package/lib/screenplay/interactions/ExecuteScript.js.map +0 -1
- package/lib/screenplay/interactions/Hover.d.ts +0 -86
- package/lib/screenplay/interactions/Hover.js +0 -103
- package/lib/screenplay/interactions/Hover.js.map +0 -1
- package/lib/screenplay/interactions/Navigate.d.ts +0 -149
- package/lib/screenplay/interactions/Navigate.js +0 -345
- package/lib/screenplay/interactions/Navigate.js.map +0 -1
- package/lib/screenplay/interactions/Press.d.ts +0 -90
- package/lib/screenplay/interactions/Press.js +0 -127
- package/lib/screenplay/interactions/Press.js.map +0 -1
- package/lib/screenplay/interactions/PressBuilder.d.ts +0 -27
- package/lib/screenplay/interactions/PressBuilder.js +0 -3
- package/lib/screenplay/interactions/PressBuilder.js.map +0 -1
- package/lib/screenplay/interactions/ResizeBrowserWindow.d.ts +0 -69
- package/lib/screenplay/interactions/ResizeBrowserWindow.js +0 -144
- package/lib/screenplay/interactions/ResizeBrowserWindow.js.map +0 -1
- package/lib/screenplay/interactions/RightClick.d.ts +0 -97
- package/lib/screenplay/interactions/RightClick.js +0 -113
- package/lib/screenplay/interactions/RightClick.js.map +0 -1
- package/lib/screenplay/interactions/Scroll.d.ts +0 -83
- package/lib/screenplay/interactions/Scroll.js +0 -98
- package/lib/screenplay/interactions/Scroll.js.map +0 -1
- package/lib/screenplay/interactions/Select.d.ts +0 -212
- package/lib/screenplay/interactions/Select.js +0 -342
- package/lib/screenplay/interactions/Select.js.map +0 -1
- package/lib/screenplay/interactions/SelectBuilder.d.ts +0 -33
- package/lib/screenplay/interactions/SelectBuilder.js +0 -3
- package/lib/screenplay/interactions/SelectBuilder.js.map +0 -1
- package/lib/screenplay/interactions/Switch.d.ts +0 -210
- package/lib/screenplay/interactions/Switch.js +0 -345
- package/lib/screenplay/interactions/Switch.js.map +0 -1
- package/lib/screenplay/interactions/TakeScreenshot.d.ts +0 -67
- package/lib/screenplay/interactions/TakeScreenshot.js +0 -86
- package/lib/screenplay/interactions/TakeScreenshot.js.map +0 -1
- package/lib/screenplay/interactions/Wait.d.ts +0 -147
- package/lib/screenplay/interactions/Wait.js +0 -247
- package/lib/screenplay/interactions/Wait.js.map +0 -1
- package/lib/screenplay/interactions/WaitBuilder.d.ts +0 -33
- package/lib/screenplay/interactions/WaitBuilder.js +0 -3
- package/lib/screenplay/interactions/WaitBuilder.js.map +0 -1
- package/lib/screenplay/questions/Attribute.d.ts +0 -29
- package/lib/screenplay/questions/Attribute.js +0 -56
- package/lib/screenplay/questions/Attribute.js.map +0 -1
- package/lib/screenplay/questions/Browser.d.ts +0 -47
- package/lib/screenplay/questions/Browser.js +0 -55
- package/lib/screenplay/questions/Browser.js.map +0 -1
- package/lib/screenplay/questions/CSSClasses.d.ts +0 -94
- package/lib/screenplay/questions/CSSClasses.js +0 -118
- package/lib/screenplay/questions/CSSClasses.js.map +0 -1
- package/lib/screenplay/questions/Cookie.d.ts +0 -9
- package/lib/screenplay/questions/Cookie.js +0 -65
- package/lib/screenplay/questions/Cookie.js.map +0 -1
- package/lib/screenplay/questions/LastScriptExecution.d.ts +0 -14
- package/lib/screenplay/questions/LastScriptExecution.js +0 -22
- package/lib/screenplay/questions/LastScriptExecution.js.map +0 -1
- package/lib/screenplay/questions/ModalDialog.d.ts +0 -120
- package/lib/screenplay/questions/ModalDialog.js +0 -142
- package/lib/screenplay/questions/ModalDialog.js.map +0 -1
- package/lib/screenplay/questions/Pick.d.ts +0 -72
- package/lib/screenplay/questions/Pick.js +0 -254
- package/lib/screenplay/questions/Pick.js.map +0 -1
- package/lib/screenplay/questions/Selected.d.ts +0 -185
- package/lib/screenplay/questions/Selected.js +0 -254
- package/lib/screenplay/questions/Selected.js.map +0 -1
- package/lib/screenplay/questions/Value.d.ts +0 -47
- package/lib/screenplay/questions/Value.js +0 -67
- package/lib/screenplay/questions/Value.js.map +0 -1
- package/lib/screenplay/questions/Website.d.ts +0 -15
- package/lib/screenplay/questions/Website.js +0 -25
- package/lib/screenplay/questions/Website.js.map +0 -1
- package/lib/screenplay/questions/Window.d.ts +0 -23
- package/lib/screenplay/questions/Window.js +0 -28
- package/lib/screenplay/questions/Window.js.map +0 -1
- package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.d.ts +0 -89
- package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.js +0 -138
- package/lib/screenplay/questions/lists/ElementArrayFinderListAdapter.js.map +0 -1
- package/lib/screenplay/questions/lists/index.d.ts +0 -1
- package/lib/screenplay/questions/lists/index.js +0 -14
- package/lib/screenplay/questions/lists/index.js.map +0 -1
- package/lib/screenplay/questions/targets/Target.d.ts +0 -168
- package/lib/screenplay/questions/targets/Target.js +0 -190
- package/lib/screenplay/questions/targets/Target.js.map +0 -1
- package/lib/screenplay/questions/targets/TargetElement.d.ts +0 -50
- package/lib/screenplay/questions/targets/TargetElement.js +0 -62
- package/lib/screenplay/questions/targets/TargetElement.js.map +0 -1
- package/lib/screenplay/questions/targets/TargetElements.d.ts +0 -102
- package/lib/screenplay/questions/targets/TargetElements.js +0 -124
- package/lib/screenplay/questions/targets/TargetElements.js.map +0 -1
- package/lib/screenplay/questions/targets/TargetNestedElement.d.ts +0 -49
- package/lib/screenplay/questions/targets/TargetNestedElement.js +0 -61
- package/lib/screenplay/questions/targets/TargetNestedElement.js.map +0 -1
- package/lib/screenplay/questions/targets/TargetNestedElements.d.ts +0 -101
- package/lib/screenplay/questions/targets/TargetNestedElements.js +0 -123
- package/lib/screenplay/questions/targets/TargetNestedElements.js.map +0 -1
- package/lib/screenplay/questions/targets/builders.d.ts +0 -8
- package/lib/screenplay/questions/targets/builders.js +0 -3
- package/lib/screenplay/questions/targets/builders.js.map +0 -1
- package/lib/screenplay/questions/targets/index.d.ts +0 -5
- package/lib/screenplay/questions/targets/index.js +0 -18
- package/lib/screenplay/questions/targets/index.js.map +0 -1
- package/lib/screenplay/questions/targets/override.d.ts +0 -7
- package/lib/screenplay/questions/targets/override.js +0 -21
- package/lib/screenplay/questions/targets/override.js.map +0 -1
- package/lib/screenplay/questions/text/Text.d.ts +0 -41
- package/lib/screenplay/questions/text/Text.js +0 -50
- package/lib/screenplay/questions/text/Text.js.map +0 -1
- package/lib/screenplay/questions/text/TextOfMultipleElements.d.ts +0 -23
- package/lib/screenplay/questions/text/TextOfMultipleElements.js +0 -37
- package/lib/screenplay/questions/text/TextOfMultipleElements.js.map +0 -1
- package/lib/screenplay/questions/text/TextOfSingleElement.d.ts +0 -23
- package/lib/screenplay/questions/text/TextOfSingleElement.js +0 -35
- package/lib/screenplay/questions/text/TextOfSingleElement.js.map +0 -1
- package/lib/screenplay/questions/text/index.d.ts +0 -1
- package/lib/screenplay/questions/text/index.js +0 -14
- package/lib/screenplay/questions/text/index.js.map +0 -1
- package/lib/screenplay/withAnswerOf.d.ts +0 -8
- package/lib/screenplay/withAnswerOf.js +0 -18
- package/lib/screenplay/withAnswerOf.js.map +0 -1
- package/lib/stage/crew/index.d.ts +0 -1
- package/lib/stage/crew/index.js +0 -14
- package/lib/stage/crew/index.js.map +0 -1
- package/lib/stage/crew/photographer/Photographer.d.ts +0 -83
- package/lib/stage/crew/photographer/Photographer.js +0 -102
- package/lib/stage/crew/photographer/Photographer.js.map +0 -1
- package/lib/stage/crew/photographer/index.d.ts +0 -2
- package/lib/stage/crew/photographer/index.js +0 -15
- package/lib/stage/crew/photographer/index.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +0 -28
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js +0 -65
- package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +0 -18
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js +0 -30
- package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +0 -17
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js +0 -28
- package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +0 -19
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js +0 -28
- package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +0 -1
- package/lib/stage/crew/photographer/strategies/index.d.ts +0 -4
- package/lib/stage/crew/photographer/strategies/index.js +0 -17
- package/lib/stage/crew/photographer/strategies/index.js.map +0 -1
- package/lib/stage/index.d.ts +0 -1
- package/lib/stage/index.js +0 -14
- package/lib/stage/index.js.map +0 -1
- package/src/expectations/ElementFinderExpectation.ts +0 -29
- package/src/expectations/index.ts +0 -6
- package/src/expectations/isActive.ts +0 -24
- package/src/expectations/isClickable.ts +0 -20
- package/src/expectations/isEnabled.ts +0 -18
- package/src/expectations/isPresent.ts +0 -19
- package/src/expectations/isSelected.ts +0 -23
- package/src/expectations/isVisible.ts +0 -27
- package/src/screenplay/interactions/Accept.ts +0 -95
- package/src/screenplay/interactions/Clear.ts +0 -130
- package/src/screenplay/interactions/Click.ts +0 -96
- package/src/screenplay/interactions/Close.ts +0 -184
- package/src/screenplay/interactions/DeleteCookies.ts +0 -154
- package/src/screenplay/interactions/Dismiss.ts +0 -99
- package/src/screenplay/interactions/DoubleClick.ts +0 -124
- package/src/screenplay/interactions/Enter.ts +0 -104
- package/src/screenplay/interactions/EnterBuilder.ts +0 -29
- package/src/screenplay/interactions/ExecuteScript.ts +0 -325
- package/src/screenplay/interactions/Hover.ts +0 -106
- package/src/screenplay/interactions/Navigate.ts +0 -363
- package/src/screenplay/interactions/Press.ts +0 -137
- package/src/screenplay/interactions/PressBuilder.ts +0 -29
- package/src/screenplay/interactions/ResizeBrowserWindow.ts +0 -148
- package/src/screenplay/interactions/RightClick.ts +0 -114
- package/src/screenplay/interactions/Scroll.ts +0 -99
- package/src/screenplay/interactions/Select.ts +0 -402
- package/src/screenplay/interactions/SelectBuilder.ts +0 -35
- package/src/screenplay/interactions/Switch.ts +0 -393
- package/src/screenplay/interactions/TakeScreenshot.ts +0 -89
- package/src/screenplay/interactions/Wait.ts +0 -267
- package/src/screenplay/interactions/WaitBuilder.ts +0 -35
- package/src/screenplay/questions/Attribute.ts +0 -67
- package/src/screenplay/questions/Browser.ts +0 -55
- package/src/screenplay/questions/CSSClasses.ts +0 -121
- package/src/screenplay/questions/Cookie.ts +0 -70
- package/src/screenplay/questions/LastScriptExecution.ts +0 -21
- package/src/screenplay/questions/ModalDialog.ts +0 -149
- package/src/screenplay/questions/Pick.ts +0 -334
- package/src/screenplay/questions/Selected.ts +0 -268
- package/src/screenplay/questions/Value.ts +0 -73
- package/src/screenplay/questions/Website.ts +0 -27
- package/src/screenplay/questions/Window.ts +0 -29
- package/src/screenplay/questions/lists/ElementArrayFinderListAdapter.ts +0 -158
- package/src/screenplay/questions/lists/index.ts +0 -1
- package/src/screenplay/questions/targets/Target.ts +0 -198
- package/src/screenplay/questions/targets/TargetElement.ts +0 -70
- package/src/screenplay/questions/targets/TargetElements.ts +0 -142
- package/src/screenplay/questions/targets/TargetNestedElement.ts +0 -71
- package/src/screenplay/questions/targets/TargetNestedElements.ts +0 -142
- package/src/screenplay/questions/targets/builders.ts +0 -10
- package/src/screenplay/questions/targets/index.ts +0 -5
- package/src/screenplay/questions/targets/override.ts +0 -17
- package/src/screenplay/questions/text/Text.ts +0 -55
- package/src/screenplay/questions/text/TextOfMultipleElements.ts +0 -40
- package/src/screenplay/questions/text/TextOfSingleElement.ts +0 -37
- package/src/screenplay/questions/text/index.ts +0 -1
- package/src/screenplay/withAnswerOf.ts +0 -19
- package/src/stage/crew/index.ts +0 -1
- package/src/stage/crew/photographer/Photographer.ts +0 -108
- package/src/stage/crew/photographer/index.ts +0 -2
- package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +0 -102
- package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +0 -28
- package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +0 -26
- package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +0 -26
- package/src/stage/crew/photographer/strategies/index.ts +0 -4
- package/src/stage/index.ts +0 -1
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { AnswersQuestions, Question, UsesAbilities } from '@serenity-js/core';
|
|
2
|
-
import { formatted } from '@serenity-js/core/lib/io';
|
|
3
|
-
import { ElementFinder } from 'protractor';
|
|
4
|
-
|
|
5
|
-
import { promiseOf } from '../../promiseOf';
|
|
6
|
-
import { withAnswerOf } from '../withAnswerOf';
|
|
7
|
-
import { Value } from './Value';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @desc
|
|
11
|
-
* Represents options and values selected in a
|
|
12
|
-
* [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).
|
|
13
|
-
*
|
|
14
|
-
* @see {@link Select}
|
|
15
|
-
*/
|
|
16
|
-
export class Selected {
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @desc
|
|
20
|
-
* Represents the value of a single option selected in a
|
|
21
|
-
* [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).
|
|
22
|
-
*
|
|
23
|
-
* @example <caption>Example widget</caption>
|
|
24
|
-
* <select data-test='countries'>
|
|
25
|
-
* <option value='UK'>United Kingdom</option>
|
|
26
|
-
* <option value='PL'>Poland</option>
|
|
27
|
-
* <option value='US'>United States</option>
|
|
28
|
-
* </select>
|
|
29
|
-
*
|
|
30
|
-
* @example <caption>Lean Page Object</caption>
|
|
31
|
-
* import { Target } from '@serenity-js/protractor';
|
|
32
|
-
* import { browser, by } from 'protractor';
|
|
33
|
-
*
|
|
34
|
-
* class Countries {
|
|
35
|
-
* static dropdown = Target.the('countries dropdown')
|
|
36
|
-
* .located(by.css('[data-test="countries"]'));
|
|
37
|
-
* }
|
|
38
|
-
*
|
|
39
|
-
* @example <caption>Retrieving the selected value</caption>
|
|
40
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
41
|
-
* import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
|
|
42
|
-
* import { Ensure, equals } from '@serenity-js/assertions';
|
|
43
|
-
* import { protractor } from 'protractor';
|
|
44
|
-
*
|
|
45
|
-
* actorCalled('Nick')
|
|
46
|
-
* .whoCan(BrowseTheWeb.using(protractor.browser))
|
|
47
|
-
* .attemptsTo(
|
|
48
|
-
* Select.value('UK').from(Countries.dropdown),
|
|
49
|
-
* Ensure.that(Selected.valueOf(Countries.dropdown), equals('UK')),
|
|
50
|
-
* );
|
|
51
|
-
*
|
|
52
|
-
* @param {Question<ElementFinder> | ElementFinder} target
|
|
53
|
-
* A {@link Target} identifying the `<select>` element of interest
|
|
54
|
-
*
|
|
55
|
-
* @returns {Question<Promise<string>>}
|
|
56
|
-
*
|
|
57
|
-
* @see {@link Select.value}
|
|
58
|
-
*/
|
|
59
|
-
static valueOf(target: Question<ElementFinder> | ElementFinder): Question<Promise<string>> {
|
|
60
|
-
return new SelectedValue(target);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @desc
|
|
65
|
-
* Represents values of options selected in a
|
|
66
|
-
* [HTML `<select multiple>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
|
|
67
|
-
*
|
|
68
|
-
* @example <caption>Example widget</caption>
|
|
69
|
-
* <select multiple data-test='countries'>
|
|
70
|
-
* <option value='UK'>United Kingdom</option>
|
|
71
|
-
* <option value='PL'>Poland</option>
|
|
72
|
-
* <option value='US'>United States</option>
|
|
73
|
-
* </select>
|
|
74
|
-
*
|
|
75
|
-
* @example <caption>Lean Page Object</caption>
|
|
76
|
-
* import { Target } from '@serenity-js/protractor';
|
|
77
|
-
* import { browser, by } from 'protractor';
|
|
78
|
-
*
|
|
79
|
-
* class Countries {
|
|
80
|
-
* static dropdown = Target.the('countries dropdown')
|
|
81
|
-
* .located(by.css('[data-test="countries"]'));
|
|
82
|
-
* }
|
|
83
|
-
*
|
|
84
|
-
* @example <caption>Retrieving the selected value</caption>
|
|
85
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
86
|
-
* import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
|
|
87
|
-
* import { Ensure, equals } from '@serenity-js/assertions';
|
|
88
|
-
* import { protractor } from 'protractor';
|
|
89
|
-
*
|
|
90
|
-
* actorCalled('Nick')
|
|
91
|
-
* .whoCan(BrowseTheWeb.using(protractor.browser))
|
|
92
|
-
* .attemptsTo(
|
|
93
|
-
* Select.values('UK').from(Countries.dropdown),
|
|
94
|
-
* Ensure.that(Selected.valuesOf(Countries.dropdown), equals([ 'UK' ])),
|
|
95
|
-
* );
|
|
96
|
-
*
|
|
97
|
-
* @param {Question<ElementFinder> | ElementFinder} target
|
|
98
|
-
* A {@link Target} identifying the `<select>` element of interest
|
|
99
|
-
*
|
|
100
|
-
* @returns {Question<Promise<string[]>>}
|
|
101
|
-
*
|
|
102
|
-
* @see {@link Select.values}
|
|
103
|
-
*/
|
|
104
|
-
static valuesOf(target: Question<ElementFinder> | ElementFinder): Question<Promise<string[]>> {
|
|
105
|
-
return new SelectedValues(target);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* @desc
|
|
110
|
-
* Represents a single option selected in a
|
|
111
|
-
* [HTML `<select>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
|
|
112
|
-
*
|
|
113
|
-
* @example <caption>Example widget</caption>
|
|
114
|
-
* <select data-test='countries'>
|
|
115
|
-
* <option value='UK'>United Kingdom</option>
|
|
116
|
-
* <option value='PL'>Poland</option>
|
|
117
|
-
* <option value='US'>United States</option>
|
|
118
|
-
* </select>
|
|
119
|
-
*
|
|
120
|
-
* @example <caption>Lean Page Object</caption>
|
|
121
|
-
* import { Target } from '@serenity-js/protractor';
|
|
122
|
-
* import { browser, by } from 'protractor';
|
|
123
|
-
*
|
|
124
|
-
* class Countries {
|
|
125
|
-
* static dropdown = Target.the('countries dropdown')
|
|
126
|
-
* .located(by.css('[data-test="countries"]'));
|
|
127
|
-
* }
|
|
128
|
-
*
|
|
129
|
-
* @example <caption>Retrieving the selected value</caption>
|
|
130
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
131
|
-
* import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
|
|
132
|
-
* import { Ensure, equals } from '@serenity-js/assertions';
|
|
133
|
-
* import { protractor } from 'protractor';
|
|
134
|
-
*
|
|
135
|
-
* actorCalled('Nick')
|
|
136
|
-
* .whoCan(BrowseTheWeb.using(protractor.browser))
|
|
137
|
-
* .attemptsTo(
|
|
138
|
-
* Select.option('Poland').from(Countries.dropdown),
|
|
139
|
-
* Ensure.that(
|
|
140
|
-
* Selected.optionIn(Countries.dropdown),
|
|
141
|
-
* equals('Poland')
|
|
142
|
-
* ),
|
|
143
|
-
* );
|
|
144
|
-
*
|
|
145
|
-
* @param {Question<ElementFinder> | ElementFinder} target
|
|
146
|
-
* A {@link Target} identifying the `<select>` element of interest
|
|
147
|
-
*
|
|
148
|
-
* @returns {Question<Promise<string>>}
|
|
149
|
-
*
|
|
150
|
-
* @see {@link Select.option}
|
|
151
|
-
*/
|
|
152
|
-
static optionIn(target: Question<ElementFinder> | ElementFinder): Question<Promise<string>> {
|
|
153
|
-
return new SelectedOption(target);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* @desc
|
|
158
|
-
* Represents options selected in a
|
|
159
|
-
* [HTML `<select multiple>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple)
|
|
160
|
-
*
|
|
161
|
-
* @example <caption>Example widget</caption>
|
|
162
|
-
* <select multiple data-test='countries'>
|
|
163
|
-
* <option value='UK'>United Kingdom</option>
|
|
164
|
-
* <option value='PL'>Poland</option>
|
|
165
|
-
* <option value='US'>United States</option>
|
|
166
|
-
* </select>
|
|
167
|
-
*
|
|
168
|
-
* @example <caption>Lean Page Object</caption>
|
|
169
|
-
* import { Target } from '@serenity-js/protractor';
|
|
170
|
-
* import { browser, by } from 'protractor';
|
|
171
|
-
*
|
|
172
|
-
* class Countries {
|
|
173
|
-
* static dropdown = Target.the('countries dropdown')
|
|
174
|
-
* .located(by.css('[data-test="countries"]'));
|
|
175
|
-
* }
|
|
176
|
-
*
|
|
177
|
-
* @example <caption>Retrieving the selected value</caption>
|
|
178
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
179
|
-
* import { Accept, BrowseTheWeb, Select, Selected } from '@serenity-js/protractor';
|
|
180
|
-
* import { Ensure, equals } from '@serenity-js/assertions';
|
|
181
|
-
* import { protractor } from 'protractor';
|
|
182
|
-
*
|
|
183
|
-
* actorCalled('Nick')
|
|
184
|
-
* .whoCan(BrowseTheWeb.using(protractor.browser))
|
|
185
|
-
* .attemptsTo(
|
|
186
|
-
* Select.options('Poland', 'United States').from(Countries.dropdown),
|
|
187
|
-
* Ensure.that(
|
|
188
|
-
* Selected.optionsIn(Countries.dropdown),
|
|
189
|
-
* equals([ 'Poland', 'United States' ])
|
|
190
|
-
* ),
|
|
191
|
-
* );
|
|
192
|
-
*
|
|
193
|
-
* @param {Question<ElementFinder> | ElementFinder} target
|
|
194
|
-
* A {@link Target} identifying the `<select>` element of interest
|
|
195
|
-
*
|
|
196
|
-
* @returns {Question<Promise<string[]>>}
|
|
197
|
-
*
|
|
198
|
-
* @see {@link Select.options}
|
|
199
|
-
*/
|
|
200
|
-
static optionsIn(target: Question<ElementFinder> | ElementFinder): Question<Promise<string[]>> {
|
|
201
|
-
return new SelectedOptions(target);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* @package
|
|
207
|
-
*/
|
|
208
|
-
class SelectedValue extends Question<Promise<string>> {
|
|
209
|
-
|
|
210
|
-
constructor(private readonly target: Question<ElementFinder> | ElementFinder) {
|
|
211
|
-
super(formatted `value selected in ${ target }`);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
answeredBy(actor: AnswersQuestions & UsesAbilities): Promise<string> {
|
|
215
|
-
const value = withAnswerOf(actor, this.target, (element: ElementFinder) =>
|
|
216
|
-
Value.of(element.$('option:checked')).answeredBy(actor)
|
|
217
|
-
);
|
|
218
|
-
|
|
219
|
-
return promiseOf(value);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* @package
|
|
225
|
-
*/
|
|
226
|
-
class SelectedValues extends Question<Promise<string[]>> {
|
|
227
|
-
|
|
228
|
-
constructor(private readonly target: Question<ElementFinder> | ElementFinder) {
|
|
229
|
-
super(formatted `values selected in ${ target }`);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
answeredBy(actor: AnswersQuestions & UsesAbilities): Promise<string[]> {
|
|
233
|
-
const options = withAnswerOf(actor, this.target, (element: ElementFinder) => element.$$('option')
|
|
234
|
-
.filter(option => option.isSelected()));
|
|
235
|
-
|
|
236
|
-
return promiseOf(options.map(option => Value.of(option).answeredBy(actor)));
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* @package
|
|
242
|
-
*/
|
|
243
|
-
class SelectedOption extends Question<Promise<string>> {
|
|
244
|
-
|
|
245
|
-
constructor(private target: Question<ElementFinder> | ElementFinder) {
|
|
246
|
-
super(formatted `option selected in ${ target }`);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
answeredBy(actor: AnswersQuestions & UsesAbilities): Promise<string> {
|
|
250
|
-
return promiseOf(withAnswerOf(actor, this.target, element => element.$('option:checked').getText()));
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* @package
|
|
256
|
-
*/
|
|
257
|
-
class SelectedOptions extends Question<Promise<string[]>> {
|
|
258
|
-
|
|
259
|
-
constructor(private target: Question<ElementFinder> | ElementFinder) {
|
|
260
|
-
super(formatted `options selected in ${ target }`);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
answeredBy(actor: AnswersQuestions & UsesAbilities): Promise<string[]> {
|
|
264
|
-
return promiseOf(withAnswerOf(actor, this.target, element => element.$$('option')
|
|
265
|
-
.filter(option => option.isSelected())
|
|
266
|
-
.map(elements => elements.getText())));
|
|
267
|
-
}
|
|
268
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { AnswersQuestions, MetaQuestion, Question, UsesAbilities } from '@serenity-js/core';
|
|
2
|
-
import { formatted } from '@serenity-js/core/lib/io';
|
|
3
|
-
import { ElementFinder } from 'protractor';
|
|
4
|
-
|
|
5
|
-
import { BrowseTheWeb } from '../abilities';
|
|
6
|
-
import { withAnswerOf } from '../withAnswerOf';
|
|
7
|
-
import { TargetNestedElement } from './targets';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @desc
|
|
11
|
-
* Resolves to the value of a given [`input`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
|
|
12
|
-
* {@link WebElement}, represented by {@link ElementFinder} or `Question<ElementFinder>`.
|
|
13
|
-
*
|
|
14
|
-
* @extends {@serenity-js/core/lib/screenplay~Question}
|
|
15
|
-
* @implements {@serenity-js/core/lib/screenplay/questions~MetaQuestion}
|
|
16
|
-
*/
|
|
17
|
-
export class Value
|
|
18
|
-
extends Question<Promise<string>>
|
|
19
|
-
implements MetaQuestion<Question<ElementFinder> | ElementFinder, Promise<string>> {
|
|
20
|
-
/**
|
|
21
|
-
* @param {Question<ElementFinder> | ElementFinder} target
|
|
22
|
-
* @returns {Value}
|
|
23
|
-
*/
|
|
24
|
-
static of(target: Question<ElementFinder> | ElementFinder): Value {
|
|
25
|
-
return new Value(target);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @param {Question<ElementFinder> | ElementFinder} target
|
|
30
|
-
*/
|
|
31
|
-
constructor(private readonly target: Question<ElementFinder> | ElementFinder) {
|
|
32
|
-
super(formatted`the value of ${ target }`);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @desc
|
|
37
|
-
* Resolves to the value of a given [`input`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
|
|
38
|
-
* {@link WebElement}, located in the context of a `parent` element.
|
|
39
|
-
*
|
|
40
|
-
* @param {Question<ElementFinder> | ElementFinder} parent
|
|
41
|
-
* @returns {Question<Promise<string[]>>}
|
|
42
|
-
*
|
|
43
|
-
* @see {@link Target.all}
|
|
44
|
-
* @see {@link @serenity-js/core/lib/screenplay/questions~MetaQuestion}
|
|
45
|
-
*/
|
|
46
|
-
of(parent: Question<ElementFinder> | ElementFinder): Question<Promise<string>> {
|
|
47
|
-
return new Value(new TargetNestedElement(parent, this.target));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @desc
|
|
52
|
-
* Makes the provided {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
53
|
-
* answer this {@link @serenity-js/core/lib/screenplay~Question}.
|
|
54
|
-
*
|
|
55
|
-
* @param {AnswersQuestions & UsesAbilities} actor
|
|
56
|
-
* @returns {Promise<void>}
|
|
57
|
-
*
|
|
58
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~Actor}
|
|
59
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
60
|
-
* @see {@link @serenity-js/core/lib/screenplay/actor~UsesAbilities}
|
|
61
|
-
*/
|
|
62
|
-
answeredBy(actor: AnswersQuestions & UsesAbilities): Promise<string> {
|
|
63
|
-
return withAnswerOf(actor, this.target, (elf: ElementFinder) =>
|
|
64
|
-
BrowseTheWeb.as(actor).executeFunction(
|
|
65
|
-
/* istanbul ignore next */
|
|
66
|
-
function getValue(webElement) {
|
|
67
|
-
return webElement.value;
|
|
68
|
-
},
|
|
69
|
-
elf.getWebElement(),
|
|
70
|
-
),
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Question } from '@serenity-js/core';
|
|
2
|
-
|
|
3
|
-
import { BrowseTheWeb } from '../abilities';
|
|
4
|
-
|
|
5
|
-
export class Website {
|
|
6
|
-
/**
|
|
7
|
-
* Retrieves the title of the current page.
|
|
8
|
-
*
|
|
9
|
-
* @returns {@serenity-js/core/lib/screenplay~Question<Promise<string>>}
|
|
10
|
-
*/
|
|
11
|
-
static title(): Question<Promise<string>> {
|
|
12
|
-
return Question.about(`the title of the current page`, actor =>
|
|
13
|
-
BrowseTheWeb.as(actor).getTitle(),
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Retrieves the url of the current page.
|
|
19
|
-
*
|
|
20
|
-
* @returns {@serenity-js/core/lib/screenplay~Question<Promise<string>>}
|
|
21
|
-
*/
|
|
22
|
-
static url(): Question<Promise<string>> {
|
|
23
|
-
return Question.about(`the url of the current page`, actor =>
|
|
24
|
-
BrowseTheWeb.as(actor).getCurrentUrl(),
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Question } from '@serenity-js/core';
|
|
2
|
-
|
|
3
|
-
import { promiseOf } from '../../promiseOf';
|
|
4
|
-
import { BrowseTheWeb } from '../abilities';
|
|
5
|
-
|
|
6
|
-
export class Window {
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @desc
|
|
10
|
-
* Returns the size of the current browser window.
|
|
11
|
-
*
|
|
12
|
-
* @returns {Question<Promise<{ width: number, height: number }>>}
|
|
13
|
-
*/
|
|
14
|
-
static size(): Question<Promise<{ width: number, height: number }>> {
|
|
15
|
-
return Question.about(`browser window size`, actor =>
|
|
16
|
-
promiseOf(BrowseTheWeb.as(actor).manage().window().getSize()));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @desc
|
|
21
|
-
* Returns the `{ x: number, y: number }` position of the current browser window.
|
|
22
|
-
*
|
|
23
|
-
* @returns {Question<Promise<{ x: number, y: number }>>}
|
|
24
|
-
*/
|
|
25
|
-
static position(): Question<Promise<{ x: number, y: number }>> {
|
|
26
|
-
return Question.about(`browser window position`, actor =>
|
|
27
|
-
promiseOf(BrowseTheWeb.as(actor).manage().window().getPosition()));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { AnswersQuestions, Expectation, ExpectationMet, MetaQuestion, Question, UsesAbilities } from '@serenity-js/core';
|
|
2
|
-
import { formatted } from '@serenity-js/core/lib/io';
|
|
3
|
-
import { ListAdapter } from '@serenity-js/core/lib/screenplay/questions/lists';
|
|
4
|
-
import { ElementArrayFinder, ElementFinder } from 'protractor';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @desc
|
|
8
|
-
* Adapts {@link ElementArrayFinder} so that it can be used with {@link @serenity-js/core/lib/screenplay/questions~List}.
|
|
9
|
-
*
|
|
10
|
-
* You most likely won't need to use this class directly. Instead, check out {@link Target} and {@link Target.all}.
|
|
11
|
-
*
|
|
12
|
-
* @see {@link Target}
|
|
13
|
-
*
|
|
14
|
-
* @implements {@serenity-js/core/lib/screenplay/questions/lists~ListAdapter}
|
|
15
|
-
*/
|
|
16
|
-
export class ElementArrayFinderListAdapter implements ListAdapter<ElementFinder, ElementArrayFinder> {
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @param {Question<ElementArrayFinder> | ElementArrayFinder} collection
|
|
20
|
-
*/
|
|
21
|
-
constructor(private readonly collection: Question<ElementArrayFinder> | ElementArrayFinder) {
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @desc
|
|
26
|
-
* Returns the number of {@link ElementFinder}s that the underlying {@link ElementArrayFinder} contains,
|
|
27
|
-
* left after applying any filters.
|
|
28
|
-
*
|
|
29
|
-
* @param {AnswersQuestions & UsesAbilities} actor
|
|
30
|
-
* @returns {Promise<number>}
|
|
31
|
-
*/
|
|
32
|
-
count(actor: AnswersQuestions & UsesAbilities): Promise<number> {
|
|
33
|
-
return Promise.resolve(this.elements(actor).count());
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @desc
|
|
38
|
-
* Returns the first of {@link ElementFinder}s that the underlying {@link ElementArrayFinder} contains,
|
|
39
|
-
* left after applying any filters
|
|
40
|
-
*
|
|
41
|
-
* @param {AnswersQuestions & UsesAbilities} actor
|
|
42
|
-
* @returns {ElementFinder}
|
|
43
|
-
*/
|
|
44
|
-
first(actor: AnswersQuestions & UsesAbilities): ElementFinder {
|
|
45
|
-
return this.elements(actor).first();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @desc
|
|
50
|
-
* Returns the last of {@link ElementFinder}s that the underlying {@link ElementArrayFinder} contains,
|
|
51
|
-
* left after applying any filters
|
|
52
|
-
*
|
|
53
|
-
* @param {AnswersQuestions & UsesAbilities} actor
|
|
54
|
-
* @returns {ElementFinder}
|
|
55
|
-
*/
|
|
56
|
-
last(actor: AnswersQuestions & UsesAbilities): ElementFinder {
|
|
57
|
-
return this.elements(actor).last();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @desc
|
|
62
|
-
* Returns the nth of {@link ElementFinder}s that the underlying {@link ElementArrayFinder} contains,
|
|
63
|
-
* left after applying any filters
|
|
64
|
-
*
|
|
65
|
-
* @param {AnswersQuestions & UsesAbilities} actor
|
|
66
|
-
*
|
|
67
|
-
* @param {number} index
|
|
68
|
-
* Zero-based index of the item to return
|
|
69
|
-
*
|
|
70
|
-
* @returns {ElementFinder}
|
|
71
|
-
*/
|
|
72
|
-
get(actor: AnswersQuestions & UsesAbilities, index: number): ElementFinder {
|
|
73
|
-
return this.elements(actor).get(index);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* @desc
|
|
78
|
-
* Returns the underlying {@link ElementArrayFinder},
|
|
79
|
-
* with any filters applied.
|
|
80
|
-
*
|
|
81
|
-
* @param {AnswersQuestions & UsesAbilities} actor
|
|
82
|
-
* @returns {ElementFinder}
|
|
83
|
-
*/
|
|
84
|
-
items(actor: AnswersQuestions & UsesAbilities): ElementArrayFinder {
|
|
85
|
-
return this.elements(actor);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* @desc
|
|
90
|
-
* Filters the underlying {@link ElementArrayFinder} so that the result contains only those {@link ElementFinder}s that meet the {@link Expectation}
|
|
91
|
-
*
|
|
92
|
-
* @param {@serenity-js/core/lib/screenplay/questions~MetaQuestion<ElementFinder, Promise<Answer_Type> | Answer_Type>} question
|
|
93
|
-
* @param {@serenity-js/core/lib/screenplay/questions~Expectation<any, Answer_Type>} expectation
|
|
94
|
-
*
|
|
95
|
-
* @returns {@serenity-js/core/lib/screenplay/questions/lists~ListAdapter<ElementFinder, ElementArrayFinder>}
|
|
96
|
-
*
|
|
97
|
-
* @see {@link @serenity-js/core/lib/screenplay/questions~MetaQuestion}
|
|
98
|
-
*/
|
|
99
|
-
withFilter<Answer_Type>(
|
|
100
|
-
question: MetaQuestion<ElementFinder, Promise<Answer_Type> | Answer_Type>,
|
|
101
|
-
expectation: Expectation<any, Answer_Type>
|
|
102
|
-
): ListAdapter<ElementFinder, ElementArrayFinder> {
|
|
103
|
-
return new ElementArrayFinderListAdapter(
|
|
104
|
-
new ElementArrayFinderArrayListFilter(this.collection, question, expectation)
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* @desc
|
|
110
|
-
* Returns a human-readable description of the underlying {@link ElementArrayFinder}.
|
|
111
|
-
*
|
|
112
|
-
* @returns {string}
|
|
113
|
-
*/
|
|
114
|
-
toString(): string {
|
|
115
|
-
return formatted `${ this.collection }`;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
private elements(actor: AnswersQuestions & UsesAbilities): ElementArrayFinder {
|
|
119
|
-
return Question.isAQuestion(this.collection)
|
|
120
|
-
? this.collection.answeredBy(actor)
|
|
121
|
-
: this.collection;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* @private
|
|
127
|
-
*/
|
|
128
|
-
class ElementArrayFinderArrayListFilter<Answer_Type>
|
|
129
|
-
extends Question<ElementArrayFinder>
|
|
130
|
-
{
|
|
131
|
-
constructor(
|
|
132
|
-
private readonly collection: Question<ElementArrayFinder> | ElementArrayFinder,
|
|
133
|
-
private readonly question: MetaQuestion<ElementFinder, Promise<Answer_Type> | Answer_Type>,
|
|
134
|
-
private readonly expectation: Expectation<any, Answer_Type>
|
|
135
|
-
) {
|
|
136
|
-
super([
|
|
137
|
-
formatted `${ collection }`,
|
|
138
|
-
collection instanceof ElementArrayFinderArrayListFilter ? 'and' : 'where',
|
|
139
|
-
formatted `${ question } does ${ expectation }`
|
|
140
|
-
].join(' '));
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
answeredBy(actor: AnswersQuestions & UsesAbilities): ElementArrayFinder {
|
|
144
|
-
|
|
145
|
-
return this.finderAs(actor)
|
|
146
|
-
.filter((elementFinder: ElementFinder) =>
|
|
147
|
-
Promise.resolve(this.question.of(elementFinder).answeredBy(actor))
|
|
148
|
-
.then(answer => this.expectation.answeredBy(actor)(answer))
|
|
149
|
-
.then(outcome => outcome instanceof ExpectationMet)
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
private finderAs(actor: AnswersQuestions & UsesAbilities): ElementArrayFinder {
|
|
154
|
-
return Question.isAQuestion(this.collection)
|
|
155
|
-
? this.collection.answeredBy(actor)
|
|
156
|
-
: this.collection;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './ElementArrayFinderListAdapter';
|