blob: 549c04dd6f44213499bf02afd37da4889fcfd4c6 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests that console can filter messages by source.\n`);
await TestRunner.loadModule('console_test_runner');
await TestRunner.showPanel('console');
await TestRunner.addScriptTag('resources/log-source.js');
await TestRunner.evaluateInPagePromise(`
console.info("sample info");
console.log("sample log");
console.warn("sample warning");
console.debug("sample debug");
console.error("sample error");
console.info("abc info");
console.info("def info");
console.warn("abc warn");
console.warn("def warn");
`);
var consoleView = Console.ConsoleView.instance();
consoleView._setImmediatelyFilterMessagesForTest();
if (consoleView._isSidebarOpen)
consoleView._splitWidget._showHideSidebarButton.element.click();
async function dumpVisibleMessages() {
var menuText = Console.ConsoleView.instance()._filter._levelMenuButton._text;
TestRunner.addResult('Level menu: ' + menuText);
var messages = Console.ConsoleView.instance()._visibleViewMessages;
for (var i = 0; i < messages.length; i++) {
// Ordering is important here, as accessing the element the first time around
// triggers live location creation and updates which we need to await properly.
const element = messages[i].element();
await TestRunner.waitForPendingLiveLocationUpdates();
TestRunner.addResult('>' + element.deepTextContent());
}
}
var testSuite = [
function dumpLevels(next) {
TestRunner.addResult('All levels');
TestRunner.addObject(Console.ConsoleFilter.allLevelsFilterValue());
TestRunner.addResult('Default levels');
TestRunner.addObject(Console.ConsoleFilter.defaultLevelsFilterValue());
next();
},
function beforeFilter(next) {
TestRunner.addResult('beforeFilter');
dumpVisibleMessages().then(next);
},
function allLevels(next) {
Console.ConsoleViewFilter.levelFilterSetting().set(Console.ConsoleFilter.allLevelsFilterValue());
dumpVisibleMessages().then(next);
},
function defaultLevels(next) {
Console.ConsoleViewFilter.levelFilterSetting().set(Console.ConsoleFilter.defaultLevelsFilterValue());
dumpVisibleMessages().then(next);
},
function verbose(next) {
Console.ConsoleViewFilter.levelFilterSetting().set({ verbose: true });
dumpVisibleMessages().then(next);
},
function info(next) {
Console.ConsoleViewFilter.levelFilterSetting().set({ info: true });
dumpVisibleMessages().then(next);
},
function warningsAndErrors(next) {
Console.ConsoleViewFilter.levelFilterSetting().set({ warning: true, error: true });
dumpVisibleMessages().then(next);
},
function abcMessagePlain(next) {
Console.ConsoleViewFilter.levelFilterSetting().set({ verbose: true });
Console.ConsoleView.instance()._filter._textFilterUI.setValue('abc');
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function abcMessageRegex(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue('/ab[a-z]/');
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function abcMessageRegexWarning(next) {
Console.ConsoleViewFilter.levelFilterSetting().set({ warning: true });
dumpVisibleMessages().then(next);
}
];
ConsoleTestRunner.evaluateInConsole(
"'Should be always visible'",
TestRunner.runTestSuite.bind(TestRunner, testSuite)
);
})();