@applitools/eyes-storybook
Version:
76 lines (73 loc) • 2.94 kB
JavaScript
'use strict';
const yargs = require('yargs');
const {makeLogger} = require('@applitools/logger');
const {configParams: externalConfigParams} = require('./configParams');
const VERSION = require('../package.json').version;
const eyesStorybook = require('./eyesStorybook');
const processResults = require('./processResults');
const validateAndPopulateConfig = require('./validateAndPopulateConfig');
const yargsOptions = require('./yargsOptions');
const {generateConfig} = require('./generateConfig');
const defaultConfig = require('./defaultConfig');
const configDigest = require('./configDigest');
const {makeTiming} = require('@applitools/monitoring-commons');
const handleJsonFile = require('./handleJsonFile');
const handleTapFile = require('./handleTapFile');
const handleXmlFile = require('./handleXmlFile');
const {presult} = require('@applitools/functional-commons');
const chalk = require('chalk');
const utils = require('@applitools/utils');
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 = generateConfig({argv, defaultConfig, externalConfigParams});
const logger = makeLogger({level: config.showLogs ? 'info' : 'silent', label: 'eyes'});
await validateAndPopulateConfig({
config,
logger,
packagePath: process.cwd(),
});
logger.log(`Running with the following config:\n${configDigest(config)}`);
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,
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) {
console.log(ex);
process.exit(1);
}
})();