UNPKG

@tapjs/reporter

Version:
50 lines 2.37 kB
import { Box, Text } from 'ink'; import React from 'react'; import { Result } from 'tap-parser'; import { ResultTag } from './result-tag.js'; const isResult = (r) => !!r && typeof r === 'object' && typeof r.ok === 'boolean'; export const TestResultsList = ({ test, details = false, }) => { const { results, options, bailedOut } = test; const { exitCode, signal } = options; if (!results) return React.createElement(React.Fragment, null); const lists = test.lists; const resultsList = []; if (results.plan.skipAll && !bailedOut && !signal && !exitCode) { resultsList.push(React.createElement(Box, { gap: 1, paddingLeft: 1 }, React.createElement(Text, { color: "cyan", bold: true }, "~"), React.createElement(Text, null, results.plan.skipReason || 'no tests found'))); } resultsList.push(...lists.pass, ...lists.skip, ...lists.todo, ...lists.fail); if (typeof test.options.signal === 'string') { resultsList.push(React.createElement(Box, { gap: 1, paddingLeft: 1 }, React.createElement(Text, { color: "red", bold: true }, "\u2716"), React.createElement(Text, null, test.options.signal))); } if (bailedOut && !details) { resultsList.push(React.createElement(Box, { gap: 1, paddingLeft: 1 }, React.createElement(Text, { color: "red", bold: true }, "Bailout!"), React.createElement(Text, null, bailedOut))); } const resultsListGrouped = resultsList.reduce((s, f) => { const el = isResult(f) ? React.createElement(ResultTag, { result: f, details: details, test: test }) : f; if (!details || !(f instanceof Result) || !f.diag) { let l = s[s.length - 1]; if (!Array.isArray(l)) { l = []; s.push(l); } l.push(el); } else { s.push(el); } return s; }, []); return (React.createElement(Box, { gap: 1, flexDirection: "column" }, resultsListGrouped.map((f, key) => (React.createElement(Box, { flexDirection: "column", key: key }, Array.isArray(f) ? f.map((f, key) => (React.createElement(Box, { flexDirection: "column", key: key }, f))) : React.createElement(Box, { key: key }, f)))))); }; //# sourceMappingURL=test-results-list.js.map