升级至Cypress 10后cypress-grep grepOmitFiltered配置失效问题
问题现象
项目升级至Cypress 10版本后,cypress-grep插件的grepOmitFiltered配置项未按预期生效,实际运行表现等同于grepOmitFiltered: false状态,会读取加载所有spec文件。运行时还伴随目录操作权限警告。
当前使用的cypress.config.ts配置
/// <reference types="cypress" /> import { defineConfig } from 'cypress' export default defineConfig({ projectId: '22eajy', reporter: 'cypress-multi-reporters', viewportWidth: 1280, viewportHeight: 720, reporterOptions: { configFile: 'reporter-config.json', }, numTestsKeptInMemory: 1, videoUploadOnPasses: false, chromeWebSecurity: false, retries: 3, env: { grepOmitFiltered: true, }, video: true, e2e: { setupNodeEvents(on, config) { return require('cypress-grep/src/plugin')(on, config) }, specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', }, })
运行时输出的错误信息
Warning: We failed to trash the existing run results. This error will not alter the exit code. Error: spawn /Users/erdinc.ramanli/Library/Caches/Cypress/10.1.0/Cypress.app/Contents/Resources/app/node_modules/trash/lib/macos-trash EACCES at Process.ChildProcess._handle.onexit (node:internal/child_process:282:19) at onErrorNT (node:internal/child_process:477:16) at processTicksAndRejections (node:internal/process/task_queues:83:21)
修复方案
- 版本适配检查:cypress-grep 3.0.0以下版本不兼容Cypress 10的配置结构,会导致env配置读取失败,先将cypress-grep升级至兼容Cypress 10的最新版本。
- 配置加载逻辑修正:Cypress 10的配置合并逻辑和旧版本有差异,顶层env的grep配置可能不会被插件正确读取,需要在
setupNodeEvents中手动显式赋值配置项,确保插件拿到正确参数,修正后的setupNodeEvents写法如下:
setupNodeEvents(on, config) { // 显式注入配置,避免配置合并时丢失 config.env.grepOmitFiltered = true return require('cypress-grep/src/plugin')(on, config) }
- 权限警告修复:输出的trash操作EACCES报错和grep过滤逻辑失效无关,是Cypress缓存目录下文件缺少执行权限导致,执行以下命令赋予对应文件执行权限即可消除警告,该警告本身不会改变用例执行的退出码:
sudo chmod +x /Users/erdinc.ramanli/Library/Caches/Cypress/10.1.0/Cypress.app/Contents/Resources/app/node_modules/trash/lib/macos-trash
- 校验方式:运行Cypress时可以临时在命令前加
CYPRESS_grepOmitFiltered=true强制注入环境变量,验证过滤逻辑是否恢复正常,确认配置生效。
内容的提问来源于stack exchange,提问作者Erdinç Ramanlı
相关产品推荐
相关产品推荐

