我使用cypress
+ multiple-cucumber-html-report
在执行后生成一个报告。可以向报告中添加自定义数据,如执行开始和结束时间。
我假设这些信息作为结果 meta数据的一部分来自Cypress。
我尝试在运行完成后将结果放入json文件中,方法是将其添加到cypress配置文件中:
import { defineConfig } from 'cypress';
import * as fs from 'fs';
async function setupNodeEvents(on, config) {
on('after:run', async (results) => {
if (results) {
fs.mkdirSync("cypress/.run", { recursive: true });
fs.writeFile("cypress/.run/results.json", JSON.stringify(results), (err) => {
if (err)
console.log(err);
else {
console.log("Successful results has been written");
}
});
}
})
return config;
}
export default defineConfig({
e2e: {
setupNodeEvents,
experimentalInteractiveRunEvents: true
},
});
然后在报告生成文件中读取这些结果:
const report = require('multiple-cucumber-html-reporter');
const fs = require('fs');
fs.readFile('cypress/.run/results.json', function read(err, data) {
if (err) {
throw err;
}
var runInfos = JSON.parse(data);
report.generate({
jsonDir: './cypress/result/',
reportPath: './cypress/report/',
metadata:{
browser: {
name: runInfos.browserName,
version: runInfos.browserVersion
},
device: 'Cypress',
platform: {
name: mapOs(runInfos.osName)
}
},
customData: {
title: 'Run info',
data: [
{label: 'Project', value: 'project'},
{label: 'Execution Start Time', value: new Date(runInfos.startedTestsAt).toLocaleString()},
{label: 'Execution End Time', value: new Date(runInfos.endedTestsAt).toLocaleString()}
]
}
});
});
不幸的是,after:run
从未被触发,甚至没有抛出错误。
1条答案
按热度按时间lmyy7pcs1#
查看After Run API的文档
通过
cypress open
运行时,仅当启用experimentalInteractiveRunEvents
标志时,才会触发after:run
事件。不幸的是,从配置示例的外观来看,您必须使用较旧版本的Cypress(v10之前)。
要使其更有用,请升级Cypress并使用上面提到的标志,如下所示: