В Protractor тесты выполняются с использованием фреймворка Jasmine или Mocha, однако их отчетность по умолчанию ограничена стандартным выводом в консоль. Для полноценного анализа тестирования и интеграции с системами CI/CD необходима организация публикации результатов тестов в удобном формате.
1. Консольные отчеты По умолчанию Protractor выводит результаты тестов в консоль. Для Jasmine это стандартные строки с информацией о количестве успешных и проваленных тестов, а также о причинах падений. Такой подход удобен для быстрой отладки, но не подходит для автоматизированного контроля качества и хранения истории тестирования.
2. XML/JSON отчеты Для интеграции с системами непрерывной интеграции (Jenkins, GitLab CI/CD) используют форматы JUnit XML или JSON. Преимущества:
Подключение происходит через сторонние репортеры:
const { SpecReporter } = require('jasmine-spec-reporter');
const Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
exports.config = {
framework: 'jasmine',
onPrepare: () => {
jasmine.getEnv().addReporter(new SpecReporter({
spec: { displayStacktrace: true }
}));
jasmine.getEnv().addReporter(new Jasmine2HtmlReporter({
savePath: 'test-results/',
screenshotsFolder: 'images',
takeScreenshots: true,
takeScreenshotsOnlyOnFailures: true,
fileName: 'TestReport'
}));
}
};
Ключевые моменты:
takeScreenshotsOnlyOnFailures снижает объем хранимых
данных, сохраняя скриншоты только при ошибках.savePath определяет директорию для HTML-отчета.HTML-отчеты позволяют визуально отслеживать прогресс тестирования,
видеть структуру тестов, стек-трейсы ошибок и скриншоты. Обычно
используются пакеты: protractor-jasmine2-html-reporter,
protractor-html-reporter-2.
Пример настройки с protractor-html-reporter-2:
const HTMLReport = require('protractor-html-reporter-2');
afterLaunch: () => {
let testConfig = {
reportTitle: 'Автотесты Protractor',
outputPath: './test-results',
outputFilename: 'ProtractorReport',
screenshotPath: './test-results/images',
testBrowser: 'Chrome',
browserVersion: '108',
modifiedSuiteName: false,
screenshotsOnlyOnFailure: true
};
new HTMLReport().from('./test-results/xmlresults.xml', testConfig);
};
Особенности:
Для автоматизации публикации отчетов в CI/CD важно учитывать:
Post-build Actions → Archive the artifacts.Пример конфигурации в Jenkins Pipeline:
pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'protractor conf.js'
}
}
stage('Publish Report') {
steps {
publishHTML(target: [
allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'test-results',
reportFiles: 'TestReport.html',
reportName: 'Protractor Test Report'
])
}
}
}
}
Для более глубокого анализа важно комбинировать отчеты с логированием действий тестов и скриншотами:
console.log() можно заменить на специализированные логгеры
(winston, log4js) с уровнем важности
(info, warn, error).browser.takeScreenshot() и сохранять с привязкой к имени
теста и времени.Пример скриншота при падении теста:
afterEach(async function() {
if (this.currentTest.state === 'failed') {
const png = await browser.takeScreenshot();
const fs = require('fs');
const path = `./test-results/images/${this.currentTest.title}.png`;
fs.writeFileSync(path, png, { encoding: 'base64' });
}
});
Allure позволяет создавать красивые интерактивные отчеты с историей
тестов, категориями, степами и скриншотами. Для интеграции с Protractor
используется allure-commandline и
jasmine-allure-reporter:
const AllureReporter = require('jasmine-allure-reporter');
onPrepare: () => {
jasmine.getEnv().addReporter(new AllureReporter({
resultsDir: 'allure-results'
}));
};
Запуск отчета:
allure generate allure-results --clean -o allure-report
allure open allure-report
Особенности Allure:
Правильная организация публикации результатов позволяет не только отслеживать текущее состояние тестов, но и интегрировать автоматическое тестирование в процессы разработки и поддержки, делая его прозрачным и масштабируемым.