Cypress如何配置动态报告目录实现所有新旧测试报告留存
Cypress 历史报告留存解决方案
cypress.json 为静态 JSON 配置文件,本身不支持直接插入动态时间戳、日期等变量,可通过以下两种方案实现报告目录动态命名,历史报告永久留存不覆盖:
方案1:跨平台Node脚本实现(改动最小,适配所有系统环境)
步骤1:新增动态目录生成脚本
在项目根目录新建generate-report-dir.js,代码如下:
const fs = require('fs'); module.exports = () => { // 生成 年-月-日_时-分-秒 格式的时间戳,也可替换为序号规则 const timestamp = new Date().toISOString().replace(/[:T]/g, '-').split('.')[0]; const reportRoot = `cypress/reports/${timestamp}`; // 递归创建本次测试所需的目录结构 fs.mkdirSync(`${reportRoot}/mocha`, { recursive: true }); fs.mkdirSync(`${reportRoot}/mochareports`, { recursive: true }); return reportRoot; } if (require.main === module) { console.log(module.exports()); }
步骤2:修改package.json脚本配置
删除原有clean:reports、pretest相关脚本,更新后的scripts如下:
"scripts": { "get-report-dir": "node -e \"console.log(require('./generate-report-dir.js')())\"", "scripts": "cypress run --browser chrome --env reportDir=$(npm run -s get-report-dir)/mocha", "combine-reports": "mochawesome-merge $(npm run -s get-report-dir)/mocha/*.json > $(npm run -s get-report-dir)/mochareports/report.json", "generate-report": "marge $(npm run -s get-report-dir)/mochareports/report.json -f report -o $(npm run -s get-report-dir)/mochareports", "posttest-chrome": "npm run combine-reports && npm run generate-report", "test-chrome": "npm run get-report-dir && npm run scripts || npm run posttest-chrome" }
步骤3:调整cypress.json配置
原有mochawesome配置保持不变,运行时传入的环境变量会自动覆盖静态配置的reportDir值。
方案2:Cypress插件动态配置(更稳定,无环境变量传递问题)
步骤1:修改插件配置
打开cypress/plugins/index.js,新增动态目录逻辑:
const fs = require('fs'); module.exports = (on, config) => { const timestamp = new Date().toISOString().replace(/[:T]/g, '-').split('.')[0]; const reportRoot = `cypress/reports/${timestamp}`; // 直接动态覆盖报告目录配置 config.reporterOptions.mochawesomeReporterOptions.reportDir = `${reportRoot}/mocha`; // 写入配置供后续脚本读取 config.env.reportRoot = reportRoot; fs.mkdirSync(`${reportRoot}/mochareports`, { recursive: true }); return config; }
步骤2:同步修改package.json的报告生成脚本
将脚本中的固定路径替换为读取Cypress输出的动态路径即可。
额外注意事项
- 可根据需求替换时间戳规则为序号规则:维护一个计数器文件,每次测试运行时读取数值+1,作为目录名后缀即可
- 需修正原有配置中的两处拼写错误:
- cypress.json中
mochaFile的路径raports应为reports - package.json的
clean:reports脚本中mkdircypress应为mkdir cypress
- cypress.json中
内容的提问来源于stack exchange,提问作者dawidk09
相关产品推荐
相关产品推荐

