Я пытаюсь записать в консоль сетевой журнал после неудачного теста как часть моего комплекта транспортировщиков. Код отлично работает в блоке afterEach()
, но не может выполнить обещание внутри пользовательского репортера жасмина. Насколько я могу сказать, обещание никогда не выполняется, но нет известных / показанных ошибок.
Конфигурация транспортира (упрощенно):
exports.config = {
specs: ['./e2e/**/*.spec.ts'],
capabilities: {
browserName: 'chrome',
chromeOptions: {
perfLoggingPrefs: {
enableNetwork: true,
enablePage: false,
}
},
loggingPrefs: {
performance: 'ALL',
browser: 'ALL'
},
},
onPrepare() {
jasmine.getEnv().addReporter({
specDone: result => {
new ErrorReporter(browser).logNetworkError(result);
}
});
},
};
ErrorReporter:
class ErrorReporter {
constructor(browser) {
this.browser = browser;
}
logNetworkError(result) {
if(result.status === 'failed') {
// execution makes it in here
this.browser.manage().logs().get('performance').then(function(browserLogs) {
// execution DOES NOT make it here
browserLogs.forEach(function(log) {
const message = JSON.parse(log.message).message;
if(message.method === 'Network.responseReceived') {
const status = message.params.response.status;
const url = message.params.response.url;
if(status !== 200 && status !== 304) {
console.log(`----E2E NETWORK ERROR----`);
console.log(`STATUS: [${status}]`);
console.log(`URL: [${url}]`);
console.log(`RESPONSE: [${log.message}]`);
}
}
});
});
}
}
}
module.exports = ErrorReporter;
Код внутри метода logNetworkError()
прекрасно работает при выполнении в блоке afterEach()
, но никогда не записывает никаких журналов при выполнении в качестве пользовательского репортера. Я ожидал бы, что это будет работать как репортер жасмина также.
Если это невозможно выполнить как репортер жасмина, есть ли способ получить доступ к результатам выполненного теста в блоке afterEach()
? Я не хочу войти в систему при успешном выполнении теста.