@progress/kendo-e2e 2.0.0 → 2.1.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.
@@ -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":";AAAA,sDAAsD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtD,uCAAyB;AACzB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,MAAM,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAChD,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC;AAClC,MAAM,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACpD,MAAM,OAAO,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACtD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAChD,MAAM,SAAS,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;AAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/B,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,MAAM,MAAM,GAAG,GAAG,CAAC;AAEnB,SAAsB,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE;;QACjH,MAAM,IAAI,GAAG,YAAY,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAE9D,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE;aACvC,QAAQ,EAAE;aACV,YAAY,CAAC,+BAA+B,CAAC;aAC7C,YAAY,CAAC,sBAAsB,CAAC;aACpC,YAAY,CAAC,yBAAyB,CAAC;aACvC,YAAY,CAAC,6BAA6B,CAAC;aAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;QAEpB,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;aACzC,QAAQ,EAAE;aACV,UAAU,CAAC,IAAI,CAAC,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE;aACzB,UAAU,CAAC,OAAO,CAAC;aACnB,gBAAgB,CAAC,aAAa,CAAC;aAC/B,iBAAiB,CAAC,cAAc,CAAC;aACjC,KAAK,EAAE,CAAC;QAEX,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEpC,4BAA4B;QAC5B,IAAI;YACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;gBAExB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;gBAEjE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE9C,+CAA+C;gBAC/C,2BAA2B;gBAC3B,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;gBAClF,8BAA8B;gBAC9B,sBAAsB;aACvB;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;SAC3C;gBAAS;YACR,+BAA+B;YAC/B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;SACrB;IACH,CAAC;CAAA;AA9CD,0BA8CC;AAED,SAAe,eAAe,CAAC,MAAM,EAAE,IAAI;;QACzC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;;;;;;;;;;;GAW3D,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG;YACjB,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK;YACxC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;SAC5C,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAE/C,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,MAAM,EAAE,QAAQ;;QAC/C,IAAI,OAAO,CAAC;QAEZ,IAAI;YACF,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,2DAA2D;YAC3D,OAAO,OAAO,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACV,gDAAgD;YAChD,OAAO,MAAM,CAAC;SACf;IACH,CAAC;CAAA;AAED,MAAM,SAAS,GAAG,CAAO,GAAG,EAAE,QAAQ,EAAE,EAAE;IACxC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC,CAAA,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAClE,MAAM,iBAAiB,GAAG;QACxB,SAAS;QACT,OAAO;QACP,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,SAAS;QACzB,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,SAAS;KACrB,CAAC;IAEF,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,SAAe,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE;;QAEvF,kCAAkC;QAClC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,qCAAqC;QAErC,sCAAsC;QACtC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1D,gGAAgG;QAEhG,yCAAyC;QACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5C,mGAAmG;QAEnG,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,UAAU,IAAI,IAAI,MAAM,CAAC;QAC/C,MAAM,QAAQ,GAAG,KAAK,UAAU,IAAI,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC5B,0BAA0B;YAC1B,MAAM,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;SACb;QAED,qCAAqC;QACrC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1F,wCAAwC;QAExC,sDAAsD;QACtD,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,UAAU,EAAE;gBACd,wCAAwC;gBACxC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACpD,2CAA2C;aAC5C;YAED,MAAM,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SAChC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CAAA"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -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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"}
package/package.json CHANGED
@@ -1,19 +1,23 @@
1
1
  {
2
2
  "name": "@progress/kendo-e2e",
3
- "version": "2.0.0",
3
+ "version": "2.1.1",
4
4
  "description": "Kendo UI end-to-end test utilities.",
5
5
  "main": "dist/index.js",
6
+ "bin": {
7
+ "snapshot": "./dist/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": "npm run lint && npx tsc",
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
  },
@@ -53,6 +61,9 @@
53
61
  "dependencies": {
54
62
  "@axe-core/webdriverjs": "4.8.1",
55
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.15.0"
74
+ "selenium-webdriver": "4.15.0",
75
+ "sharp": "^0.33.0"
64
76
  },
65
77
  "devDependencies": {
66
78
  "@commitlint/cli": "^17.6.6",