Spaces:
Paused
Paused
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.toBeVisible = toBeVisible; | |
| var _utils = require("./utils"); | |
| function isStyleVisible(element) { | |
| const { | |
| getComputedStyle | |
| } = element.ownerDocument.defaultView; | |
| const { | |
| display, | |
| visibility, | |
| opacity | |
| } = getComputedStyle(element); | |
| return display !== 'none' && visibility !== 'hidden' && visibility !== 'collapse' && opacity !== '0' && opacity !== 0; | |
| } | |
| function isAttributeVisible(element, previousElement) { | |
| let detailsVisibility; | |
| if (previousElement) { | |
| detailsVisibility = element.nodeName === 'DETAILS' && previousElement.nodeName !== 'SUMMARY' ? element.hasAttribute('open') : true; | |
| } else { | |
| detailsVisibility = element.nodeName === 'DETAILS' ? element.hasAttribute('open') : true; | |
| } | |
| return !element.hasAttribute('hidden') && detailsVisibility; | |
| } | |
| function isElementVisible(element, previousElement) { | |
| return isStyleVisible(element) && isAttributeVisible(element, previousElement) && (!element.parentElement || isElementVisible(element.parentElement, element)); | |
| } | |
| function toBeVisible(element) { | |
| (0, _utils.checkHtmlElement)(element, toBeVisible, this); | |
| const isInDocument = element.ownerDocument === element.getRootNode({ | |
| composed: true | |
| }); | |
| const isVisible = isInDocument && isElementVisible(element); | |
| return { | |
| pass: isVisible, | |
| message: () => { | |
| const is = isVisible ? 'is' : 'is not'; | |
| return [this.utils.matcherHint(`${this.isNot ? '.not' : ''}.toBeVisible`, 'element', ''), '', `Received element ${is} visible${isInDocument ? '' : ' (element is not in the document)'}:`, ` ${this.utils.printReceived(element.cloneNode(false))}`].join('\n'); | |
| } | |
| }; | |
| } |