Allure отчёты

Allure — это мощный инструмент для генерации визуально информативных отчетов о результатах тестирования. В контексте Protractor он позволяет детально отслеживать выполнение тестов, визуализировать шаги, скриншоты, логи и параметры. Использование Allure повышает прозрачность тестового процесса и облегчает анализ ошибок.


Установка и интеграция

Для работы с Allure в проекте на Protractor требуется несколько пакетов:

npm install --save-dev jasmine-allure-reporter allure-commandline
  • jasmine-allure-reporter — интеграция с Jasmine, используемой в Protractor по умолчанию.
  • allure-commandline — утилита для генерации HTML-отчетов из данных Allure.

После установки необходимо подключить репортер в конфигурации 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 позволяет фиксировать скриншоты только для упавших тестов, что экономит дисковое пространство.
  • Репортер интегрируется с Jasmine, автоматически добавляя шаги и результаты выполнения.

Использование шагов и вложенных описаний

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

Эффект в отчете:

  • Вкладка Features и Stories группирует тесты по функциональным блокам.
  • Severity позволяет быстро отфильтровать критичные тесты.

Генерация отчетов

После выполнения тестов данные сохраняются в allure-results. Для генерации HTML-отчета используется команда:

allure generate allure-results --clean -o allure-report
allure open allure-report
  • Параметр --clean удаляет старые результаты перед генерацией нового отчета.
  • allure open открывает интерактивный отчет в браузере.

Дополнительно: отчеты можно интегрировать в CI/CD, например Jenkins или GitHub Actions, с автоматическим архивированием и публикацией.


Полезные рекомендации

  1. Разделение шагов: каждая операция, даже простая, должна быть отдельным шагом для лучшей читаемости.
  2. Скриншоты только при ошибках: это уменьшает размер отчетов и делает их более информативными.
  3. Использование тегов и историй: облегчает фильтрацию тестов в больших проектах.
  4. Регулярная очистка директории результатов: предотвращает смешивание данных старых и новых прогонов.

Allure в сочетании с Protractor обеспечивает детализированную визуализацию тестов, делает отчеты структурированными и информативными, а также упрощает анализ проблем на этапе разработки и автоматизированного тестирования.