Delta Reporter レポーター
wdio-delta-reporter-serviceはサードパーティのパッケージです。詳細についてはGitHub | npmをご覧ください。
Delta reportsを作成するためのWebdriverIOレポータープラグイン
インストール
最も簡単な方法は、@delta-reporter/wdio-delta-reporter-service
をpackage.json
のdevDependencyとして保持することです。
{
"devDependencies": {
"@delta-reporter/wdio-delta-reporter-service": "^1.1.9",
}
}
以下の方法で簡単に行えます:
npm i @delta-reporter/wdio-delta-reporter-service
設定
Delta reporterのWebdriverIOプラグインは、WebdriverIO ServiceとReporterの組み合わせで構成されています。そのため、設定ファイルでレポーターとサービスの両方として宣言する必要があります。
const DeltaReporter = require('@delta-reporter/wdio-delta-reporter-service/lib/src/reporter');
const DeltaService = require("@delta-reporter/wdio-delta-reporter-service");
let delta_config = {
enabled: true,
host: 'delta_host',
project: 'Project Name',
testType: 'Test Type'
};
exports.config = {
// ...
reporters: [
[DeltaReporter, delta_config]
],
// ...
services: [new DeltaService(delta_config)],
// ...
}
スクリーンショットとビデオの追加
スクリーンショットは、wdio設定ファイルのafterTestフックでsendFileToTest
コマンドを使用してレポートに添付できます。パラメーターはtype
、file
、description
です:
type
:img
またはvideo
にすることができますfile
:アップロードするファイルへのパスdescription
:Delta Reporterのメディアコンテナに表示されるオプション値
上記の例に示すように、この関数が呼び出され、テストが失敗した場合、スクリーンショット画像がDeltaレポートに添付されます。
afterTest(test) {
if (test.passed === false) {
const file_name = 'screenshot.png';
const outputFile = path.join(__dirname, file_name);
browser.saveScreenshot(outputFile);
browser.sendFileToTest('img', outputFile);
}
}
以下は、Video Reporterと一緒にこのプラグインを使用するためにwdio設定ファイルに必要なすべての部分の例です。これにより、Delta Reporterは失敗したテ ストのスクリーンショットとビデオを表示します:
var path = require('path');
const fs = require('fs');
const video = require('wdio-video-reporter');
const DeltaReporter = require('@delta-reporter/wdio-delta-reporter-service/lib/src/reporter');
const DeltaService = require("@delta-reporter/wdio-delta-reporter-service");
// ...
function getLatestFile({ directory, extension }, callback) {
fs.readdir(directory, (_, dirlist) => {
const latest = dirlist
.map(_path => ({ stat: fs.lstatSync(path.join(directory, _path)), dir: _path }))
.filter(_path => _path.stat.isFile())
.filter(_path => (extension ? _path.dir.endsWith(`.${extension}`) : 1))
.sort((a, b) => b.stat.mtime - a.stat.mtime)
.map(_path => _path.dir);
callback(directory + '/' + latest[0]);
});
}
let delta_config = {
enabled: true,
host: 'delta_host', // put your Delta Core url here
project: 'Project Name', // Name of your project
testType: 'Test Type' // eg., End to End, E2E, Frontend Acceptance Tests
};
// ...
exports.config = {
// ...
reporters: [
[DeltaReporter, delta_config]
],
// ...
services: [new DeltaService(delta_config)],
// ...
afterTest(test) {
if (test.passed === false) {
const file_name = 'screenshot.png';
const outputFile = path.join(__dirname, file_name);
browser.saveScreenshot(outputFile);
browser.sendFileToTest('img', outputFile);
getLatestFile({ directory: browser.options.outputDir + '/_results_', extension: 'mp4' }, (filename = null) => {
browser.sendFileToTest('video', filename, 'Video captured during test execution');
});
}
}
// ...
}