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

如何在multiple-cucumber-html-reporter中动态获取浏览器版本

动态获取Chrome版本填充Cucumber测试报告元数据

两种实现方案,按需选择即可。


方案1:直接读取系统安装的Chrome版本

适合本地固定使用同一Chrome版本跑测试的场景,配置简单。

  1. 安装轻量依赖包用于读取Chrome版本:
    npm install chrome-version --save-dev
  2. 修改cucumber-html-report.js配置,将原有同步逻辑调整为异步,等待Chrome版本读取完成后再生成报告:
const os = require('os');
const { getChromeVersion } = require('chrome-version');
const reporter = require('multiple-cucumber-html-reporter');

(async () => {
  // 读取当前系统Chrome完整版本号,仅取主版本号可加.split('.')[0]
  const chromeVer = await getChromeVersion();
  const reportConfig = {
    // 保留原有jsonDir、reportPath、customData等所有原有配置
    metadata: {
      browser: {
        name: 'chrome',
        version: chromeVer.split('.')[0]
      },
      device: os.platform(),
      platform: {
        name: 'Windows',
        version: os.release()
      }
    }
  };
  reporter.generate(reportConfig);
})();

方案2:读取Cypress实际运行的Chrome版本

适合本地装了多个Chrome版本、或者CI环境运行测试的场景,版本号100%和实际执行测试的浏览器一致,不会出现版本不匹配问题。

  1. 在Cypress配置文件(cypress.config.js)的节点事件钩子中,将运行时的Chrome版本写入临时文件:
const { defineConfig } = require('cypress');
const fs = require('fs');
const path = require('path');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      // 监听浏览器启动事件,捕获实际运行的浏览器信息
      on('before:browser:launch', (browser) => {
        if (browser.family === 'chromium' && browser.name === 'chrome') {
          fs.writeFileSync(
            path.join(__dirname, '.runtime-chrome-ver'),
            browser.version
          );
        }
      });
      // 保留原有cucumber预处理器、任务注册等其他配置
    },
    // 原有specPattern、baseUrl等配置保留
  }
});
  1. 修改cucumber-html-report.js,读取临时文件中的版本号,生成报告后清理临时文件:
const os = require('os');
const fs = require('fs');
const path = require('path');
const reporter = require('multiple-cucumber-html-reporter');

const verFilePath = path.join(__dirname, '.runtime-chrome-ver');
const chromeVer = fs.readFileSync(verFilePath, 'utf8').trim();
// 读取完成后删除临时文件
fs.unlinkSync(verFilePath);

const reportConfig = {
  // 保留原有jsonDir、reportPath等所有配置
  metadata: {
    browser: {
      name: 'chrome',
      version: chromeVer.split('.')[0]
    },
    device: os.platform(),
    platform: {
      name: 'Windows',
      version: os.release()
    }
  }
};
reporter.generate(reportConfig);

注意:如果需要展示完整Chrome版本号,去掉代码中.split('.')[0]的处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:45:37