Raportowanie Allure
Wtyczka raportująca dla WebdriverIO do tworzenia Raportów Testowych Allure.

Instalacja
Najprostszym sposobem jest dołączenie @wdio/allure-reporter jako devDependency w pliku package.json.
{
"devDependencies": {
"@wdio/allure-reporter": "^7.0.0"
}
}
Możesz to zrobić po prostu przez:
npm install @wdio/allure-reporter --save-dev
Konfiguracja
Skonfiguruj katalog wyjściowy w pliku wdio.conf.js:
export const config = {
// ...
reporters: [['allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: true,
}]],
// ...
}
outputDirdomyślnie to./allure-results. Po zakończeniu testów, w tym katalogu znajdziesz pliki.xmldla każdej specyfikacji, a także wiele plików.txt,.pngi innych załączników.disableWebdriverStepsReporting- opcjonalny parametr (falsedomyślnie), aby logować tylko niestandardowe kroki do raportera.issueLinkTemplate- opcjonalny parametr, aby określić szablon linku do problemu. Reporter zastąpi{}wartością podaną w wywołaniuaddIssue(value). Ta sama logika jest stosowana, jeśli używany jest Cucumber i tagissuejest ustawiony na dowolnym poziomie, zostanie on przekształcony w link w raporcie. Przykładowa wartość parametru:https://example.org/issue/{}tmsLinkTemplate- opcjonalny parametr, aby określić szablon linku do TMS (System Zarządzania Testami). Reporter zastąpi{}wartością podaną w wywołaniuaddTestId(value). Ta sama logika jest stosowana, jeśli używany jest Cucumber i tagtestIdjest ustawiony na dowolnym poziomie, zostanie on przekształcony w link w raporcie. Przykładowa wartość parametru:https://example.org/tms/{}disableWebdriverScreenshotsReporting- opcjonalny parametr (falsedomyślnie), aby nie załączać zrzutów ekranu do raportera.useCucumberStepReporter- opcjonalny parametr (falsedomyślnie), ustaw na true, aby zmienić hierarchię raportów podczas korzystania z Cucumber. Wypróbuj to samodzielnie i zobacz, jak to wygląda.disableMochaHooks- opcjonalny parametr (falsedomyślnie), ustaw na true, aby nie pobierać hakówbefore/afterstacktrace/screenshot/result do Allure Reporter.addConsoleLogs- opcjonalny parametr (falsedomyślnie), ustaw na true, aby załączyć logi konsoli z kroku do raportera.reportedEnvironmentVars(typ:Record<string, string>) - Ustaw tę opcję, aby wyświetlić zmienne środowiskowe w raporcie. Pamiętaj, że ustawienie tego nie modyfikuje rzeczywistych zmiennych środowiskowych.
Obsługiwane API Allure
addLabel(name, value)- przypisz niestandardową etykietę do testuaddFeature(featureName)– przypisz funkcje do testuaddStory(storyName)– przypisz historię użytkownika do testuaddSeverity(value)– przypisz ważność do testu, akceptuje jedną z tych wartości: blocker, critical, normal, minor, trivialaddTag(value)– przypisz etykietę tagu do testuaddEpic(value)– przypisz etykietę epiki do testuaddOwner(value)– przypisz etykietę właściciela do testuaddSuite(value)– przypisz etykietę zestawu do testuaddSubSuite(value)– przypisz etykietę podzespołu do testuaddParentSuite(value)– przypisz etykietę nadrzędnego zestawu do testuaddIssue(value)– przypisz identyfikator problemu do testuaddAllureId(value)– przypisz etykietę allure test ops id do testuaddTestId(value)– przypisz identyfikator TMS do testu- ~~
addEnvironment(name, value)~~ – przestarzała funkcja, która już nie działa. Zamiast tego użyjreportedEnvironmentVars addAttachment(name, content, [type])– zapisz załącznik do testu.name(String) - nazwa załącznika.content– zawartość załącznika.type(String, opcjonalnie) – typ MIME załącznika, domyślnietext/plain
addArgument(name, value)- dodaj dodatkowy argument do testuaddDescription(description, [type])– dodaj opis do testu.description(String) - opis testu.type(String, opcjonalnie) – typ opisu, domyślnietext. Wartości ['text', 'html','markdown']
addStep(title, [{content, name = 'attachment'}], [status])- dodaj krok do testu.title(String) - nazwa kroku.content(String, opcjonalnie) - załącznik krokuname(String, opcjonalnie) - nazwa załącznika kroku, domyślnieattachment.status(String, opcjonalnie) - status kroku, domyślniepassed. Musi być "failed", "passed" lub "broken"
startStep(title)- rozpocznij kroktitle(String) - nazwa kroku.
endStep(status)- zakończ krokstatus(String, opcjonalnie) - status kroku, domyślniepassed. Musi być "failed", "passed" lub "broken"
step(name, body)- rozpoczyna krok z funkcją zawartości wewnątrz. Umożliwia tworzenie kroków z nieskończoną hierarchiąbody(Function) - funkcja asynchroniczna zawartości kroku
Użycie
Dostęp do API Allure można uzyskać za pomocą:
CJS
const allureReporter = require('@wdio/allure-reporter').default
ESM
import allureReporter from '@wdio/allure-reporter'
Przykład Mocha
describe('Suite', () => {
it('Case', () => {
allureReporter.addFeature('Feature')
})
})
Cucumber
Podstawowy przykład Cucumber:
Given('I include feature and story name', () => {
allureReporter.addFeature('Feature_name');
allureReporter.addStory('Story_name');
})
Niestandardowe kroki
Metoda step upraszcza obsługę kroków, ponieważ każdy krok reprezentowany jest jako funkcja asynchroniczna z dowolną zawartością wewnątrz.
Pierwszy argument funkcji to bieżący krok, który ma większość metod API allure (takich jak label, epic, attach itp.):
allureReporter.step('my step name', async (s1) => {
s1.label('foo', 'bar')
await s1.step('my child step name', async (s2) => {
// możesz dodać dowolną kombinację kroków w funkcji ciała
})
})
Tagi Cucumber
Tagi Cucumber o specjalnych nazwach (issue i testId) są konwertowane na linki (odpowiednie szablony linków muszą być wcześniej skonfigurowane):
@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
Tagi Cucumber o specjalnych nazwach (feature) są mapowane na etykiety Allure:
Feature: Test user role
@feature=login
Scenario: Login
Given I test login
Wyświetlanie raportu
Wyniki mogą być wykorzystywane przez dowolne narzędzia raportujące oferowane przez Allure. Na przykład:
Command-line
Zainstaluj narzędzie wiersza poleceń Allure i przetwórz katalog wyników:
allure generate [allure_output_dir] && allure open
To wygeneruje raport (domyślnie w ./allure-report) i otworzy go w przeglądarce.
Automatyczne generowanie raportu
Możesz również automatycznie generować raport za pomocą narzędzia wiersza poleceń Allure programowo. Aby to zrobić, zainstaluj pakiet w swoim projekcie:
npm i allure-commandline
Następnie dodaj lub rozszerz swój hook onComplete lub stwórz niestandardową usługę do tego celu:
// 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
Zainstaluj i skonfiguruj wtyczkę Jenkins Allure
Dodawanie zrzutów ekranu
Zrzuty ekranu można dołączyć do raportu, używając funkcji takeScreenshot z WebDriverIO w hooku afterTest dla Mocha i Jasmine lub hooku afterStep dla Cucumber.
Najpierw ustaw disableWebdriverScreenshotsReporting: false w opcjach reportera, a następnie dodaj w hooku 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();
}
}
Jak pokazano w powyższym przykładzie, gdy ta funkcja zostanie wywołana, obraz zrzutu ekranu zostanie dołączony do raportu allure.