You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

内容的提问来源于stack exchange,提问作者dawidk09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:06:03