UNPKG

@applitools/eyes-playwright

Version:
100 lines (99 loc) 4.04 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NavigationUI = void 0; const statusUtils_js_1 = require("../management/statusUtils.js"); const log_1 = __importDefault(require("../core/log")); const logger = (0, log_1.default)(); class NavigationUI { constructor(filterManager) { this._filtersCreated = false; this.filterManager = filterManager; } createFilters(testResults) { if (this._filtersCreated) { return; } if (document.getElementById('eyes-filter') && document.getElementById('unresolved-filter')) { this._filtersCreated = true; return; } const allFilters = document.getElementsByClassName('subnav-item'); const navTextButtons = Array.from(allFilters).filter(filter => filter.tagName === 'A' && (filter.querySelector('.subnav-item-label') !== null || filter.querySelector('.d-inline') !== null)); const lastFilter = navTextButtons[navTextButtons.length - 1]; if (!lastFilter) { logger.warn('[Eyes Navigation] No subnav items found, cannot create filters'); return; } const counts = (0, statusUtils_js_1.countTestsByStatus)(testResults.eyesTestResult); const eyesFilter = lastFilter.cloneNode(true); eyesFilter.id = 'eyes-filter'; eyesFilter.firstChild.textContent = 'Eyes '; eyesFilter.lastChild.textContent = String(counts.total); eyesFilter.href = '#eyes=true'; this._placeElementAfter(eyesFilter, lastFilter); const unresolvedFilter = lastFilter.cloneNode(true); unresolvedFilter.id = 'unresolved-filter'; unresolvedFilter.firstChild.textContent = 'Unresolved '; unresolvedFilter.lastChild.textContent = String(counts.unresolved); unresolvedFilter.href = '#unresolved=true'; this._placeElementAfter(unresolvedFilter, eyesFilter); this._filtersCreated = true; } updateFilterCounts(testResults) { if (!this._filtersCreated) { return; } const counts = (0, statusUtils_js_1.countTestsByStatus)(testResults.eyesTestResult); const eyesFilter = document.getElementById('eyes-filter'); if (eyesFilter && eyesFilter.lastChild) { eyesFilter.lastChild.textContent = String(counts.total); } const unresolvedFilter = document.getElementById('unresolved-filter'); if (unresolvedFilter && unresolvedFilter.lastChild) { unresolvedFilter.lastChild.textContent = String(counts.unresolved); } } areFiltersCreated() { return this._filtersCreated; } resetFilters() { this._filtersCreated = false; } updateActiveStates() { if (!this._filtersCreated) { return; } const eyesFilter = document.getElementById('eyes-filter'); const unresolvedFilter = document.getElementById('unresolved-filter'); if (eyesFilter) { if (this.filterManager.isEyesFilterActive()) { eyesFilter.classList.add('selected'); } else { eyesFilter.classList.remove('selected'); } } if (unresolvedFilter) { if (this.filterManager.isUnresolvedFilterActive()) { unresolvedFilter.classList.add('selected'); } else { unresolvedFilter.classList.remove('selected'); } } } _placeElementAfter(newElement, referenceElement) { const nextSibling = referenceElement.nextSibling; if (nextSibling) { referenceElement.parentNode.insertBefore(newElement, nextSibling); } else { referenceElement.parentNode.appendChild(newElement); } } } exports.NavigationUI = NavigationUI;