use*_*310 4 junit automated-tests amazon-web-services test-reporting cypress
我最初使用了 Mochaawesome 报告,但无法与 AWS 集成。事实证明,我需要 JUnit XML 报告器才能与代码构建集成。
我已经创建了Junit XML 报告,但我不知道如何将它们合并到一个 xml 文件中,以便可以在 AWS 中使用。
XML 文件已创建(我一直在尝试合并它们)
Cypress.json 文件
"reporter": "cypress-multi-reporters",
"reporterOptions": {
"reporterEnabled": "spec, mocha-junit-reporter",
"mochaJunitReporterReporterOptions": {
"mochaFile": "cypress/results/results-[hash].xml"
}
Run Code Online (Sandbox Code Playgroud)
索引.js 文件
"scripts": {
"delete:reports": "rm cypress/results/* || true",
"prereport": "delete:reports",
"report": "cypress run --reporter cypress-multi-reporters --reporter-options mochaFile=cypress/results/results-[hash].xml"
},
"dependencies": {
"cypress-multi-reporters": "^1.4.0",
"junit-report-merger": "^0.0.6",
"mocha": "^8.2.1",
"mocha-junit-reporter": "^2.0.0",
}
Run Code Online (Sandbox Code Playgroud)
命令行(但它不接受密码,所以我的测试全部失败)
$ yarn report --env password=<password>
Run Code Online (Sandbox Code Playgroud)
bho*_*nes 11
我专门为此目的创建了一个包。它称为junit-report-merger。
您应该编写一个 Nodejs 脚本,它将使用从该包导出的函数:
合并.js
const path = require('path')
const {mergeFiles} = require('junit-report-merger')
const globby = require('globby')
const inputFiles = await globby(['results/report-*.xml'])
const outputFile = path.join(__dirname, 'results', 'combined-report.xml')
mergeFiles(
outputFile,
inputFiles,
err => {
if (err) {
console.error(err)
}
else {
console.log('successfully merged')
}
}
)
Run Code Online (Sandbox Code Playgroud)
脚本准备好后,您应该在测试后运行它。在你的情况下,它将是这样的:
"scripts": {
"report": "cypress run --reporter cypress-multi-reporters --reporter-options mochaFile=cypress/results/results-[hash].xml",
"postreport": "node merge.js"
}
Run Code Online (Sandbox Code Playgroud)
更新
刚刚发布了junit-report-merger的 1.0.0 版本,它支持 glob,允许 async/await 并提供CLI。
上面的代码仍然可以工作,但是使用该版本,merge.js上面的文件可以用更短的方式编写:
const path = require('path')
const {mergeFiles} = require('junit-report-merger')
const inputPattern = ['results/report-*.xml']
const outputFile = path.join(__dirname, 'results', 'combined-report.xml')
await mergeFiles(outputFile, inputPattern)
console.log('successfully merged')
Run Code Online (Sandbox Code Playgroud)
merge.js但在 1.0.0 版本中,您可以完全避免创建并使用 CLI。
像这样:
"scripts": {
"report": "cypress run --reporter cypress-multi-reporters --reporter-options mochaFile=cypress/results/results-[hash].xml",
"postreport": "jrm ./results/combined-report.xml \"./cypress/results/results-*.xml\""
}
Run Code Online (Sandbox Code Playgroud)