Репортер Allure
Плагін репортера WebdriverIO для створення Allure Test Reports.

Встановлення
Найпростіший спосіб - включити @wdio/allure-reporter як devDependency у вашому package.json.
{
  "devDependencies": {
    "@wdio/allure-reporter": "^7.0.0"
  }
}
Ви можете просто зробити це за допомогою:
npm install @wdio/allure-reporter --save-dev
Конфігурація
Налаштуйте директорію виводу у вашому файлі wdio.conf.js:
export const config = {
    // ...
    reporters: [['allure', {
        outputDir: 'allure-results',
        disableWebdriverStepsReporting: true,
        disableWebdriverScreenshotsReporting: true,
    }]],
    // ...
}
outputDirза замовчуванням -./allure-results. Після завершення тестового запуску ви побачите, що ця директорія заповнена.xmlфайлами для кожної специфікації, а також кількома файлами.txtі.pngта іншими вкладеннями.disableWebdriverStepsReporting- опціональний параметр (за замовчуваннямfalse), щоб логувати лише користувацькі кроки в репортер.issueLinkTemplate- опціональний параметр для вказівки шаблону посилання на проблему. Репортер замінить плейсхолдер{}значенням, вказаним у параметрі викликуaddIssue(value). Така ж логіка застосовується при використанні Cucumber і тегуissueна будь-якому рівні, він буде перетворений на посилання у звіті. Приклад значення параметра:https://example.org/issue/{}tmsLinkTemplate- опціональний параметр для вказівки шаблону посилання на TMS (Система управління тестами). Репортер замінить плейсхолдер{}значенням, вказаним у параметрі викликуaddTestId(value). Така ж логіка застосовується при використанні Cucumber і тегуtestIdна будь-якому рівні, він буде перетворений на посилання у звіті. Приклад значення параметра:https://example.org/tms/{}disableWebdriverScreenshotsReporting- опціональний параметр (за замовчуваннямfalse), щоб не додавати скріншоти до репортера.useCucumberStepReporter- опціональний параметр (за замовчуваннямfalse), встановіть його на true, щоб змінити ієрархію звіту при використанні cucumber. Спробуйте самі і подивіться, як це виглядає.disableMochaHooks- опціональний параметр (за замовчуваннямfalse), встановіть його на true, щоб не отримувати хукиbefore/afterstacktrace/screenshot/result в Allure Reporter.addConsoleLogs- опціональний параметр (за замовчуваннямfalse), встановіть на true, щоб додавати консольні логи з кроків до репортера.reportedEnvironmentVars(тип:Record<string, string>) - Встановіть цю опцію для відображення змінних середовища у звіті. Зверніть увагу, що встановлення цього параметра не змінює самі змінні середовища.
Підтримуваний API Allure
addLabel(name, value)- призначити користувацьку мітку для тестуaddFeature(featureName)– призначити фічу для тестуaddStory(storyName)– призначити користувацьку історію для тестуaddSeverity(value)– призначити серйозність для тесту, приймає одне з цих значень: blocker, critical, normal, minor, trivialaddTag(value)– призначити мітку тегу для тестуaddEpic(value)– призначити мітку епіку для тестуaddOwner(value)– призначити мітку власника для тестуaddSuite(value)– призначити мітку набору для тестуaddSubSuite(value)– призначити мітку піднабору для тестуaddParentSuite(value)– призначити мітку батьківського набору для тестуaddIssue(value)– призначити ідентифікатор проблеми для тестуaddAllureId(value)– призначити мітку allure test ops id для тестуaddTestId(value)– призначити TMS test id для тесту- ~~
addEnvironment(name, value)~~ – застаріла функція, яка більше не працює. ВикористовуйтеreportedEnvironmentVarsзамість цього addAttachment(name, content, [type])– зберегти вкладення до тесту.name(String) - назва вкладення.content– зміст вкладення.type(String, опціонально) – MIME-тип вкладення, за замовчуваннямtext/plain
addArgument(name, value)- додати додатковий аргумент до тестуaddDescription(description, [type])– додати опис до тесту.description(String) - опис тесту.type(String, опціонально) – тип опису, за замовчуваннямtext. Значення ['text', 'html','markdown']
addStep(title, [{content, name = 'attachment'}], [status])- додати крок до тесту.title(String) - назва кроку.content(String, опціонально) - вкладення крокуname(String, опціонально) - назва вкладення кроку, за замовчуваннямattachment.status(String, опціонально) - статус кроку, за замовчуваннямpassed. Має бути "failed", "passed" або "broken"
startStep(title)- почати крокtitle(String) - назва кроку.
endStep(status)- завершити крокstatus(String, опціонально) - статус кроку, за замовчуваннямpassed. Має бути "failed", "passed" або "broken"
step(name, body)- починає крок з функцією вмісту всередині. Дозволяє створювати кроки з нескінченною ієрархієюbody(Function) - асинхронна функція тіла кроку
Використання
Доступ до Allure Api можна отримати за допомогою:
CJS
const allureReporter = require('@wdio/allure-reporter').default
ESM
import allureReporter from '@wdio/allure-reporter'
Приклад Mocha
describe('Suite', () => {
    it('Case', () => {
        allureReporter.addFeature('Feature')
    })
})
Cucumber
Базовий приклад Cucumber:
Given('I include feature and story name', () => {
    allureReporter.addFeature('Feature_name');
    allureReporter.addStory('Story_name');
})
Користувацькі кроки
Метод step спрощує роботу з кроками, оскільки кожен крок представлений як асинхронна функція з будь-яким вмістом всередині.
Перший аргумент функції - поточний крок, що має більшість методів API allure (таких як label, epic, attach тощо):
allureReporter.step('my step name', async (s1) => {
    s1.label('foo', 'bar')
    await s1.step('my child step name', async (s2) => {
        // you can add any combination of steps in the body function
    })
})
Теги Cucumber
Теги Cucumber з спеціальними назвами (issue та testId) перетворюються на посилання (відповідні шаблони посилань повинні бути налаштовані заздалегідь):
@issue=BUG-1
@testId=TST-2
Feature: This is a feature with global tags that will be converted to Allure links
  @issue=BUG-3
  @testId=TST-4
  Scenario: This is a scenario with tags that will be converted to Allure links
    Given I do something
Теги Cucumber з спеціальними назвами (feature) відображаються на мітки Allure:
Feature: Test user role
  @feature=login
  Scenario: Login
    Given I test login
Відображення звіту
Результати можуть бути використані будь-яким з інструментів звітності, що пропонуються Allure. Наприклад:
Командний рядок
Встановіть інструмент командного рядка Allure і обробіть директорію результатів:
allure generate [allure_output_dir] && allure open
Це згенерує звіт (за замовчуванням у ./allure-report) і відкриє його у вашому браузері.
Автоматичне генерування звіту
Ви також можете автоматично генерувати звіт, використовуючи інструмент командного рядка Allure програмно. Для цього встановіть пакет у вашому проекті за допомогою:
npm i allure-commandline
Потім додайте або розширте ваш хук onComplete або створіть власний сервіс для цього:
// wdio.conf.js
const allure = require('allure-commandline')
export const config = {
    // ...
    onComplete: function() {
        const reportError = new Error('Could not generate Allure report')
        const generation = allure(['generate', 'allure-results', '--clean'])
        return new Promise((resolve, reject) => {
            const generationTimeout = setTimeout(
                () => reject(reportError),
                5000)
            generation.on('exit', function(exitCode) {
                clearTimeout(generationTimeout)
                if (exitCode !== 0) {
                    return reject(reportError)
                }
                console.log('Allure report successfully generated')
                resolve()
            })
        })
    }
    // ...
}
Jenkins
Встановіть та налаштуйте плагін Allure для Jenkins
Додавання скріншотів
Скріншоти можна додати до звіту, використовуючи функцію takeScreenshot з WebDriverIO в хуку afterTest для Mocha та Jasmine або хуку afterStep для Cucumber.
Спочатку встановіть disableWebdriverScreenshotsReporting: false в опціях репортера, потім додайте в хук afterStep:
Mocha / Jasmine
afterTest: async function(test, context, { error, result, duration, passed, retries }) {
    if (error) {
        await browser.takeScreenshot();
    }
}
Cucumber
afterStep: async function (step, scenario, { error, duration, passed }, context) {
  if (error) {
    await browser.takeScreenshot();
  }
}
Як показано в прикладі вище, коли ця функція викликається, зображення скріншоту буде додано до звіту allure.