Allure — это мощный инструмент для генерации визуально информативных отчетов о результатах тестирования. В контексте Protractor он позволяет детально отслеживать выполнение тестов, визуализировать шаги, скриншоты, логи и параметры. Использование Allure повышает прозрачность тестового процесса и облегчает анализ ошибок.
Для работы с Allure в проекте на Protractor требуется несколько пакетов:
npm install --save-dev jasmine-allure-reporter allure-commandline
После установки необходимо подключить репортер в конфигурации
Protractor. В файле protractor.conf.js добавляется
блок:
const AllureReporter = require('jasmine-allure-reporter');
exports.config = {
framework: 'jasmine',
specs: ['specs/**/*.spec.js'],
onPrepare: () => {
jasmine.getEnv().addReporter(new AllureReporter({
resultsDir: 'allure-results'
}));
// Автоматическое создание скриншотов при падении теста
const fs = require('fs');
const path = require('path');
const { browser } = require('protractor');
jasmine.getEnv().addReporter({
specDone: async (result) => {
if (result.status === 'failed') {
const png = await browser.takeScreenshot();
const stream = fs.createWriteStream(path.join('allure-results', `${result.fullName}.png`));
stream.write(Buffer.from(png, 'base64'));
stream.end();
}
}
});
}
};
Ключевые моменты:
resultsDir — директория, где сохраняются данные для
отчета.specDone позволяет фиксировать скриншоты только
для упавших тестов, что экономит дисковое пространство.Allure позволяет документировать каждый шаг теста с помощью метода
allure.createStep. Пример использования:
describe('Тестирование формы логина', () => {
it('Должен успешно авторизоваться', async () => {
allure.createStep('Открытие страницы логина', async () => {
await browser.get('https://example.com/login');
})();
allure.createStep('Ввод учетных данных', async () => {
await element(by.id('username')).sendKeys('user1');
await element(by.id('password')).sendKeys('password');
})();
allure.createStep('Нажатие кнопки входа', async () => {
await element(by.id('loginButton')).click();
})();
});
});
Особенности:
async/await.Allure поддерживает прикрепление файлов к шагам, что особенно важно для анализа ошибок. Пример прикрепления скриншота:
const fs = require('fs');
const path = require('path');
const attachScreenshot = async (name) => {
const png = await browser.takeScreenshot();
allure.createAttachment(name, Buffer.from(png, 'base64'), 'image/png')();
};
// Внутри теста
await attachScreenshot('Скриншот после логина');
Дополнительно можно прикреплять текстовые файлы или JSON-данные:
allure.createAttachment('Логи запроса', JSON.stringify(apiResponse), 'application/json')();
Преимущества:
Allure позволяет классифицировать тесты для удобной фильтрации и группировки. Используются методы:
allure.feature('Авторизация');
allure.story('Успешный вход');
allure.severity('critical'); // critical, normal, minor, blocker
Эффект в отчете:
После выполнения тестов данные сохраняются в
allure-results. Для генерации HTML-отчета используется
команда:
allure generate allure-results --clean -o allure-report
allure open allure-report
--clean удаляет старые результаты перед
генерацией нового отчета.allure open открывает интерактивный отчет в
браузере.Дополнительно: отчеты можно интегрировать в CI/CD, например Jenkins или GitHub Actions, с автоматическим архивированием и публикацией.
Allure в сочетании с Protractor обеспечивает детализированную визуализацию тестов, делает отчеты структурированными и информативными, а также упрощает анализ проблем на этапе разработки и автоматизированного тестирования.