Protractor, как инструмент для end-to-end тестирования Angular и AngularJS приложений, предоставляет возможности не только для выполнения тестов, но и для генерации отчётов о результатах тестирования. Встроенные отчёты помогают анализировать успешность и неудачи тестов, упрощают диагностику проблем и интегрируются с CI/CD пайплайнами.
В Protractor отчёты формируются с помощью фреймворка Jasmine (или Mocha) и их возможностей по созданию Reporter-ов. По умолчанию Jasmine выводит результаты тестов в консоль, но для удобства анализа можно подключать различные встроенные репортеры.
Пример подключения стандартного консольного репортера:
exports.config = {
framework: 'jasmine',
specs: ['specs/**/*.spec.js'],
onPrepare: function () {
const JasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(
new JasmineReporters.JUnitXmlReporter({
savePath: 'test-results',
consolidateAll: false
})
);
}
};
Ключевые моменты:
onPrepare выполняется перед запуском тестов, что
позволяет подключить репортеры.JUnitXmlReporter формирует XML-файлы, которые легко
интегрируются в CI/CD.savePath указывает путь для хранения отчётов.consolidateAll: false создаёт отдельный файл для
каждого теста, что удобно для анализа.Protractor сам по себе не имеет отдельного механизма отчётности — он использует возможности фреймворков Jasmine или Mocha. Встроенные функции включают:
jasmine.ConsoleReporter или встроенный вывод Mocha.onPrepare,
beforeLaunch, afterLaunch, позволяющие
подключать отчёты до и после выполнения тестов.Для более наглядной визуализации результатов можно использовать расширенные репортеры, поддерживающие HTML и графику:
const HtmlReporter = require('protractor-beautiful-reporter');
exports.config = {
framework: 'jasmine',
specs: ['specs/**/*.spec.js'],
onPrepare: function () {
jasmine.getEnv().addReporter(
new HtmlReporter({
baseDirectory: 'reports',
screenshotsSubfolder: 'images',
takeScreenShotsOnlyForFailedSpecs: true
}).getJasmine2Reporter()
);
}
};
Особенности:
baseDirectory — корневая папка для отчётов.screenshotsSubfolder — отдельная папка для
скриншотов.takeScreenShotsOnlyForFailedSpecs — делает скриншоты
только при падении теста, экономя место и ускоряя процесс.Protractor позволяет автоматически сохранять скриншоты при падении теста. Это особенно важно для end-to-end тестирования динамических элементов Angular-приложений:
afterEach(async function () {
const spec = jasmine.getEnv().currentSpec;
if (spec.status === 'failed') {
const png = await browser.takeScreenshot();
const fs = require('fs');
const path = `reports/screenshots/${spec.fullName}.png`;
fs.writeFileSync(path, png, { encoding: 'base64' });
}
});
Пояснения:
afterEach вызывается после каждого теста.browser.takeScreenshot() возвращает изображение в
формате base64.Встроенные отчёты Protractor и репортеры легко интегрируются с системами CI/CD. Основные шаги:
Пример для Jenkins:
jasmine.getEnv().addReporter(
new JasmineReporters.JUnitXmlReporter({
savePath: 'test-results',
consolidateAll: true
})
);
Jenkins автоматически читает XML-файлы и формирует графики успешности тестов.
Protractor позволяет настраивать уровень логирования и детализацию отчётов через фреймворки:
jasmine-spec-reporter — выводит подробную информацию по
каждому тесту с указанием ошибок и времени выполнения.verbose режим — отображает шаги каждого теста и
стек-трейсы ошибок.const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
jasmine.getEnv().clearReporters();
jasmine.getEnv().addReporter(new SpecReporter({
spec: {
displayStacktrace: true,
displayDuration: true
}
}));
JUnitXmlReporter для CI/CD
интеграции.SpecReporter
для детализированного отчёта о каждом тесте.Эта функциональность встроенных отчётов позволяет Protractor обеспечивать не только автоматизированное тестирование, но и прозрачный, наглядный анализ результатов, что критически важно при поддержке сложных веб-приложений.