UNPKG

creevey

Version:

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

66 lines 2.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreeveyReporter = void 0; const chalk_1 = __importDefault(require("chalk")); const loglevel_1 = __importDefault(require("loglevel")); const loglevel_plugin_prefix_1 = __importDefault(require("loglevel-plugin-prefix")); const types_js_1 = require("../../types.js"); const testLevels = { INFO: chalk_1.default.green('PASS '), WARN: chalk_1.default.yellow('START'), ERROR: chalk_1.default.red('FAIL '), }; let browserName = ''; let sessionId = ''; let processId = process.pid; class CreeveyReporter { logger = null; // TODO Output in better way, like vitest, maybe constructor(runner) { runner.on(types_js_1.TEST_EVENTS.TEST_BEGIN, (test) => { this.getLogger(test.creevey).warn(chalk_1.default.cyan(test.fullTitle())); }); runner.on(types_js_1.TEST_EVENTS.TEST_PASS, (test) => { this.getLogger(test.creevey).info(chalk_1.default.cyan(test.fullTitle()), test.duration ? chalk_1.default.gray(`(${test.duration} ms)`) : ''); }); runner.on(types_js_1.TEST_EVENTS.TEST_FAIL, (test, error) => { this.getLogger(test.creevey).error(chalk_1.default.cyan(test.fullTitle()), test.duration ? chalk_1.default.gray(`(${test.duration} ms)`) : '', '\n ', this.getErrors(error, (error, imageName) => `${chalk_1.default.bold(imageName ?? test.creevey.browserName)}:${error}`, (error) => error.stack ?? error.message).join('\n ')); }); } getLogger(options) { ({ sessionId, browserName, workerId: processId = process.pid } = options); if (this.logger) return this.logger; const testLogger = loglevel_1.default.getLogger(sessionId); this.logger = loglevel_plugin_prefix_1.default.apply(testLogger, { format(level) { return `[${browserName}:${chalk_1.default.gray(processId)}] ${testLevels[level]} => ${chalk_1.default.gray(sessionId)}`; }, }); return this.logger; } getErrors(error, imageErrorToString, errorToString) { const errors = []; if (!(error instanceof Error)) { errors.push(error); } else if (!(0, types_js_1.isImageError)(error)) { errors.push(errorToString(error)); } else if (typeof error.images == 'string') { errors.push(imageErrorToString(error.images)); } else { const imageErrors = error.images ?? {}; Object.keys(imageErrors).forEach((imageName) => { errors.push(imageErrorToString(imageErrors[imageName] ?? '', imageName)); }); } return errors; } } exports.CreeveyReporter = CreeveyReporter; //# sourceMappingURL=creevey.js.map