@progress/kendo-e2e 1.1.4 → 1.2.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.
@@ -3,6 +3,7 @@ declare type ImageSnapshotOptions = {
3
3
  offsetY?: number;
4
4
  sleep?: number;
5
5
  tolerance?: number;
6
+ timeout?: number;
6
7
  };
7
8
  declare type ImageSnapshotResult = {
8
9
  same?: boolean;
@@ -47,7 +47,8 @@ const defaults = {
47
47
  hideSelectors: [],
48
48
  offsetY: 0,
49
49
  sleep: 0,
50
- tolerance: 0
50
+ tolerance: 0,
51
+ timeout: 3000
51
52
  };
52
53
  /**
53
54
  * Takes an image snapshot of an element and stores in the specified location.
@@ -66,40 +67,52 @@ const defaults = {
66
67
  */
67
68
  function snapshotImage(driver, selector, outputPath, options) {
68
69
  return __awaiter(this, void 0, void 0, function* () {
69
- const { hideSelectors, offsetY, sleep, tolerance } = Object.assign(Object.assign({}, defaults), options);
70
+ const { hideSelectors, offsetY, sleep, tolerance, timeout } = Object.assign(Object.assign({}, defaults), options);
71
+ // Wait for element to be present
70
72
  const waitCondition = (driver) => __awaiter(this, void 0, void 0, function* () {
71
73
  try {
72
74
  const element = yield driver.findElement(selenium_webdriver_1.By.css(selector));
73
75
  return yield element.isDisplayed();
74
76
  }
75
- catch (_a) {
77
+ catch (_b) {
76
78
  return false;
77
79
  }
78
80
  });
79
81
  yield driver.wait(waitCondition, 10000, `Failed to find element located by ${selector}.`);
82
+ // Wait until screenshot match expected image
80
83
  const snapshotResult = { same: false };
84
+ let same = false;
85
+ let cropped;
81
86
  try {
82
- yield driver.executeScript(scripts_1.hideElements, hideSelectors);
83
- const viewport = yield driver.executeScript(scripts_1.setViewport, selector, offsetY);
84
87
  if (sleep > 0) {
85
88
  yield driver.sleep(sleep);
86
89
  }
87
- const data = yield driver.takeScreenshot();
88
- const image = Buffer.from(data, 'base64');
89
- const cropped = crop_1.crop(image, viewport);
90
- let same = false;
91
- if (yield exists(outputPath)) {
92
- const result = yield looksSame(cropped, outputPath, { strict: false, tolerance: tolerance });
93
- same = result.equal;
94
- snapshotResult.same = same;
95
- }
90
+ yield driver.executeScript(scripts_1.hideElements, hideSelectors);
91
+ const viewport = yield driver.executeScript(scripts_1.setViewport, selector, offsetY);
92
+ yield driver.wait(() => __awaiter(this, void 0, void 0, function* () {
93
+ const data = yield driver.takeScreenshot();
94
+ const image = Buffer.from(data, 'base64');
95
+ cropped = crop_1.crop(image, viewport);
96
+ if (yield exists(outputPath)) {
97
+ const result = yield looksSame(cropped, outputPath, { strict: false, tolerance: tolerance });
98
+ return result.equal;
99
+ }
100
+ else {
101
+ return false;
102
+ }
103
+ }), timeout);
104
+ same = true;
105
+ }
106
+ catch (_a) {
107
+ console.warn(`Actual screenshot do not match ${outputPath}`);
108
+ }
109
+ finally {
96
110
  if (!same) {
97
111
  yield writeFile(outputPath, cropped);
98
112
  }
99
- }
100
- finally {
101
113
  yield driver.executeScript(scripts_1.restoreElements, hideSelectors);
102
114
  }
115
+ snapshotResult.same = same;
103
116
  return snapshotResult;
104
117
  });
105
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-image.js","sourceRoot":"","sources":["../../src/snapshot-image/snapshot-image.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,sEAAsE;AACtE,uCAAyB;AACzB,4DAA2C;AAC3C,2DAAmD;AACnD,+BAAiC;AACjC,iCAA8B;AAC9B,uCAAuE;AAEvE,MAAM,SAAS,GAAG,gBAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1C,MAAM,MAAM,GAAG,gBAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACpC,MAAM,SAAS,GAAG,gBAAS,CAAC,oBAAwB,CAAC,CAAC;AAatD,MAAM,QAAQ,GAAyB;IACnC,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,SAAsB,aAAa,CAAC,MAAW,EAAE,QAAgB,EAAE,UAAkB,EAAE,OAA8B;;QACjH,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,mCAAQ,QAAQ,GAAK,OAAO,CAAE,CAAC;QAEjF,MAAM,aAAa,GAAG,CAAO,MAAiB,EAAE,EAAE;YAC9C,IAAI;gBACA,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3D,OAAO,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;aACtC;YAAC,WAAM;gBACJ,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAAA,CAAC;QAEF,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,qCAAqC,QAAQ,GAAG,CAAC,CAAC;QAC1F,MAAM,cAAc,GAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC5D,IAAI;YACA,MAAM,MAAM,CAAC,aAAa,CAAC,sBAAY,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,qBAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC5E,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC7B;YAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,WAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEtC,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE;gBAC1B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7F,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;gBACpB,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;aAC9B;YAED,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aACxC;SACJ;gBAAS;YACN,MAAM,MAAM,CAAC,aAAa,CAAC,yBAAe,EAAE,aAAa,CAAC,CAAC;SAC9D;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;CAAA;AAvCD,sCAuCC"}
1
+ {"version":3,"file":"snapshot-image.js","sourceRoot":"","sources":["../../src/snapshot-image/snapshot-image.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": "1.1.4",
3
+ "version": "1.2.0",
4
4
  "description": "Kendo UI end-to-end test utilities.",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -53,13 +53,13 @@
53
53
  },
54
54
  "homepage": "https://github.com/telerik/kendo-e2e#readme",
55
55
  "dependencies": {
56
- "@axe-core/webdriverjs": "4.4.3",
57
- "@types/selenium-webdriver": "4.1.2",
58
- "js-beautify": "^1.13.13",
59
- "jsdom": "^16.6.0",
56
+ "@axe-core/webdriverjs": "4.6.0",
57
+ "@types/selenium-webdriver": "4.1.11",
58
+ "js-beautify": "1.14.7",
59
+ "jsdom": "^21.1.0",
60
60
  "looks-same": "^7.3.0",
61
61
  "pngjs": "^6.0.0",
62
- "selenium-webdriver": "4.4.0"
62
+ "selenium-webdriver": "4.8.1"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@commitlint/cli": "^17.0.3",
@@ -74,7 +74,6 @@
74
74
  "geckodriver": "3.0.2",
75
75
  "husky": "^8.0.1",
76
76
  "jest": "^28.1.3",
77
- "jest-junit": "14.0.0",
78
77
  "semantic-release": "^6.3.6",
79
78
  "ts-jest": "^28.0.7",
80
79
  "ts-node": "^10.9.1",
@@ -82,7 +81,7 @@
82
81
  "typescript": "~4.3.4"
83
82
  },
84
83
  "engines": {
85
- "npm": ">=6.0.0",
86
- "node": ">=14.0.0"
84
+ "npm": ">=8.0.0",
85
+ "node": ">=16.0.0"
87
86
  }
88
87
  }