@tapjs/reporter
Version:
Pretty test output reporters for tap
27 lines • 1.1 kB
JavaScript
import { useState } from 'react';
import { listenCleanup } from '../listen-cleanup.js';
import { useCleanup } from './use-cleanup.js';
const ALLSUBS = new Map();
const FINSUBS = new Map();
export const useSubtests = (test, which = 'all') => {
const [tests, updateTests] = useState([]);
const cache = which === 'finished' ? FINSUBS : ALLSUBS;
const addSub = (t) => {
const tests = (cache.get(test) || []).concat(t);
cache.set(test, tests);
updateTests(tests);
};
const updateActive = () => updateTests([...test.activeSubtests]);
useCleanup(cleanup => {
if (which === 'active') {
cleanup.push(listenCleanup(test, 'subtestStart', updateActive));
cleanup.push(listenCleanup(test, 'subtestEnd', updateActive));
}
else {
cleanup.push(listenCleanup(test, 'complete', () => cache.delete(test)));
cleanup.push(listenCleanup(test, which === 'all' ? 'subtestStart' : 'subtestEnd', addSub));
}
}, [test, tests, which]);
return tests;
};
//# sourceMappingURL=use-subtests.js.map