@progress/kendo-e2e 0.5.1 → 0.9.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 +36 -2
- package/dist/selenium/driver-manager.d.ts +1 -0
- package/dist/selenium/driver-manager.js +12 -0
- package/dist/selenium/driver-manager.js.map +1 -1
- package/dist/snapshot-markup/filter-attributes.js +5 -3
- package/dist/snapshot-markup/filter-attributes.js.map +1 -1
- package/dist/snapshot-markup/filter-attributes.spec.d.ts +1 -0
- package/dist/snapshot-markup/filter-attributes.spec.js +50 -0
- package/dist/snapshot-markup/filter-attributes.spec.js.map +1 -0
- package/dist/snapshot-markup/snapshot-markup.d.ts +2 -1
- package/dist/snapshot-markup/snapshot-markup.js +7 -2
- package/dist/snapshot-markup/snapshot-markup.js.map +1 -1
- package/package.json +7 -10
package/README.md
CHANGED
|
@@ -34,12 +34,46 @@ All available Kendo UI commercial licenses may be obtained at http://www.telerik
|
|
|
34
34
|
|
|
35
35
|
*Progress, Telerik, and certain product names used herein are trademarks or registered trademarks of Progress Software Corporation and/or one of its subsidiaries or affiliates in the U.S. and/or other countries.*
|
|
36
36
|
|
|
37
|
-
# kendo-
|
|
37
|
+
# kendo-e2e
|
|
38
38
|
|
|
39
39
|
Selenium based e2e testing for web.
|
|
40
40
|
|
|
41
41
|
## Usage
|
|
42
42
|
|
|
43
|
+
### Managing browser drivers
|
|
44
|
+
|
|
45
|
+
This framework do not manage browser drivers, so user should take care appropriate driver to be in `PATH`.
|
|
46
|
+
|
|
47
|
+
#### Linux and macOS
|
|
48
|
+
|
|
49
|
+
Install drivers globally:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npm i -g chromedriver
|
|
53
|
+
npm i -g geckodriver
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Notes:
|
|
57
|
+
|
|
58
|
+
- `safaridriver` is build-in in macOS so no need to install extra packages.
|
|
59
|
+
- No need to add something in the `PATH` (scripts of global npm packages are already in the PATH).
|
|
60
|
+
|
|
61
|
+
#### Windows
|
|
62
|
+
|
|
63
|
+
Install drivers globally:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm i -g chromedriver
|
|
67
|
+
npm i -g geckodriver
|
|
68
|
+
npm i -g msedgedriver
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Add following to your `PATH`:
|
|
72
|
+
|
|
73
|
+
- `%APPDATA%\npm\node_modules\chromedriver\lib\chromedriver`
|
|
74
|
+
- `%APPDATA%\npm\node_modules\msedgedriver\lib\msedgedriver`
|
|
75
|
+
- `%APPDATA%\npm\node_modules\geckodriver`
|
|
76
|
+
|
|
43
77
|
### Managing browsers
|
|
44
78
|
|
|
45
79
|
Example:
|
|
@@ -56,7 +90,7 @@ Browser type and size can be controlled by settings following environment variab
|
|
|
56
90
|
|
|
57
91
|
- `BROWSER_NAME`
|
|
58
92
|
|
|
59
|
-
Allowed values are `chrome`, `firefox` and `safari` (default is `chrome`).
|
|
93
|
+
Allowed values are `chrome`, `firefox`, `MicrosoftEdge` and `safari` (default is `chrome`).
|
|
60
94
|
|
|
61
95
|
- `BROWSER_WIDTH` and `BROWSER_HEIGHT`
|
|
62
96
|
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DriverManager = void 0;
|
|
4
4
|
const selenium_webdriver_1 = require("selenium-webdriver");
|
|
5
5
|
const chrome_1 = require("selenium-webdriver/chrome");
|
|
6
|
+
const edge_1 = require("selenium-webdriver/edge");
|
|
6
7
|
const firefox_1 = require("selenium-webdriver/firefox");
|
|
7
8
|
const safari_1 = require("selenium-webdriver/safari");
|
|
8
9
|
const browserstack_settings_1 = require("../settings/browserstack-settings");
|
|
@@ -13,6 +14,9 @@ class DriverManager {
|
|
|
13
14
|
case selenium_webdriver_1.Browser.CHROME: {
|
|
14
15
|
return this.getChromeDriver();
|
|
15
16
|
}
|
|
17
|
+
case selenium_webdriver_1.Browser.EDGE: {
|
|
18
|
+
return this.getEdgeDriver();
|
|
19
|
+
}
|
|
16
20
|
case selenium_webdriver_1.Browser.FIREFOX: {
|
|
17
21
|
return this.getFirefoxDriver();
|
|
18
22
|
}
|
|
@@ -32,6 +36,14 @@ class DriverManager {
|
|
|
32
36
|
}
|
|
33
37
|
return new selenium_webdriver_1.Builder().forBrowser(selenium_webdriver_1.Browser.CHROME).setChromeOptions(options).build();
|
|
34
38
|
}
|
|
39
|
+
getEdgeDriver() {
|
|
40
|
+
const options = new edge_1.Options();
|
|
41
|
+
options.addArguments(`--window-size=${settings_1.Settings.browserWidth},${settings_1.Settings.browserHeight}`);
|
|
42
|
+
if (settings_1.Settings.headless) {
|
|
43
|
+
options.headless();
|
|
44
|
+
}
|
|
45
|
+
return new selenium_webdriver_1.Builder().forBrowser(selenium_webdriver_1.Browser.EDGE).setEdgeOptions(options).build();
|
|
46
|
+
}
|
|
35
47
|
getFirefoxDriver() {
|
|
36
48
|
const prefs = new selenium_webdriver_1.logging.Preferences();
|
|
37
49
|
prefs.setLevel(selenium_webdriver_1.logging.Type.BROWSER, selenium_webdriver_1.logging.Level.ALL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver-manager.js","sourceRoot":"","sources":["../../src/selenium/driver-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"driver-manager.js","sourceRoot":"","sources":["../../src/selenium/driver-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.filterAttributes = void 0;
|
|
4
|
-
const isAngular = name =>
|
|
5
|
-
const isData = name =>
|
|
4
|
+
const isAngular = name => Boolean(name.match(/^(ng|_ng)/));
|
|
5
|
+
const isData = name => Boolean(name.match(/^data-/));
|
|
6
6
|
const isEmpty = (name, value) => value === '' && !name.match(/(checked|selected|readonly)/);
|
|
7
|
+
const isGUID = (_, value) => Boolean(value.match(/^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$/i));
|
|
7
8
|
const filters = [
|
|
8
9
|
isAngular,
|
|
9
10
|
isData,
|
|
10
|
-
isEmpty
|
|
11
|
+
isEmpty,
|
|
12
|
+
isGUID
|
|
11
13
|
];
|
|
12
14
|
function filterAttributes(doc, root) {
|
|
13
15
|
const nodeIterator = doc.createNodeIterator(root, 1 /* SHOW_ELEMENT */);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-attributes.js","sourceRoot":"","sources":["../../src/snapshot-markup/filter-attributes.ts"],"names":[],"mappings":";;;AAIA,MAAM,SAAS,GAAoB,IAAI,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"filter-attributes.js","sourceRoot":"","sources":["../../src/snapshot-markup/filter-attributes.ts"],"names":[],"mappings":";;;AAIA,MAAM,SAAS,GAAoB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,GAAoB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,MAAM,OAAO,GAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC7G,MAAM,MAAM,GAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC,CAAC;AAEtI,MAAM,OAAO,GAAG;IACZ,SAAS;IACT,MAAM;IACN,OAAO;IACP,MAAM;CACT,CAAC;AAEF,SAAgB,gBAAgB,CAAC,GAAiB,EAAE,IAAiB;IACjE,MAAM,YAAY,GAAG,GAAG,CAAC,kBAAkB,CAAC,IAAI,uBAA0B,CAAC;IAE3E,OAAO,YAAY,CAAC,QAAQ,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,aAA4B,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,IAAI,IAAI,EAAE;gBACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B;SACJ;QAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5D;AACL,CAAC;AAjBD,4CAiBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsdom_1 = require("jsdom");
|
|
4
|
+
const filter_attributes_1 = require("./filter-attributes");
|
|
5
|
+
describe('filterAttributes', () => {
|
|
6
|
+
it('should filter Angular attributes', () => {
|
|
7
|
+
const doc = new jsdom_1.JSDOM(`
|
|
8
|
+
<kendo-grid-list ng-reflect-data="[object Object],[object Object" _ng-attr="true"></kendo-grid-list>
|
|
9
|
+
`).window.document;
|
|
10
|
+
filter_attributes_1.filterAttributes(doc, doc.documentElement);
|
|
11
|
+
expect(doc.querySelector('kendo-grid-list').getAttribute('ng-reflect-data')).toBeNull();
|
|
12
|
+
expect(doc.querySelector('kendo-grid-list').getAttribute('_ng-attr')).toBeNull();
|
|
13
|
+
});
|
|
14
|
+
it('should filter data attributes', () => {
|
|
15
|
+
const doc = new jsdom_1.JSDOM(`
|
|
16
|
+
<div data-foo="2"></div>
|
|
17
|
+
`).window.document;
|
|
18
|
+
filter_attributes_1.filterAttributes(doc, doc.documentElement);
|
|
19
|
+
expect(doc.querySelector('div').getAttribute('data-foo')).toBeNull();
|
|
20
|
+
});
|
|
21
|
+
it('should filter empty attributes', () => {
|
|
22
|
+
const doc = new jsdom_1.JSDOM(`
|
|
23
|
+
<div kendodraggable=""></div>
|
|
24
|
+
`).window.document;
|
|
25
|
+
filter_attributes_1.filterAttributes(doc, doc.documentElement);
|
|
26
|
+
expect(doc.querySelector('div').getAttribute('kendodraggable')).toBeNull();
|
|
27
|
+
});
|
|
28
|
+
it('should not filter standard empty attributes', () => {
|
|
29
|
+
const doc = new jsdom_1.JSDOM(`
|
|
30
|
+
<input checked readonly />
|
|
31
|
+
<select name="choice">
|
|
32
|
+
<option value="first" selected>First Value</option>
|
|
33
|
+
</select>
|
|
34
|
+
`).window.document;
|
|
35
|
+
filter_attributes_1.filterAttributes(doc, doc.documentElement);
|
|
36
|
+
expect(doc.querySelector('input').getAttribute('checked')).toBe('');
|
|
37
|
+
expect(doc.querySelector('input').getAttribute('readonly')).toBe('');
|
|
38
|
+
expect(doc.querySelector('option').getAttribute('selected')).toBe('');
|
|
39
|
+
});
|
|
40
|
+
it('should filter attributes with GUID values', () => {
|
|
41
|
+
const doc = new jsdom_1.JSDOM(`
|
|
42
|
+
<input id="a23ae29e-06d2-4cb8-a76e-263fa9a3338e" type="checkbox" class="k-checkbox">
|
|
43
|
+
<label class="k-checkbox-label" for="a23ae29e-06d2-4cb8-a76e-263fa9a3338e"></label>
|
|
44
|
+
`).window.document;
|
|
45
|
+
filter_attributes_1.filterAttributes(doc, doc.documentElement);
|
|
46
|
+
expect(doc.querySelector('input').getAttribute('id')).toBeNull();
|
|
47
|
+
expect(doc.querySelector('label').getAttribute('for')).toBeNull();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=filter-attributes.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-attributes.spec.js","sourceRoot":"","sources":["../../src/snapshot-markup/filter-attributes.spec.ts"],"names":[],"mappings":";;AAAA,iCAA8B;AAC9B,2DAAuD;AAEvD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,aAAK,CAAC;;SAErB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEnB,oCAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxF,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,aAAK,CAAC;;SAErB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEnB,oCAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,aAAK,CAAC;;SAErB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEnB,oCAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,GAAG,GAAG,IAAI,aAAK,CAAC;;;;;SAKrB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEnB,oCAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,IAAI,aAAK,CAAC;;;SAGrB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEnB,oCAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAE3C,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
declare type TemplateFn = (markup: string, data: any) => string;
|
|
1
2
|
declare type SnapshotOptions = {
|
|
2
|
-
template: 'empty' | 'html5' | 'visual-test';
|
|
3
|
+
template: 'empty' | 'html5' | 'visual-test' | TemplateFn;
|
|
3
4
|
preserveAttributes?: boolean;
|
|
4
5
|
preserveCommentNodes?: boolean;
|
|
5
6
|
beautifyOptions?: any;
|
|
@@ -34,14 +34,19 @@ function snapshotMarkup(driver, selector, outputPath, options) {
|
|
|
34
34
|
filter_comment_nodes_1.filterCommentNodes(doc, root);
|
|
35
35
|
}
|
|
36
36
|
let output = root.outerHTML;
|
|
37
|
-
const
|
|
38
|
-
switch (
|
|
37
|
+
const template = (_a = options === null || options === void 0 ? void 0 : options.template) !== null && _a !== void 0 ? _a : 'empty';
|
|
38
|
+
switch (template) {
|
|
39
39
|
case 'visual-test':
|
|
40
40
|
output = visual_test_template_1.visualTestTemplate(output, options === null || options === void 0 ? void 0 : options.data);
|
|
41
41
|
break;
|
|
42
42
|
case 'html5':
|
|
43
43
|
output = html_template_1.htmlTemplate(output, options === null || options === void 0 ? void 0 : options.data);
|
|
44
44
|
break;
|
|
45
|
+
default:
|
|
46
|
+
if (typeof template === 'function') {
|
|
47
|
+
output = template(output, options === null || options === void 0 ? void 0 : options.data);
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
45
50
|
}
|
|
46
51
|
const beautifyOptions = Object.assign({ indent_size: 4 }, options === null || options === void 0 ? void 0 : options.beautifyOptions);
|
|
47
52
|
output = js_beautify_1.html(output, beautifyOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-markup.js","sourceRoot":"","sources":["../../src/snapshot-markup/snapshot-markup.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2BAAmC;AACnC,6CAAmD;AACnD,iCAA8B;AAC9B,2DAAwC;AACxC,2DAAuD;AACvD,iEAA4D;AAC5D,mDAA+C;AAC/C,iEAA4D;
|
|
1
|
+
{"version":3,"file":"snapshot-markup.js","sourceRoot":"","sources":["../../src/snapshot-markup/snapshot-markup.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2BAAmC;AACnC,6CAAmD;AACnD,iCAA8B;AAC9B,2DAAwC;AACxC,2DAAuD;AACvD,iEAA4D;AAC5D,mDAA+C;AAC/C,iEAA4D;AAe5D,SAAsB,cAAc,CAAC,MAAW,EAAE,QAAgB,EAAE,UAAkB,EAAE,OAAwB;;;QAC5G,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,SAAS,CAAC,CAAC;SAChE;QAED,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,CAAA,EAAE;YAC9B,oCAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC/B;QAED,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,oBAAoB,CAAA,EAAE;YAChC,yCAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACjC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,MAAM,QAAQ,SAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,OAAO,CAAC;QAC9C,QAAQ,QAAQ,EAAE;YACd,KAAK,aAAa;gBACd,MAAM,GAAG,yCAAkB,CAAC,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;gBACnD,MAAM;YACV,KAAK,OAAO;gBACR,MAAM,GAAG,4BAAY,CAAC,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;gBAC7C,MAAM;YACV;gBACI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAChC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;iBAC5C;gBACD,MAAM;SACb;QAED,MAAM,eAAe,mBACjB,WAAW,EAAE,CAAC,IACX,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAC9B,CAAC;QACF,MAAM,GAAG,kBAAY,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAE/C,kBAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;CACrC;AAxCD,wCAwCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-e2e",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Kendo UI end-to-end test utilities.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -52,35 +52,32 @@
|
|
|
52
52
|
},
|
|
53
53
|
"homepage": "https://github.com/telerik/kendo-e2e#readme",
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@axe-core/webdriverjs": "4.
|
|
56
|
-
"@types/selenium-webdriver": "4.0.
|
|
55
|
+
"@axe-core/webdriverjs": "4.3.1",
|
|
56
|
+
"@types/selenium-webdriver": "4.0.16",
|
|
57
57
|
"js-beautify": "^1.13.13",
|
|
58
58
|
"jsdom": "^16.6.0",
|
|
59
59
|
"looks-same": "^7.3.0",
|
|
60
60
|
"pngjs": "^6.0.0",
|
|
61
|
-
"selenium-webdriver": "4.0.0
|
|
61
|
+
"selenium-webdriver": "4.0.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@commitlint/cli": "^12.1.4",
|
|
65
65
|
"@commitlint/config-conventional": "^12.1.4",
|
|
66
|
-
"@jest
|
|
66
|
+
"@types/jest": "^27.0.0",
|
|
67
67
|
"@progress/kendo-common-tasks": "^7.5.1",
|
|
68
68
|
"@telerik/semantic-prerelease": "^1.3.3",
|
|
69
|
-
"@types/jasmine": "^3.7.7",
|
|
70
|
-
"@types/jest-image-snapshot": "4.3.0",
|
|
71
|
-
"@types/jsonwebtoken": "^8.5.0",
|
|
72
69
|
"@types/node": "ts3.9",
|
|
73
70
|
"@typescript-eslint/eslint-plugin": "^4.22.1",
|
|
74
71
|
"@typescript-eslint/parser": "^4.22.1",
|
|
75
72
|
"eslint": "^7.25.0",
|
|
76
73
|
"geckodriver": "latest",
|
|
77
74
|
"husky": "^4.3.8",
|
|
78
|
-
"jest": "^27.0.
|
|
75
|
+
"jest": "^27.0.6",
|
|
79
76
|
"jest-image-snapshot": "4.5.0",
|
|
80
77
|
"jest-junit": "12.0.0",
|
|
81
78
|
"jest-preset-typescript": "^1.2.0",
|
|
82
79
|
"semantic-release": "^6.3.6",
|
|
83
|
-
"ts-jest": "^27.0.
|
|
80
|
+
"ts-jest": "^27.0.4",
|
|
84
81
|
"ts-node": "^10.0.0",
|
|
85
82
|
"tslib": "^2.3.0",
|
|
86
83
|
"typescript": "~3.9.6"
|