blob: 00c573e358e00dfe8fdebeb7168e609801c066b7 [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(`
function log1()
{
console.log.apply(console, arguments);
}
for (var i = 0; i < 10; i++) {
if (i % 2 == 0)
log1(i + "topGroup"); // from console-filter-test.html
else
log2(i + "topGroup"); // from log-source.js
}
console.group("outerGroup");
for (var i = 10; i < 20; i++) {
if (i % 2 == 0)
log1(i + "outerGroup"); // from console-filter-test.html
else
log2(i + "outerGroup"); // from log-source.js
}
console.group("innerGroup");
for (var i = 20; i < 30; i++) {
if (i % 2 == 0)
log1(i + "innerGroup"); // from console-filter-test.html
else
log2(i + "innerGroup"); // from log-source.js
}
console.groupEnd();
console.groupEnd();
var logger1 = console.context("context1");
var logger2 = console.context("context2");
logger1.log("Hello 1");
logger2.log("Hello 2");
console.log("end");
`);
var consoleView = Console.ConsoleView.instance();
consoleView._setImmediatelyFilterMessagesForTest();
if (consoleView._isSidebarOpen)
consoleView._splitWidget._showHideSidebarButton.element.click();
// Add Violation-source message.
var violationMessage = new SDK.ConsoleMessage(
null, SDK.ConsoleMessage.MessageSource.Violation,
SDK.ConsoleMessage.MessageLevel.Verbose,
"Violation message text",
SDK.ConsoleMessage.MessageType.Log);
SDK.consoleModel.addMessage(violationMessage);
var messages = Console.ConsoleView.instance()._visibleViewMessages;
async function dumpVisibleMessages() {
var messages = Console.ConsoleView.instance()._visibleViewMessages;
for (var i = 0; i < messages.length; ++i) {
var viewMessage = messages[i];
var delimeter = viewMessage.consoleMessage().isGroupStartMessage() ? '>' : '';
var indent = '';
for (var j = 0; j < viewMessage.nestingLevel(); ++j) indent += ' ';
// 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 = viewMessage.element();
await TestRunner.waitForPendingLiveLocationUpdates();
TestRunner.addResult(indent + delimeter + element.deepTextContent());
}
}
var url1 = messages[0].consoleMessage().url;
var url2 = messages[1].consoleMessage().url;
TestRunner.runTestSuite([
function beforeFilter(next) {
TestRunner.addResult('beforeFilter');
dumpVisibleMessages().then(next);
},
function allLevelsFilter(next) {
Console.ConsoleViewFilter.levelFilterSetting().set(Console.ConsoleFilter.allLevelsFilterValue());
dumpVisibleMessages().then(next);
},
function addURL1Filter(next) {
TestRunner.addResult('Blocking messages from ' + url1);
Console.ConsoleView.instance()._filter.addMessageURLFilter(url1);
dumpVisibleMessages().then(next);
},
function addURL2Filter(next) {
TestRunner.addResult('Blocking messages from ' + url2);
Console.ConsoleView.instance()._filter.addMessageURLFilter(url2);
dumpVisibleMessages().then(next);
},
function removeAllFilters(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue('');
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkTextFilter(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue('outer');
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkMultiTextFilter(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue("Group /[2-3]top/");
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkTextUrlFilter(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue("url:log-source");
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkNegativeTextUrlFilter(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue("-url:log-source");
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkSourceFilter(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue("source:violation");
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkContextTextFilter(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue("context:context");
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkStartEndLineRegex(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue("/^Hello\\s\\d$/");
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkStartEndLineRegexForAnchor(next) {
Console.ConsoleView.instance()._filter._textFilterUI.setValue("/^log-source\\.js:\\d+$/");
Console.ConsoleView.instance()._filter._onFilterChanged();
dumpVisibleMessages().then(next);
},
function checkResetFilter(next) {
Console.ConsoleView.instance()._filter.reset();
dumpVisibleMessages().then(next);
}
]);
})();