Allureレポーター
WebdriverIOのレポータープラグインで、Allureテストレポートを作成します。

インストール
最も簡単な方法は、package.jsonに@wdio/allure-reporterをdevDependencyとして含めることです。
{
"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)、cucumberを使用する際のレポート階層を変更するにはtrueに設定してください。自分で試してみて、どのように見えるか確認してください。disableMochaHooks- オプションパラメータ(デフォルトはfalse)、before/afterのスタックトレース/スクリーンショット/結果フックをAllureレポーターに取り込まないようにするにはtrueに設定してください。addConsoleLogs- オプションパラメータ(デフォルトはfalse)、ステップからのコンソールログをレポーターに添付するにはtrueに設定してください。reportedEnvironmentVars(型:Record<string, string>) - レポートに環境変数を表示するにはこのオプションを設定してください。これを設定しても、実際の環境変数は変更されません。
サポートされているAllure API
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)– テストに問題IDを割り当てるaddAllureId(value)– テストにAllureテストオプスIDラベルを割り当てるaddTestId(value)– テストにTMSテスト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メソッドはステップの扱いを簡素化します。各ステップは内部に任意のコンテンツを持つ非同期関数として表現されるためです。
関数の最初の引数は現在のステップであり、Allure APIメソッドのほとんど(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タグ
特別な名前(issueとtestId)のCucumberタグはリンクに変換されます(対応するリンクテンプレートを事前に設定する必要があります):
@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
特別な名前(feature)のCucumberタグは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プラグインをインストールして設定します
スクリーンショットの追加
スクリーンショットは、MochaとJasmineではafterTestフック、CucumberではafterStepフックでWebDriverIOのtakeScreenshot関数を使用してレポートに添付できます。
まずレポーターオプションで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レポートに添付されます。