Cypress集成Allure:报告已生成但allure-results文件夹缺失
解决Cypress集成Allure时allure-results文件夹未生成的问题
核心问题分析
你同时配置了cypress-mochawesome-reporter和@shelex/cypress-allure-plugin,但Cypress仅支持同时启用一个Reporter,这会导致Allure的结果生成逻辑被覆盖,是文件夹未生成的主要原因。此外,环境变量传递、依赖缓存也可能引发此类问题。
解决方案步骤
1. 修复Reporter冲突
修改cypress.config.ts,根据环境变量动态切换Reporter,避免冲突:
import { defineConfig } from "cypress"; import allureWriter from "@shelex/cypress-allure-plugin/writer"; export default defineConfig({ e2e: { setupNodeEvents(on, config) { allureWriter(on, config); // 若需保留mochawesome,需初始化其writer(可选) // require('cypress-mochawesome-reporter/plugin')(on); return config; }, baseUrl: "http://localhost:3000", specPattern: "cypress/e2e/**/*.cy.ts", supportFile: 'cypress/support/index.ts', // 根据allure环境变量切换Reporter reporter: config.env.allure ? '@shelex/cypress-allure-plugin' : 'cypress-mochawesome-reporter', reporterOptions: config.env.allure ? {} : { reportDir: 'cypress/reports', overwrite: false, html: false, json: true, }, env: { allureReuseAfterSpec: true, allureResultsPath: 'allure-results' // 明确指定结果目录 }, }, });
2. 验证环境变量传递
在测试文件中添加日志,确认allure环境变量是否正确生效:
// cypress/e2e/sample_test.cy.ts describe('Sample Test', () => { it('should pass', () => { console.log('Allure环境变量值:', Cypress.env('allure')); expect(true).to.equal(true); }); });
运行测试后查看控制台输出,若值为undefined,说明命令中的--env allure=true未正确传递,需检查命令格式是否有误。
3. 清理依赖与缓存
执行以下命令清理缓存并重新安装依赖,排除缓存导致的插件异常:
# 删除依赖文件与锁文件 rm -rf node_modules package-lock.json # 重新安装依赖 npm install # 清理Cypress缓存 npx cypress cache clear
4. 重新运行测试
使用指定的命令运行测试,确保allure=true环境变量生效:
npx cypress run --env allure=true --spec cypress/e2e/sample_test.cy.ts --browser electron --headed
额外排查点
- 检查项目根目录权限,确保Node进程有创建文件夹的权限
- 若手动创建过
allure-results文件夹,删除后再重新运行测试,避免遗留文件干扰
内容的提问来源于stack exchange,提问作者prabhakar
相关产品推荐
相关产品推荐

