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,
}]],
// ...
}
outputDir
domyślnie to./allure-results
. Po zakończeniu testów, w tym katalogu znajdziesz pliki.xml
dla każdej specyfikacji, a także wiele plików.txt
,.png
i innych załączników.disableWebdriverStepsReporting
- opcjonalny parametr (false
domyś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 tagissue
jest 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 tagtestId
jest ustawiony na dowolnym poziomie, zostanie on przekształcony w link w raporcie. Przykładowa wartość parametru:https://example.org/tms/{}
disableWebdriverScreenshotsReporting
- opcjonalny parametr (false
domyślnie), aby nie załączać zrzutów ekranu do raportera.useCucumberStepReporter
- opcjonalny parametr (false
domyś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 (false
domyślnie), ustaw na true, aby nie pobierać hakówbefore/after
stacktrace/screenshot/result do Allure Reporter.addConsoleLogs
- opcjonalny parametr (false
domyś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.