aye-spy
Version:
A visual regression tool
118 lines (85 loc) • 3.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchRemoteComparisonImages = exports.clearDirectories = exports.createDirectories = exports.createComparisons = exports.createBucket = undefined;
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _looksSame = require('looks-same');
var _looksSame2 = _interopRequireDefault(_looksSame);
var _util = require('util');
var _remoteActions = require('./remoteActions');
var _createDiffs = require('./createDiffs');
var _createDiffs2 = _interopRequireDefault(_createDiffs);
var _comparisonDataConstructor = require('./comparisonDataConstructor');
var _comparisonDataConstructor2 = _interopRequireDefault(_comparisonDataConstructor);
var _comparer = require('./comparer');
var _comparer2 = _interopRequireDefault(_comparer);
var _logger = require('./logger');
var _logger2 = _interopRequireDefault(_logger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const createBucket = async config => {
if (config.remote) {
await (0, _remoteActions.createRemote)(config).then(async () => {
_logger2.default.info('comparison-actions', `${config.remoteBucketName} bucket has been created`);
await (0, _remoteActions.updateRemotePolicy)(config);
}).catch(() => {
_logger2.default.info('comparison-actions', 'Bucket already created');
});
}
};
const createComparisons = async (fs, config, reporter) => {
const comparisonData = await (0, _comparisonDataConstructor2.default)(fs, config);
const looksSameAsync = (0, _util.promisify)(_looksSame2.default);
for (let i = 0; i < comparisonData.length; i++) {
const scenario = comparisonData[i];
const equal = await (0, _comparer2.default)(scenario, looksSameAsync);
if (equal) {
reporter.pass(scenario.label);
} else {
reporter.fail(scenario.label);
await (0, _createDiffs2.default)(scenario, _looksSame.createDiff);
}
}
if (config.remote) await (0, _remoteActions.uploadRemoteKeys)('generatedDiffs', config).then(() => _logger2.default.info('upload-remote', 'Files uploaded successfully ✅')).catch(error => _logger2.default.error('upload-remote', `Error uploading files ❌ ${error}`));
reporter.generateReport();
};
const createDirectories = (fs, config) => new Promise(resolve => {
const directories = [];
directories.push(config.latest, config.generatedDiffs, config.baseline);
directories.forEach(dir => {
const directoryExists = fs.existsSync(dir) ? true : false;
if (!directoryExists) fs.mkdirSync(dir);
});
resolve();
});
const clearDirectories = (fs, config) => new Promise(resolve => {
const diffsPath = _path2.default.resolve(config.generatedDiffs);
const reportPath = _path2.default.resolve(config.report);
[diffsPath, reportPath].forEach(dir => {
const directoryExists = fs.existsSync(dir) ? true : false;
if (directoryExists) {
fs.readdirSync(dir).forEach(file => {
fs.unlinkSync(`${dir}/${file}`);
});
}
});
resolve();
});
const fetchRemoteComparisonImages = async config => {
if (config.remote) {
await (0, _remoteActions.deleteRemoteKeys)('generatedDiffs', config);
_logger2.default.info('comparisonActions', 'Getting baseline images from S3...');
const promises = [];
config.scenarios.map(scenario => scenario.viewports.map(viewport => {
const fetchRemotePromise = (0, _remoteActions.fetchRemoteKeys)(config, 'baseline', `${scenario.label}-${viewport.label}.png`);
promises.push(fetchRemotePromise);
}));
return Promise.all(promises);
}
};
exports.createBucket = createBucket;
exports.createComparisons = createComparisons;
exports.createDirectories = createDirectories;
exports.clearDirectories = clearDirectories;
exports.fetchRemoteComparisonImages = fetchRemoteComparisonImages;