@serenity-js/protractor 3.0.0-rc.9 → 3.0.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 +144 -2236
- package/README.md +39 -26
- package/lib/adapter/Config.d.ts +11 -9
- package/lib/adapter/Config.d.ts.map +1 -0
- package/lib/adapter/ProtractorFrameworkAdapter.d.ts +2 -3
- package/lib/adapter/ProtractorFrameworkAdapter.d.ts.map +1 -0
- package/lib/adapter/ProtractorFrameworkAdapter.js +11 -10
- package/lib/adapter/ProtractorFrameworkAdapter.js.map +1 -1
- package/lib/adapter/browser-detector/BrowserDetector.d.ts +1 -0
- package/lib/adapter/browser-detector/BrowserDetector.d.ts.map +1 -0
- package/lib/adapter/browser-detector/BrowserDetector.js +5 -5
- package/lib/adapter/browser-detector/BrowserDetector.js.map +1 -1
- package/lib/adapter/browser-detector/StandardisedCapabilities.d.ts +5 -4
- package/lib/adapter/browser-detector/StandardisedCapabilities.d.ts.map +1 -0
- package/lib/adapter/browser-detector/StandardisedCapabilities.js +17 -17
- package/lib/adapter/browser-detector/StandardisedCapabilities.js.map +1 -1
- package/lib/adapter/browser-detector/index.d.ts +1 -0
- package/lib/adapter/browser-detector/index.d.ts.map +1 -0
- package/lib/adapter/browser-detector/index.js +5 -1
- package/lib/adapter/browser-detector/index.js.map +1 -1
- package/lib/adapter/index.d.ts +2 -0
- package/lib/adapter/index.d.ts.map +1 -0
- package/lib/adapter/index.js +6 -1
- package/lib/adapter/index.js.map +1 -1
- package/lib/adapter/reporter/ProtractorReport.d.ts +5 -6
- package/lib/adapter/reporter/ProtractorReport.d.ts.map +1 -0
- package/lib/adapter/reporter/ProtractorReporter.d.ts +1 -0
- package/lib/adapter/reporter/ProtractorReporter.d.ts.map +1 -0
- package/lib/adapter/reporter/ProtractorReporter.js +10 -5
- package/lib/adapter/reporter/ProtractorReporter.js.map +1 -1
- package/lib/adapter/reporter/index.d.ts +1 -0
- package/lib/adapter/reporter/index.d.ts.map +1 -0
- package/lib/adapter/reporter/index.js +5 -1
- package/lib/adapter/reporter/index.js.map +1 -1
- package/lib/adapter/run.d.ts +7 -4
- package/lib/adapter/run.d.ts.map +1 -0
- package/lib/adapter/run.js +6 -4
- package/lib/adapter/run.js.map +1 -1
- package/lib/adapter/runner/CucumberAdapterConfig.d.ts +5 -10
- package/lib/adapter/runner/CucumberAdapterConfig.d.ts.map +1 -0
- package/lib/adapter/runner/TestRunnerDetector.d.ts +5 -12
- package/lib/adapter/runner/TestRunnerDetector.d.ts.map +1 -0
- package/lib/adapter/runner/TestRunnerDetector.js +7 -15
- package/lib/adapter/runner/TestRunnerDetector.js.map +1 -1
- package/lib/adapter/runner/TestRunnerLoader.d.ts +20 -17
- package/lib/adapter/runner/TestRunnerLoader.d.ts.map +1 -0
- package/lib/adapter/runner/TestRunnerLoader.js +18 -18
- package/lib/adapter/runner/TestRunnerLoader.js.map +1 -1
- package/lib/adapter/runner/index.d.ts +1 -0
- package/lib/adapter/runner/index.d.ts.map +1 -0
- package/lib/adapter/runner/index.js +5 -1
- package/lib/adapter/runner/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts +62 -300
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts.map +1 -0
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js +62 -422
- package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -1
- package/lib/screenplay/abilities/index.d.ts +1 -0
- package/lib/screenplay/abilities/index.d.ts.map +1 -0
- package/lib/screenplay/abilities/index.js +5 -1
- package/lib/screenplay/abilities/index.js.map +1 -1
- package/lib/screenplay/index.d.ts +1 -0
- package/lib/screenplay/index.d.ts.map +1 -0
- package/lib/screenplay/index.js +5 -1
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/interactions/UseAngular.d.ts +53 -48
- package/lib/screenplay/interactions/UseAngular.d.ts.map +1 -0
- package/lib/screenplay/interactions/UseAngular.js +52 -42
- package/lib/screenplay/interactions/UseAngular.js.map +1 -1
- package/lib/screenplay/interactions/index.d.ts +1 -0
- package/lib/screenplay/interactions/index.d.ts.map +1 -0
- package/lib/screenplay/interactions/index.js +5 -1
- package/lib/screenplay/interactions/index.js.map +1 -1
- package/lib/screenplay/models/ProtractorBrowsingSession.d.ts +22 -0
- package/lib/screenplay/models/ProtractorBrowsingSession.d.ts.map +1 -0
- package/lib/screenplay/models/ProtractorBrowsingSession.js +99 -0
- package/lib/screenplay/models/ProtractorBrowsingSession.js.map +1 -0
- package/lib/screenplay/models/ProtractorCookie.d.ts +6 -0
- package/lib/screenplay/models/ProtractorCookie.d.ts.map +1 -0
- package/lib/screenplay/models/ProtractorCookie.js +8 -3
- package/lib/screenplay/models/ProtractorCookie.js.map +1 -1
- package/lib/screenplay/models/ProtractorErrorHandler.d.ts +8 -0
- package/lib/screenplay/models/ProtractorErrorHandler.d.ts.map +1 -0
- package/lib/screenplay/models/ProtractorErrorHandler.js +23 -0
- package/lib/screenplay/models/ProtractorErrorHandler.js.map +1 -0
- package/lib/screenplay/models/ProtractorModalDialogHandler.d.ts +25 -0
- package/lib/screenplay/models/ProtractorModalDialogHandler.d.ts.map +1 -0
- package/lib/screenplay/models/ProtractorModalDialogHandler.js +74 -0
- package/lib/screenplay/models/ProtractorModalDialogHandler.js.map +1 -0
- package/lib/screenplay/models/ProtractorPage.d.ts +58 -6
- package/lib/screenplay/models/ProtractorPage.d.ts.map +1 -0
- package/lib/screenplay/models/ProtractorPage.js +221 -44
- package/lib/screenplay/models/ProtractorPage.js.map +1 -1
- package/lib/screenplay/models/ProtractorPageElement.d.ts +10 -1
- package/lib/screenplay/models/ProtractorPageElement.d.ts.map +1 -0
- package/lib/screenplay/models/ProtractorPageElement.js +141 -147
- package/lib/screenplay/models/ProtractorPageElement.js.map +1 -1
- package/lib/screenplay/models/index.d.ts +2 -1
- package/lib/screenplay/models/index.d.ts.map +1 -0
- package/lib/screenplay/models/index.js +6 -2
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/locators/ProtractorLocator.d.ts +21 -8
- package/lib/screenplay/models/locators/ProtractorLocator.d.ts.map +1 -0
- package/lib/screenplay/models/locators/ProtractorLocator.js +107 -10
- package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -1
- package/lib/screenplay/models/locators/ProtractorRootLocator.d.ts +17 -0
- package/lib/screenplay/models/locators/ProtractorRootLocator.d.ts.map +1 -0
- package/lib/screenplay/models/locators/ProtractorRootLocator.js +38 -0
- package/lib/screenplay/models/locators/ProtractorRootLocator.js.map +1 -0
- package/lib/screenplay/models/locators/index.d.ts +2 -1
- package/lib/screenplay/models/locators/index.d.ts.map +1 -0
- package/lib/screenplay/models/locators/index.js +6 -2
- package/lib/screenplay/models/locators/index.js.map +1 -1
- package/lib/screenplay/promised.d.ts +3 -3
- package/lib/screenplay/promised.d.ts.map +1 -0
- package/lib/screenplay/promised.js +2 -3
- package/lib/screenplay/promised.js.map +1 -1
- package/lib/screenplay/questions/ProtractorParam.d.ts +64 -51
- package/lib/screenplay/questions/ProtractorParam.d.ts.map +1 -0
- package/lib/screenplay/questions/ProtractorParam.js +59 -47
- package/lib/screenplay/questions/ProtractorParam.js.map +1 -1
- package/lib/screenplay/questions/index.d.ts +1 -0
- package/lib/screenplay/questions/index.d.ts.map +1 -0
- package/lib/screenplay/questions/index.js +5 -1
- package/lib/screenplay/questions/index.js.map +1 -1
- package/lib/screenplay/unpromisedWebElement.d.ts +6 -4
- package/lib/screenplay/unpromisedWebElement.d.ts.map +1 -0
- package/lib/screenplay/unpromisedWebElement.js +5 -4
- package/lib/screenplay/unpromisedWebElement.js.map +1 -1
- package/package.json +36 -60
- package/src/adapter/Config.ts +10 -9
- package/src/adapter/ProtractorFrameworkAdapter.ts +16 -10
- package/src/adapter/browser-detector/BrowserDetector.ts +3 -3
- package/src/adapter/browser-detector/StandardisedCapabilities.ts +24 -24
- package/src/adapter/index.ts +1 -0
- package/src/adapter/reporter/ProtractorReport.ts +4 -6
- package/src/adapter/reporter/ProtractorReporter.ts +16 -16
- package/src/adapter/run.ts +6 -4
- package/src/adapter/runner/CucumberAdapterConfig.ts +5 -10
- package/src/adapter/runner/TestRunnerDetector.ts +5 -13
- package/src/adapter/runner/TestRunnerLoader.ts +21 -19
- package/src/screenplay/abilities/BrowseTheWebWithProtractor.ts +63 -480
- package/src/screenplay/interactions/UseAngular.ts +55 -44
- package/src/screenplay/models/ProtractorBrowsingSession.ts +133 -0
- package/src/screenplay/models/ProtractorCookie.ts +8 -3
- package/src/screenplay/models/ProtractorErrorHandler.ts +23 -0
- package/src/screenplay/models/ProtractorModalDialogHandler.ts +97 -0
- package/src/screenplay/models/ProtractorPage.ts +282 -54
- package/src/screenplay/models/ProtractorPageElement.ts +160 -165
- package/src/screenplay/models/index.ts +1 -1
- package/src/screenplay/models/locators/ProtractorLocator.ts +121 -31
- package/src/screenplay/models/locators/ProtractorRootLocator.ts +41 -0
- package/src/screenplay/models/locators/index.ts +1 -1
- package/src/screenplay/promised.ts +2 -3
- package/src/screenplay/questions/ProtractorParam.ts +62 -49
- package/src/screenplay/unpromisedWebElement.ts +5 -4
- package/tsconfig.build.json +14 -0
- package/lib/screenplay/models/ProtractorModalDialog.d.ts +0 -11
- package/lib/screenplay/models/ProtractorModalDialog.js +0 -43
- package/lib/screenplay/models/ProtractorModalDialog.js.map +0 -1
- package/lib/screenplay/models/locators/ProtractorNativeElementRoot.d.ts +0 -5
- package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js +0 -3
- package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js.map +0 -1
- package/src/screenplay/models/ProtractorModalDialog.ts +0 -49
- package/src/screenplay/models/locators/ProtractorNativeElementRoot.ts +0 -6
- package/tsconfig.eslint.json +0 -10
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Wraps Webdriver promise-like objects into
|
|
3
|
+
* a Node-native promise to allow for correct promise chaining.
|
|
4
4
|
*
|
|
5
5
|
* @private
|
|
6
6
|
*
|
|
7
7
|
* @param promiseLike
|
|
8
|
-
* @returns {Promise<T>}
|
|
9
8
|
*/
|
|
10
9
|
export function promised<T>(promiseLike: PromiseLike<T>): Promise<T> {
|
|
11
10
|
return new Promise((resolve, reject) => {
|
|
@@ -1,70 +1,83 @@
|
|
|
1
1
|
/* eslint-disable unicorn/prevent-abbreviations */
|
|
2
|
-
import { Answerable, Question, QuestionAdapter } from '@serenity-js/core';
|
|
3
|
-
import { formatted } from '@serenity-js/core/lib/io';
|
|
2
|
+
import { Answerable, d, Question, QuestionAdapter } from '@serenity-js/core';
|
|
4
3
|
|
|
5
4
|
import { BrowseTheWebWithProtractor } from '../abilities';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* Note that Protractor configuration parameters can be overridden via the command line.
|
|
7
|
+
* Returns a Protractor configuration parameter specified in `protractor.conf.js`
|
|
8
|
+
* and identified by name. Protractor configuration parameters can be overridden via the command line.
|
|
11
9
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* params: {
|
|
15
|
-
* login: {
|
|
16
|
-
* username: 'jane@example.org'
|
|
17
|
-
* password: process.env.PASSWORD
|
|
18
|
-
* }
|
|
19
|
-
* }
|
|
20
|
-
* // ...
|
|
21
|
-
* }
|
|
10
|
+
* **Warning:** this question is Protractor-specific, so using it in your tests
|
|
11
|
+
* will reduce their portability across test integration tools.
|
|
22
12
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
13
|
+
* ```js
|
|
14
|
+
* // protractor.conf.js
|
|
15
|
+
* exports.config = {
|
|
16
|
+
* params: {
|
|
17
|
+
* login: {
|
|
18
|
+
* username: 'jane@example.org'
|
|
19
|
+
* password: process.env.PASSWORD
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* // ...
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
25
|
*
|
|
26
|
-
*
|
|
27
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
28
|
-
* import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor';
|
|
29
|
-
* import { Enter } from '@serenity-js/web';
|
|
30
|
-
* import { protractor } from 'protractor';
|
|
26
|
+
* ## Overriding configuration parameter using the command line
|
|
31
27
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* Enter.theValue(ProtractorParam.called('login').username).into(Form.exampleInput),
|
|
36
|
-
* );
|
|
28
|
+
* ```shell
|
|
29
|
+
* npx protractor ./protractor.conf.js --params.login.username="bob@example.org"
|
|
30
|
+
* ```
|
|
37
31
|
*
|
|
38
|
-
*
|
|
39
|
-
* import { actorCalled } from '@serenity-js/core';
|
|
40
|
-
* import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor';
|
|
41
|
-
* import { Enter } from '@serenity-js/web';
|
|
42
|
-
* import { protractor } from 'protractor';
|
|
32
|
+
* ## Using as `QuestionAdapter`
|
|
43
33
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
36
|
+
* import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor'
|
|
37
|
+
* import { Enter } from '@serenity-js/web'
|
|
38
|
+
* import { protractor } from 'protractor'
|
|
49
39
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
40
|
+
* await actorCalled('Jane')
|
|
41
|
+
* .whoCan( BrowseTheWebWithProtractor.using(protractor.browser))
|
|
42
|
+
* .attemptsTo(
|
|
43
|
+
* Enter.theValue(ProtractorParam.called('login').username).into(Form.exampleInput),
|
|
44
|
+
* )
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* ## Specifying path to param as string
|
|
48
|
+
*
|
|
49
|
+
* ```ts
|
|
50
|
+
* import { actorCalled } from '@serenity-js/core'
|
|
51
|
+
* import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor'
|
|
52
|
+
* import { Enter } from '@serenity-js/web'
|
|
53
|
+
* import { protractor } from 'protractor
|
|
54
|
+
*
|
|
55
|
+
* await actorCalled('Jane')
|
|
56
|
+
* .whoCan(BrowseTheWebWithProtractor.using(protractor.browser))
|
|
57
|
+
* .attemptsTo(
|
|
58
|
+
* Enter.theValue(ProtractorParam.called('login.username')).into(Form.exampleInput),
|
|
59
|
+
* );
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* ## Learn more
|
|
63
|
+
* - {@apilink BrowseTheWebWithProtractor.param}
|
|
64
|
+
*
|
|
65
|
+
* @group Questions
|
|
53
66
|
*/
|
|
54
67
|
export class ProtractorParam
|
|
55
68
|
{
|
|
56
69
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* i.e. `login.username`
|
|
70
|
+
* Name of the parameter to retrieve. This could also be a dot-delimited path,
|
|
71
|
+
* e.g. `login.username`
|
|
60
72
|
*
|
|
61
|
-
* @param
|
|
62
|
-
* @returns {Question<Promise<R>> & Adapter<R>}
|
|
73
|
+
* @param name
|
|
63
74
|
*/
|
|
64
|
-
static called<
|
|
65
|
-
return Question.about<
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
static called<Return_Type>(name: Answerable<string>): QuestionAdapter<Return_Type> {
|
|
76
|
+
return Question.about<Return_Type>(d`the ${ name } param specified in Protractor config`, async actor => {
|
|
77
|
+
const paramName = await actor.answer(name);
|
|
78
|
+
const browseTheWeb = BrowseTheWebWithProtractor.as(actor) as BrowseTheWebWithProtractor;
|
|
79
|
+
|
|
80
|
+
return browseTheWeb.param<Return_Type>(paramName);
|
|
68
81
|
});
|
|
69
82
|
}
|
|
70
83
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { WebElement } from 'protractor';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Under [certain conditions](https://github.com/angular/protractor/blob/4bc80d1a459542d883ea9200e4e1f48d265d0fda/lib/element.ts#L797),
|
|
5
|
+
* Protractor `WebElement` implements a `then()` method, and under others it doesn't.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* This design makes it look like a "thenable" in some scenarios, but like a non-thenable in others.
|
|
8
|
+
*
|
|
9
|
+
* This function wraps `WebElement` in a `Proxy` object that ensures the wrapped element is always non-thenable.
|
|
8
10
|
*
|
|
9
11
|
* @param promiseLike
|
|
10
|
-
* @returns {Promise<T>}
|
|
11
12
|
*/
|
|
12
13
|
export function unpromisedWebElement<T extends WebElement>(promiseLike: T): T {
|
|
13
14
|
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ModalDialog } from '@serenity-js/web';
|
|
2
|
-
import { ProtractorBrowser } from 'protractor';
|
|
3
|
-
export declare class ProtractorModalDialog extends ModalDialog {
|
|
4
|
-
private readonly browser;
|
|
5
|
-
constructor(browser: ProtractorBrowser);
|
|
6
|
-
accept(): Promise<void>;
|
|
7
|
-
dismiss(): Promise<void>;
|
|
8
|
-
text(): Promise<string>;
|
|
9
|
-
enterValue(value: string | number | (string | number)[]): Promise<void>;
|
|
10
|
-
isPresent(): Promise<boolean>;
|
|
11
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProtractorModalDialog = void 0;
|
|
4
|
-
const web_1 = require("@serenity-js/web");
|
|
5
|
-
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
6
|
-
const promised_1 = require("../promised");
|
|
7
|
-
class ProtractorModalDialog extends web_1.ModalDialog {
|
|
8
|
-
constructor(browser) {
|
|
9
|
-
super();
|
|
10
|
-
this.browser = browser;
|
|
11
|
-
}
|
|
12
|
-
accept() {
|
|
13
|
-
return (0, promised_1.promised)(this.browser.switchTo().alert().accept());
|
|
14
|
-
}
|
|
15
|
-
dismiss() {
|
|
16
|
-
return (0, promised_1.promised)(this.browser.switchTo().alert().dismiss());
|
|
17
|
-
}
|
|
18
|
-
text() {
|
|
19
|
-
return (0, promised_1.promised)(this.browser.switchTo().alert().getText());
|
|
20
|
-
}
|
|
21
|
-
async enterValue(value) {
|
|
22
|
-
const text = [].concat(value).join('');
|
|
23
|
-
await (0, promised_1.promised)(this.browser.switchTo().alert().sendKeys(text));
|
|
24
|
-
await (0, promised_1.promised)(this.browser.switchTo().alert().accept());
|
|
25
|
-
}
|
|
26
|
-
// todo: remove in favour of auto-wait in the above methods
|
|
27
|
-
isPresent() {
|
|
28
|
-
return (0, promised_1.promised)(this.browser.switchTo().alert())
|
|
29
|
-
.then(() => true, error => {
|
|
30
|
-
// Based on:
|
|
31
|
-
// https://github.com/SeleniumHQ/selenium/blob/941dc9c6b2e2aa4f701c1b72be8de03d4b7e996a/javascript/node/selenium-webdriver/lib/until.js#L107
|
|
32
|
-
return error instanceof Error &&
|
|
33
|
-
!(error.name === selenium_webdriver_1.error.NoSuchAlertError.name
|
|
34
|
-
// XXX: Workaround for GeckoDriver error `TypeError: can't convert null
|
|
35
|
-
// to object`. For more details, see
|
|
36
|
-
// https://github.com/SeleniumHQ/selenium/pull/2137
|
|
37
|
-
|| (error.name === selenium_webdriver_1.error.WebDriverError.name
|
|
38
|
-
&& error.message === `can't convert null to object`));
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.ProtractorModalDialog = ProtractorModalDialog;
|
|
43
|
-
//# sourceMappingURL=ProtractorModalDialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProtractorModalDialog.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorModalDialog.ts"],"names":[],"mappings":";;;AAAA,0CAA+C;AAE/C,2DAAqD;AAErD,0CAAuC;AAEvC,MAAa,qBAAsB,SAAQ,iBAAW;IAElD,YAA6B,OAA0B;QACnD,KAAK,EAAE,CAAC;QADiB,YAAO,GAAP,OAAO,CAAmB;IAEvD,CAAC;IAED,MAAM;QACF,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACH,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI;QACA,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAA4C;QACzD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,2DAA2D;IAC3D,SAAS;QACL,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;aAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;YAEtB,YAAY;YACZ,4IAA4I;YAC5I,OAAO,KAAK,YAAY,KAAK;gBACzB,CAAE,CACE,KAAK,CAAC,IAAI,KAAK,0BAAM,CAAC,gBAAgB,CAAC,IAAI;oBAC3C,uEAAuE;oBACvE,oCAAoC;oBACpC,mDAAmD;uBAChD,CAAC,KAAK,CAAC,IAAI,KAAK,0BAAM,CAAC,cAAc,CAAC,IAAI;2BACtC,KAAK,CAAC,OAAO,KAAK,8BAA8B,CAAC,CAC3D,CAAC;QACV,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AA1CD,sDA0CC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProtractorNativeElementRoot.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorNativeElementRoot.ts"],"names":[],"mappings":""}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { ModalDialog } from '@serenity-js/web';
|
|
2
|
-
import { ProtractorBrowser } from 'protractor';
|
|
3
|
-
import { error as errors } from 'selenium-webdriver';
|
|
4
|
-
|
|
5
|
-
import { promised } from '../promised';
|
|
6
|
-
|
|
7
|
-
export class ProtractorModalDialog extends ModalDialog {
|
|
8
|
-
|
|
9
|
-
constructor(private readonly browser: ProtractorBrowser) {
|
|
10
|
-
super();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
accept(): Promise<void> {
|
|
14
|
-
return promised(this.browser.switchTo().alert().accept());
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
dismiss(): Promise<void> {
|
|
18
|
-
return promised(this.browser.switchTo().alert().dismiss());
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
text(): Promise<string> {
|
|
22
|
-
return promised(this.browser.switchTo().alert().getText());
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async enterValue(value: string | number | (string | number)[]): Promise<void> {
|
|
26
|
-
const text = [].concat(value).join('');
|
|
27
|
-
await promised(this.browser.switchTo().alert().sendKeys(text));
|
|
28
|
-
await promised(this.browser.switchTo().alert().accept());
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// todo: remove in favour of auto-wait in the above methods
|
|
32
|
-
isPresent(): Promise<boolean> {
|
|
33
|
-
return promised(this.browser.switchTo().alert())
|
|
34
|
-
.then(() => true, error => {
|
|
35
|
-
|
|
36
|
-
// Based on:
|
|
37
|
-
// https://github.com/SeleniumHQ/selenium/blob/941dc9c6b2e2aa4f701c1b72be8de03d4b7e996a/javascript/node/selenium-webdriver/lib/until.js#L107
|
|
38
|
-
return error instanceof Error &&
|
|
39
|
-
! (
|
|
40
|
-
error.name === errors.NoSuchAlertError.name
|
|
41
|
-
// XXX: Workaround for GeckoDriver error `TypeError: can't convert null
|
|
42
|
-
// to object`. For more details, see
|
|
43
|
-
// https://github.com/SeleniumHQ/selenium/pull/2137
|
|
44
|
-
|| (error.name === errors.WebDriverError.name
|
|
45
|
-
&& error.message === `can't convert null to object`)
|
|
46
|
-
);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|