@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 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-driver
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
 
@@ -2,6 +2,7 @@ import { ThenableWebDriver } from "selenium-webdriver";
2
2
  export declare class DriverManager {
3
3
  getDriver(): ThenableWebDriver;
4
4
  private getChromeDriver;
5
+ private getEdgeDriver;
5
6
  private getFirefoxDriver;
6
7
  private getSafariDriver;
7
8
  private getBrowserStackDriver;
@@ -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 => !!name.match(/^(ng|_ng|data-)/);
5
- const isData = name => !!name.match(/^data-/);
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,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC3E,MAAM,MAAM,GAAoB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/D,MAAM,OAAO,GAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAE7G,MAAM,OAAO,GAAG;IACZ,SAAS;IACT,MAAM;IACN,OAAO;CACV,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"}
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 templateType = (_a = options === null || options === void 0 ? void 0 : options.template) !== null && _a !== void 0 ? _a : 'empty';
38
- switch (templateType) {
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;AAa5D,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,YAAY,SAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,OAAO,CAAC;QAClD,QAAQ,YAAY,EAAE;YAClB,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;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;AAnCD,wCAmCC"}
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.5.1",
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.2.2",
56
- "@types/selenium-webdriver": "4.0.14",
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-beta.4"
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/types": "^27.0.2",
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.5",
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.3",
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"