@applitools/eyes-storybook
Version:
79 lines (74 loc) • 2.89 kB
JavaScript
;
const yargs = require('yargs');
const VERSION = require('../package.json').version;
const processResults = require('./processResults');
const yargsOptions = require('./yargsOptions');
const {makeTiming} = require('@applitools/monitoring-commons');
const handleJsonFile = require('./handleJsonFile');
const handleTapFile = require('./handleTapFile');
const handleXmlFile = require('./handleXmlFile');
const {getConfigAndLogger} = require('./getConfigAndLogger');
const {presult} = require('@applitools/functional-commons');
const chalk = require('chalk');
const utils = require('@applitools/utils');
const {EyesError} = require('@applitools/eyes');
const eyesStorybook = require('./eyesStorybook');
const {performance, timeItAsync} = makeTiming();
(async function () {
try {
const argv = yargs
.usage('Usage: $0 [options]')
.epilogue('Check our documentation here: https://applitools.com/resources/tutorial')
.showHelpOnFail(false, 'Specify --help for available options')
.version('version', 'Show the version number', `Version ${VERSION}`)
.alias('version', 'v')
.wrap(yargs.terminalWidth())
.options(yargsOptions).argv;
console.log(`Using @applitools/eyes-storybook version ${VERSION}.\n`);
const {config, logger} = await getConfigAndLogger(argv);
if (config.shard) {
console.log(`Running with shard: ${config.shard.current}/${config.shard.total}`);
// Log concurrency and shard configuration to console
if (config.testConcurrency && config.testConcurrency !== 5) {
console.log(`this shard has concurrency of ${config.testConcurrency} parallel tests`);
}
}
const [err, results] = await presult(
timeItAsync('eyesStorybook', () => eyesStorybook({config, logger, performance, timeItAsync})),
);
if (utils.general.getEnvValue('OFFLINE_LOCATION_PATH')) {
process.exit();
} else if (err) {
console.log(chalk.red(err.message));
process.exit(config.exitcode ? 1 : 0);
} else {
const totalTime = performance['eyesStorybook'];
const {exitCode, summary, outputStr} = processResults({
results,
totalTime,
testConcurrency: config.testConcurrency,
saveNewTests: config.saveNewTests,
saveDiffs: config.saveDiffs,
configExitCode: config.exitcode,
});
console.log(outputStr);
if (config.jsonFilePath) {
handleJsonFile(config.jsonFilePath, summary);
}
if (config.tapFilePath) {
handleTapFile(config.tapFilePath, summary);
}
if (config.xmlFilePath) {
handleXmlFile(config.xmlFilePath, summary, {totalTime});
}
process.exit(exitCode);
}
} catch (ex) {
if (utils.types.instanceOf(ex, EyesError)) {
console.log(ex.message);
} else {
console.log(ex);
}
process.exit(1);
}
})();