Open rebajz opened 4 years ago
@rebajz You have to set gatherBrowserLogs: false if you want get the logs by yourself...
@miller45 i try use gatherBrowserLogs: false, but still have empty logs :-(
in my config i have: capabilities: { 'browserName': 'chrome', 'loggingPrefs': { 'driver': 'INFO', 'browser': 'INFO', 'performance': 'ALL' }, 'chromeOptions': { 'debuggerAddress': getDebugUrl(debugPort), 'perfLoggingPrefs': { 'enableNetwork': true, 'enablePage': true } } }
logs for perf i have. Logs for browser are empty.
I have this method:
public static async checkConsoleLog(callBack, ignoreErrorText?: string): Promise {
let browserLog = await browser.manage().logs().get('browser');
let i = 0;
let severeResults = [];
let severeSortedArray;
let severeFilteredArray;
let infoResults = [];
let infoSortedArray;
let infoFilteredArray;
if (browserLog.length < 1) {
await fail('Log is empty. Message from utils.checkConsoleLog()');
}
for (i; i <= browserLog.length - 1; i++) {
if (browserLog[i].level.name === 'SEVERE') {
if (browserLog[i].message.includes("WebSocket connection to 'ws://localhost:xxxx/' failed: Error during WebSocket handshake: Unexpected response code: 200") === false) {
if (browserLog[i].message.includes(ignoreErrorText) === false) {
severeResults.push(browserLog[i].message);
}
}
}
if (browserLog[i].level.name === 'INFO') {
if (browserLog[i].message.includes('ERROR:')) {
infoResults.push(browserLog[i].message);
}
}
}
severeSortedArray = severeResults.sort();
severeFilteredArray = severeSortedArray.filter((item, pos) => {
return severeSortedArray.indexOf(item) === pos;
});
infoSortedArray = infoResults.sort();
infoFilteredArray = infoSortedArray.filter((item, pos) => {
return infoSortedArray.indexOf(item) === pos;
});
await expect(severeFilteredArray.length).toBe(
0,
'In console log exist red warning! Here is: \n-- -- -- -- -- -- -- -- -- --\n' +
severeFilteredArray.toString().replace(/,/g, '\n\n') + '\n-- -- -- -- -- -- -- -- -- --\n'
);
await expect(infoFilteredArray.length).toBe(
0,
'In console log exist ERROR! Here is: \n-- -- -- -- -- -- -- -- -- --\n' +
infoFilteredArray.toString().replace(/,/g, '\n\n') + '\n-- -- -- -- -- -- -- -- -- --\n'
);
await callBack();
};
method checkConsoleLog() is used in each test by this way: afterAll(async (done) => { await utils.checkConsoleLog(done); });
When i have in config file (onPrepera()) added beautiful reporter, each test is failed ( Failed: Log is empty. Message from utils.checkConsoleLog() ) - because beautiful reporter steel console logs. When i do from code for beatufil reporter in config only comment, everything working correctly.
I try use in cofig option gatherBrowserLogs: true, but still is console log consumed by beatiful reporter.
Tested on last version 1.3.5