@serenity-js/protractor 3.0.0-rc.13 → 3.0.0-rc.16
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 +56 -183
- package/lib/adapter/ProtractorFrameworkAdapter.js +1 -1
- package/lib/adapter/ProtractorFrameworkAdapter.js.map +1 -1
- package/lib/adapter/browser-detector/StandardisedCapabilities.d.ts +4 -4
- package/lib/adapter/browser-detector/StandardisedCapabilities.js +14 -14
- package/lib/adapter/browser-detector/StandardisedCapabilities.js.map +1 -1
- package/lib/adapter/browser-detector/index.js +5 -1
- package/lib/adapter/browser-detector/index.js.map +1 -1
- package/lib/adapter/index.js +5 -1
- package/lib/adapter/index.js.map +1 -1
- package/lib/adapter/reporter/ProtractorReporter.js +9 -4
- package/lib/adapter/reporter/ProtractorReporter.js.map +1 -1
- package/lib/adapter/reporter/index.js +5 -1
- package/lib/adapter/reporter/index.js.map +1 -1
- package/lib/adapter/runner/TestRunnerDetector.js +1 -1
- package/lib/adapter/runner/TestRunnerDetector.js.map +1 -1
- package/lib/adapter/runner/index.js +5 -1
- package/lib/adapter/runner/index.js.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/screenplay/abilities/index.js +5 -1
- package/lib/screenplay/abilities/index.js.map +1 -1
- package/lib/screenplay/index.js +5 -1
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/interactions/index.js +5 -1
- package/lib/screenplay/interactions/index.js.map +1 -1
- package/lib/screenplay/models/ProtractorPageElement.d.ts +14 -0
- package/lib/screenplay/models/ProtractorPageElement.js +28 -14
- package/lib/screenplay/models/ProtractorPageElement.js.map +1 -1
- package/lib/screenplay/models/index.js +5 -1
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/locators/index.js +5 -1
- package/lib/screenplay/models/locators/index.js.map +1 -1
- package/lib/screenplay/questions/index.js +5 -1
- package/lib/screenplay/questions/index.js.map +1 -1
- package/package.json +17 -17
- package/src/adapter/ProtractorFrameworkAdapter.ts +1 -1
- package/src/adapter/browser-detector/StandardisedCapabilities.ts +24 -24
- package/src/adapter/reporter/ProtractorReporter.ts +13 -13
- package/src/adapter/runner/TestRunnerDetector.ts +1 -1
- package/src/screenplay/models/ProtractorPageElement.ts +30 -16
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/abilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C"}
|
package/lib/screenplay/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screenplay/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screenplay/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,iDAA+B;AAC/B,2CAAyB;AACzB,8CAA4B"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { PageElement, SwitchableOrigin } from '@serenity-js/web';
|
|
2
2
|
import { ElementFinder } from 'protractor';
|
|
3
|
+
/**
|
|
4
|
+
* @extends {@serenity-js/web/lib/screenplay/models~PageElement}
|
|
5
|
+
*/
|
|
3
6
|
export declare class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
4
7
|
of(parent: ProtractorPageElement): PageElement<ElementFinder>;
|
|
5
8
|
clearValue(): Promise<void>;
|
|
@@ -18,5 +21,16 @@ export declare class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
18
21
|
isEnabled(): Promise<boolean>;
|
|
19
22
|
isPresent(): Promise<boolean>;
|
|
20
23
|
isSelected(): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
* @desc
|
|
26
|
+
* Checks if the PageElement:
|
|
27
|
+
* - is not hidden, so doesn't have CSS style like `display: none`, `visibility: hidden` or `opacity: 0`
|
|
28
|
+
* - is within the browser viewport
|
|
29
|
+
* - doesn't have its centre covered by other elements
|
|
30
|
+
*
|
|
31
|
+
* @returns {Promise<boolean>}
|
|
32
|
+
*
|
|
33
|
+
* @see {@link @serenity-js/web/lib/screenplay/models~PageElement}
|
|
34
|
+
*/
|
|
21
35
|
isVisible(): Promise<boolean>;
|
|
22
36
|
}
|
|
@@ -5,15 +5,18 @@ const core_1 = require("@serenity-js/core");
|
|
|
5
5
|
const web_1 = require("@serenity-js/web");
|
|
6
6
|
const protractor_1 = require("protractor");
|
|
7
7
|
const promised_1 = require("../promised");
|
|
8
|
+
/**
|
|
9
|
+
* @extends {@serenity-js/web/lib/screenplay/models~PageElement}
|
|
10
|
+
*/
|
|
8
11
|
class ProtractorPageElement extends web_1.PageElement {
|
|
9
12
|
of(parent) {
|
|
10
13
|
return new ProtractorPageElement(this.locator.of(parent.locator));
|
|
11
14
|
}
|
|
12
15
|
async clearValue() {
|
|
13
|
-
function removeCharactersFrom(elf, numberOfCharacters) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
async function removeCharactersFrom(elf, numberOfCharacters) {
|
|
17
|
+
if (numberOfCharacters > 0) {
|
|
18
|
+
await elf.sendKeys(protractor_1.protractor.Key.END, ...times(numberOfCharacters, protractor_1.protractor.Key.BACK_SPACE));
|
|
19
|
+
}
|
|
17
20
|
}
|
|
18
21
|
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
19
22
|
function times(length, key) {
|
|
@@ -27,7 +30,7 @@ class ProtractorPageElement extends web_1.PageElement {
|
|
|
27
30
|
}
|
|
28
31
|
async click() {
|
|
29
32
|
const element = await this.nativeElement();
|
|
30
|
-
return element.click();
|
|
33
|
+
return (0, promised_1.promised)(element.click());
|
|
31
34
|
}
|
|
32
35
|
async doubleClick() {
|
|
33
36
|
const element = await this.nativeElement();
|
|
@@ -39,7 +42,7 @@ class ProtractorPageElement extends web_1.PageElement {
|
|
|
39
42
|
}
|
|
40
43
|
async enterValue(value) {
|
|
41
44
|
const element = await this.nativeElement();
|
|
42
|
-
return element.sendKeys([].concat(value).join(''));
|
|
45
|
+
return (0, promised_1.promised)(element.sendKeys([].concat(value).join('')));
|
|
43
46
|
}
|
|
44
47
|
async scrollIntoView() {
|
|
45
48
|
const element = await this.nativeElement();
|
|
@@ -63,11 +66,11 @@ class ProtractorPageElement extends web_1.PageElement {
|
|
|
63
66
|
}
|
|
64
67
|
async attribute(name) {
|
|
65
68
|
const element = await this.nativeElement();
|
|
66
|
-
return element.getAttribute(name);
|
|
69
|
+
return (0, promised_1.promised)(element.getAttribute(name));
|
|
67
70
|
}
|
|
68
71
|
async text() {
|
|
69
72
|
const element = await this.nativeElement();
|
|
70
|
-
return element.getText();
|
|
73
|
+
return (0, promised_1.promised)(element.getText());
|
|
71
74
|
}
|
|
72
75
|
async value() {
|
|
73
76
|
const element = await this.nativeElement();
|
|
@@ -90,7 +93,7 @@ class ProtractorPageElement extends web_1.PageElement {
|
|
|
90
93
|
await browser.switchTo().frame(webElement);
|
|
91
94
|
return {
|
|
92
95
|
switchBack: async () => {
|
|
93
|
-
await browser.driver.switchToParentFrame();
|
|
96
|
+
await (0, promised_1.promised)(browser.driver.switchToParentFrame());
|
|
94
97
|
},
|
|
95
98
|
};
|
|
96
99
|
}
|
|
@@ -100,7 +103,7 @@ class ProtractorPageElement extends web_1.PageElement {
|
|
|
100
103
|
await webElement.getDriver().executeScript(`arguments[0].focus()`, webElement);
|
|
101
104
|
return {
|
|
102
105
|
switchBack: async () => {
|
|
103
|
-
await webElement.getDriver().executeScript(`arguments[0].focus()`, previouslyFocusedElement);
|
|
106
|
+
await (0, promised_1.promised)(webElement.getDriver().executeScript(`arguments[0].focus()`, previouslyFocusedElement));
|
|
104
107
|
},
|
|
105
108
|
};
|
|
106
109
|
}
|
|
@@ -112,23 +115,34 @@ class ProtractorPageElement extends web_1.PageElement {
|
|
|
112
115
|
async isActive() {
|
|
113
116
|
const element = await this.nativeElement();
|
|
114
117
|
const webElement = await element.getWebElement();
|
|
115
|
-
return webElement.getDriver().switchTo().activeElement().then((active) => element.equals(active));
|
|
118
|
+
return (0, promised_1.promised)(webElement.getDriver().switchTo().activeElement().then((active) => element.equals(active)));
|
|
116
119
|
}
|
|
117
120
|
async isClickable() {
|
|
118
121
|
return this.isEnabled();
|
|
119
122
|
}
|
|
120
123
|
async isEnabled() {
|
|
121
124
|
const element = await this.nativeElement();
|
|
122
|
-
return element.isEnabled();
|
|
125
|
+
return (0, promised_1.promised)(element.isEnabled());
|
|
123
126
|
}
|
|
124
127
|
async isPresent() {
|
|
125
128
|
const element = await this.nativeElement();
|
|
126
|
-
return element.isPresent();
|
|
129
|
+
return (0, promised_1.promised)(element.isPresent());
|
|
127
130
|
}
|
|
128
131
|
async isSelected() {
|
|
129
132
|
const element = await this.nativeElement();
|
|
130
|
-
return element.isSelected();
|
|
133
|
+
return (0, promised_1.promised)(element.isSelected());
|
|
131
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* @desc
|
|
137
|
+
* Checks if the PageElement:
|
|
138
|
+
* - is not hidden, so doesn't have CSS style like `display: none`, `visibility: hidden` or `opacity: 0`
|
|
139
|
+
* - is within the browser viewport
|
|
140
|
+
* - doesn't have its centre covered by other elements
|
|
141
|
+
*
|
|
142
|
+
* @returns {Promise<boolean>}
|
|
143
|
+
*
|
|
144
|
+
* @see {@link @serenity-js/web/lib/screenplay/models~PageElement}
|
|
145
|
+
*/
|
|
132
146
|
async isVisible() {
|
|
133
147
|
const element = await this.nativeElement();
|
|
134
148
|
if (!await element.isDisplayed()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtractorPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPageElement.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAC/C,0CAAiE;AACjE,2CAAuD;AAGvD,0CAAuC;AAEvC,MAAa,qBAAsB,SAAQ,iBAA0B;IAEjE,EAAE,CAAC,MAA6B;QAC5B,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,
|
|
1
|
+
{"version":3,"file":"ProtractorPageElement.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorPageElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,0DAAwC;AACxC,mDAAiC;AACjC,0DAAwC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,gEAA8C"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/questions/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/questions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/protractor",
|
|
3
|
-
"version": "3.0.0-rc.
|
|
3
|
+
"version": "3.0.0-rc.16",
|
|
4
4
|
"description": "Test your web apps with Serenity/JS",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -51,19 +51,19 @@
|
|
|
51
51
|
"npm": "^6 || ^7 || ^8"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@serenity-js/assertions": "3.0.0-rc.
|
|
55
|
-
"@serenity-js/core": "3.0.0-rc.
|
|
54
|
+
"@serenity-js/assertions": "3.0.0-rc.16",
|
|
55
|
+
"@serenity-js/core": "3.0.0-rc.16",
|
|
56
56
|
"deepmerge": "^4.2.2",
|
|
57
57
|
"is-plain-object": "^5.0.0",
|
|
58
58
|
"query-selector-shadow-dom": "^1.0.0",
|
|
59
|
+
"selenium-webdriver": "^3.6.0",
|
|
59
60
|
"tiny-types": "^1.17.0"
|
|
60
61
|
},
|
|
61
62
|
"peerDependencies": {
|
|
62
63
|
"@serenity-js/cucumber": "^3.0.0-rc",
|
|
63
64
|
"@serenity-js/jasmine": "^3.0.0-rc",
|
|
64
65
|
"@serenity-js/mocha": "^3.0.0-rc",
|
|
65
|
-
"protractor": "^5.0.0 || ^7.0.0"
|
|
66
|
-
"selenium-webdriver": "^3.6.0"
|
|
66
|
+
"protractor": "^5.0.0 || ^7.0.0"
|
|
67
67
|
},
|
|
68
68
|
"peerDependenciesMeta": {
|
|
69
69
|
"@serenity-js/cucumber": {
|
|
@@ -79,28 +79,28 @@
|
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@documentation/esdoc-template": "3.0.0",
|
|
81
81
|
"@integration/testing-tools": "3.0.0",
|
|
82
|
-
"@serenity-js/cucumber": "3.0.0-rc.
|
|
83
|
-
"@serenity-js/jasmine": "3.0.0-rc.
|
|
84
|
-
"@serenity-js/local-server": "3.0.0-rc.
|
|
85
|
-
"@serenity-js/mocha": "3.0.0-rc.
|
|
86
|
-
"@serenity-js/rest": "3.0.0-rc.
|
|
87
|
-
"@serenity-js/web": "3.0.0-rc.
|
|
82
|
+
"@serenity-js/cucumber": "3.0.0-rc.16",
|
|
83
|
+
"@serenity-js/jasmine": "3.0.0-rc.16",
|
|
84
|
+
"@serenity-js/local-server": "3.0.0-rc.16",
|
|
85
|
+
"@serenity-js/mocha": "3.0.0-rc.16",
|
|
86
|
+
"@serenity-js/rest": "3.0.0-rc.16",
|
|
87
|
+
"@serenity-js/web": "3.0.0-rc.16",
|
|
88
88
|
"@types/chai": "^4.3.0",
|
|
89
89
|
"@types/express": "^4.17.13",
|
|
90
90
|
"@types/html-minifier": "^4.0.2",
|
|
91
91
|
"@types/mocha": "^9.1.0",
|
|
92
92
|
"@types/selenium-webdriver": "^3.0.19",
|
|
93
93
|
"axios": "^0.21.4",
|
|
94
|
-
"body-parser": "^1.
|
|
94
|
+
"body-parser": "^1.20.0",
|
|
95
95
|
"cross-env": "^7.0.3",
|
|
96
|
-
"express": "^4.17.
|
|
96
|
+
"express": "^4.17.3",
|
|
97
97
|
"html-minifier": "^4.0.0",
|
|
98
|
-
"mocha": "^9.2.
|
|
98
|
+
"mocha": "^9.2.2",
|
|
99
99
|
"protractor": "^7.0.0",
|
|
100
100
|
"selenium-webdriver": "^3.6.0",
|
|
101
101
|
"start-server-and-test": "^1.14.0",
|
|
102
|
-
"ts-node": "^10.
|
|
103
|
-
"typescript": "^4.
|
|
102
|
+
"ts-node": "^10.7.0",
|
|
103
|
+
"typescript": "^4.6.3"
|
|
104
104
|
},
|
|
105
|
-
"gitHead": "
|
|
105
|
+
"gitHead": "636519a30032f1ff9a3fcba8c45433ca0e17fc7f"
|
|
106
106
|
}
|
|
@@ -53,7 +53,7 @@ export class ProtractorFrameworkAdapter {
|
|
|
53
53
|
.then(() => this.protractorRunner.runTestPreparer(TestRunnerDetector.protractorCliOptions()))
|
|
54
54
|
.then(() => runner.load(specs))
|
|
55
55
|
.then(() => runner.run())
|
|
56
|
-
.then(() =>
|
|
56
|
+
.then(() => (config.onComplete || noop)())
|
|
57
57
|
.then(() => reporter.report());
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -11,34 +11,33 @@ export class StandardisedCapabilities {
|
|
|
11
11
|
constructor(private currentBrowser: () => ProtractorBrowser) {
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
browserName():
|
|
14
|
+
browserName(): Promise<string | undefined> {
|
|
15
15
|
return this.get(
|
|
16
16
|
caps => caps.get('browserName'),
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
browserVersion():
|
|
21
|
-
|
|
20
|
+
async browserVersion(): Promise<string | undefined> {
|
|
21
|
+
const version = await this.get(
|
|
22
22
|
caps => caps.get('version'),
|
|
23
23
|
caps => caps.get('browserVersion'),
|
|
24
24
|
caps => caps.has('deviceManufacturer') && caps.has('deviceModel')
|
|
25
25
|
? `${ caps.get('deviceManufacturer') } ${ caps.get('deviceModel') }`
|
|
26
26
|
: undefined,
|
|
27
27
|
caps => caps.has('mobile') && caps.get('mobile').version,
|
|
28
|
-
).
|
|
29
|
-
then(version =>
|
|
30
|
-
this.get(
|
|
31
|
-
caps => !! caps.get('mobileEmulationEnabled') && '(mobile emulation)',
|
|
32
|
-
).then(suffix =>
|
|
33
|
-
[
|
|
34
|
-
version,
|
|
35
|
-
suffix,
|
|
36
|
-
].filter(_ => !!_).join(' '),
|
|
37
|
-
),
|
|
38
28
|
);
|
|
29
|
+
|
|
30
|
+
const suffix = await this.get(
|
|
31
|
+
caps => !! caps.get('mobileEmulationEnabled') && '(mobile emulation)',
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
return [
|
|
35
|
+
version,
|
|
36
|
+
suffix,
|
|
37
|
+
].filter(_ => !!_).join(' ');
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
platformName():
|
|
40
|
+
platformName(): Promise<string | undefined> {
|
|
42
41
|
return this.get(
|
|
43
42
|
caps => (!! caps.get('platformName') && ! /any/i.test(caps.get('platformName')))
|
|
44
43
|
? caps.get('platformName')
|
|
@@ -46,21 +45,22 @@ export class StandardisedCapabilities {
|
|
|
46
45
|
);
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
platformVersion():
|
|
48
|
+
platformVersion(): Promise<string | undefined> {
|
|
50
49
|
return this.get(
|
|
51
50
|
caps => caps.get('platformVersion'),
|
|
52
51
|
);
|
|
53
52
|
}
|
|
54
53
|
|
|
55
|
-
private get(...fetchers: Array<(capabilities: Capabilities) => string>):
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
54
|
+
private async get(...fetchers: Array<(capabilities: Capabilities) => string>): Promise<string | undefined> {
|
|
55
|
+
const capabilities = await this.currentBrowser().getCapabilities();
|
|
56
|
+
|
|
57
|
+
for (const fetcher of fetchers) {
|
|
58
|
+
const result = fetcher(capabilities);
|
|
59
|
+
if (result) {
|
|
60
|
+
return result;
|
|
62
61
|
}
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return undefined; // eslint-disable-line unicorn/no-useless-undefined
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -85,9 +85,9 @@ export class ProtractorReporter implements StageCrewMember {
|
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
private afterEach():
|
|
88
|
+
private async afterEach(): Promise<void> {
|
|
89
89
|
if (! this.runner.afterEach) {
|
|
90
|
-
return
|
|
90
|
+
return;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
const id = CorrelationId.create();
|
|
@@ -98,16 +98,16 @@ export class ProtractorReporter implements StageCrewMember {
|
|
|
98
98
|
this.stage.currentTime(),
|
|
99
99
|
));
|
|
100
100
|
|
|
101
|
-
|
|
102
|
-
.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
101
|
+
try {
|
|
102
|
+
await this.runner.afterEach();
|
|
103
|
+
|
|
104
|
+
this.stage.announce(new AsyncOperationCompleted(
|
|
105
|
+
new Description(`[${ this.constructor.name }] ProtractorRunner.afterEach succeeded`),
|
|
106
|
+
id,
|
|
107
|
+
this.stage.currentTime(),
|
|
108
|
+
));
|
|
109
|
+
} catch (error) {
|
|
110
|
+
this.stage.announce(new AsyncOperationFailed(error, id, this.stage.currentTime()));
|
|
111
|
+
}
|
|
112
112
|
}
|
|
113
113
|
}
|
|
@@ -53,7 +53,7 @@ export class TestRunnerDetector {
|
|
|
53
53
|
return this.useCucumber(config);
|
|
54
54
|
case !! config.mochaOpts:
|
|
55
55
|
return this.useMocha(config);
|
|
56
|
-
case !! config.jasmineNodeOpts:
|
|
56
|
+
case !! config.jasmineNodeOpts: // eslint-disable-line unicorn/no-useless-switch-case
|
|
57
57
|
default:
|
|
58
58
|
return this.useJasmine(config);
|
|
59
59
|
}
|
|
@@ -5,6 +5,9 @@ import { WebElement } from 'selenium-webdriver';
|
|
|
5
5
|
|
|
6
6
|
import { promised } from '../promised';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @extends {@serenity-js/web/lib/screenplay/models~PageElement}
|
|
10
|
+
*/
|
|
8
11
|
export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
9
12
|
|
|
10
13
|
of(parent: ProtractorPageElement): PageElement<ElementFinder> {
|
|
@@ -12,13 +15,13 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
12
15
|
}
|
|
13
16
|
|
|
14
17
|
async clearValue(): Promise<void> {
|
|
15
|
-
function removeCharactersFrom(elf: ElementFinder, numberOfCharacters: number):
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
: elf.sendKeys(
|
|
18
|
+
async function removeCharactersFrom(elf: ElementFinder, numberOfCharacters: number): Promise<void> {
|
|
19
|
+
if (numberOfCharacters > 0) {
|
|
20
|
+
await elf.sendKeys(
|
|
19
21
|
protractor.Key.END,
|
|
20
22
|
...times(numberOfCharacters, protractor.Key.BACK_SPACE),
|
|
21
23
|
);
|
|
24
|
+
}
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
@@ -37,7 +40,7 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
37
40
|
async click(): Promise<void> {
|
|
38
41
|
const element: ElementFinder = await this.nativeElement();
|
|
39
42
|
|
|
40
|
-
return element.click();
|
|
43
|
+
return promised(element.click());
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
async doubleClick(): Promise<void> {
|
|
@@ -55,9 +58,9 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
55
58
|
async enterValue(value: string | number | Array<string | number>): Promise<void> {
|
|
56
59
|
const element: ElementFinder = await this.nativeElement();
|
|
57
60
|
|
|
58
|
-
return element.sendKeys(
|
|
61
|
+
return promised(element.sendKeys(
|
|
59
62
|
[].concat(value).join(''),
|
|
60
|
-
);
|
|
63
|
+
));
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
async scrollIntoView(): Promise<void> {
|
|
@@ -95,13 +98,13 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
95
98
|
async attribute(name: string): Promise<string> {
|
|
96
99
|
const element: ElementFinder = await this.nativeElement();
|
|
97
100
|
|
|
98
|
-
return element.getAttribute(name);
|
|
101
|
+
return promised(element.getAttribute(name));
|
|
99
102
|
}
|
|
100
103
|
|
|
101
104
|
async text(): Promise<string> {
|
|
102
105
|
const element: ElementFinder = await this.nativeElement();
|
|
103
106
|
|
|
104
|
-
return element.getText();
|
|
107
|
+
return promised(element.getText());
|
|
105
108
|
}
|
|
106
109
|
|
|
107
110
|
async value(): Promise<string> {
|
|
@@ -134,7 +137,7 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
134
137
|
|
|
135
138
|
return {
|
|
136
139
|
switchBack: async (): Promise<void> => {
|
|
137
|
-
await browser.driver.switchToParentFrame();
|
|
140
|
+
await promised(browser.driver.switchToParentFrame());
|
|
138
141
|
},
|
|
139
142
|
};
|
|
140
143
|
}
|
|
@@ -146,7 +149,7 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
146
149
|
|
|
147
150
|
return {
|
|
148
151
|
switchBack: async (): Promise<void> => {
|
|
149
|
-
await webElement.getDriver().executeScript(`arguments[0].focus()`, previouslyFocusedElement);
|
|
152
|
+
await promised(webElement.getDriver().executeScript(`arguments[0].focus()`, previouslyFocusedElement));
|
|
150
153
|
},
|
|
151
154
|
};
|
|
152
155
|
}
|
|
@@ -159,9 +162,9 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
159
162
|
const element: ElementFinder = await this.nativeElement();
|
|
160
163
|
const webElement: WebElement = await element.getWebElement();
|
|
161
164
|
|
|
162
|
-
return webElement.getDriver().switchTo().activeElement().then((active: WebElement) =>
|
|
165
|
+
return promised(webElement.getDriver().switchTo().activeElement().then((active: WebElement) =>
|
|
163
166
|
element.equals(active),
|
|
164
|
-
);
|
|
167
|
+
));
|
|
165
168
|
}
|
|
166
169
|
|
|
167
170
|
async isClickable(): Promise<boolean> {
|
|
@@ -171,21 +174,32 @@ export class ProtractorPageElement extends PageElement<ElementFinder> {
|
|
|
171
174
|
async isEnabled(): Promise<boolean> {
|
|
172
175
|
const element: ElementFinder = await this.nativeElement();
|
|
173
176
|
|
|
174
|
-
return element.isEnabled();
|
|
177
|
+
return promised(element.isEnabled());
|
|
175
178
|
}
|
|
176
179
|
|
|
177
180
|
async isPresent(): Promise<boolean> {
|
|
178
181
|
const element: ElementFinder = await this.nativeElement();
|
|
179
182
|
|
|
180
|
-
return element.isPresent();
|
|
183
|
+
return promised(element.isPresent());
|
|
181
184
|
}
|
|
182
185
|
|
|
183
186
|
async isSelected(): Promise<boolean> {
|
|
184
187
|
const element: ElementFinder = await this.nativeElement();
|
|
185
188
|
|
|
186
|
-
return element.isSelected();
|
|
189
|
+
return promised(element.isSelected());
|
|
187
190
|
}
|
|
188
191
|
|
|
192
|
+
/**
|
|
193
|
+
* @desc
|
|
194
|
+
* Checks if the PageElement:
|
|
195
|
+
* - is not hidden, so doesn't have CSS style like `display: none`, `visibility: hidden` or `opacity: 0`
|
|
196
|
+
* - is within the browser viewport
|
|
197
|
+
* - doesn't have its centre covered by other elements
|
|
198
|
+
*
|
|
199
|
+
* @returns {Promise<boolean>}
|
|
200
|
+
*
|
|
201
|
+
* @see {@link @serenity-js/web/lib/screenplay/models~PageElement}
|
|
202
|
+
*/
|
|
189
203
|
async isVisible(): Promise<boolean> {
|
|
190
204
|
const element: ElementFinder = await this.nativeElement();
|
|
191
205
|
|