UNPKG

@tapjs/reporter

Version:

Pretty test output reporters for tap

27 lines 1.1 kB
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