Я хочу убедиться, что мое угловое приложение не регистрирует никаких ошибок в консоли при загрузке страницы, на которой находится приложение.
Для этого я использую транспортир, и до сих пор у меня есть следующее испытание:
spec.js:
describe('Protractor Demo App', function () {
it('should show all logs', function () {
browser.get('http://localhost:9050/#/10');
browser.sleep(20000)
browser.manage().logs().get('browser').then(function (browserLogs) {
console.log(browserLogs)
browserLogs.forEach(function (log) {
console.log("-------------------");
console.log(log.message);
if (log.level.value > 900) {
throw log.message;
}
});
});
});
});
conf.js:
exports.config = {
framework: 'jasmine2',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['spec.js'],
jasmineNodeOpts: {
// If true, display spec names.
isVerbose: true,
// If true, print colors to the terminal.
showColors: true,
// If true, include stack traces in failures.
includeStackTrace: true,
// Default time to wait in ms before a test fails.
defaultTimeoutInterval: 30000
},
capabilities: {
'browserName': 'chrome',
'loggingPrefs' : {"driver": "ALL", "server": "ALL", "browser": "ALL"}
},
};
когда я смотрю на вывод терминала, я получаю только первый элемент журналов. Однако, если я открываю консоль в хроме и сам просматриваю журналы, есть больше журналов ошибок и предупреждений, но они не являются частью вывода терминала. Как это возможно, что я пропустил?
Я столкнулся с той же проблемой, ошибки консоли, о которых сообщает транспортир, были не такими же, как ошибки, которые я видел при открытии страницы в браузере вручную. Вот как я решил свою проблему, я использовал метод navigate()
вместо get()
. Они должны быть одинаковыми, но, по крайней мере, в моем случае они создают разные результаты в консоли браузера.
describe('Protractor Demo App', function () {
it('should show all logs', function () {
browser.get('http://localhost:9050/#/10');
// Clear console log
browser.manage().logs().get('browser');
// Load the page again, now with the navigate() method
browser.navigate().to('http://localhost:9050/#/10');
browser.manage().logs().get('browser').then(function (browserLogs) {
console.log(browserLogs);
browserLogs.forEach(function (log) {
console.log("-------------------");
console.log(log.message);
if (log.level.value > 900) {
throw log.message;
}
});
});
});
});
if (log.level.value >= 800)
как большинство уровней журнала - 800 или 900console.log(JSON.stringify(log))
?