@progress/kendo-e2e 1.9.1 → 2.1.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/dist/components/grid.d.ts +0 -8
- package/dist/components/grid.js +4 -28
- package/dist/components/grid.js.map +1 -1
- package/dist/components/ui-component.js.map +1 -1
- package/dist/selenium/driver-manager.d.ts +0 -2
- package/dist/selenium/driver-manager.js +2 -8
- package/dist/selenium/driver-manager.js.map +1 -1
- package/dist/selenium/index.d.ts +0 -1
- package/dist/selenium/index.js +0 -1
- package/dist/selenium/index.js.map +1 -1
- package/dist/snapshot-cli/capture.d.ts +11 -0
- package/dist/snapshot-cli/capture.js +179 -0
- package/dist/snapshot-cli/capture.js.map +1 -0
- package/dist/snapshot-cli/index.d.ts +2 -0
- package/dist/snapshot-cli/index.js +69 -0
- package/dist/snapshot-cli/index.js.map +1 -0
- package/dist/snapshot-image/snapshot-image.d.ts +1 -0
- package/dist/snapshot-image/snapshot-image.js +5 -4
- package/dist/snapshot-image/snapshot-image.js.map +1 -1
- package/dist/snapshot-markup/filter-attributes.spec.js +14 -14
- package/dist/snapshot-markup/html-template.js +10 -10
- package/dist/snapshot-markup/snapshot-markup.js.map +1 -1
- package/dist/snapshot-markup/visual-test-template.js +13 -13
- package/dist/utils/fsUtils.d.ts +3 -2
- package/dist/utils/fsUtils.js +13 -1
- package/dist/utils/fsUtils.js.map +1 -1
- package/package.json +18 -6
- package/dist/selenium/chrome-browser.d.ts +0 -9
- package/dist/selenium/chrome-browser.js +0 -24
- package/dist/selenium/chrome-browser.js.map +0 -1
|
@@ -16,17 +16,9 @@ export declare class Grid extends UIComponent {
|
|
|
16
16
|
headerSortType(text: string, exactMatch?: boolean): Promise<SortType>;
|
|
17
17
|
getSortOrder(text: string, exactMatch?: boolean): Promise<number>;
|
|
18
18
|
headerCell(column: number): Promise<WebElement>;
|
|
19
|
-
/** @hidden **/
|
|
20
|
-
HeaderCellInput(column: number): Promise<WebElement>;
|
|
21
19
|
headerCellInput(column: number): Promise<WebElement>;
|
|
22
|
-
/** @hidden **/
|
|
23
|
-
HeaderCellFilterDropDown(column: number): Promise<WebElement>;
|
|
24
20
|
headerCellFilterDropDown(column: number): Promise<WebElement>;
|
|
25
|
-
/** @hidden **/
|
|
26
|
-
HeaderCellCleanFilterButton(column: number): Promise<WebElement>;
|
|
27
21
|
headerCellCleanFilterButton(column: number): Promise<WebElement>;
|
|
28
|
-
/** @hidden **/
|
|
29
|
-
Cell(row: number, column: number): Promise<WebElement>;
|
|
30
22
|
cell(row: number, column: number): Promise<WebElement>;
|
|
31
23
|
cellInput(row: number, column: number): Promise<WebElement>;
|
|
32
24
|
cellsByColumn(column: number, limit?: number): Promise<WebElement[]>;
|
package/dist/components/grid.js
CHANGED
|
@@ -110,8 +110,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
110
110
|
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
-
|
|
114
|
-
HeaderCellInput(column) {
|
|
113
|
+
headerCellInput(column) {
|
|
115
114
|
return __awaiter(this, void 0, void 0, function* () {
|
|
116
115
|
const defaultLocator = `thead tr td:nth-of-type(${column}) input`;
|
|
117
116
|
const reactLocator = `thead tr.k-filter-row th:nth-of-type(${column}) input`;
|
|
@@ -119,13 +118,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
119
118
|
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
120
119
|
});
|
|
121
120
|
}
|
|
122
|
-
|
|
123
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
-
return this.HeaderCellInput(column);
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
/** @hidden **/
|
|
128
|
-
HeaderCellFilterDropDown(column) {
|
|
121
|
+
headerCellFilterDropDown(column) {
|
|
129
122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
123
|
const defaultLocator = `thead tr td:nth-of-type(${column}) .k-dropdown`;
|
|
131
124
|
const reactLocator = `thead tr.k-filter-row th:nth-of-type(${column}) .k-dropdown`;
|
|
@@ -133,13 +126,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
133
126
|
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
134
127
|
});
|
|
135
128
|
}
|
|
136
|
-
|
|
137
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
return this.HeaderCellFilterDropDown(column);
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
/** @hidden **/
|
|
142
|
-
HeaderCellCleanFilterButton(column) {
|
|
129
|
+
headerCellCleanFilterButton(column) {
|
|
143
130
|
return __awaiter(this, void 0, void 0, function* () {
|
|
144
131
|
const defaultLocator = `thead tr td:nth-of-type(${column}) button[title='Clear']`;
|
|
145
132
|
const reactLocator = `thead tr.k-filter-row th:nth-of-type(${column}) button[title='Clear']`;
|
|
@@ -147,13 +134,7 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
147
134
|
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${reactLocator}`), errorMessage);
|
|
148
135
|
});
|
|
149
136
|
}
|
|
150
|
-
|
|
151
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
-
return this.HeaderCellCleanFilterButton(column);
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
/** @hidden **/
|
|
156
|
-
Cell(row, column) {
|
|
137
|
+
cell(row, column) {
|
|
157
138
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
139
|
const defaultLocator = `tr:nth-of-type(${row}) td[role='gridcell']:nth-of-type(${column})`;
|
|
159
140
|
const vueLocator = `tr.k-master-row:nth-of-type(${row}) td:nth-of-type(${column})`;
|
|
@@ -161,11 +142,6 @@ class Grid extends ui_component_1.UIComponent {
|
|
|
161
142
|
return yield this.getGridElement(selenium_webdriver_1.By.css(`${defaultLocator}, ${vueLocator}`), errorMessage);
|
|
162
143
|
});
|
|
163
144
|
}
|
|
164
|
-
cell(row, column) {
|
|
165
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
-
return this.Cell(row, column);
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
145
|
cellInput(row, column) {
|
|
170
146
|
return __awaiter(this, void 0, void 0, function* () {
|
|
171
147
|
const defaultLocator = `tr:nth-of-type(${row}) td[role='gridcell']:nth-of-type(${column}) input`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/components/grid.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/components/grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-component.js","sourceRoot":"","sources":["../../src/components/ui-component.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAA8E;AAC9E,uDAA4C;AAC5C,mDAAgD;AAEhD,MAAa,WAAW;IACpB,YAAsB,MAAyB,EAAY,OAAW,EAAY,aAA0B;QAAtF,WAAM,GAAN,MAAM,CAAmB;QAAY,YAAO,GAAP,OAAO,CAAI;QAAY,kBAAa,GAAb,aAAa,CAAa;IAC5G,CAAC;IAEY,cAAc,CAAC,cAAc,GAAG,IAAI;;YAC7C,MAAM,eAAe,GAAG,qCAAqC,IAAI,CAAC,OAAO,GAAG,CAAC;YAC7E,MAAM,eAAe,GAAG,sBAAsB,IAAI,CAAC,OAAO,kBAAkB,CAAC;YAE7E,IAAI,IAAI,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"ui-component.js","sourceRoot":"","sources":["../../src/components/ui-component.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAA8E;AAC9E,uDAA4C;AAC5C,mDAAgD;AAEhD,MAAa,WAAW;IACpB,YAAsB,MAAyB,EAAY,OAAW,EAAY,aAA0B;QAAtF,WAAM,GAAN,MAAM,CAAmB;QAAY,YAAO,GAAP,OAAO,CAAI;QAAY,kBAAa,GAAb,aAAa,CAAa;IAC5G,CAAC;IAEY,cAAc,CAAC,cAAc,GAAG,IAAI;;YAC7C,MAAM,eAAe,GAAG,qCAAqC,IAAI,CAAC,OAAO,GAAG,CAAC;YAC7E,MAAM,eAAe,GAAG,sBAAsB,IAAI,CAAC,OAAO,kBAAkB,CAAC;YAE7E,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,mBAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBAC3F,OAAO,OAAO,CAAC;aAClB;iBACI;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBACxG,IAAI,cAAc,EAAE;oBAChB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,mBAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;oBAE3F,wBAAwB;oBACxB,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;oBACjG,IAAI,WAAW,KAAK,QAAQ,EAAE;wBAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAS,EAAE,gDAAC,OAAA,CAAA,MAAM,OAAO,CAAC,OAAO,EAAE,MAAK,SAAS,CAAA,GAAA,EAAE,mBAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;qBAChH;iBACJ;gBACD,OAAO,OAAO,CAAC;aAClB;QACL,CAAC;KAAA;IAEY,UAAU,CAAC,OAAW;;YAC/B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;KAAA;CACJ;AAlCD,kCAkCC"}
|
|
@@ -4,8 +4,6 @@ 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
|
-
private isHeadlessNew?;
|
|
8
|
-
constructor(isHeadlessNew?: boolean);
|
|
9
7
|
DEFAULT_CHROMIUM_OPTIONS: string[];
|
|
10
8
|
getDriver(): ThenableWebDriver;
|
|
11
9
|
getChromeOptions(args?: string[]): ChromeOptions;
|
|
@@ -9,8 +9,7 @@ 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.isHeadlessNew = isHeadlessNew;
|
|
12
|
+
constructor() {
|
|
14
13
|
this.DEFAULT_CHROMIUM_OPTIONS = [
|
|
15
14
|
`--window-size=${settings_1.Settings.browserWidth},${settings_1.Settings.browserHeight}`,
|
|
16
15
|
'--force-device-scale-factor=1',
|
|
@@ -45,12 +44,7 @@ class DriverManager {
|
|
|
45
44
|
options.addArguments(argument);
|
|
46
45
|
});
|
|
47
46
|
if (settings_1.Settings.headless) {
|
|
48
|
-
|
|
49
|
-
options.addArguments('--headless=new');
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
options.headless();
|
|
53
|
-
}
|
|
47
|
+
options.addArguments('--headless=new');
|
|
54
48
|
}
|
|
55
49
|
return options;
|
|
56
50
|
}
|
|
@@ -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
|
@@ -15,7 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./browser"), exports);
|
|
18
|
-
__exportStar(require("./chrome-browser"), exports);
|
|
19
18
|
__exportStar(require("./conditions"), exports);
|
|
20
19
|
__exportStar(require("./driver-manager"), exports);
|
|
21
20
|
__exportStar(require("./electron-app"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/selenium/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B
|
|
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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function capture({ browser, host, pages, root, output, viewportSize, selector, tolerance, createDiff }: {
|
|
2
|
+
browser: any;
|
|
3
|
+
host: any;
|
|
4
|
+
pages: any;
|
|
5
|
+
root: any;
|
|
6
|
+
output: any;
|
|
7
|
+
viewportSize: any;
|
|
8
|
+
selector: any;
|
|
9
|
+
tolerance: any;
|
|
10
|
+
createDiff: any;
|
|
11
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint @typescript-eslint/no-var-requires: "off" */
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
28
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
29
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
30
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
31
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
32
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.capture = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const { promisify } = require('util');
|
|
39
|
+
const webdriver = require('selenium-webdriver');
|
|
40
|
+
const { Builder, By } = webdriver;
|
|
41
|
+
const chrome = require('selenium-webdriver/chrome');
|
|
42
|
+
const firefox = require('selenium-webdriver/firefox');
|
|
43
|
+
const path = require('path');
|
|
44
|
+
const looksSameCallback = require('looks-same');
|
|
45
|
+
const looksSame = promisify(looksSameCallback);
|
|
46
|
+
const sharp = require('sharp');
|
|
47
|
+
const WIDTH = 1024;
|
|
48
|
+
const HEIGHT = 768;
|
|
49
|
+
function capture({ browser, host, pages, root, output, viewportSize, selector, tolerance, createDiff }) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const size = viewportSize || { width: WIDTH, height: HEIGHT };
|
|
52
|
+
const ChromeOptions = new chrome.Options()
|
|
53
|
+
.headless()
|
|
54
|
+
.addArguments('--force-device-scale-factor=1')
|
|
55
|
+
.addArguments('--disable-extensions')
|
|
56
|
+
.addArguments('--disable-notifications')
|
|
57
|
+
.addArguments('--ignore-certificate-errors')
|
|
58
|
+
.windowSize(size);
|
|
59
|
+
const FirefoxOptions = new firefox.Options()
|
|
60
|
+
.headless()
|
|
61
|
+
.windowSize(size);
|
|
62
|
+
const driver = new Builder()
|
|
63
|
+
.forBrowser(browser)
|
|
64
|
+
.setChromeOptions(ChromeOptions)
|
|
65
|
+
.setFirefoxOptions(FirefoxOptions)
|
|
66
|
+
.build();
|
|
67
|
+
yield setViewportSize(driver, size);
|
|
68
|
+
// console.time('runTests');
|
|
69
|
+
try {
|
|
70
|
+
for (const page of pages) {
|
|
71
|
+
const name = path.basename(page, '.html');
|
|
72
|
+
const url = host + page;
|
|
73
|
+
const relativePath = path.relative(root, page);
|
|
74
|
+
const outputPath = path.dirname(path.join(output, relativePath));
|
|
75
|
+
fs.mkdirSync(outputPath, { recursive: true });
|
|
76
|
+
// console.group(`Running test for ${url}...`);
|
|
77
|
+
// console.time('runTest');
|
|
78
|
+
yield runTest({ driver, url, name, outputPath, selector, tolerance, createDiff });
|
|
79
|
+
// console.timeEnd('runTest');
|
|
80
|
+
// console.groupEnd();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
console.error('Error during capture:', e);
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
// console.time('driver quit');
|
|
88
|
+
yield driver.quit();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
exports.capture = capture;
|
|
93
|
+
function setViewportSize(driver, size) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const { innerSize, outerSize } = yield driver.executeScript(`
|
|
96
|
+
return {
|
|
97
|
+
outerSize: {
|
|
98
|
+
width: window.outerWidth,
|
|
99
|
+
height: window.outerHeight
|
|
100
|
+
},
|
|
101
|
+
innerSize: {
|
|
102
|
+
width: window.innerWidth,
|
|
103
|
+
height: window.innerHeight
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
`);
|
|
107
|
+
const chromeSize = {
|
|
108
|
+
width: outerSize.width - innerSize.width,
|
|
109
|
+
height: outerSize.height - innerSize.height
|
|
110
|
+
};
|
|
111
|
+
const width = size.width + chromeSize.width;
|
|
112
|
+
const height = size.height + chromeSize.height;
|
|
113
|
+
yield driver.manage().window().setRect(width, height);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function elementOrViewport(driver, selector) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
let element;
|
|
119
|
+
try {
|
|
120
|
+
element = yield driver.findElement(By.css(selector));
|
|
121
|
+
// console.log(`Taking screenshot of element ${selector}`);
|
|
122
|
+
return element;
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
// console.log('Taking screenshot of viewport');
|
|
126
|
+
return driver;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const writeFile = (png, filename) => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
|
+
const optimized = yield sharp(png).png().toBuffer();
|
|
132
|
+
fs.writeFileSync(filename, optimized);
|
|
133
|
+
});
|
|
134
|
+
const createDiffImage = (current, reference, filename, tolerance) => {
|
|
135
|
+
const diffImageSettings = {
|
|
136
|
+
reference,
|
|
137
|
+
current,
|
|
138
|
+
diff: filename,
|
|
139
|
+
highlightColor: '#ff00ff',
|
|
140
|
+
strict: false,
|
|
141
|
+
tolerance: tolerance
|
|
142
|
+
};
|
|
143
|
+
looksSame.createDiff(diffImageSettings);
|
|
144
|
+
};
|
|
145
|
+
function runTest({ driver, url, name, outputPath, selector, tolerance, createDiff }) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
// console.time('driver.get url');
|
|
148
|
+
yield driver.get(url);
|
|
149
|
+
// console.timeEnd('driver.get url');
|
|
150
|
+
// console.time('driver.findElement');
|
|
151
|
+
const element = yield elementOrViewport(driver, selector);
|
|
152
|
+
// console.timeEnd('driver.findElement'); // eslint-disable-line padding-line-between-statements
|
|
153
|
+
// console.time('driver.takeScreenshot');
|
|
154
|
+
const data = yield element.takeScreenshot();
|
|
155
|
+
// console.timeEnd('driver.takeScreenshot'); // eslint-disable-line padding-line-between-statements
|
|
156
|
+
const png = Buffer.from(data, 'base64');
|
|
157
|
+
const filename = `./${outputPath}/${name}.png`;
|
|
158
|
+
const diffname = `./${outputPath}/${name}_diff_${Date.now()}.png`;
|
|
159
|
+
if (!fs.existsSync(filename)) {
|
|
160
|
+
// initial run, write file
|
|
161
|
+
yield writeFile(png, filename);
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
// console.time('looksSame.compare');
|
|
165
|
+
const { equal } = yield looksSame(png, filename, { strict: false, tolerance: tolerance });
|
|
166
|
+
// console.timeEnd('looksSame.compare');
|
|
167
|
+
// overwrite file only if there are visual differences
|
|
168
|
+
if (!equal) {
|
|
169
|
+
if (createDiff) {
|
|
170
|
+
// console.time('looksSame.createDiff');
|
|
171
|
+
createDiffImage(png, filename, diffname, tolerance);
|
|
172
|
+
// console.timeEnd('looksSame.createDiff');
|
|
173
|
+
}
|
|
174
|
+
yield writeFile(png, filename);
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/snapshot-cli/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/* eslint @typescript-eslint/no-var-requires: "off" */
|
|
4
|
+
/* eslint @typescript-eslint/ban-ts-comment: "off" */
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const capture_1 = require("./capture");
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const glob = require('glob');
|
|
9
|
+
const program = require('commander');
|
|
10
|
+
const { createServer } = require('http-server');
|
|
11
|
+
const version = JSON.parse(fs.readFileSync(`${__dirname}/../../package.json`, { encoding: 'utf-8' })).version;
|
|
12
|
+
const configName = `${process.cwd()}/.snapshotrc`;
|
|
13
|
+
function readConfig() {
|
|
14
|
+
if (!fs.existsSync(configName)) {
|
|
15
|
+
console.info('No config file found. Using defaults.');
|
|
16
|
+
return {};
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
return JSON.parse(fs.readFileSync(configName, { encoding: 'utf-8' }));
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.error('Can not parse .snapshotrc');
|
|
23
|
+
console.error(e);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const snapshotrc = readConfig();
|
|
28
|
+
function parseViewportSize(val) {
|
|
29
|
+
val = val.split(',');
|
|
30
|
+
return { width: Number(val[0]), height: Number(val[1]) };
|
|
31
|
+
}
|
|
32
|
+
program
|
|
33
|
+
.version(version)
|
|
34
|
+
.usage('[options] ')
|
|
35
|
+
.option('--output <dir>', 'Output directory for the captured screenshots', snapshotrc.output || 'snapshots')
|
|
36
|
+
.option('--serve <glob>', 'Pages to serve with an embedded HTTP server', snapshotrc.serve || false)
|
|
37
|
+
.option('--port <number>', 'Port number for the embedded HTTP server (--serve)', snapshotrc.port || 8081)
|
|
38
|
+
.option('--browser <firefox|chrome>', 'Browser that will take screenshots', snapshotrc.browser || 'firefox')
|
|
39
|
+
.option('--viewport-size <width,height>', 'Initial window size (default: 1024,768)', parseViewportSize)
|
|
40
|
+
.option('--selector <css selector>', 'Scope screenshot to specific selector. Leave empty for viewport', snapshotrc.selector || '')
|
|
41
|
+
.option('--tolerance <number>', 'Tolerance to use when comparing', snapshotrc.tolerance || 0)
|
|
42
|
+
.option('--create-diff <boolean>', 'Create diff image', snapshotrc.createDiff || false)
|
|
43
|
+
.parse(process.argv);
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
const { browser, serve, port, output, viewportSize, selector, tolerance, createDiff } = Object.assign(Object.assign({}, snapshotrc), program);
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
const pages = glob.sync(serve);
|
|
48
|
+
const root = serve.substring(0, serve.indexOf('*') - 1);
|
|
49
|
+
const server = createServer({
|
|
50
|
+
root: './',
|
|
51
|
+
showDotfiles: false,
|
|
52
|
+
port
|
|
53
|
+
});
|
|
54
|
+
server.listen(port);
|
|
55
|
+
(0, capture_1.capture)({
|
|
56
|
+
host: `http://localhost:${port}/`,
|
|
57
|
+
browser,
|
|
58
|
+
output,
|
|
59
|
+
pages,
|
|
60
|
+
root,
|
|
61
|
+
viewportSize,
|
|
62
|
+
selector,
|
|
63
|
+
tolerance,
|
|
64
|
+
createDiff
|
|
65
|
+
})
|
|
66
|
+
.then(() => {
|
|
67
|
+
server.close();
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/snapshot-cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,7 @@ const defaults = {
|
|
|
52
52
|
offsetY: 0,
|
|
53
53
|
sleep: 0,
|
|
54
54
|
tolerance: 0,
|
|
55
|
+
ignoreCaret: true,
|
|
55
56
|
timeout: 3000
|
|
56
57
|
};
|
|
57
58
|
/**
|
|
@@ -71,7 +72,7 @@ const defaults = {
|
|
|
71
72
|
*/
|
|
72
73
|
function snapshotImage(driver, selector, outputPath, options) {
|
|
73
74
|
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
-
const { hideSelectors, offsetY, sleep, tolerance, timeout } = Object.assign(Object.assign({}, defaults), options);
|
|
75
|
+
const { hideSelectors, offsetY, sleep, tolerance, ignoreCaret, timeout } = Object.assign(Object.assign({}, defaults), options);
|
|
75
76
|
// Wait for element to be present
|
|
76
77
|
const waitCondition = (driver) => __awaiter(this, void 0, void 0, function* () {
|
|
77
78
|
try {
|
|
@@ -101,7 +102,7 @@ function snapshotImage(driver, selector, outputPath, options) {
|
|
|
101
102
|
const image = Buffer.from(data, 'base64');
|
|
102
103
|
cropped = (0, crop_1.crop)(image, viewport);
|
|
103
104
|
if (yield exists(outputPath)) {
|
|
104
|
-
const result = yield looksSame(cropped, outputPath, { strict: false, tolerance: tolerance });
|
|
105
|
+
const result = yield looksSame(cropped, outputPath, { strict: false, tolerance: tolerance, ignoreCaret: ignoreCaret });
|
|
105
106
|
return result.equal;
|
|
106
107
|
}
|
|
107
108
|
else {
|
|
@@ -140,7 +141,7 @@ exports.snapshotImage = snapshotImage;
|
|
|
140
141
|
*/
|
|
141
142
|
function snapshotViewPort(driver, outputPath, options) {
|
|
142
143
|
return __awaiter(this, void 0, void 0, function* () {
|
|
143
|
-
const { hideSelectors, sleep, tolerance, timeout } = Object.assign(Object.assign({}, defaults), options);
|
|
144
|
+
const { hideSelectors, sleep, tolerance, ignoreCaret, timeout } = Object.assign(Object.assign({}, defaults), options);
|
|
144
145
|
// Wait until screenshot match expected image
|
|
145
146
|
const snapshotResult = { same: false };
|
|
146
147
|
let same = false;
|
|
@@ -154,7 +155,7 @@ function snapshotViewPort(driver, outputPath, options) {
|
|
|
154
155
|
const data = yield driver.takeScreenshot();
|
|
155
156
|
image = Buffer.from(data, 'base64');
|
|
156
157
|
if (yield exists(outputPath)) {
|
|
157
|
-
const result = yield looksSame(image, outputPath, { strict: false, tolerance: tolerance });
|
|
158
|
+
const result = yield looksSame(image, outputPath, { strict: false, tolerance: tolerance, ignoreCaret: ignoreCaret });
|
|
158
159
|
return result.equal;
|
|
159
160
|
}
|
|
160
161
|
else {
|
|
@@ -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,IAAA,gBAAS,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1C,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACpC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAwB,CAAC,CAAC;
|
|
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,IAAA,gBAAS,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1C,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACpC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAwB,CAAC,CAAC;AAetD,MAAM,QAAQ,GAAyB;IACnC,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;CAChB,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,WAAW,EAAE,OAAO,EAAE,mCAAQ,QAAQ,GAAK,OAAO,CAAE,CAAC;QAEvG,iCAAiC;QACjC,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;QACF,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,qCAAqC,QAAQ,GAAG,CAAC,CAAC;QAE1F,6CAA6C;QAC7C,MAAM,cAAc,GAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC5D,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,OAAe,CAAC;QACpB,IAAI;YACA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC7B;YAED,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,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,iDAAiD,CAAC,CAAC;YAC3G,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAErE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAS,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC1C,OAAO,GAAG,IAAA,WAAI,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAChC,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE;oBAC1B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;oBACvH,OAAO,MAAM,CAAC,KAAK,CAAC;iBACvB;qBAAM;oBACH,OAAO,KAAK,CAAC;iBAChB;YACL,CAAC,CAAA,EAAE,OAAO,CAAC,CAAC;YACZ,IAAI,GAAG,IAAI,CAAC;SACf;QAAC,WAAM;YACJ,OAAO,CAAC,IAAI,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;SAClE;gBACO;YACJ,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aACxC;YAED,MAAM,MAAM,CAAC,aAAa,CAAC,yBAAe,EAAE,aAAa,CAAC,CAAC;SAC9D;QAED,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,OAAO,cAAc,CAAC;IAC1B,CAAC;CAAA;AAtDD,sCAsDC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAsB,gBAAgB,CAAC,MAAW,EAAE,UAAkB,EAAE,OAA8B;;QAClG,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,mCAAQ,QAAQ,GAAK,OAAO,CAAE,CAAC;QAC9F,6CAA6C;QAC7C,MAAM,cAAc,GAAwB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC5D,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAa,CAAC;QAClB,IAAI;YACA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC7B;YAED,MAAM,MAAM,CAAC,aAAa,CAAC,sBAAY,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAS,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC3C,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACpC,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE;oBAC1B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;oBACrH,OAAO,MAAM,CAAC,KAAK,CAAC;iBACvB;qBAAM;oBACH,OAAO,KAAK,CAAC;iBAChB;YACL,CAAC,CAAA,EAAE,OAAO,CAAC,CAAC;YACZ,IAAI,GAAG,IAAI,CAAC;SACf;QAAC,WAAM;YACJ,OAAO,CAAC,IAAI,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;SAChE;gBACO;YACJ,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;aACtC;YAED,MAAM,MAAM,CAAC,aAAa,CAAC,yBAAe,EAAE,aAAa,CAAC,CAAC;SAC9D;QAED,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,OAAO,cAAc,CAAC;IAC1B,CAAC;CAAA;AApCD,4CAoCC"}
|
|
@@ -4,33 +4,33 @@ const jsdom_1 = require("jsdom");
|
|
|
4
4
|
const filter_attributes_1 = require("./filter-attributes");
|
|
5
5
|
describe('filterAttributes', () => {
|
|
6
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>
|
|
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
9
|
`).window.document;
|
|
10
10
|
(0, filter_attributes_1.filterAttributes)(doc, doc.documentElement);
|
|
11
11
|
expect(doc.querySelector('kendo-grid-list').getAttribute('ng-reflect-data')).toBeNull();
|
|
12
12
|
expect(doc.querySelector('kendo-grid-list').getAttribute('_ng-attr')).toBeNull();
|
|
13
13
|
});
|
|
14
14
|
it('should filter data attributes', () => {
|
|
15
|
-
const doc = new jsdom_1.JSDOM(`
|
|
16
|
-
<div data-foo="2"></div>
|
|
15
|
+
const doc = new jsdom_1.JSDOM(`
|
|
16
|
+
<div data-foo="2"></div>
|
|
17
17
|
`).window.document;
|
|
18
18
|
(0, filter_attributes_1.filterAttributes)(doc, doc.documentElement);
|
|
19
19
|
expect(doc.querySelector('div').getAttribute('data-foo')).toBeNull();
|
|
20
20
|
});
|
|
21
21
|
it('should filter empty attributes', () => {
|
|
22
|
-
const doc = new jsdom_1.JSDOM(`
|
|
23
|
-
<div kendodraggable=""></div>
|
|
22
|
+
const doc = new jsdom_1.JSDOM(`
|
|
23
|
+
<div kendodraggable=""></div>
|
|
24
24
|
`).window.document;
|
|
25
25
|
(0, filter_attributes_1.filterAttributes)(doc, doc.documentElement);
|
|
26
26
|
expect(doc.querySelector('div').getAttribute('kendodraggable')).toBeNull();
|
|
27
27
|
});
|
|
28
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>
|
|
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
34
|
`).window.document;
|
|
35
35
|
(0, filter_attributes_1.filterAttributes)(doc, doc.documentElement);
|
|
36
36
|
expect(doc.querySelector('input').getAttribute('checked')).toBe('');
|
|
@@ -38,9 +38,9 @@ describe('filterAttributes', () => {
|
|
|
38
38
|
expect(doc.querySelector('option').getAttribute('selected')).toBe('');
|
|
39
39
|
});
|
|
40
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>
|
|
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
44
|
`).window.document;
|
|
45
45
|
(0, filter_attributes_1.filterAttributes)(doc, doc.documentElement);
|
|
46
46
|
expect(doc.querySelector('input').getAttribute('id')).toBeNull();
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.htmlTemplate = void 0;
|
|
4
4
|
function htmlTemplate(markup, data) {
|
|
5
|
-
return `
|
|
6
|
-
<!doctype html>
|
|
7
|
-
<html>
|
|
8
|
-
<head>
|
|
9
|
-
<title>${data === null || data === void 0 ? void 0 : data.title}</title>
|
|
10
|
-
<meta charset="utf-8" />
|
|
11
|
-
</head>
|
|
12
|
-
<body>
|
|
13
|
-
${markup}
|
|
14
|
-
</body>
|
|
5
|
+
return `
|
|
6
|
+
<!doctype html>
|
|
7
|
+
<html>
|
|
8
|
+
<head>
|
|
9
|
+
<title>${data === null || data === void 0 ? void 0 : data.title}</title>
|
|
10
|
+
<meta charset="utf-8" />
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
${markup}
|
|
14
|
+
</body>
|
|
15
15
|
</html>`;
|
|
16
16
|
}
|
|
17
17
|
exports.htmlTemplate = htmlTemplate;
|
|
@@ -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;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;
|
|
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;YACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,SAAS,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,CAAA,EAAE;YAC9B,IAAA,oCAAgB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,oBAAoB,CAAA,EAAE;YAChC,IAAA,yCAAkB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACjC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,OAAO,CAAC;QAC9C,QAAQ,QAAQ,EAAE;YACd,KAAK,aAAa;gBACd,MAAM,GAAG,IAAA,yCAAkB,EAAC,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC;gBACnD,MAAM;YACV,KAAK,OAAO;gBACR,MAAM,GAAG,IAAA,4BAAY,EAAC,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,IAAA,kBAAY,EAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAE/C,IAAA,kBAAa,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;CACrC;AAxCD,wCAwCC"}
|
|
@@ -7,19 +7,19 @@ function parentPath(level) {
|
|
|
7
7
|
function visualTestTemplate(markup, options) {
|
|
8
8
|
var _a;
|
|
9
9
|
const pathDepth = (_a = options === null || options === void 0 ? void 0 : options.pathDepth) !== null && _a !== void 0 ? _a : 3;
|
|
10
|
-
return `
|
|
11
|
-
<!doctype html>
|
|
12
|
-
<html lang="en" class="k-typography k-no-animations">
|
|
13
|
-
<head>
|
|
14
|
-
<title>${options === null || options === void 0 ? void 0 : options.title}</title>
|
|
15
|
-
<meta charset="utf-8" />
|
|
16
|
-
<link rel="stylesheet" data-role="kendo-theme" href="${parentPath(pathDepth + 2)}/packages/default/dist/all.css" />
|
|
17
|
-
<link rel="stylesheet" href="${parentPath(pathDepth)}/assets/styles.css" />
|
|
18
|
-
<script src="${parentPath(pathDepth)}/assets/scripts.js"></script>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
${markup}
|
|
22
|
-
</body>
|
|
10
|
+
return `
|
|
11
|
+
<!doctype html>
|
|
12
|
+
<html lang="en" class="k-typography k-no-animations">
|
|
13
|
+
<head>
|
|
14
|
+
<title>${options === null || options === void 0 ? void 0 : options.title}</title>
|
|
15
|
+
<meta charset="utf-8" />
|
|
16
|
+
<link rel="stylesheet" data-role="kendo-theme" href="${parentPath(pathDepth + 2)}/packages/default/dist/all.css" />
|
|
17
|
+
<link rel="stylesheet" href="${parentPath(pathDepth)}/assets/styles.css" />
|
|
18
|
+
<script src="${parentPath(pathDepth)}/assets/scripts.js"></script>
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
${markup}
|
|
22
|
+
</body>
|
|
23
23
|
</html>`;
|
|
24
24
|
}
|
|
25
25
|
exports.visualTestTemplate = visualTestTemplate;
|
package/dist/utils/fsUtils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
export declare const defaultDownloadPath: string;
|
|
3
|
+
export declare function exist(filePath: string): Promise<boolean>;
|
|
3
4
|
/**
|
|
4
5
|
* Asynchronously reads the content of a file located at the specified file path
|
|
5
6
|
* and returns it as either a string or a Buffer.
|
|
@@ -10,7 +11,7 @@ export declare const defaultDownloadPath: string;
|
|
|
10
11
|
* @param {number} [maxWaitMs=20000] - Default: 20sec. The maximum time, in milliseconds, to wait for the
|
|
11
12
|
* file to become available. If the file is not found within this timeout, an error will be thrown.
|
|
12
13
|
*/
|
|
13
|
-
export declare function getFileContent(fileName:
|
|
14
|
+
export declare function getFileContent(fileName: string, filePath?: string, bufferEncoding?: BufferEncoding, maxWaitMs?: number): Promise<string | Buffer>;
|
|
14
15
|
/**
|
|
15
16
|
* Copies the content of a source file to a new target file and custom file extension.
|
|
16
17
|
*
|
|
@@ -20,7 +21,7 @@ export declare function getFileContent(fileName: any, filePath?: string, bufferE
|
|
|
20
21
|
* @param {string} filePathTarget - Default: defaultDownloadPath. The directory path where the file should be saved.
|
|
21
22
|
* @param {BufferEncoding} [bufferEncoding] - Optional. The encoding to use when reading the file content.
|
|
22
23
|
*/
|
|
23
|
-
export declare function copyFile(sourceFileName:
|
|
24
|
+
export declare function copyFile(sourceFileName: string, targetFileName: string, filePathSource?: string, filePathTarget?: string, bufferEncoding?: BufferEncoding): Promise<void>;
|
|
24
25
|
/**
|
|
25
26
|
* Removes Creation date metadata from a file content buffer via RegEx.
|
|
26
27
|
*
|
package/dist/utils/fsUtils.js
CHANGED
|
@@ -35,10 +35,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.deleteFileIfExists = exports.compareTwoFiles = exports.removeCreationDateMetadataFromFile = exports.copyFile = exports.getFileContent = exports.defaultDownloadPath = void 0;
|
|
38
|
+
exports.deleteFileIfExists = exports.compareTwoFiles = exports.removeCreationDateMetadataFromFile = exports.copyFile = exports.getFileContent = exports.exist = exports.defaultDownloadPath = void 0;
|
|
39
39
|
const fs = __importStar(require("fs"));
|
|
40
40
|
const os_1 = __importDefault(require("os"));
|
|
41
41
|
exports.defaultDownloadPath = os_1.default.homedir() + '/Downloads/';
|
|
42
|
+
function exist(filePath) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
try {
|
|
45
|
+
yield fs.promises.access(filePath);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
exports.exist = exist;
|
|
42
54
|
/**
|
|
43
55
|
* Asynchronously reads the content of a file located at the specified file path
|
|
44
56
|
* and returns it as either a string or a Buffer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fsUtils.js","sourceRoot":"","sources":["../../src/utils/fsUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,4CAAoB;AAEP,QAAA,mBAAmB,GAAG,YAAE,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC;AAEhE;;;;;;;;;GASG;AACH,SAAsB,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"fsUtils.js","sourceRoot":"","sources":["../../src/utils/fsUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-e2e",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Kendo UI end-to-end test utilities.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"snapshot": "./snapshot-cli/index.js"
|
|
8
|
+
},
|
|
6
9
|
"typings": "dist/index.d.ts",
|
|
7
10
|
"files": [
|
|
8
11
|
"dist"
|
|
9
12
|
],
|
|
10
13
|
"scripts": {
|
|
11
|
-
"lint": "npx eslint src/**/*.ts tests/**/*.ts",
|
|
12
|
-
"build": "
|
|
14
|
+
"lint": "npx eslint ./src/**/*.ts ./tests/**/*.ts",
|
|
15
|
+
"build": "npx tsc",
|
|
13
16
|
"test:a11y": "npx jest tests/a11y",
|
|
14
17
|
"test:e2e": "npx jest tests/e2e",
|
|
15
18
|
"test:rendering": "npx jest tests/rendering",
|
|
16
19
|
"test:visual": "npx jest tests/visual",
|
|
20
|
+
"test:snapshot": "cd tests/snapshot-cli && chmod +x run.sh && ./run.sh",
|
|
17
21
|
"semantic-release": "semantic-release"
|
|
18
22
|
},
|
|
19
23
|
"repository": {
|
|
@@ -28,6 +32,10 @@
|
|
|
28
32
|
{
|
|
29
33
|
"name": "master",
|
|
30
34
|
"channel": "latest"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "snapshot-cli",
|
|
38
|
+
"channel": "dev"
|
|
31
39
|
}
|
|
32
40
|
]
|
|
33
41
|
},
|
|
@@ -51,8 +59,11 @@
|
|
|
51
59
|
},
|
|
52
60
|
"homepage": "https://github.com/telerik/kendo-e2e#readme",
|
|
53
61
|
"dependencies": {
|
|
54
|
-
"@axe-core/webdriverjs": "4.
|
|
55
|
-
"@types/selenium-webdriver": "4.1.
|
|
62
|
+
"@axe-core/webdriverjs": "4.8.1",
|
|
63
|
+
"@types/selenium-webdriver": "4.1.19",
|
|
64
|
+
"commander": "^2.13.0",
|
|
65
|
+
"glob": "^7.1.6",
|
|
66
|
+
"http-server": "^14.1.1",
|
|
56
67
|
"js-beautify": "^1.14.7",
|
|
57
68
|
"jsdom": "^16.7.0",
|
|
58
69
|
"looks-same": "^7.3.0",
|
|
@@ -60,7 +71,8 @@
|
|
|
60
71
|
"react": "^18.2.0",
|
|
61
72
|
"react-dom": "^18.2.0",
|
|
62
73
|
"sanitize-html": "^2.10.0",
|
|
63
|
-
"selenium-webdriver": "4.
|
|
74
|
+
"selenium-webdriver": "4.15.0",
|
|
75
|
+
"sharp": "^0.33.0"
|
|
64
76
|
},
|
|
65
77
|
"devDependencies": {
|
|
66
78
|
"@commitlint/cli": "^17.6.6",
|
|
@@ -1,9 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|