@redocly/respect-core
Version:
API testing framework core
48 lines • 2.33 kB
JavaScript
import { outdent } from 'outdent';
import { yellow, inverse, bold, green, red, blue, gray } from 'colorette';
import * as path from 'node:path';
import { getExecutionTime } from '../../utils/time.js';
import { calculateTotals } from './calculate-tests-passed.js';
import { indent } from './helpers.js';
import { resolveRunningWorkflows } from '../flow-runner/index.js';
export function displaySummary({ startedAt, workflows, options, }) {
const { logger } = options;
const fileName = path.basename(options?.file || '');
const workflowArgv = resolveRunningWorkflows(options?.workflow) || [];
const skippedWorkflowArgv = resolveRunningWorkflows(options?.skip) || [];
let executedWorkflows = workflowArgv && workflowArgv.length
? workflows.filter(({ workflowId }) => workflowArgv.includes(workflowId))
: workflows;
executedWorkflows =
skippedWorkflowArgv && skippedWorkflowArgv.length
? executedWorkflows.filter(({ workflowId }) => !skippedWorkflowArgv.includes(workflowId))
: executedWorkflows;
const totals = calculateTotals(executedWorkflows);
const executionTime = getExecutionTime(startedAt);
logger.printNewLine();
logger.output(outdent `
${yellow(indent(`Summary for ${blue(fileName)}`, 2))}
${indent('', 2)}
${indent(formatWorkflowsTotals('Workflows:', totals.workflows), 2)}
${indent(formatTotals('Steps:', totals.steps), 2)}
${indent(formatTotals('Checks:', totals.checks), 2)}
${indent(inverse(`Time: ${executionTime}`), 2)}
`);
logger.printNewLine();
logger.printNewLine();
}
function formatWorkflowsTotals(header, totals) {
return (bold(header) +
(totals.passed ? ` ${green(totals.passed + ' passed')},` : '') +
(totals.failed ? ` ${red(totals.failed + ' failed')},` : '') +
` ${totals.total} total`);
}
function formatTotals(header, totals) {
return (bold(header) +
(totals.passed ? ` ${green(totals.passed + ' passed')},` : '') +
(totals.failed ? ` ${red(totals.failed + ' failed')},` : '') +
(totals.warnings ? ` ${yellow(totals.warnings + ' warnings')},` : '') +
(totals.skipped ? ` ${gray(totals.skipped + ' ignored')},` : '') +
` ${totals.total} total`);
}
//# sourceMappingURL=display-summary.js.map