@tapjs/reporter
Version:
Pretty test output reporters for tap
50 lines • 2.37 kB
JavaScript
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