@progress/kendo-e2e 1.4.6 → 1.6.0
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.
|
@@ -4,9 +4,10 @@ export declare class EC {
|
|
|
4
4
|
static hasText(element: WebElement, text: string): (driver: WebDriver) => Promise<boolean>;
|
|
5
5
|
static hasValue(element: WebElement, value: string): (driver: WebDriver) => Promise<boolean>;
|
|
6
6
|
static hasFocus(element: WebElement): (driver: WebDriver) => Promise<boolean>;
|
|
7
|
+
static hasNoFocus(element: WebElement): (driver: WebDriver) => Promise<boolean>;
|
|
7
8
|
static hasChild(element: WebElement, locator: By): () => Promise<boolean>;
|
|
8
|
-
static hasAttribute(element: WebElement, attribute: string, value: string): (driver: WebDriver) => Promise<boolean>;
|
|
9
|
-
static hasClass(element: WebElement, value: string): (driver: WebDriver) => Promise<boolean>;
|
|
9
|
+
static hasAttribute(element: WebElement, attribute: string, value: string, exactMatch?: boolean): (driver: WebDriver) => Promise<boolean>;
|
|
10
|
+
static hasClass(element: WebElement, value: string, exactMatch?: boolean): (driver: WebDriver) => Promise<boolean>;
|
|
10
11
|
static isVisible(locator: By): (driver: WebDriver) => Promise<boolean>;
|
|
11
12
|
static notVisible(locator: By): (driver: WebDriver) => Promise<boolean>;
|
|
12
13
|
static isInViewport(locator: By): (driver: WebDriver) => Promise<boolean>;
|
|
@@ -40,6 +40,12 @@ class EC {
|
|
|
40
40
|
return (yield element.getId()) === (yield focused.getId());
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
+
static hasNoFocus(element) {
|
|
44
|
+
return (driver) => __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const focused = yield driver.switchTo().activeElement();
|
|
46
|
+
return (yield element.getId()) !== (yield focused.getId());
|
|
47
|
+
});
|
|
48
|
+
}
|
|
43
49
|
static hasChild(element, locator) {
|
|
44
50
|
return () => __awaiter(this, void 0, void 0, function* () {
|
|
45
51
|
return element.findElements(locator).then(result => {
|
|
@@ -47,13 +53,18 @@ class EC {
|
|
|
47
53
|
});
|
|
48
54
|
});
|
|
49
55
|
}
|
|
50
|
-
static hasAttribute(element, attribute, value) {
|
|
56
|
+
static hasAttribute(element, attribute, value, exactMatch = true) {
|
|
51
57
|
return () => element.getAttribute(attribute).then(result => {
|
|
52
|
-
|
|
58
|
+
if (exactMatch) {
|
|
59
|
+
return result === value;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
return result.includes(value);
|
|
63
|
+
}
|
|
53
64
|
});
|
|
54
65
|
}
|
|
55
|
-
static hasClass(element, value) {
|
|
56
|
-
return this.hasAttribute(element, "class", value);
|
|
66
|
+
static hasClass(element, value, exactMatch = false) {
|
|
67
|
+
return this.hasAttribute(element, "class", value, exactMatch);
|
|
57
68
|
}
|
|
58
69
|
static isVisible(locator) {
|
|
59
70
|
return (driver) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/selenium/conditions.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,MAAM,eAAe,GAAG,UAAU,OAAO;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,MAAM,EAAE;QACX,IAAI,MAAM,KAAK,OAAO,EAAE;YACpB,OAAO,IAAI,CAAC;SACf;QACD,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;KACjC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAa,EAAE;IACJ,MAAM,CAAC,OAAO,CAAC,OAAmB,EAAE,IAAY;QACnD,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACzC,OAAO,MAAM,KAAK,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAmB,EAAE,KAAa;QACrD,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrD,OAAO,MAAM,KAAK,KAAK,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAmB;QACtC,OAAO,CAAO,MAAiB,EAAE,EAAE;YAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO,CAAA,MAAM,OAAO,CAAC,KAAK,EAAE,OAAK,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA,CAAC;QAC3D,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAmB,EAAE,OAAW;QACnD,OAAO,GAAS,EAAE;YACd,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,OAAmB,EAAE,SAAiB,EAAE,KAAa;
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/selenium/conditions.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,MAAM,eAAe,GAAG,UAAU,OAAO;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,MAAM,EAAE;QACX,IAAI,MAAM,KAAK,OAAO,EAAE;YACpB,OAAO,IAAI,CAAC;SACf;QACD,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;KACjC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAa,EAAE;IACJ,MAAM,CAAC,OAAO,CAAC,OAAmB,EAAE,IAAY;QACnD,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACzC,OAAO,MAAM,KAAK,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAmB,EAAE,KAAa;QACrD,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrD,OAAO,MAAM,KAAK,KAAK,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAmB;QACtC,OAAO,CAAO,MAAiB,EAAE,EAAE;YAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO,CAAA,MAAM,OAAO,CAAC,KAAK,EAAE,OAAK,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA,CAAC;QAC3D,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAmB;QACxC,OAAO,CAAO,MAAiB,EAAE,EAAE;YAC/B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO,CAAA,MAAM,OAAO,CAAC,KAAK,EAAE,OAAK,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA,CAAC;QAC3D,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAmB,EAAE,OAAW;QACnD,OAAO,GAAS,EAAE;YACd,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAC/C,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,OAAmB,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAU,GAAG,IAAI;QAC/F,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACvD,IAAI,UAAU,EAAE;gBACZ,OAAO,MAAM,KAAK,KAAK,CAAC;aAC3B;iBAAM;gBACH,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,OAAmB,EAAE,KAAa,EAAE,UAAU,GAAG,KAAK;QACzE,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,OAAW;QAC/B,OAAO,CAAO,MAAiB,EAAE,EAAE;YAC/B,IAAI;gBACA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClD,OAAO,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;aACtC;YAAC,WAAM;gBACJ,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAW;QAChC,OAAO,CAAO,MAAiB,EAAE,EAAE;YAC/B,IAAI;gBACA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClD,OAAO,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;aACzC;YAAC,WAAM;gBACJ,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,OAAW;QAClC,OAAO,CAAO,MAAiB,EAAE,EAAE;YAC/B,IAAI;gBACA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACpE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;aACnC;YAAC,WAAM;gBACJ,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAAA,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,OAAW;QACnC,OAAO,CAAO,MAAiB,EAAE,EAAE;YAC/B,IAAI;gBACA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACpE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;aACpC;YAAC,WAAM;gBACJ,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAA,CAAC;IACN,CAAC;CACJ;AA9FD,gBA8FC"}
|
|
@@ -6,30 +6,31 @@ import { WaitCondition } from "./conditions";
|
|
|
6
6
|
export declare class WebApp {
|
|
7
7
|
driver: ThenableWebDriver;
|
|
8
8
|
constructor(driver: ThenableWebDriver);
|
|
9
|
-
find(locator: By, timeout?: number): Promise<WebElement>;
|
|
9
|
+
find(locator: By, timeout?: number, pollTimeout?: number): Promise<WebElement>;
|
|
10
10
|
findAll(locator: By): Promise<WebElement[]>;
|
|
11
11
|
findChild(rootElement: WebElement, locator: By, timeout?: number): Promise<WebElement>;
|
|
12
12
|
click(locator: By, timeout?: number): Promise<void>;
|
|
13
13
|
hover(locator: By, timeout?: number): Promise<void>;
|
|
14
14
|
contextClick(locator: By, timeout?: number): Promise<void>;
|
|
15
|
-
dragTo(source: WebElement, target: WebElement): Promise<void>;
|
|
16
|
-
dragByOffset(source: WebElement, offsetX: number, offsetY: number): Promise<void>;
|
|
17
|
-
type(element: WebElement, text: string, clear?: boolean): Promise<void>;
|
|
15
|
+
dragTo(source: By | WebElement, target: By | WebElement): Promise<void>;
|
|
16
|
+
dragByOffset(source: By | WebElement, offsetX: number, offsetY: number): Promise<void>;
|
|
17
|
+
type(element: By | WebElement, text: string, clear?: boolean): Promise<void>;
|
|
18
18
|
sendKey(key: string): Promise<void>;
|
|
19
19
|
sendKeyCombination(key1: string, key2: string): Promise<void>;
|
|
20
20
|
isVisible(locator: By, timeout?: number): Promise<boolean>;
|
|
21
21
|
isNotVisible(locator: By, timeout?: number): Promise<boolean>;
|
|
22
22
|
isInViewport(locator: By, timeout?: number): Promise<boolean>;
|
|
23
23
|
isNotInViewport(locator: By, timeout?: number): Promise<boolean>;
|
|
24
|
-
hasFocus(element: WebElement): Promise<boolean>;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
hasFocus(element: By | WebElement): Promise<boolean>;
|
|
25
|
+
hasNoFocus(element: By | WebElement): Promise<boolean>;
|
|
26
|
+
hasText(element: By | WebElement, text: string): Promise<boolean>;
|
|
27
|
+
hasValue(element: By | WebElement, value: string): Promise<boolean>;
|
|
28
|
+
hasAttribute(element: By | WebElement, attribute: string, value: string, exactMatch?: boolean): Promise<boolean>;
|
|
29
|
+
hasClass(element: WebElement, value: string, exactMatch?: boolean): Promise<boolean>;
|
|
29
30
|
sleep(milliseconds: number): Promise<void>;
|
|
30
|
-
wait(condition: WebElementCondition | WaitCondition, timeout?: number, message?: any): Promise<void>;
|
|
31
|
-
waitSafely(condition: WebElementCondition | WaitCondition, timeout?: number): Promise<boolean>;
|
|
32
|
-
waitForAnimation(locator: By, timeout?: number,
|
|
31
|
+
wait(condition: WebElementCondition | WaitCondition, timeout?: number, message?: any, pollTimeout?: number): Promise<void>;
|
|
32
|
+
waitSafely(condition: WebElementCondition | WaitCondition, timeout?: number, pollTimeout?: number): Promise<boolean>;
|
|
33
|
+
waitForAnimation(locator: By, timeout?: number, pollTimeout?: number): Promise<void>;
|
|
33
34
|
getScreenshot(): Promise<string>;
|
|
34
35
|
scrollIntoView(locator: By, timeout?: number): Promise<void>;
|
|
35
36
|
scrollAndClick(locator: By, timeout?: number): Promise<void>;
|
package/dist/selenium/web-app.js
CHANGED
|
@@ -19,14 +19,23 @@ class WebApp {
|
|
|
19
19
|
constructor(driver) {
|
|
20
20
|
this.driver = driver;
|
|
21
21
|
}
|
|
22
|
-
find(locator, timeout = 10000) {
|
|
22
|
+
find(locator, timeout = 10000, pollTimeout = 25) {
|
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const
|
|
24
|
+
const errorMessage = `Failed to find element located by ${locator}.`;
|
|
25
|
+
const element = yield this.driver.wait(selenium_webdriver_1.until.elementLocated(locator), timeout, errorMessage, pollTimeout);
|
|
25
26
|
// Hack to handle Safari
|
|
26
27
|
const capabilities = yield this.driver.getCapabilities();
|
|
27
28
|
const browserName = capabilities.getBrowserName().toLowerCase();
|
|
28
29
|
if (browserName === "safari") {
|
|
29
|
-
|
|
30
|
+
const isVisible = () => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
try {
|
|
32
|
+
return (yield element.getRect()) !== undefined;
|
|
33
|
+
}
|
|
34
|
+
catch (_a) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
yield this.wait(isVisible, timeout, errorMessage, pollTimeout);
|
|
30
39
|
}
|
|
31
40
|
return element;
|
|
32
41
|
});
|
|
@@ -72,18 +81,42 @@ class WebApp {
|
|
|
72
81
|
}
|
|
73
82
|
dragTo(source, target) {
|
|
74
83
|
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
let sourceElement;
|
|
85
|
+
let targetElement;
|
|
86
|
+
if (source instanceof selenium_webdriver_1.By) {
|
|
87
|
+
sourceElement = yield this.find(source);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
sourceElement = source;
|
|
91
|
+
}
|
|
92
|
+
if (target instanceof selenium_webdriver_1.By) {
|
|
93
|
+
targetElement = yield this.find(target);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
targetElement = target;
|
|
97
|
+
}
|
|
75
98
|
const actions = this.driver.actions({ async: true });
|
|
76
|
-
yield actions.dragAndDrop(
|
|
99
|
+
yield actions.dragAndDrop(sourceElement, targetElement).perform();
|
|
77
100
|
});
|
|
78
101
|
}
|
|
79
102
|
dragByOffset(source, offsetX, offsetY) {
|
|
80
103
|
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
let sourceElement;
|
|
105
|
+
if (source instanceof selenium_webdriver_1.By) {
|
|
106
|
+
sourceElement = yield this.find(source);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
sourceElement = source;
|
|
110
|
+
}
|
|
81
111
|
const actions = this.driver.actions({ async: true });
|
|
82
|
-
yield actions.dragAndDrop(
|
|
112
|
+
yield actions.dragAndDrop(sourceElement, { x: offsetX, y: offsetY }).perform();
|
|
83
113
|
});
|
|
84
114
|
}
|
|
85
115
|
type(element, text, clear = true) {
|
|
86
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
if (element instanceof selenium_webdriver_1.By) {
|
|
118
|
+
element = yield this.find(element);
|
|
119
|
+
}
|
|
87
120
|
if (clear) {
|
|
88
121
|
yield element.clear();
|
|
89
122
|
}
|
|
@@ -122,27 +155,50 @@ class WebApp {
|
|
|
122
155
|
}
|
|
123
156
|
hasFocus(element) {
|
|
124
157
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
+
if (element instanceof selenium_webdriver_1.By) {
|
|
159
|
+
return yield this.waitSafely(conditions_1.EC.hasFocus(yield this.find(element)));
|
|
160
|
+
}
|
|
125
161
|
return yield this.waitSafely(conditions_1.EC.hasFocus(element));
|
|
126
162
|
});
|
|
127
163
|
}
|
|
164
|
+
hasNoFocus(element) {
|
|
165
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
+
if (element instanceof selenium_webdriver_1.By) {
|
|
167
|
+
return yield this.waitSafely(conditions_1.EC.hasNoFocus(yield this.find(element)));
|
|
168
|
+
}
|
|
169
|
+
return yield this.waitSafely(conditions_1.EC.hasNoFocus(element));
|
|
170
|
+
});
|
|
171
|
+
}
|
|
128
172
|
hasText(element, text) {
|
|
129
173
|
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
if (element instanceof selenium_webdriver_1.By) {
|
|
175
|
+
return yield this.waitSafely(conditions_1.EC.hasText(yield this.find(element), text));
|
|
176
|
+
}
|
|
130
177
|
return yield this.waitSafely(conditions_1.EC.hasText(element, text));
|
|
131
178
|
});
|
|
132
179
|
}
|
|
133
180
|
hasValue(element, value) {
|
|
134
181
|
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
if (element instanceof selenium_webdriver_1.By) {
|
|
183
|
+
return yield this.waitSafely(conditions_1.EC.hasValue(yield this.find(element), value));
|
|
184
|
+
}
|
|
135
185
|
return yield this.waitSafely(conditions_1.EC.hasValue(element, value));
|
|
136
186
|
});
|
|
137
187
|
}
|
|
138
|
-
hasAttribute(element, attribute, value) {
|
|
188
|
+
hasAttribute(element, attribute, value, exactMatch = true) {
|
|
139
189
|
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
-
|
|
190
|
+
if (element instanceof selenium_webdriver_1.By) {
|
|
191
|
+
return yield this.waitSafely(conditions_1.EC.hasAttribute(yield this.find(element), attribute, value, exactMatch));
|
|
192
|
+
}
|
|
193
|
+
return yield this.waitSafely(conditions_1.EC.hasAttribute(element, attribute, value, exactMatch));
|
|
141
194
|
});
|
|
142
195
|
}
|
|
143
|
-
hasClass(element, value) {
|
|
196
|
+
hasClass(element, value, exactMatch = false) {
|
|
144
197
|
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
-
|
|
198
|
+
if (element instanceof selenium_webdriver_1.By) {
|
|
199
|
+
return yield this.waitSafely(conditions_1.EC.hasClass(yield this.find(element), value, exactMatch));
|
|
200
|
+
}
|
|
201
|
+
return yield this.waitSafely(conditions_1.EC.hasClass(element, value, exactMatch));
|
|
146
202
|
});
|
|
147
203
|
}
|
|
148
204
|
sleep(milliseconds) {
|
|
@@ -150,15 +206,15 @@ class WebApp {
|
|
|
150
206
|
yield this.driver.sleep(milliseconds);
|
|
151
207
|
});
|
|
152
208
|
}
|
|
153
|
-
wait(condition, timeout = 10000, message = undefined) {
|
|
209
|
+
wait(condition, timeout = 10000, message = undefined, pollTimeout = 25) {
|
|
154
210
|
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
-
yield this.driver.wait(condition, timeout, message);
|
|
211
|
+
yield this.driver.wait(condition, timeout, message, pollTimeout);
|
|
156
212
|
});
|
|
157
213
|
}
|
|
158
|
-
waitSafely(condition, timeout = 10000) {
|
|
214
|
+
waitSafely(condition, timeout = 10000, pollTimeout = 25) {
|
|
159
215
|
return __awaiter(this, void 0, void 0, function* () {
|
|
160
216
|
try {
|
|
161
|
-
yield this.driver.wait(condition, timeout);
|
|
217
|
+
yield this.driver.wait(condition, timeout, null, pollTimeout);
|
|
162
218
|
return true;
|
|
163
219
|
}
|
|
164
220
|
catch (error) {
|
|
@@ -166,18 +222,19 @@ class WebApp {
|
|
|
166
222
|
}
|
|
167
223
|
});
|
|
168
224
|
}
|
|
169
|
-
waitForAnimation(locator, timeout = 10000,
|
|
225
|
+
waitForAnimation(locator, timeout = 10000, pollTimeout = 50) {
|
|
170
226
|
return __awaiter(this, void 0, void 0, function* () {
|
|
171
227
|
yield this.wait(conditions_1.EC.isVisible(locator), timeout, `Failed to find ${locator.value}`);
|
|
172
|
-
|
|
228
|
+
const isElementStable = () => __awaiter(this, void 0, void 0, function* () {
|
|
173
229
|
const rect = yield (yield this.find(locator)).getRect();
|
|
174
|
-
yield this.sleep(
|
|
230
|
+
yield this.sleep(pollTimeout);
|
|
175
231
|
const newRect = yield (yield this.find(locator)).getRect();
|
|
176
232
|
return (rect.x === newRect.x &&
|
|
177
233
|
rect.y === newRect.y &&
|
|
178
234
|
rect.width === newRect.width &&
|
|
179
235
|
rect.height === newRect.height);
|
|
180
|
-
})
|
|
236
|
+
});
|
|
237
|
+
yield this.wait(isElementStable, timeout, `Element ${locator.value} is still moving or resizing.`);
|
|
181
238
|
});
|
|
182
239
|
}
|
|
183
240
|
getScreenshot() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-app.js","sourceRoot":"","sources":["../../src/selenium/web-app.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAmG;AACnG,6CAAiD;AAEjD;;GAEG;AACH,MAAa,MAAM;IAGf,YAAY,MAAyB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEY,IAAI,CAAC,OAAW,EAAE,OAAO,GAAG,KAAK;;
|
|
1
|
+
{"version":3,"file":"web-app.js","sourceRoot":"","sources":["../../src/selenium/web-app.ts"],"names":[],"mappings":"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"}
|