@progress/kendo-e2e 0.11.0 → 1.0.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.
- package/README.md +21 -5
- package/dist/a11y/a11y-wct-spec.d.ts +18 -0
- package/dist/a11y/a11y-wct-spec.js +155 -0
- package/dist/a11y/a11y-wct-spec.js.map +1 -0
- package/dist/a11y/index.d.ts +1 -0
- package/dist/a11y/index.js +6 -0
- package/dist/a11y/index.js.map +1 -0
- package/dist/components/grid.d.ts +13 -13
- package/dist/components/grid.js +25 -25
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/selenium/browser.d.ts +1 -1
- package/dist/selenium/browser.js +7 -7
- package/dist/selenium/browser.js.map +1 -1
- package/dist/selenium/chrome-browser.d.ts +9 -0
- package/dist/selenium/chrome-browser.js +24 -0
- package/dist/selenium/chrome-browser.js.map +1 -0
- package/dist/selenium/driver-manager.d.ts +3 -2
- package/dist/selenium/driver-manager.js +18 -4
- package/dist/selenium/driver-manager.js.map +1 -1
- package/dist/selenium/index.d.ts +1 -0
- package/dist/selenium/index.js +1 -0
- package/dist/selenium/index.js.map +1 -1
- package/dist/selenium/web-app.js +10 -2
- package/dist/selenium/web-app.js.map +1 -1
- package/package.json +28 -25
package/README.md
CHANGED
|
@@ -132,19 +132,33 @@ To check available mobile devices and capabilities please visit [this](https://w
|
|
|
132
132
|
|
|
133
133
|
### Find Elements and Wait for Conditions
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
Selenium default behavior when you search for element is to return it if available and throw if not available (do not try to wait until element is available).
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
To make writing e2e tests easier and tests more stable in `kendo-e2e` we have:
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
```js
|
|
140
|
+
const element = await browser.find(locator, timeout);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
This `find` with wait until element is available (until timeout reached), if timeout reached and element still not found it will throw.
|
|
140
144
|
|
|
141
145
|
### Detect JavaScript errors in Browser Logs
|
|
142
146
|
|
|
143
|
-
|
|
147
|
+
```js
|
|
148
|
+
await browser.getErrorLogs()
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Will return all errors in browser console and it is nice check we can perform after each test to ensure we have no missing resources or scripts throwing errors.
|
|
144
152
|
|
|
145
153
|
### Detect Accessibility Violations
|
|
146
154
|
|
|
147
|
-
|
|
155
|
+
```js
|
|
156
|
+
const disableRules = ['aria-allowed-role', 'label'];
|
|
157
|
+
const errors = await browser.getAccessibilityViolations('#table', disableRules);
|
|
158
|
+
expect(errors).toEqual([]);
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`getAccessibilityViolations` uses [axe](https://www.deque.com/axe/) to detect WCAG 2.1 violations.
|
|
148
162
|
|
|
149
163
|
### Kendo UI Components Abstractions
|
|
150
164
|
|
|
@@ -169,5 +183,7 @@ npm run build
|
|
|
169
183
|
Run tests:
|
|
170
184
|
|
|
171
185
|
```bash
|
|
186
|
+
npm run tests:a11y
|
|
172
187
|
npm run tests:e2e
|
|
188
|
+
npm run tests:visual
|
|
173
189
|
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ThenableWebDriver } from "selenium-webdriver";
|
|
2
|
+
declare type WCTSpecResult = {
|
|
3
|
+
passed: string[];
|
|
4
|
+
skipped: string[];
|
|
5
|
+
errors: string[];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Check current page for violations against WCT A11y Spec.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await getWCTSpecViolations(browser, spec, ['k-multiselect-autocomplete']});
|
|
12
|
+
*
|
|
13
|
+
* @param driver WebDriver instance
|
|
14
|
+
* @param spec A spec object (like https://unpkg.com/@progress/wct-a11y-spec@1.0.3/dist/jquery/test-def/test-definitions.json).
|
|
15
|
+
* @param excludeErrors Array of validation IDs that will be skipped.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getWCTSpecViolations(driver: ThenableWebDriver, spec: any, excludeErrors?: string[]): Promise<WCTSpecResult>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getWCTSpecViolations = void 0;
|
|
13
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
14
|
+
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
15
|
+
/**
|
|
16
|
+
* Check current page for violations against WCT A11y Spec.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* await getWCTSpecViolations(browser, spec, ['k-multiselect-autocomplete']});
|
|
20
|
+
*
|
|
21
|
+
* @param driver WebDriver instance
|
|
22
|
+
* @param spec A spec object (like https://unpkg.com/@progress/wct-a11y-spec@1.0.3/dist/jquery/test-def/test-definitions.json).
|
|
23
|
+
* @param excludeErrors Array of validation IDs that will be skipped.
|
|
24
|
+
*/
|
|
25
|
+
function getWCTSpecViolations(driver, spec, excludeErrors = []) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const passed = [];
|
|
28
|
+
const skipped = [];
|
|
29
|
+
const errors = [];
|
|
30
|
+
const result = { passed, skipped, errors };
|
|
31
|
+
for (const key of Object.keys(spec)) {
|
|
32
|
+
const component = spec[key];
|
|
33
|
+
const rules = component['rules'];
|
|
34
|
+
const keySelector = `.k-${key}`;
|
|
35
|
+
if ((yield driver.findElements(selenium_webdriver_1.By.css(keySelector))).length > 0) {
|
|
36
|
+
for (const rule of rules) {
|
|
37
|
+
const selector = rule['selector'];
|
|
38
|
+
let arraySelector = selector.split(',');
|
|
39
|
+
if (selector !== keySelector &&
|
|
40
|
+
selector.indexOf('.k-animation-container') === -1 &&
|
|
41
|
+
selector.indexOf('.k-list-ul') === -1 &&
|
|
42
|
+
selector.indexOf('.k-list-item') === -1 &&
|
|
43
|
+
selector.indexOf('.k-list-filter') === -1) {
|
|
44
|
+
arraySelector = arraySelector.map(s => keySelector + ' ' + s);
|
|
45
|
+
}
|
|
46
|
+
arraySelector.forEach((sel) => __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
if ((yield driver.findElements(selenium_webdriver_1.By.css(sel))).length > 0) {
|
|
48
|
+
const checks = rule['checks'], asyncSome = (arr, predicate) => __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
for (const e of arr) {
|
|
50
|
+
if (yield predicate(e))
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
});
|
|
55
|
+
for (const check of checks) {
|
|
56
|
+
const checkId = check['id'];
|
|
57
|
+
const conditionalCheck = check['when'];
|
|
58
|
+
const attribute = check['attribute'];
|
|
59
|
+
let expectedValue = check['value'];
|
|
60
|
+
if (typeof expectedValue === 'string' && expectedValue.includes(' ')) {
|
|
61
|
+
const refElementSelector = expectedValue.split(' ')[0];
|
|
62
|
+
if ((yield driver.findElements(selenium_webdriver_1.By.css(refElementSelector))).length > 0) {
|
|
63
|
+
expectedValue = yield (yield driver.findElement(selenium_webdriver_1.By.css(refElementSelector))).getAttribute(expectedValue.split(' ')[1]);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
result.skipped.push(`[${checkId}]: Skip check for ${sel}, as no ${refElementSelector} was found.`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (conditionalCheck !== undefined) {
|
|
71
|
+
result.skipped.push(`[${checkId}]: Skip check for ${sel}, conditional checks not supported.`);
|
|
72
|
+
}
|
|
73
|
+
else if (Array.isArray(attribute)) {
|
|
74
|
+
const pass = yield asyncSome(attribute, (attr) => __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
let attributeValue;
|
|
76
|
+
if (attr.indexOf('=') > -1) {
|
|
77
|
+
expectedValue = attr.split('=')[1];
|
|
78
|
+
attr = attr.split('=')[0];
|
|
79
|
+
}
|
|
80
|
+
if (attr === 'label for') {
|
|
81
|
+
attributeValue = yield (yield driver.findElement(selenium_webdriver_1.By.css(sel))).getAttribute('id');
|
|
82
|
+
const locator = selenium_webdriver_1.By.css(`label[for='${attributeValue}']`);
|
|
83
|
+
if ((yield driver.findElements(locator)).length > 0) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (attr === 'nodeName') {
|
|
88
|
+
attributeValue = (yield (yield driver.findElement(selenium_webdriver_1.By.css(sel))).getTagName()).toLowerCase();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
attributeValue = yield (yield driver.findElement(selenium_webdriver_1.By.css(sel))).getAttribute(attr);
|
|
92
|
+
}
|
|
93
|
+
if (expectedValue) {
|
|
94
|
+
return attributeValue === expectedValue;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return attributeValue !== null;
|
|
98
|
+
}
|
|
99
|
+
}));
|
|
100
|
+
if (pass) {
|
|
101
|
+
result.passed.push(`[${checkId}]: ${sel} has ${attribute} attribute.`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
result.errors.push(`[${checkId}]: ${sel} has no "${attribute}"`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
const attributeValue = yield (yield driver.findElement(selenium_webdriver_1.By.css(sel))).getAttribute(attribute);
|
|
109
|
+
const elType = (yield (yield driver.findElement(selenium_webdriver_1.By.css(sel))).getTagName()).toLowerCase();
|
|
110
|
+
if (attribute === 'tabindex' && expectedValue === '0') {
|
|
111
|
+
if ((elType === 'input' || elType === 'button' || elType === 'a') &&
|
|
112
|
+
(attributeValue === "0" || attributeValue === null)) {
|
|
113
|
+
result.passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
114
|
+
}
|
|
115
|
+
else if (attributeValue === expectedValue) {
|
|
116
|
+
result.passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
result.errors.push(`[${checkId}]: ${sel} does not have "${attribute}" attribute with "${expectedValue}" value.`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (Array.isArray(expectedValue)) {
|
|
123
|
+
if (expectedValue.includes(attributeValue)) {
|
|
124
|
+
result.passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
result.errors.push(`[${checkId}]: ${sel} has "${attribute}" which does not contain any of "${expectedValue}".`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
if (expectedValue === undefined && !attributeValue) {
|
|
132
|
+
result.errors.push(`[${checkId}]: ${sel} does not have "${attribute}" attribute with value.`);
|
|
133
|
+
}
|
|
134
|
+
else if (attributeValue !== expectedValue && expectedValue !== undefined) {
|
|
135
|
+
result.errors.push(`[${checkId}]: ${sel} does not have "${attribute}" attribute with "${expectedValue}" value.`);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
result.passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
for (const error of excludeErrors) {
|
|
149
|
+
result.errors = result.errors.filter(item => !item.includes(error));
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
exports.getWCTSpecViolations = getWCTSpecViolations;
|
|
155
|
+
//# sourceMappingURL=a11y-wct-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a11y-wct-spec.js","sourceRoot":"","sources":["../../src/a11y/a11y-wct-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getWCTSpecViolations } from './a11y-wct-spec';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWCTSpecViolations = void 0;
|
|
4
|
+
var a11y_wct_spec_1 = require("./a11y-wct-spec");
|
|
5
|
+
Object.defineProperty(exports, "getWCTSpecViolations", { enumerable: true, get: function () { return a11y_wct_spec_1.getWCTSpecViolations; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/a11y/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuD;AAA9C,qHAAA,oBAAoB,OAAA"}
|
|
@@ -6,21 +6,21 @@ export declare class Grid extends UIComponent {
|
|
|
6
6
|
protected parentElement?: WebElement;
|
|
7
7
|
static get Selector(): string;
|
|
8
8
|
constructor(driver: ThenableWebDriver, locator?: By, parentElement?: WebElement);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
pager(): Promise<Pager>;
|
|
10
|
+
dataRows(): Promise<WebElement[]>;
|
|
11
|
+
dataRowsCount(): Promise<number>;
|
|
12
|
+
isEmpty(): Promise<boolean>;
|
|
13
|
+
header(column: number): Promise<WebElement>;
|
|
14
|
+
headerFilter(column: number): Promise<WebElement>;
|
|
15
|
+
headerByText(text: string, exactMatch?: boolean): Promise<WebElement>;
|
|
16
|
+
headerSortType(text: string, exactMatch?: boolean): Promise<SortType>;
|
|
17
|
+
getSortOrder(text: string, exactMatch?: boolean): Promise<number>;
|
|
18
|
+
headerCell(column: number): Promise<WebElement>;
|
|
19
19
|
HeaderCellInput(column: number): Promise<WebElement>;
|
|
20
20
|
HeaderCellFilterDropDown(column: number): Promise<WebElement>;
|
|
21
21
|
HeaderCellCleanFilterButton(column: number): Promise<WebElement>;
|
|
22
22
|
Cell(row: number, column: number): Promise<WebElement>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
private
|
|
23
|
+
cellInput(row: number, column: number): Promise<WebElement>;
|
|
24
|
+
cellsByColumn(column: number, limit?: number): Promise<WebElement[]>;
|
|
25
|
+
private getGridElement;
|
|
26
26
|
}
|
package/dist/components/grid.js
CHANGED
|
@@ -24,44 +24,44 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
24
24
|
static get Selector() {
|
|
25
25
|
return ".k-grid";
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
pager() {
|
|
28
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
29
|
const rootElement = yield this.getRootElement();
|
|
30
30
|
return new pager_1.Pager(this.driver, selenium_webdriver_1.By.css(".k-grid-pager"), rootElement);
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
dataRows() {
|
|
34
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35
35
|
const rootElement = yield this.getRootElement();
|
|
36
36
|
return yield rootElement.findElements(selenium_webdriver_1.By.css("tbody tr"));
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
dataRowsCount() {
|
|
40
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
return (yield this.
|
|
41
|
+
return (yield this.dataRows()).length;
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
isEmpty() {
|
|
45
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
46
|
const rootElement = yield this.getRootElement();
|
|
47
47
|
return (yield rootElement.findElements(selenium_webdriver_1.By.css(".k-grid-norecords"))).length === 1;
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
header(column) {
|
|
51
51
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
52
|
const locator = selenium_webdriver_1.By.css(`thead tr th:nth-of-type(${column})`);
|
|
53
|
-
return yield this.
|
|
53
|
+
return yield this.getGridElement(locator, `Failed to find header at column ${column}.`);
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
headerFilter(column) {
|
|
57
57
|
return __awaiter(this, void 0, void 0, function* () {
|
|
58
58
|
const defaultLocator = `thead tr th:nth-of-type(${column}) .k-grid-filter`;
|
|
59
59
|
const reactLocator = `thead tr th:nth-of-type(${column}) span.k-i-more-vertical`;
|
|
60
60
|
const errorMessage = `Failed to find filter menu inside header at column ${column}.`;
|
|
61
|
-
return yield this.
|
|
61
|
+
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
headerByText(text, exactMatch = true) {
|
|
65
65
|
return __awaiter(this, void 0, void 0, function* () {
|
|
66
66
|
// Angular and Blazor: Header text is in span with class "k-column-title"
|
|
67
67
|
// jQuery, React and Vue: Header text is in span with class "k-link"
|
|
@@ -72,12 +72,12 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
72
72
|
else {
|
|
73
73
|
locator = selenium_webdriver_1.By.xpath(`//thead//tr//th[.//*[(@class='k-column-title' or @class='k-link') and contains(.,'${text}')]]`);
|
|
74
74
|
}
|
|
75
|
-
return yield this.
|
|
75
|
+
return yield this.getGridElement(locator, `Failed to find header with "${text}" text.`);
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
headerSortType(text, exactMatch = true) {
|
|
79
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
const rootElement = yield this.
|
|
80
|
+
const rootElement = yield this.headerByText(text, exactMatch);
|
|
81
81
|
if ((yield rootElement.findElements(selenium_webdriver_1.By.css(".k-i-sort-asc-sm"))).length > 0) {
|
|
82
82
|
return enums_1.SortType.Asc;
|
|
83
83
|
}
|
|
@@ -89,10 +89,10 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
getSortOrder(text, exactMatch = true) {
|
|
93
93
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
94
|
const locator = selenium_webdriver_1.By.css(".k-sort-order");
|
|
95
|
-
const rootElement = yield this.
|
|
95
|
+
const rootElement = yield this.headerByText(text, exactMatch);
|
|
96
96
|
if ((yield rootElement.findElements(locator)).length > 0) {
|
|
97
97
|
const element = yield rootElement.findElement(locator);
|
|
98
98
|
return +(yield element.getText());
|
|
@@ -102,12 +102,12 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
104
|
}
|
|
105
|
-
|
|
105
|
+
headerCell(column) {
|
|
106
106
|
return __awaiter(this, void 0, void 0, function* () {
|
|
107
107
|
const defaultLocator = `thead tr td:nth-of-type(${column})`;
|
|
108
108
|
const reactLocator = `thead tr.k-filter-row th:nth-of-type(${column})`;
|
|
109
109
|
const errorMessage = `Failed to find header cell at column ${column}.`;
|
|
110
|
-
return yield this.
|
|
110
|
+
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
113
|
HeaderCellInput(column) {
|
|
@@ -115,7 +115,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
115
115
|
const defaultLocator = `thead tr td:nth-of-type(${column}) input`;
|
|
116
116
|
const reactLocator = `thead tr.k-filter-row th:nth-of-type(${column}) input`;
|
|
117
117
|
const errorMessage = `Failed to find input inside header cell at column ${column}.`;
|
|
118
|
-
return yield this.
|
|
118
|
+
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
HeaderCellFilterDropDown(column) {
|
|
@@ -123,7 +123,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
123
123
|
const defaultLocator = `thead tr td:nth-of-type(${column}) .k-dropdown`;
|
|
124
124
|
const reactLocator = `thead tr.k-filter-row th:nth-of-type(${column}) .k-dropdown`;
|
|
125
125
|
const errorMessage = `Failed to find filter dropdown inside header cell at column ${column}.`;
|
|
126
|
-
return yield this.
|
|
126
|
+
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
129
|
HeaderCellCleanFilterButton(column) {
|
|
@@ -131,7 +131,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
131
131
|
const defaultLocator = `thead tr td:nth-of-type(${column}) button[title='Clear']`;
|
|
132
132
|
const reactLocator = `thead tr.k-filter-row th:nth-of-type(${column}) button[title='Clear']`;
|
|
133
133
|
const errorMessage = `Failed to find clear filter button inside header cell at column ${column}.`;
|
|
134
|
-
return yield this.
|
|
134
|
+
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
137
|
Cell(row, column) {
|
|
@@ -139,18 +139,18 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
139
139
|
const defaultLocator = `tr:nth-of-type(${row}) td[role='gridcell']:nth-of-type(${column})`;
|
|
140
140
|
const vueLocator = `tr.k-master-row:nth-of-type(${row}) td:nth-of-type(${column})`;
|
|
141
141
|
const errorMessage = `Failed to find cell at {${row}, ${column}}.`;
|
|
142
|
-
return yield this.
|
|
142
|
+
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${vueLocator}`), errorMessage);
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
|
-
|
|
145
|
+
cellInput(row, column) {
|
|
146
146
|
return __awaiter(this, void 0, void 0, function* () {
|
|
147
147
|
const defaultLocator = `tr:nth-of-type(${row}) td[role='gridcell']:nth-of-type(${column}) input`;
|
|
148
148
|
const vueLocator = `tr.k-master-row:nth-of-type(${row}) td:nth-of-type(${column}) input`;
|
|
149
149
|
const errorMessage = `Failed to find input at cell {${row}, ${column}}.`;
|
|
150
|
-
return yield this.
|
|
150
|
+
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${vueLocator}`), errorMessage);
|
|
151
151
|
});
|
|
152
152
|
}
|
|
153
|
-
|
|
153
|
+
cellsByColumn(column, limit) {
|
|
154
154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
155
155
|
const rootElement = yield this.getRootElement();
|
|
156
156
|
const cells = yield rootElement.findElements(selenium_webdriver_1.By.css(`tr td:nth-of-type(${column})`));
|
|
@@ -162,7 +162,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
|
-
|
|
165
|
+
getGridElement(locator, error) {
|
|
166
166
|
return __awaiter(this, void 0, void 0, function* () {
|
|
167
167
|
const rootElement = yield this.getRootElement();
|
|
168
168
|
yield this.driver.wait(conditions_1.EC.hasChild(rootElement, locator), settings_1.Settings.timeout, error);
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ Object.defineProperty(exports, "By", { enumerable: true, get: function () { retu
|
|
|
16
16
|
Object.defineProperty(exports, "Key", { enumerable: true, get: function () { return selenium_webdriver_1.Key; } });
|
|
17
17
|
Object.defineProperty(exports, "until", { enumerable: true, get: function () { return selenium_webdriver_1.until; } });
|
|
18
18
|
Object.defineProperty(exports, "WebElement", { enumerable: true, get: function () { return selenium_webdriver_1.WebElement; } });
|
|
19
|
+
__exportStar(require("./a11y"), exports);
|
|
19
20
|
__exportStar(require("./components"), exports);
|
|
20
21
|
__exportStar(require("./selenium"), exports);
|
|
21
22
|
__exportStar(require("./settings"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yDAAiE;AAAxD,wGAAA,EAAE,OAAA;AAAE,yGAAA,GAAG,OAAA;AAAE,2GAAA,KAAK,OAAA;AAAE,gHAAA,UAAU,OAAA;AACnC,+CAA6B;AAC7B,6CAA2B;AAC3B,6CAA2B;AAC3B,oDAAkC;AAClC,kEAAgD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,yDAAiE;AAAxD,wGAAA,EAAE,OAAA;AAAE,yGAAA,GAAG,OAAA;AAAE,2GAAA,KAAK,OAAA;AAAE,gHAAA,UAAU,OAAA;AACnC,yCAAuB;AACvB,+CAA6B;AAC7B,6CAA2B;AAC3B,6CAA2B;AAC3B,oDAAkC;AAClC,kEAAgD"}
|
|
@@ -13,7 +13,7 @@ export declare class Browser extends WebApp {
|
|
|
13
13
|
navigateTo(url: string): Promise<void>;
|
|
14
14
|
refresh(): Promise<void>;
|
|
15
15
|
getCurrentUrl(): Promise<string>;
|
|
16
|
-
getAccessibilityViolations(cssSelector?: string, disableRules?: string[]): Promise<[]>;
|
|
17
16
|
getBrowserName(): Promise<string>;
|
|
17
|
+
getAccessibilityViolations(cssSelector?: string, disableRules?: string[]): Promise<[]>;
|
|
18
18
|
getErrorLogs(excludeList?: string[]): Promise<string[]>;
|
|
19
19
|
}
|
package/dist/selenium/browser.js
CHANGED
|
@@ -53,6 +53,13 @@ class Browser extends web_app_1.WebApp {
|
|
|
53
53
|
return yield this.driver.getCurrentUrl();
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
+
getBrowserName() {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
const capabilities = (yield (yield this.driver).getCapabilities());
|
|
59
|
+
const browserName = capabilities.getBrowserName().toLowerCase();
|
|
60
|
+
return browserName;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
56
63
|
getAccessibilityViolations(cssSelector = "html", disableRules = ["color-contrast"]) {
|
|
57
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
58
65
|
yield this.find(selenium_webdriver_1.By.css(cssSelector));
|
|
@@ -63,13 +70,6 @@ class Browser extends web_app_1.WebApp {
|
|
|
63
70
|
return result.violations;
|
|
64
71
|
});
|
|
65
72
|
}
|
|
66
|
-
getBrowserName() {
|
|
67
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
-
const capabilities = (yield (yield this.driver).getCapabilities());
|
|
69
|
-
const browserName = capabilities.getBrowserName().toLowerCase();
|
|
70
|
-
return browserName;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
73
|
getErrorLogs(excludeList = ["favicon.ico"]) {
|
|
74
74
|
return __awaiter(this, void 0, void 0, function* () {
|
|
75
75
|
const errors = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/selenium/browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wEAA+C;AAC/C,2DAA2D;AAC3D,4DAA6D;AAC7D,qDAAiD;AACjD,uCAAmC;AAEnC,yDAAmG;AAA1F,wGAAA,EAAE,OAAA;AAAqB,2GAAA,KAAK,OAAA;AAAE,gHAAA,UAAU,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAEtE;;;;;GAKG;AACH,MAAa,OAAQ,SAAQ,gBAAM;IAC/B,YAAY,SAA4B,IAAI,8BAAa,EAAE,CAAC,SAAS,EAAE;QACnE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEY,KAAK;;YACd,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;KAAA;IAEY,UAAU,CAAC,GAAW;;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;KAAA;IAEY,OAAO;;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QAC3C,CAAC;KAAA;IAEY,aAAa;;YACtB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC;KAAA;IAEY,0BAA0B,CAAC,WAAW,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,gBAAgB,CAAC;;YAC3F,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,qBAAU,CAAC,IAAI,CAAC,MAAM,CAAC;iBAClC,OAAO,CAAC,WAAW,CAAC;iBACpB,YAAY,CAAC,YAAY,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,UAAgB,CAAC;QACnC,CAAC;KAAA;IAEY,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/selenium/browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wEAA+C;AAC/C,2DAA2D;AAC3D,4DAA6D;AAC7D,qDAAiD;AACjD,uCAAmC;AAEnC,yDAAmG;AAA1F,wGAAA,EAAE,OAAA;AAAqB,2GAAA,KAAK,OAAA;AAAE,gHAAA,UAAU,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAEtE;;;;;GAKG;AACH,MAAa,OAAQ,SAAQ,gBAAM;IAC/B,YAAY,SAA4B,IAAI,8BAAa,EAAE,CAAC,SAAS,EAAE;QACnE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEY,KAAK;;YACd,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;KAAA;IAEY,UAAU,CAAC,GAAW;;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;KAAA;IAEY,OAAO;;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QAC3C,CAAC;KAAA;IAEY,aAAa;;YACtB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC;KAAA;IAEY,cAAc;;YACvB,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;YAChE,OAAO,WAAW,CAAC;QACvB,CAAC;KAAA;IAEY,0BAA0B,CAAC,WAAW,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,gBAAgB,CAAC;;YAC3F,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,qBAAU,CAAC,IAAI,CAAC,MAAM,CAAC;iBAClC,OAAO,CAAC,WAAW,CAAC;iBACpB,YAAY,CAAC,YAAY,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,UAAgB,CAAC;QACnC,CAAC;KAAA;IAEY,YAAY,CAAC,WAAW,GAAG,CAAC,aAAa,CAAC;;YACnD,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1D,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;YAEhE,oCAAoC;YACpC,cAAc;YACd,2EAA2E;YAC3E,EAAE;YACF,wDAAwD;YACxD,IAAI,WAAW,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBAC7E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,cAAI,CAAC,OAAO,CAAC,CAAC;gBACjE,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;oBACtB,IAAI,KAAK,CAAC,KAAK,KAAK,eAAK,CAAC,MAAM,EAAE;wBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;qBAC9B;iBACJ;aACJ;YAED,gBAAgB;YAChB,MAAM,cAAc,GAAG,EAAE,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBACxB,KAAK,MAAM,WAAW,IAAI,WAAW,EAAE;oBACnC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC9C,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBAC7C,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3B,MAAM;qBACT;iBACJ;aACJ;YAED,OAAO,cAAc,CAAC;QAC1B,CAAC;KAAA;CACJ;AAtED,0BAsEC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Browser } from "./browser";
|
|
2
|
+
export { By, ThenableWebDriver, until, WebElement, WebElementCondition } from "selenium-webdriver";
|
|
3
|
+
/**
|
|
4
|
+
* Extends the {@link Browser} with Chrome based capabilities.
|
|
5
|
+
* Allows custom args to be passed as a string[].
|
|
6
|
+
*/
|
|
7
|
+
export declare class ChromeBrowser extends Browser {
|
|
8
|
+
constructor(args?: string[]);
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChromeBrowser = exports.WebElementCondition = exports.WebElement = exports.until = exports.By = void 0;
|
|
4
|
+
const browser_1 = require("./browser");
|
|
5
|
+
const driver_manager_1 = require("./driver-manager");
|
|
6
|
+
var selenium_webdriver_1 = require("selenium-webdriver");
|
|
7
|
+
Object.defineProperty(exports, "By", { enumerable: true, get: function () { return selenium_webdriver_1.By; } });
|
|
8
|
+
Object.defineProperty(exports, "until", { enumerable: true, get: function () { return selenium_webdriver_1.until; } });
|
|
9
|
+
Object.defineProperty(exports, "WebElement", { enumerable: true, get: function () { return selenium_webdriver_1.WebElement; } });
|
|
10
|
+
Object.defineProperty(exports, "WebElementCondition", { enumerable: true, get: function () { return selenium_webdriver_1.WebElementCondition; } });
|
|
11
|
+
/**
|
|
12
|
+
* Extends the {@link Browser} with Chrome based capabilities.
|
|
13
|
+
* Allows custom args to be passed as a string[].
|
|
14
|
+
*/
|
|
15
|
+
class ChromeBrowser extends browser_1.Browser {
|
|
16
|
+
constructor(args = []) {
|
|
17
|
+
const driverManager = new driver_manager_1.DriverManager();
|
|
18
|
+
const options = driverManager.getChromeOptions(args);
|
|
19
|
+
const driver = driverManager.getChromeDriver(options);
|
|
20
|
+
super(driver);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.ChromeBrowser = ChromeBrowser;
|
|
24
|
+
//# sourceMappingURL=chrome-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome-browser.js","sourceRoot":"","sources":["../../src/selenium/chrome-browser.ts"],"names":[],"mappings":";;;AAAA,uCAAuD;AACvD,qDAAiD;AAEjD,yDAAmG;AAA1F,wGAAA,EAAE,OAAA;AAAqB,2GAAA,KAAK,OAAA;AAAE,gHAAA,UAAU,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAEtE;;;GAGG;AACH,MAAa,aAAc,SAAQ,iBAAO;IACtC,YAAa,OAAiB,EAAE;QAC5B,MAAM,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAsB,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;CACJ;AAPD,sCAOC"}
|
|
@@ -4,10 +4,11 @@ import { Options as EdgeOptions } from "selenium-webdriver/edge";
|
|
|
4
4
|
import { Options as FirefoxOptions } from "selenium-webdriver/firefox";
|
|
5
5
|
import { Options as SafariOptions } from "selenium-webdriver/safari";
|
|
6
6
|
export declare class DriverManager {
|
|
7
|
+
DEFAULT_CHROMIUM_OPTIONS: string[];
|
|
7
8
|
getDriver(): ThenableWebDriver;
|
|
8
|
-
getChromeOptions(): ChromeOptions;
|
|
9
|
+
getChromeOptions(args?: string[]): ChromeOptions;
|
|
9
10
|
getChromeDriver(options?: ChromeOptions): ThenableWebDriver;
|
|
10
|
-
getEdgeOptions(): EdgeOptions;
|
|
11
|
+
getEdgeOptions(args?: string[]): EdgeOptions;
|
|
11
12
|
getEdgeDriver(options?: EdgeOptions): ThenableWebDriver;
|
|
12
13
|
getFirefoxOptions(): FirefoxOptions;
|
|
13
14
|
getFirefoxDriver(options?: FirefoxOptions): ThenableWebDriver;
|
|
@@ -9,6 +9,16 @@ const safari_1 = require("selenium-webdriver/safari");
|
|
|
9
9
|
const browserstack_settings_1 = require("../settings/browserstack-settings");
|
|
10
10
|
const settings_1 = require("../settings/settings");
|
|
11
11
|
class DriverManager {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.DEFAULT_CHROMIUM_OPTIONS = [
|
|
14
|
+
`--window-size=${settings_1.Settings.browserWidth},${settings_1.Settings.browserHeight}`,
|
|
15
|
+
'--force-device-scale-factor=1',
|
|
16
|
+
'--log-level=1',
|
|
17
|
+
'--disable-extensions',
|
|
18
|
+
'--disable-notifications',
|
|
19
|
+
'--ignore-certificate-errors'
|
|
20
|
+
];
|
|
21
|
+
}
|
|
12
22
|
getDriver() {
|
|
13
23
|
switch (settings_1.Settings.browserName) {
|
|
14
24
|
case selenium_webdriver_1.Browser.CHROME: {
|
|
@@ -28,9 +38,11 @@ class DriverManager {
|
|
|
28
38
|
}
|
|
29
39
|
}
|
|
30
40
|
}
|
|
31
|
-
getChromeOptions() {
|
|
41
|
+
getChromeOptions(args = this.DEFAULT_CHROMIUM_OPTIONS) {
|
|
32
42
|
const options = new chrome_1.Options();
|
|
33
|
-
|
|
43
|
+
args.forEach(argument => {
|
|
44
|
+
options.addArguments(argument);
|
|
45
|
+
});
|
|
34
46
|
if (settings_1.Settings.headless) {
|
|
35
47
|
options.headless();
|
|
36
48
|
}
|
|
@@ -39,9 +51,11 @@ class DriverManager {
|
|
|
39
51
|
getChromeDriver(options = this.getChromeOptions()) {
|
|
40
52
|
return new selenium_webdriver_1.Builder().forBrowser(selenium_webdriver_1.Browser.CHROME).setChromeOptions(options).build();
|
|
41
53
|
}
|
|
42
|
-
getEdgeOptions() {
|
|
54
|
+
getEdgeOptions(args = this.DEFAULT_CHROMIUM_OPTIONS) {
|
|
43
55
|
const options = new edge_1.Options();
|
|
44
|
-
|
|
56
|
+
args.forEach(argument => {
|
|
57
|
+
options.addArguments(argument);
|
|
58
|
+
});
|
|
45
59
|
if (settings_1.Settings.headless) {
|
|
46
60
|
options.headless();
|
|
47
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver-manager.js","sourceRoot":"","sources":["../../src/selenium/driver-manager.ts"],"names":[],"mappings":";;;AAAA,2DAAkF;AAClF,sDAAqE;AACrE,kDAAiE;AACjE,wDAAgH;AAChH,sDAAqE;AACrE,6EAA6E;AAC7E,mDAAgD;AAEhD,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"driver-manager.js","sourceRoot":"","sources":["../../src/selenium/driver-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/selenium/index.d.ts
CHANGED
package/dist/selenium/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./browser"), exports);
|
|
14
|
+
__exportStar(require("./chrome-browser"), exports);
|
|
14
15
|
__exportStar(require("./conditions"), exports);
|
|
15
16
|
__exportStar(require("./driver-manager"), exports);
|
|
16
17
|
__exportStar(require("./electron-app"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/selenium/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,+CAA6B;AAC7B,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/selenium/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,mDAAiC;AACjC,+CAA6B;AAC7B,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B"}
|
package/dist/selenium/web-app.js
CHANGED
|
@@ -44,8 +44,16 @@ class WebApp {
|
|
|
44
44
|
}
|
|
45
45
|
click(locator, timeout = 10000) {
|
|
46
46
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
try {
|
|
48
|
+
const element = yield this.find(locator, timeout);
|
|
49
|
+
yield element.click();
|
|
50
|
+
}
|
|
51
|
+
catch (_a) {
|
|
52
|
+
const element = yield this.find(locator, timeout);
|
|
53
|
+
yield this.wait(selenium_webdriver_1.until.elementIsVisible(element), timeout, `Element located by ${locator} is not visible.`);
|
|
54
|
+
yield this.wait(selenium_webdriver_1.until.elementIsEnabled(element), timeout, `Element located by ${locator} is not enabled.`);
|
|
55
|
+
yield element.click();
|
|
56
|
+
}
|
|
49
57
|
});
|
|
50
58
|
}
|
|
51
59
|
hover(locator, timeout = 10000) {
|
|
@@ -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;;YAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,qCAAqC,OAAO,GAAG,CAAC,CAAC;YAEhI,wBAAwB;YACxB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;YAChE,IAAI,WAAW,KAAK,QAAQ,EAAE;gBAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAS,EAAE,gDAAC,OAAA,CAAA,MAAM,OAAO,CAAC,OAAO,EAAE,MAAK,SAAS,CAAA,GAAA,CAAC,CAAC;aACtE;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;KAAA;IAEY,OAAO,CAAC,OAAW;;YAC5B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;KAAA;IAEY,SAAS,CAAC,WAAuB,EAAE,OAAW,EAAE,OAAO,GAAG,KAAK;;YACxE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,2CAA2C,OAAO,GAAG,CAAC,CAAC;YACnH,OAAO,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEY,KAAK,CAAC,OAAW,EAAE,OAAO,GAAG,KAAK;;YAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"web-app.js","sourceRoot":"","sources":["../../src/selenium/web-app.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-e2e",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Kendo UI end-to-end test utilities.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"lint": "npx eslint src/**/*.ts tests/**/*.ts",
|
|
12
12
|
"build": "npm run lint && npx tsc",
|
|
13
|
+
"test:a11y": "npx jest tests/a11y",
|
|
13
14
|
"test:e2e": "npx jest tests/e2e",
|
|
14
15
|
"test:visual": "npx jest tests/visual",
|
|
15
16
|
"semantic-release": "semantic-release pre && semantic-prerelease publish --public && semantic-release post"
|
|
@@ -26,11 +27,11 @@
|
|
|
26
27
|
"fallbackTags": {
|
|
27
28
|
"dev": "latest"
|
|
28
29
|
},
|
|
29
|
-
"analyzeCommits": "@
|
|
30
|
-
"generateNotes": "@
|
|
31
|
-
"getLastRelease": "@
|
|
32
|
-
"verifyConditions": "@
|
|
33
|
-
"verifyRelease": "@
|
|
30
|
+
"analyzeCommits": "@progress/semantic-prerelease/analyzeCommits",
|
|
31
|
+
"generateNotes": "@progress/semantic-prerelease/generateNotes",
|
|
32
|
+
"getLastRelease": "@progress/semantic-prerelease/getLastRelease",
|
|
33
|
+
"verifyConditions": "@progress/semantic-prerelease/verifyConditions",
|
|
34
|
+
"verifyRelease": "@progress/semantic-prerelease/verifyRelease"
|
|
34
35
|
},
|
|
35
36
|
"keywords": [
|
|
36
37
|
"a11y",
|
|
@@ -52,34 +53,36 @@
|
|
|
52
53
|
},
|
|
53
54
|
"homepage": "https://github.com/telerik/kendo-e2e#readme",
|
|
54
55
|
"dependencies": {
|
|
55
|
-
"@axe-core/webdriverjs": "4.3
|
|
56
|
-
"@types/selenium-webdriver": "4.1.
|
|
56
|
+
"@axe-core/webdriverjs": "4.4.3",
|
|
57
|
+
"@types/selenium-webdriver": "4.1.2",
|
|
57
58
|
"js-beautify": "^1.13.13",
|
|
58
59
|
"jsdom": "^16.6.0",
|
|
59
60
|
"looks-same": "^7.3.0",
|
|
60
61
|
"pngjs": "^6.0.0",
|
|
61
|
-
"selenium-webdriver": "4.
|
|
62
|
+
"selenium-webdriver": "4.4.0"
|
|
62
63
|
},
|
|
63
64
|
"devDependencies": {
|
|
64
|
-
"@commitlint/cli": "^
|
|
65
|
-
"@commitlint/config-conventional": "^
|
|
66
|
-
"@
|
|
67
|
-
"@progress/
|
|
68
|
-
"@
|
|
65
|
+
"@commitlint/cli": "^17.0.3",
|
|
66
|
+
"@commitlint/config-conventional": "^17.0.3",
|
|
67
|
+
"@progress/kendo-common-tasks": "^8.0.2",
|
|
68
|
+
"@progress/semantic-prerelease": "^3.0.2",
|
|
69
|
+
"@types/jest": "^28.1.6",
|
|
69
70
|
"@types/node": "ts4.3",
|
|
70
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
71
|
-
"@typescript-eslint/parser": "^
|
|
72
|
-
"eslint": "^
|
|
73
|
-
"geckodriver": "3.0.
|
|
74
|
-
"husky": "^
|
|
75
|
-
"jest": "^
|
|
76
|
-
"jest-
|
|
77
|
-
"jest-junit": "12.0.0",
|
|
78
|
-
"jest-preset-typescript": "^1.2.0",
|
|
71
|
+
"@typescript-eslint/eslint-plugin": "^5.31.0",
|
|
72
|
+
"@typescript-eslint/parser": "^5.31.0",
|
|
73
|
+
"eslint": "^8.20.0",
|
|
74
|
+
"geckodriver": "3.0.2",
|
|
75
|
+
"husky": "^8.0.1",
|
|
76
|
+
"jest": "^28.1.3",
|
|
77
|
+
"jest-junit": "14.0.0",
|
|
79
78
|
"semantic-release": "^6.3.6",
|
|
80
|
-
"ts-jest": "^
|
|
81
|
-
"ts-node": "^10.
|
|
79
|
+
"ts-jest": "^28.0.7",
|
|
80
|
+
"ts-node": "^10.9.1",
|
|
82
81
|
"tslib": "^2.3.0",
|
|
83
82
|
"typescript": "~4.3.4"
|
|
83
|
+
},
|
|
84
|
+
"engines": {
|
|
85
|
+
"npm": ">=6.0.0",
|
|
86
|
+
"node": ">=14.0.0"
|
|
84
87
|
}
|
|
85
88
|
}
|