UNPKG

creevey

Version:

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

76 lines 3.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const cluster_1 = __importDefault(require("cluster")); const config_js_1 = require("./config.js"); const logger_js_1 = require("./logger.js"); const utils_js_1 = require("./utils.js"); const connection_js_1 = require("./storybook/connection.js"); // NOTE: Impure function, mutate config by adding gridUrl prop async function startWebdriverServer(config, options) { if (config.useDocker) { return (await import('./docker.js')).initDocker(config, options.browser, async () => (await import('./selenium/selenoid.js')).startSelenoidContainer(config, options.debug)); } else { return (await import('./selenium/selenoid.js')).startSelenoidStandalone(config, options.debug); } } async function default_1(options) { const config = await (0, config_js_1.readConfig)(options); const host = config.host; const { browser = config_js_1.defaultBrowser, tests, update, ui, port } = options; // NOTE: We don't need docker nor selenoid for webpack or update options if (!(config.gridUrl || Object.values(config.browsers).every(({ gridUrl }) => gridUrl)) && !tests && !update) { await startWebdriverServer(config, options); } if (cluster_1.default.isPrimary && process.env.CI !== 'true') { const url = await (0, connection_js_1.getStorybookUrl)(config); if (!url) { (0, logger_js_1.logger)().error(`Creevey can't access storybook. Set \`storybookUrl\` or \`resolveStorybookUrl\` in config`); (0, utils_js_1.shutdownWithError)(); return; } if (url && config.storybookAutorunCmd) { (0, logger_js_1.logger)().info(`Storybook should be started via \`${config.storybookAutorunCmd}\` and be accessible at ${url}`); (0, logger_js_1.logger)().info('Waiting Storybook...'); await (0, connection_js_1.tryAutorunStorybook)(url, config.storybookAutorunCmd); } else { (0, logger_js_1.logger)().info(`Storybook should be started and be accessible at ${url}`); (0, logger_js_1.logger)().info("Tip: you can start Storybook automatically by adding `storybookAutorunCmd` to Creevey's config"); (0, logger_js_1.logger)().info('Waiting Storybook...'); } const isConnected = await (0, connection_js_1.checkIsStorybookConnected)(url); if (isConnected) { (0, logger_js_1.logger)().info('Storybook connected!\n'); } else { (0, logger_js_1.logger)().error('Storybook is not responding. Please start Storybook and restart Creevey'); (0, utils_js_1.shutdownWithError)(); } } switch (true) { case Boolean(update): { (await import('./update.js')).update(config, typeof update == 'string' ? update : undefined); return; } case cluster_1.default.isPrimary: { (0, logger_js_1.logger)().info('Starting Master Process'); const resolveApi = (await import('./master/server.js')).start(config.reportDir, port, ui, host); return (await import('./master/index.js')).start(config, options, resolveApi); } default: { (0, logger_js_1.logger)().info(`Starting Worker for ${browser}`); return (await import('./worker/index.js')).start(config, { ...options, browser, }); } } } //# sourceMappingURL=index.js.map