UNPKG

@augment-vir/test

Version:

A universal testing suite that works with Mocha style test runners _and_ Node.js's built-in test runner.

29 lines (28 loc) 1.1 kB
/** * Extracts the text content of the given element. * * @category Web : Elements * @category Package : @augment-vir/web * @package [`@augment-vir/web`](https://www.npmjs.com/package/@augment-vir/web) */ export function extractElementText(element) { return recursivelyExtractElementText(element).join('\n'); } function recursivelyExtractElementText(node) { if (node.nodeType === Node.TEXT_NODE) { const text = node.textContent?.trim(); return text ? [text] : []; } else if (node.nodeType === Node.ELEMENT_NODE) { const element = node; if (element.tagName.toLowerCase() === 'slot') { const slotElement = element; const assignedNodes = slotElement.assignedNodes(); return (assignedNodes.length ? assignedNodes : Array.from(element.childNodes)).flatMap((assignedNode) => recursivelyExtractElementText(assignedNode)); } else { return Array.from((element.shadowRoot || element).childNodes).flatMap((childNode) => recursivelyExtractElementText(childNode)); } } return []; }