如何将Cypress测试的Jenkins报告中"(root)"替换为浏览器名称?
解决Cypress JUnit报告显示"(root)"而非浏览器名的问题
你需要补充以下两处配置,让mocha-junit-reporter把浏览器名注入到报告中:
1. 调整cypress.config.js,传递浏览器名到环境变量
修改setupNodeEvents,把浏览器名存入系统环境变量,让reporter能读取到:
module.exports = defineConfig({ reporter: 'cypress-multi-reporters', reporterOptions: { configFile: 'reporter-config.json', toConsole: true }, specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', setupNodeEvents(on, config) { // 格式化浏览器名首字母大写 const formattedBrowserName = config.browserName.charAt(0).toUpperCase() + config.browserName.slice(1); // 存入系统环境变量,供reporter配置使用 process.env.BROWSER_NAME = formattedBrowserName; // 同时存入Cypress.env(如果测试代码需要用到) Cypress.env('browserName', formattedBrowserName); }, });
2. 更新reporter-config.json,让报告关联浏览器名
修改配置,让生成的报告文件名包含浏览器名,并替换默认的"(root)"为浏览器名:
{ "reporterEnabled": "spec, mocha-junit-reporter", "mochaJunitReporterReporterOptions": { // 文件名加入浏览器名,方便Jenkins区分不同浏览器的报告 "mochaFile": "cypress/results/results-${BROWSER_NAME}-[hash].xml", // 去掉默认的"(root) "前缀 "suiteNameFormat": "^(?:\\(root\\) )?(.*)$", // 给每个测试套件添加浏览器名前缀 "modifySuiteName": (suiteName) => `${process.env.BROWSER_NAME}: ${suiteName}` } }
额外注意事项
- 确保安装了最新版的
mocha-junit-reporter,因为modifySuiteName是较新的功能,执行命令更新:npm install mocha-junit-reporter@latest --save-dev - Jenkins端配置:在JUnit插件的测试报告路径中使用通配符(比如
cypress/results/results-*.xml),这样所有浏览器的报告会被自动识别并按浏览器名拆分显示。
内容的提问来源于stack exchange,提问作者librogil
相关产品推荐
相关产品推荐

