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

Cypress 10+如何自动实现类似v9的测试用例筛选运行功能?

Cypress v10实现测试用例搜索筛选的方案

Cypress v10移除了“运行全部测试”按钮,我们通常用「barrel测试」(创建all.spec.cy.js导入所有测试文件)来批量运行测试,但如果想像v9那样通过搜索快速筛选要运行的测试用例,不用手动创建多个barrel文件,有以下几种自动实现的方法:

方法一:利用Cypress GUI自带的文件筛选

Cypress v10的GUI保留了文件搜索功能——在测试文件列表顶部的输入框中直接输入关键词,就能自动筛选出文件名包含该关键词的测试文件,选中后即可运行,效果和v9的搜索筛选一致。

方法二:命令行指定匹配文件

如果习惯用命令行运行测试,可以通过--spec参数指定匹配规则,精准筛选测试文件:

  • 筛选文件名包含login的所有测试文件:
cypress run --spec "cypress/e2e/**/*login*.cy.js"
  • 筛选特定目录下的测试文件:
cypress run --spec "cypress/e2e/auth/**/*.cy.js"

方法三:动态生成临时barrel文件

写一个Node.js脚本,根据传入的关键词自动生成临时barrel文件,运行完测试后自动删除,步骤如下:

  1. 创建脚本文件generate-temp-barrel.js:
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

// 从命令行获取搜索关键词
const keyword = process.argv[2];
if (!keyword) {
  console.log('请传入搜索关键词,示例:node generate-temp-barrel.js login');
  process.exit(1);
}

const e2eDir = path.join(__dirname, 'cypress/e2e');
const tempBarrelPath = path.join(e2eDir, 'temp.spec.cy.js');

// 筛选符合条件的测试文件
const matchedFiles = fs.readdirSync(e2eDir)
  .filter(file => file.endsWith('.cy.js') && file.includes(keyword))
  .map(file => `import './${file}';`);

// 生成临时barrel文件
const barrelContent = `// 自动生成的临时测试入口
${matchedFiles.join('\n')}`;
fs.writeFileSync(tempBarrelPath, barrelContent);

// 启动Cypress GUI运行筛选后的测试
try {
  execSync('cypress open --spec cypress/e2e/temp.spec.cy.js', { stdio: 'inherit' });
} finally {
  // 运行结束后删除临时文件
  fs.unlinkSync(tempBarrelPath);
}
  1. 运行脚本并传入关键词:
node generate-temp-barrel.js login

方法四:用测试标记(Tags)筛选更细粒度的用例

如果需要筛选单个测试用例而非整个文件,可以借助cypress-grep插件实现标记筛选:

  1. 安装插件:
npm install cypress-grep --save-dev
  1. 在cypress/support/e2e.js中引入插件:
require('cypress-grep')()
  1. 在测试用例中添加自定义标记:
// test1.spec.cy.js
describe('登录模块', { tags: ['auth', 'login'] }, () => {
  it('用户账号密码登录', { tags: ['positive'] }, () => {
    // 测试代码
  });

  it('无效密码登录失败', { tags: ['negative'] }, () => {
    // 测试代码
  });
});
  1. 筛选运行标记为login的测试:
  • 命令行运行:
cypress run --env grepTags=login
  • GUI中搜索框输入@login,即可筛选出带该标记的所有测试用例。

内容的提问来源于stack exchange,提问作者Florence.P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:05:26