Delta Reporter 报告器
一个 WebdriverIO 报告插件,用于创建 Delta reports
安装
最简单的方式是将 @delta-reporter/wdio-delta-reporter-service
作为 devDependency 保存在你的 package.json
中。
{
"devDependencies": {
"@delta-reporter/wdio-delta-reporter-service": "^1.1.9",
}
}
你可以简单地通过以下方式安装:
npm i @delta-reporter/wdio-delta-reporter-service
配置
Delta reporter WebdriverIO 插件是 WebdriverIO Service 和 Reporter 的混合,所以需要在配置文件中同时声明为 reporter 和 service。
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);
}
}
下面是 wdio 配置文件中使用此插件所需的所有部分的例子,结合 Video Reporter,这样 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');
});
}
}
// ...
}