| // Copyright 2017 The Chromium Authors. All |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /** |
| * @fileoverview using private properties isn't a Closure violation in tests. |
| * @suppress {accessControls} |
| */ |
| |
| /** |
| * @return {!Audits.AuditsPanel} |
| */ |
| AuditsTestRunner._panel = function() { |
| return /** @type {!Object} **/ (UI.panels).audits; |
| }; |
| |
| /** |
| * @return {?Element} |
| */ |
| AuditsTestRunner.getContainerElement = function() { |
| return AuditsTestRunner._panel().contentElement; |
| }; |
| |
| /** |
| * @return {?Element} |
| */ |
| AuditsTestRunner.getResultsElement = function() { |
| return AuditsTestRunner._panel()._auditResultsElement; |
| }; |
| |
| /** |
| * @return {?Element} |
| */ |
| AuditsTestRunner.getDialogElement = function() { |
| return AuditsTestRunner._panel()._statusView._dialog.contentElement.shadowRoot.querySelector('.audits-view'); |
| }; |
| |
| /** |
| * @return {?Element} |
| */ |
| AuditsTestRunner.getRunButton = function() { |
| const dialog = AuditsTestRunner.getContainerElement(); |
| return dialog && dialog.querySelectorAll('button')[0]; |
| }; |
| |
| /** |
| * @return {?Element} |
| */ |
| AuditsTestRunner.getCancelButton = function() { |
| const dialog = AuditsTestRunner.getDialogElement(); |
| return dialog && dialog.querySelectorAll('button')[0]; |
| }; |
| |
| AuditsTestRunner.openStartAudit = function() { |
| AuditsTestRunner._panel()._renderStartView(); |
| }; |
| |
| /** |
| * @param {function(string)} onMessage |
| */ |
| AuditsTestRunner.addStatusListener = function(onMessage) { |
| TestRunner.addSniffer(Audits.StatusView.prototype, 'updateStatus', onMessage, true); |
| }; |
| |
| /** |
| * @return {!Promise<!Object>} |
| */ |
| AuditsTestRunner.waitForResults = function() { |
| return new Promise(resolve => { |
| TestRunner.addSniffer(Audits.AuditsPanel.prototype, '_buildReportUI', |
| (lhr, artifacts) => resolve({lhr, artifacts})); |
| }); |
| }; |
| |
| AuditsTestRunner.forcePageAuditabilityCheck = function() { |
| AuditsTestRunner._panel()._controller.recomputePageAuditability(); |
| }; |
| |
| /** |
| * @param {?Element} checkboxContainer |
| * @return {string} |
| */ |
| AuditsTestRunner._checkboxStateLabel = function(checkboxContainer) { |
| if (!checkboxContainer) { |
| return 'missing'; |
| } |
| |
| const label = checkboxContainer.textElement.textContent; |
| const checkedLabel = checkboxContainer.checkboxElement.checked ? 'x' : ' '; |
| return `[${checkedLabel}] ${label}`; |
| }; |
| |
| /** |
| * @param {?Element} button |
| * @return {string} |
| */ |
| AuditsTestRunner._buttonStateLabel = function(button) { |
| if (!button) { |
| return 'missing'; |
| } |
| |
| const enabledLabel = button.disabled ? 'disabled' : 'enabled'; |
| const hiddenLabel = window.getComputedStyle(button).getPropertyValue('visibility'); |
| return `${button.textContent}: ${enabledLabel} ${hiddenLabel}`; |
| }; |
| |
| AuditsTestRunner.dumpStartAuditState = function() { |
| TestRunner.addResult('\n========== Audits Start Audit State =========='); |
| |
| const containerElement = AuditsTestRunner.getContainerElement(); |
| const checkboxes = [...containerElement.querySelectorAll('.checkbox')]; |
| |
| checkboxes.forEach(element => { |
| TestRunner.addResult(AuditsTestRunner._checkboxStateLabel(element)); |
| }); |
| |
| const helpText = containerElement.querySelector('.audits-help-text'); |
| if (!helpText.classList.contains('hidden')) { |
| TestRunner.addResult(`Help text: ${helpText.textContent}`); |
| } |
| |
| TestRunner.addResult(AuditsTestRunner._buttonStateLabel(AuditsTestRunner.getRunButton())); |
| }; |