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

Cypress 12测试执行顺序不稳定/偶发测试失败问题求助

解决Cypress 12测试执行顺序不稳定及偶发失败问题

一、强制固定测试执行顺序

  • 直接在cypress.config.js中硬编码测试文件列表,完全替代glob自动匹配:

    import { defineConfig } from 'cypress'
    
    export default defineConfig({
      e2e: {
        specPattern: [
          'cypress/e2e/auth/login.cy.js',
          'cypress/e2e/dashboard/overview.cy.js',
          'cypress/e2e/settings/profile.cy.js',
          // 按实际需求顺序列出所有测试文件
        ]
      }
    })
    

    这种方式彻底消除匹配顺序的不确定性,是调试阶段最直接的方案。

  • 若文件较多不想逐个列出,可通过文件系统读取+排序生成稳定的文件列表:

    import { defineConfig } from 'cypress'
    import fs from 'fs'
    import path from 'path'
    
    export default defineConfig({
      e2e: {
        specPattern: () => {
          const specDir = 'cypress/e2e'
          return fs.readdirSync(specDir)
            .filter(file => file.endsWith('.cy.js'))
            .sort() // 按文件名正序排序,可自定义规则调整顺序
            .map(file => path.join(specDir, file))
        }
      }
    })
    

二、排查偶发失败的核心原因

测试顺序变化后出现偶发失败,几乎都是测试用例间存在未隔离的依赖:

  • 部分测试修改了全局状态(如Cookie、LocalStorage、数据库数据)但未清理,后续测试依赖了被修改的环境。
  • 给每个测试添加独立的环境初始化步骤:
    beforeEach(() => {
      cy.clearCookies({ domain: null })
      cy.clearLocalStorage()
      cy.visit('/') // 确保每个测试从应用初始页面启动
    })
    
  • 检查是否存在共享测试数据或全局变量,确保每个用例的执行环境完全隔离。

三、关于Cypress 12的glob行为

Cypress 12内部可能调整了glob的实现逻辑(如依赖包升级、匹配策略修改),即使本地单独测试glob包顺序稳定,也不代表Cypress内部的调用方式一致。直接固定测试顺序是最稳妥的调试手段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:37:15