UNPKG

aye-spy

Version:
95 lines (72 loc) 3.05 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _seleniumWebdriver = require('selenium-webdriver'); var _seleniumWebdriver2 = _interopRequireDefault(_seleniumWebdriver); var _scenarioValidator = require('./scenarioValidator'); var _scenarioValidator2 = _interopRequireDefault(_scenarioValidator); var _progressBar = require('./progressBar'); var _progressBar2 = _interopRequireDefault(_progressBar); var _executeScript = require('./executeScript'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const onComplete = () => _progressBar2.default.tick(); const onError = () => _progressBar2.default.stop(); const generateSnapShotPromises = (SnapShotter, config) => { return config.scenarios.reduce((accum, scenario) => { (0, _scenarioValidator2.default)(scenario); scenario.viewports.forEach(viewport => { accum.push(new SnapShotter({ label: scenario.label, latest: config.latest, browser: config.browser, chromeCustomCapabilites: scenario.chromeCustomCapabilites, mobileDeviceName: scenario.mobileDeviceName, gridUrl: config.gridUrl, height: viewport.height, width: viewport.width, viewportLabel: viewport.label, cookies: scenario.cookies, cropToSelector: scenario.cropToSelector, removeElements: scenario.removeElements, hideElements: scenario.hideElements, waitForElement: scenario.waitForElement, waitForIFrameElement: scenario.waitForIFrameElement, url: scenario.url, onBeforeScript: scenario.onBeforeScript, onReadyScript: scenario.onReadyScript, wait: scenario.wait }, { webdriver: _seleniumWebdriver2.default, By: _seleniumWebdriver.By, until: _seleniumWebdriver.until }, onComplete, onError)); }); return accum; }, []); }; function executeOnBeforeSuiteScript(config) { return (0, _executeScript.executeScript)(config.onBeforeSuiteScript, config).catch(error => { throw new Error(`❌ Unable to run onBeforeSuite script:\n due to: ${error}`); }); } async function getScreenshots(SnapShotter, config) { return new Promise(async (resolve, reject) => { if (config.onBeforeSuiteScript) { try { await executeOnBeforeSuiteScript(config); } catch (error) { onError(); return reject(error); } } const promises = generateSnapShotPromises(SnapShotter, config); _progressBar2.default.setLength(promises.length); const requestLimit = config.limitAmountOfParallelScenarios || promises.length; const iterationsToPerform = Math.ceil(promises.length / requestLimit); _progressBar2.default.start(); for (let i = 0; i < iterationsToPerform; i++) { const splice = promises.splice(0, requestLimit); const executingPromises = splice.map(screenshot => screenshot.takeSnap()); await Promise.all(executingPromises); } resolve(); }); } exports.default = getScreenshots;