Evilweed / protractor-beautiful-reporter

An npm module which provides html reports of your Protractor tests with screenshots
MIT License
169 stars 40 forks source link

beautiful reporter steals console log #185

Open rebajz opened 4 years ago

rebajz commented 4 years ago

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

miller45 commented 4 years ago

@rebajz You have to set gatherBrowserLogs: false if you want get the logs by yourself...

rebajz commented 4 years ago

@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.