feat(tests): Uses memory logs on failure and stops logging during conference.

This commit is contained in:
damencho
2025-10-21 18:53:08 -05:00
committed by Дамян Минков
parent e0cad48734
commit e82ef6de4b
4 changed files with 44 additions and 3 deletions

View File

@@ -1375,7 +1375,7 @@ export default {
} }
APP.store.dispatch(updateRemoteParticipantFeatures(user)); APP.store.dispatch(updateRemoteParticipantFeatures(user));
logger.log(`USER ${id} connected:`, user); logger.log(`USER ${id} connected`);
APP.UI.addUser(user); APP.UI.addUser(user);
}); });

View File

@@ -186,6 +186,9 @@ function _initLogging({ dispatch, getState }: IStore,
Logger.addGlobalTransport(debugLogCollector); Logger.addGlobalTransport(debugLogCollector);
JitsiMeetJS.addGlobalLogTransport(debugLogCollector); JitsiMeetJS.addGlobalLogTransport(debugLogCollector);
debugLogCollector.start(); debugLogCollector.start();
Logger.removeGlobalTransport(console);
JitsiMeetJS.removeGlobalLogTransport(console);
} }
} else if (logCollector && loggingConfig.disableLogCollector) { } else if (logCollector && loggingConfig.disableLogCollector) {
Logger.removeGlobalTransport(logCollector); Logger.removeGlobalTransport(logCollector);

View File

@@ -44,6 +44,25 @@ export function getLogs(driver: WebdriverIO.Browser) {
return fs.readFileSync(driver.logFile, 'utf8'); return fs.readFileSync(driver.logFile, 'utf8');
} }
/**
* Appends value to the log file.
* @param {WebdriverIO.Browser} driver - The driver which log file is requested.
* @param {string} value - The content to add to the file.
*/
export function saveLogs(driver: WebdriverIO.Browser, value: string) {
// @ts-ignore
if (!driver.logFile) {
return;
}
try {
// @ts-ignore
fs.appendFileSync(driver.logFile, value);
} catch (err) {
console.error(err);
}
}
/** /**
* Logs a message in the logfile. * Logs a message in the logfile.
* *

View File

@@ -9,7 +9,7 @@ import pretty from 'pretty';
import { getTestProperties, loadTestFiles } from './helpers/TestProperties'; import { getTestProperties, loadTestFiles } from './helpers/TestProperties';
import { config as testsConfig } from './helpers/TestsConfig'; import { config as testsConfig } from './helpers/TestsConfig';
import WebhookProxy from './helpers/WebhookProxy'; import WebhookProxy from './helpers/WebhookProxy';
import { getLogs, initLogger, logInfo } from './helpers/browserLogger'; import { getLogs, initLogger, logInfo, saveLogs } from './helpers/browserLogger';
import { IContext } from './helpers/types'; import { IContext } from './helpers/types';
import { generateRoomName } from './helpers/utils'; import { generateRoomName } from './helpers/utils';
@@ -162,6 +162,18 @@ export const config: WebdriverIO.MultiremoteConfig = {
webdriver: 'info' webdriver: 'info'
}, },
// Can be used to debug chromedriver, depends on chromedriver and wdio-chromedriver-service
// services: [
// [ 'chromedriver', {
// // Pass the --verbose flag to Chromedriver
// args: [ '--verbose' ],
// // Optionally, define a file to store the logs instead of stdout
// logFileName: 'wdio-chromedriver.log',
// // Optionally, define a directory for the log file
// outputDir: 'test-results',
// } ]
// ],
// Set directory to store all logs into // Set directory to store all logs into
outputDir: TEST_RESULTS_DIR, outputDir: TEST_RESULTS_DIR,
@@ -390,7 +402,14 @@ export const config: WebdriverIO.MultiremoteConfig = {
'text/plain')) 'text/plain'))
.catch(e => console.error('Failed grabbing debug logs', e))); .catch(e => console.error('Failed grabbing debug logs', e)));
allProcessing.push(
bInstance.execute(() => APP?.debugLogs?.logs?.join('\n')).then(res => {
if (res) {
saveLogs(bInstance, res);
}
AllureReporter.addAttachment(`console-logs-${instance}`, getLogs(bInstance) || '', 'text/plain'); AllureReporter.addAttachment(`console-logs-${instance}`, getLogs(bInstance) || '', 'text/plain');
}));
allProcessing.push(bInstance.getPageSource().then(source => { allProcessing.push(bInstance.getPageSource().then(source => {
AllureReporter.addAttachment(`html-source-${instance}`, pretty(source), 'text/plain'); AllureReporter.addAttachment(`html-source-${instance}`, pretty(source), 'text/plain');