UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

43 lines 5.76 kB
"use strict"; // ------------------------------------------------------------- // WARNING: this file is used by both the client and the server. // Do not use any browser or node-specific API! // ------------------------------------------------------------- Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable no-undef */ function selectorTextFilter(node, index, originNode, textFilter) { function hasChildrenWithText(parentNode) { const cnCount = parentNode.childNodes.length; for (let i = 0; i < cnCount; i++) { if (selectorTextFilter(parentNode.childNodes[i], index, originNode, textFilter)) return true; } return false; } function checkNodeText(text) { if (textFilter instanceof RegExp) return textFilter.test(text); return textFilter === text.trim(); } // Element if (node.nodeType === 1) { // NOTE: In Firefox, <option> elements don't have `innerText`. // So, we fallback to `textContent` in that case (see GH-861). // SVG elements do not have `innerText` property as well return checkNodeText(node.innerText || node.textContent); } // Document if (node.nodeType === 9) { const head = node.querySelector('head'); const body = node.querySelector('body'); return hasChildrenWithText(head, textFilter) || hasChildrenWithText(body, textFilter); } // DocumentFragment if (node.nodeType === 11) return hasChildrenWithText(node, textFilter); return checkNodeText(node.textContent); } exports.default = selectorTextFilter; /* eslint-enable no-undef */ module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItdGV4dC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50LWZ1bmN0aW9ucy9zZWxlY3RvcnMvc2VsZWN0b3ItdGV4dC1maWx0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGdFQUFnRTtBQUNoRSxnRUFBZ0U7QUFDaEUsK0NBQStDO0FBQy9DLGdFQUFnRTs7QUFFaEUsNkJBQTZCO0FBQzdCLFNBQXdCLGtCQUFrQixDQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFFM0UsU0FBUyxtQkFBbUIsQ0FBRSxVQUFVO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRTdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUMzRSxPQUFPLElBQUksQ0FBQztTQUNuQjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxTQUFTLGFBQWEsQ0FBRSxJQUFJO1FBQ3hCLElBQUksVUFBVSxZQUFZLE1BQU07WUFDNUIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sVUFBVSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVTtJQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7UUFDckIsOERBQThEO1FBQzlELDhEQUE4RDtRQUM5RCx3REFBd0Q7UUFDeEQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDNUQ7SUFFRCxXQUFXO0lBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEMsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3pGO0lBRUQsbUJBQW1CO0lBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFO1FBQ3BCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWpELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBeENELHFDQXdDQztBQUNELDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IHRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlci5cbi8vIERvIG5vdCB1c2UgYW55IGJyb3dzZXIgb3Igbm9kZS1zcGVjaWZpYyBBUEkhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZWxlY3RvclRleHRGaWx0ZXIgKG5vZGUsIGluZGV4LCBvcmlnaW5Ob2RlLCB0ZXh0RmlsdGVyKSB7XG5cbiAgICBmdW5jdGlvbiBoYXNDaGlsZHJlbldpdGhUZXh0IChwYXJlbnROb2RlKSB7XG4gICAgICAgIGNvbnN0IGNuQ291bnQgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY25Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3JUZXh0RmlsdGVyKHBhcmVudE5vZGUuY2hpbGROb2Rlc1tpXSwgaW5kZXgsIG9yaWdpbk5vZGUsIHRleHRGaWx0ZXIpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrTm9kZVRleHQgKHRleHQpIHtcbiAgICAgICAgaWYgKHRleHRGaWx0ZXIgaW5zdGFuY2VvZiBSZWdFeHApXG4gICAgICAgICAgICByZXR1cm4gdGV4dEZpbHRlci50ZXN0KHRleHQpO1xuICAgICAgICByZXR1cm4gdGV4dEZpbHRlciA9PT0gdGV4dC50cmltKCk7XG4gICAgfVxuXG4gICAgLy8gRWxlbWVudFxuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgIC8vIE5PVEU6IEluIEZpcmVmb3gsIDxvcHRpb24+IGVsZW1lbnRzIGRvbid0IGhhdmUgYGlubmVyVGV4dGAuXG4gICAgICAgIC8vIFNvLCB3ZSBmYWxsYmFjayB0byBgdGV4dENvbnRlbnRgIGluIHRoYXQgY2FzZSAoc2VlIEdILTg2MSkuXG4gICAgICAgIC8vIFNWRyBlbGVtZW50cyBkbyBub3QgaGF2ZSBgaW5uZXJUZXh0YCBwcm9wZXJ0eSBhcyB3ZWxsXG4gICAgICAgIHJldHVybiBjaGVja05vZGVUZXh0KG5vZGUuaW5uZXJUZXh0IHx8IG5vZGUudGV4dENvbnRlbnQpO1xuICAgIH1cblxuICAgIC8vIERvY3VtZW50XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDkpIHtcbiAgICAgICAgY29uc3QgaGVhZCA9IG5vZGUucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICBjb25zdCBib2R5ID0gbm9kZS5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG5cbiAgICAgICAgcmV0dXJuIGhhc0NoaWxkcmVuV2l0aFRleHQoaGVhZCwgdGV4dEZpbHRlcikgfHwgaGFzQ2hpbGRyZW5XaXRoVGV4dChib2R5LCB0ZXh0RmlsdGVyKTtcbiAgICB9XG5cbiAgICAvLyBEb2N1bWVudEZyYWdtZW50XG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDExKVxuICAgICAgICByZXR1cm4gaGFzQ2hpbGRyZW5XaXRoVGV4dChub2RlLCB0ZXh0RmlsdGVyKTtcblxuICAgIHJldHVybiBjaGVja05vZGVUZXh0KG5vZGUudGV4dENvbnRlbnQpO1xufVxuLyogZXNsaW50LWVuYWJsZSBuby11bmRlZiAqL1xuIl19