@progress/kendo-e2e 1.8.1 → 1.9.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.
|
@@ -3,6 +3,7 @@ type WCTSpecResult = {
|
|
|
3
3
|
passed: string[];
|
|
4
4
|
skipped: string[];
|
|
5
5
|
errors: string[];
|
|
6
|
+
notFoundSelectors: string[];
|
|
6
7
|
};
|
|
7
8
|
/**
|
|
8
9
|
* Check current page for violations against WCT A11y Spec.
|
|
@@ -13,6 +14,8 @@ type WCTSpecResult = {
|
|
|
13
14
|
* @param driver WebDriver instance
|
|
14
15
|
* @param spec A spec object (like https://unpkg.com/@progress/wct-a11y-spec@1.0.3/dist/jquery/test-def/test-definitions.json).
|
|
15
16
|
* @param excludeErrors Array of validation IDs that will be skipped.
|
|
17
|
+
* @param componentsToTest Array of validation components that need to be tested.
|
|
18
|
+
* @param excludeSelectors Array of validation CSS selectors that will be skipped.
|
|
16
19
|
*/
|
|
17
|
-
export declare function getWCTSpecViolations(driver: ThenableWebDriver, spec: any, excludeErrors?: string[]): Promise<WCTSpecResult>;
|
|
20
|
+
export declare function getWCTSpecViolations(driver: ThenableWebDriver, spec: any, excludeErrors?: string[], componentsToTest?: string[], excludeSelectors?: string[]): Promise<WCTSpecResult>;
|
|
18
21
|
export {};
|
|
@@ -22,13 +22,16 @@ const selenium_webdriver_1 = require("selenium-webdriver");
|
|
|
22
22
|
* @param driver WebDriver instance
|
|
23
23
|
* @param spec A spec object (like https://unpkg.com/@progress/wct-a11y-spec@1.0.3/dist/jquery/test-def/test-definitions.json).
|
|
24
24
|
* @param excludeErrors Array of validation IDs that will be skipped.
|
|
25
|
+
* @param componentsToTest Array of validation components that need to be tested.
|
|
26
|
+
* @param excludeSelectors Array of validation CSS selectors that will be skipped.
|
|
25
27
|
*/
|
|
26
|
-
function getWCTSpecViolations(driver, spec, excludeErrors = []) {
|
|
28
|
+
function getWCTSpecViolations(driver, spec, excludeErrors = [], componentsToTest = [], excludeSelectors = []) {
|
|
27
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
30
|
const passed = [];
|
|
29
31
|
const skipped = [];
|
|
30
32
|
const errors = [];
|
|
31
|
-
const
|
|
33
|
+
const notFoundSelectors = [];
|
|
34
|
+
const result = { passed, skipped, errors, notFoundSelectors };
|
|
32
35
|
const RULES = 'rules';
|
|
33
36
|
const SELECTOR = 'selector';
|
|
34
37
|
const CHECKS = 'checks';
|
|
@@ -55,146 +58,163 @@ function getWCTSpecViolations(driver, spec, excludeErrors = []) {
|
|
|
55
58
|
pager: '.k-pager-wrap'
|
|
56
59
|
};
|
|
57
60
|
for (const key of Object.keys(spec)) {
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (selector.indexOf(DISABLED) > -1) {
|
|
72
|
-
if (selector.indexOf(keySelector) === -1) {
|
|
73
|
-
arraySelector = arraySelector.map((s) => keySelector + s);
|
|
61
|
+
const areComponentsToTest = componentsToTest.length > 0;
|
|
62
|
+
const requestedComponent = componentsToTest.includes(key) ? componentsToTest[componentsToTest.indexOf(key)] : undefined;
|
|
63
|
+
const component = areComponentsToTest ? spec[requestedComponent] : spec[key];
|
|
64
|
+
if (component) {
|
|
65
|
+
const rules = component[RULES];
|
|
66
|
+
const keySelector = ELMENTS_MAP[key] || `.k-${key}`;
|
|
67
|
+
const testingElement = yield driver.findElements(selenium_webdriver_1.By.css(keySelector));
|
|
68
|
+
if (testingElement.length > 0) {
|
|
69
|
+
for (const rule of rules) {
|
|
70
|
+
const selector = rule[SELECTOR];
|
|
71
|
+
let arraySelector;
|
|
72
|
+
if (selector.indexOf('px,') > -1) {
|
|
73
|
+
arraySelector = [selector];
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
selector.indexOf(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
arraySelector = arraySelector.map((s) => {
|
|
82
|
-
if (s.startsWith(`${keySelector}.`) || s.startsWith(`${keySelector}:`)) {
|
|
83
|
-
return s;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
return keySelector + EMPTY + s;
|
|
75
|
+
else {
|
|
76
|
+
arraySelector = selector.split(COMMA);
|
|
77
|
+
}
|
|
78
|
+
if (selector.indexOf(DISABLED) > -1) {
|
|
79
|
+
if (selector.indexOf(keySelector) === -1) {
|
|
80
|
+
arraySelector = arraySelector.map((s) => keySelector + s);
|
|
87
81
|
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
let expectedValue = check[VALUE];
|
|
98
|
-
if (typeof expectedValue === STRING && expectedValue.includes(EMPTY)) {
|
|
99
|
-
const refElementSelector = expectedValue.split(EMPTY)[0];
|
|
100
|
-
const refElementAttribute = expectedValue.split(EMPTY)[1];
|
|
101
|
-
if ((yield driver.findElements(selenium_webdriver_1.By.css(refElementSelector))).length > 0) {
|
|
102
|
-
expectedValue = yield Promise.all((yield driver.findElements(selenium_webdriver_1.By.css(refElementSelector))).map((el) => __awaiter(this, void 0, void 0, function* () {
|
|
103
|
-
return yield el.getAttribute(refElementAttribute);
|
|
104
|
-
})));
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
skipped.push(`[${checkId}]: Skip check for ${sel}, as no ${refElementSelector} was found.`);
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (conditionalCheck !== undefined) {
|
|
112
|
-
skipped.push(`[${checkId}]: Skip check for ${sel}, conditional checks not supported.`);
|
|
82
|
+
}
|
|
83
|
+
else if (selector !== keySelector &&
|
|
84
|
+
selector.indexOf(ANIMATION_CONTAINER) === -1 &&
|
|
85
|
+
selector.indexOf(LIST) === -1 &&
|
|
86
|
+
selector.indexOf(LIST_ITEM) === -1 &&
|
|
87
|
+
selector.indexOf(LIST_FILTER) === -1) {
|
|
88
|
+
arraySelector = arraySelector.map((s) => {
|
|
89
|
+
if (s.startsWith(`${keySelector}.`) || s.startsWith(`${keySelector}:`)) {
|
|
90
|
+
return s;
|
|
113
91
|
}
|
|
114
|
-
else
|
|
115
|
-
|
|
92
|
+
else {
|
|
93
|
+
return keySelector + EMPTY + s;
|
|
116
94
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
for (const sel of arraySelector) {
|
|
98
|
+
const arraySelectorElement = yield driver.findElements(selenium_webdriver_1.By.css(sel));
|
|
99
|
+
if (arraySelectorElement.length > 0) {
|
|
100
|
+
const checks = rule[CHECKS];
|
|
101
|
+
for (const check of checks) {
|
|
102
|
+
const checkId = check[ID];
|
|
103
|
+
const conditionalCheck = check[WHEN];
|
|
104
|
+
const attribute = check[ATTRIBUTE];
|
|
105
|
+
let expectedValue = check[VALUE];
|
|
106
|
+
if (typeof expectedValue === STRING && expectedValue.includes(EMPTY)) {
|
|
107
|
+
const refElementSelector = expectedValue.split(EMPTY)[0];
|
|
108
|
+
const refElementAttribute = expectedValue.split(EMPTY)[1];
|
|
109
|
+
if ((yield driver.findElements(selenium_webdriver_1.By.css(refElementSelector))).length > 0) {
|
|
110
|
+
expectedValue = yield Promise.all((yield driver.findElements(selenium_webdriver_1.By.css(refElementSelector))).map((el) => __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
return yield el.getAttribute(refElementAttribute);
|
|
112
|
+
})));
|
|
125
113
|
}
|
|
126
114
|
else {
|
|
127
|
-
|
|
115
|
+
skipped.push(`[${checkId}]: Skip check for ${sel}, as no ${refElementSelector} was found.`);
|
|
116
|
+
continue;
|
|
128
117
|
}
|
|
129
118
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
else if (attribute === TABINDEX && expectedValue === ZERO) {
|
|
146
|
-
if ((elType === INPUT || elType === BUTTON || elType === ANCHOR) &&
|
|
147
|
-
(attributeValue === ZERO || attributeValue === null)) {
|
|
148
|
-
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
149
|
-
}
|
|
150
|
-
else if (attributeValue === expectedValue) {
|
|
151
|
-
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
119
|
+
if (conditionalCheck !== undefined) {
|
|
120
|
+
skipped.push(`[${checkId}]: Skip check for ${sel}, conditional checks not supported.`);
|
|
121
|
+
}
|
|
122
|
+
else if (excludeErrors.includes(checkId)) {
|
|
123
|
+
skipped.push(`[${checkId}]: Skip check for ${sel}, explicitly excluded.`);
|
|
124
|
+
}
|
|
125
|
+
else if (Array.isArray(attribute)) {
|
|
126
|
+
const elements = yield driver.findElements(selenium_webdriver_1.By.css(sel));
|
|
127
|
+
for (const el of elements) {
|
|
128
|
+
const pass = yield asyncSome(attribute, (attr) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
return yield iterateAttributeArray(driver, attr, expectedValue, el);
|
|
130
|
+
}));
|
|
131
|
+
if (pass) {
|
|
132
|
+
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute.`);
|
|
152
133
|
}
|
|
153
134
|
else {
|
|
154
|
-
errors.push(`[${checkId}]: ${sel}
|
|
135
|
+
errors.push(`[${checkId}]: ${sel} has no "${attribute}"`);
|
|
155
136
|
}
|
|
156
137
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const elements = yield driver.findElements(selenium_webdriver_1.By.css(sel));
|
|
141
|
+
for (const el of elements) {
|
|
142
|
+
let attributeValue;
|
|
143
|
+
try {
|
|
144
|
+
attributeValue = yield el.getAttribute(attribute);
|
|
160
145
|
}
|
|
161
|
-
|
|
162
|
-
|
|
146
|
+
catch (err) {
|
|
147
|
+
attributeValue = undefined;
|
|
163
148
|
}
|
|
164
|
-
|
|
165
|
-
|
|
149
|
+
const elType = yield el.getTagName();
|
|
150
|
+
if (attributeValue === undefined) {
|
|
151
|
+
passed.push(`[${checkId}]: ${sel} dos not have ${attribute} attribute, but that is fine, we only check if element exist.`);
|
|
166
152
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
153
|
+
else if (attribute === TABINDEX && expectedValue === ZERO) {
|
|
154
|
+
if ((elType === INPUT || elType === BUTTON || elType === ANCHOR) &&
|
|
155
|
+
(attributeValue === ZERO || attributeValue === null)) {
|
|
156
|
+
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
157
|
+
}
|
|
158
|
+
else if (attributeValue === expectedValue) {
|
|
159
|
+
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
errors.push(`[${checkId}]: ${sel} does not have "${attribute}" attribute with "${expectedValue}" value.`);
|
|
163
|
+
}
|
|
171
164
|
}
|
|
172
|
-
else {
|
|
173
|
-
|
|
165
|
+
else if (attribute === TABINDEX && expectedValue === '-1') {
|
|
166
|
+
if (elType !== INPUT && elType !== BUTTON && elType !== ANCHOR && attributeValue === null) {
|
|
167
|
+
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
168
|
+
}
|
|
169
|
+
else if (attributeValue === expectedValue) {
|
|
170
|
+
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
errors.push(`[${checkId}]: ${sel} does not have "${attribute}" attribute with "${expectedValue}" value.`);
|
|
174
|
+
}
|
|
174
175
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
else if (Array.isArray(expectedValue)) {
|
|
177
|
+
if (expectedValue.includes(attributeValue)) {
|
|
178
|
+
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
errors.push(`[${checkId}]: ${sel} has "${attribute}" which does not contain any of "${expectedValue}".`);
|
|
182
|
+
}
|
|
182
183
|
}
|
|
183
184
|
else {
|
|
184
|
-
|
|
185
|
+
if (expectedValue === undefined && !attributeValue) {
|
|
186
|
+
errors.push(`[${checkId}]: ${sel} does not have "${attribute}" attribute with value.`);
|
|
187
|
+
}
|
|
188
|
+
else if (attributeValue !== expectedValue && expectedValue !== undefined) {
|
|
189
|
+
errors.push(`[${checkId}]: ${sel} does not have "${attribute}" attribute with "${expectedValue}" value.`);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
passed.push(`[${checkId}]: ${sel} has ${attribute} attribute with ${expectedValue} value.`);
|
|
193
|
+
}
|
|
185
194
|
}
|
|
186
195
|
}
|
|
187
196
|
}
|
|
188
197
|
}
|
|
189
198
|
}
|
|
199
|
+
else {
|
|
200
|
+
if (arraySelectorElement.length === 0 && areComponentsToTest) {
|
|
201
|
+
notFoundSelectors.push(sel);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
190
204
|
}
|
|
191
205
|
}
|
|
192
206
|
}
|
|
207
|
+
if (testingElement.length === 0 && areComponentsToTest) {
|
|
208
|
+
notFoundSelectors.push(keySelector);
|
|
209
|
+
}
|
|
193
210
|
}
|
|
194
211
|
}
|
|
195
212
|
for (const error of excludeErrors) {
|
|
196
213
|
result.errors = result.errors.filter(item => !item.includes(error));
|
|
197
214
|
}
|
|
215
|
+
for (const selector of excludeSelectors) {
|
|
216
|
+
result.notFoundSelectors = result.notFoundSelectors.filter(item => !item.includes(selector));
|
|
217
|
+
}
|
|
198
218
|
return result;
|
|
199
219
|
});
|
|
200
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-wct-spec.js","sourceRoot":"","sources":["../../src/a11y/a11y-wct-spec.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAAiD;AACjD,uDAAuD;AACvD,2DAAuE;
|
|
1
|
+
{"version":3,"file":"a11y-wct-spec.js","sourceRoot":"","sources":["../../src/a11y/a11y-wct-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -122,7 +122,7 @@ function parseDom(node, attributes, parent = "") {
|
|
|
122
122
|
}
|
|
123
123
|
let newParent = parent;
|
|
124
124
|
if (node.attributes[0] !== undefined) {
|
|
125
|
-
const value = removeDuplicatedSpaces(node.attributes[0].value).replace(new RegExp('
|
|
125
|
+
const value = removeDuplicatedSpaces(node.attributes[0].value).replace(new RegExp('!', 'g'), '\\!');
|
|
126
126
|
attributes.push(`${parent}.${value.split(" ").sort().join(".")}`);
|
|
127
127
|
newParent = `${parent}.${value.split(" ").sort().join(".")} `;
|
|
128
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-comparer.js","sourceRoot":"","sources":["../../src/rendering/html-comparer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"html-comparer.js","sourceRoot":"","sources":["../../src/rendering/html-comparer.ts"],"names":[],"mappings":"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"}
|