Allure Reporter
Un plugin reporter di WebdriverIO per creare Rapporti di Test Allure.
Installazione
Il modo più semplice è includere @wdio/allure-reporter
come devDependency nel tuo package.json
.
{
"devDependencies": {
"@wdio/allure-reporter": "^7.0.0"
}
}
Puoi farlo semplicemente con:
npm install @wdio/allure-reporter --save-dev
Configurazione
Configura la directory di output nel tuo file wdio.conf.js:
export const config = {
// ...
reporters: [['allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: true,
}]],
// ...
}
outputDir
è impostato di default su./allure-results
. Dopo l'esecuzione di un test, troverai questa directory popolata con un file.xml
per ogni spec, più una serie di file.txt
e.png
e altri allegati.disableWebdriverStepsReporting
- parametro opzionale (false
di default), per registrare solo i passaggi personalizzati nel reporter.issueLinkTemplate
- parametro opzionale, per specificare il modello di link per i problemi. Il reporter sostituirà il segnaposto{}
con il valore specificato nella chiamataaddIssue(value)
. La stessa logica viene applicata se si utilizza Cucumber e il tagissue
è impostato a qualsiasi livello, sarà convertito in un link nel report. Esempio di valore del parametro:https://example.org/issue/{}
tmsLinkTemplate
- parametro opzionale, per specificare il modello di link TMS (Test Management System). Il reporter sostituirà il segnaposto{}
con il valore specificato nella chiamataaddTestId(value)
. La stessa logica viene applicata se si utilizza Cucumber e il tagtestId
è impostato a qualsiasi livello, sarà convertito in un link nel report. Esempio di valore del parametro:https://example.org/tms/{}
disableWebdriverScreenshotsReporting
- parametro opzionale (false
di default), per non allegare screenshot al reporter.useCucumberStepReporter
- parametro opzionale (false
di default), impostalo a true per modificare la gerarchia del report quando si utilizza cucumber. Provalo e vedi come appare.disableMochaHooks
- parametro opzionale (false
di default), impostalo a true per non recuperare gli hookbefore/after
stacktrace/screenshot/result nel Reporter Allure.addConsoleLogs
- parametro opzionale (false
di default), impostalo a true per allegare i log della console dal passaggio al reporter.reportedEnvironmentVars
(tipo:Record<string, string>
) - Imposta questa opzione per visualizzare le variabili d'ambiente nel report. Nota che questa impostazione non modifica le variabili d'ambiente effettive.
API Allure supportate
addLabel(name, value)
- assegna un'etichetta personalizzata al testaddFeature(featureName)
– assegna funzionalità al testaddStory(storyName)
– assegna una user story al testaddSeverity(value)
– assegna la gravità al test, accetta uno di questi valori: blocker, critical, normal, minor, trivialaddTag(value)
– assegna un'etichetta tag al testaddEpic(value)
– assegna un'etichetta epic al testaddOwner(value)
– assegna un'etichetta proprietario al testaddSuite(value)
– assegna un'etichetta suite al testaddSubSuite(value)
– assegna un'etichetta sub suite al testaddParentSuite(value)
– assegna un'etichetta parent suite al testaddIssue(value)
– assegna un ID problema al testaddAllureId(value)
– assegna un'etichetta ID test ops Allure al testaddTestId(value)
– assegna un ID test TMS al test- ~~
addEnvironment(name, value)
~~ – una funzione deprecata che non funziona più. UsareportedEnvironmentVars
invece addAttachment(name, content, [type])
– salva un allegato al test.name
(String) - nome dell'allegato.content
– contenuto dell'allegato.type
(String, opzionale) – MIME-type dell'allegato,text/plain
di default
addArgument(name, value)
- aggiunge un argomento aggiuntivo al testaddDescription(description, [type])
– aggiunge una descrizione al test.description
(String) - descrizione del test.type
(String, opzionale) – tipo di descrizione,text
di default. Valori ['text', 'html','markdown']
addStep(title, [{content, name = 'attachment'}], [status])
- aggiunge un passaggio al test.title
(String) - nome del passaggio.content
(String, opzionale) - allegato del passaggioname
(String, opzionale) - nome dell'allegato al passaggio,attachment
di default.status
(String, opzionale) - stato del passaggio,passed
di default. Deve essere "failed", "passed" o "broken"
startStep(title)
- inizia con un passaggiotitle
(String) - nome del passaggio.
endStep(status)
- termina con un passaggiostatus
(String, opzionale) - stato del passaggio,passed
di default. Deve essere "failed", "passed" o "broken"
step(name, body)
- inizia il passaggio con la funzione di contenuto all'interno. Permette di creare passaggi con gerarchia infinitabody
(Function) - la funzione asincrona del corpo del passaggio
Utilizzo
Si può accedere all'API Allure usando:
CJS
const allureReporter = require('@wdio/allure-reporter').default
ESM
import allureReporter from '@wdio/allure-reporter'
Esempio Mocha
describe('Suite', () => {
it('Case', () => {
allureReporter.addFeature('Feature')
})
})
Cucumber
Esempio base di Cucumber:
Given('I include feature and story name', () => {
allureReporter.addFeature('Feature_name');
allureReporter.addStory('Story_name');
})
Passaggi personalizzati
Il metodo step
semplifica la gestione dei passaggi perché ogni passaggio si presenta come una funzione asincrona con qualsiasi contenuto all'interno.
Il primo argomento della funzione è il passaggio corrente, che ha la maggior parte dei metodi API di allure (come label
, epic
, attach
ecc):
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
})
})
Tag Cucumber
I tag Cucumber con nomi speciali (issue
e testId
) vengono convertiti in link (i modelli di link corrispondenti devono essere configurati in precedenza):
@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
I tag Cucumber con nomi speciali (feature
) sono mappati alle etichette Allure:
Feature: Test user role
@feature=login
Scenario: Login
Given I test login
Visualizzazione del report
I risultati possono essere utilizzati da qualsiasi strumento di reporting offerto da Allure. Per esempio:
Linea di comando
Installa lo strumento a linea di comando Allure e processa la directory dei risultati:
allure generate [allure_output_dir] && allure open
Questo genererà un report (per default in ./allure-report
) e lo aprirà nel tuo browser.
Generazione automatica del report
Puoi anche generare automaticamente il report utilizzando lo strumento a linea di comando Allure in modo programmatico. Per farlo installa il pacchetto nel tuo progetto con:
npm i allure-commandline
Quindi aggiungi o estendi il tuo hook onComplete
o crea un servizio personalizzato per questo:
// 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
Installa e configura il plugin Jenkins Allure
Aggiungere Screenshot
Gli screenshot possono essere allegati al report utilizzando la funzione takeScreenshot
di WebDriverIO nell'hook afterTest
per Mocha e Jasmine o nell'hook afterStep
per Cucumber.
Prima imposta disableWebdriverScreenshotsReporting: false
nelle opzioni del reporter, poi aggiungi nell'hook 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();
}
}
Come mostrato nell'esempio sopra, quando questa funzione viene chiamata, un'immagine screenshot sarà allegata al report Allure.