creevey
Version:
Cross-browser screenshot testing tool for Storybook with fancy UI Runner
89 lines • 3.57 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultConfig = exports.defaultBrowser = void 0;
exports.readConfig = readConfig;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const url_1 = require("url");
const browser_js_1 = require("./storybook/providers/browser.js");
const types_js_1 = require("../types.js");
const utils_js_1 = require("./utils.js");
exports.defaultBrowser = 'chrome';
exports.defaultConfig = {
disableTelemetry: false,
useWorkerQueue: false,
useDocker: true,
dockerImage: 'aerokube/selenoid:latest-release',
dockerImagePlatform: '',
pullImages: true,
failFast: false,
storybookUrl: 'http://localhost:6006',
screenDir: path_1.default.resolve('images'),
reportDir: path_1.default.resolve('report'),
maxRetries: 0,
diffOptions: { threshold: 0, includeAA: true },
browsers: { [exports.defaultBrowser]: true },
hooks: {},
babelOptions: (_) => _,
testsRegex: /\.creevey\.(t|j)s$/,
};
function normalizeBrowserConfig(name, config) {
if (typeof config == 'boolean')
return { browserName: name };
if (typeof config == 'string')
return { browserName: config };
return config;
}
function resolveConfigPath(configPath) {
const configDir = path_1.default.resolve('.creevey');
if ((0, types_js_1.isDefined)(configPath)) {
configPath = path_1.default.resolve(configPath);
}
else if (fs_1.default.existsSync(configDir)) {
for (const ext of utils_js_1.configExt) {
configPath = path_1.default.resolve(configDir, `config${ext}`);
if (fs_1.default.existsSync(configPath))
break;
}
}
else {
for (const ext of utils_js_1.configExt) {
configPath = path_1.default.resolve(`creevey.config${ext}`);
if (fs_1.default.existsSync(configPath))
break;
}
}
return configPath;
}
async function readConfig(options) {
const configPath = resolveConfigPath(options.config);
const userConfig = { ...exports.defaultConfig };
if ((0, types_js_1.isDefined)(configPath)) {
const configModule = await (0, utils_js_1.loadThroughTSX)((load) => {
const configFileUrl = (0, url_1.pathToFileURL)(configPath).toString();
return load(configFileUrl);
});
const configData = 'default' in configModule ? configModule.default : configModule;
Object.assign(userConfig, configData);
}
if (!userConfig.storiesProvider)
userConfig.storiesProvider = browser_js_1.loadStories;
if (options.failFast != undefined)
userConfig.failFast = Boolean(options.failFast);
if (options.reportDir)
userConfig.reportDir = path_1.default.resolve(options.reportDir);
if (options.screenDir)
userConfig.screenDir = path_1.default.resolve(options.screenDir);
if (options.storybookUrl)
userConfig.storybookUrl = options.storybookUrl;
if (options.storybookAutorunCmd)
userConfig.storybookAutorunCmd = options.storybookAutorunCmd;
// NOTE: Hack to pass typescript checking
const config = userConfig;
Object.entries(config.browsers).forEach(([browser, browserConfig]) => (config.browsers[browser] = normalizeBrowserConfig(browser, browserConfig)));
return config;
}
//# sourceMappingURL=config.js.map