creevey
Version:
Cross-browser screenshot testing tool for Storybook with fancy UI Runner
76 lines • 3.7 kB
JavaScript
;
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