UNPKG

creevey

Version:

Cross-browser screenshot testing tool for Storybook with fancy UI Runner

89 lines 3.57 kB
"use strict"; 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