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

Cypress测试Salesforce报'Whoops,there is no test to run'如何解决

Cypress测试Salesforce弹出「Whoops, there is no test to run」错误排查

这个报错在Cypress对接Salesforce Lightning应用的场景下非常常见,和你有没有写it测试块没有直接关系,核心是Cypress的测试运行上下文丢失,或者测试文件根本没被正确解析,按下面的顺序排查即可:

  • 优先排查跨域重定向冲掉测试上下文的问题
    Salesforce登录、模块跳转时会触发多次跨域重定向,很容易把Cypress注入到页面里的测试运行脚本顶掉,Cypress检测不到页面挂载的测试用例就会抛这个错。直接修改配置文件适配即可:
    打开cypress.config.js(Cypress10以前版本是cypress.json),在e2e配置块里加以下参数:
    e2e: {
      baseUrl: "填写自身使用的Salesforce测试环境地址",
      chromeWebSecurity: false,
      experimentalSessionAndOrigin: true,
      testIsolation: false
    }
    
    注意测试代码里不要随便用cy.visit()跳转到和baseUrl根域名不一致的外部地址,很容易直接跳出Cypress的测试上下文。
  • 排查测试文件语法/依赖错误
    如果describe块里存在语法问题——比如括号没闭合、导入的自定义命令报错、异步逻辑漏写await,Cypress解析测试文件失败,就会出现“文件存在但没有可运行用例”的情况。
    排查方法:打开Test Runner里的浏览器开发者工具,切到Console面板,查找红色的JS报错,顺着报错位置修复即可。可以先在测试文件最外层写个最简用例做验证:
    it('文件加载校验', () => {
      expect(1).to.equal(1)
    })
    
    如果连这个最简用例都加载不出来,百分之百是文件本身的语法、依赖问题。
  • 排查Salesforce CSP策略拦截Cypress脚本
    Salesforce Lightning默认开启严格的内容安全策略,会拦截非官方源注入的JS脚本,Cypress的运行脚本被拦截后自然没法识别待执行用例。在配置文件的setupNodeEvents节点加浏览器启动参数,绕过CSP限制:
    setupNodeEvents(on, config) {
      on('before:browser:launch', (browser, launchOptions) => {
        if (browser.family === 'chromium' && browser.name !== 'electron') {
          launchOptions.args.push('--disable-features=IsolateOrigins,site-per-process')
          launchOptions.args.push('--disable-web-security')
        }
        return launchOptions
      })
    }
    
  • 排查Test Runner的文件过滤问题
    检查Test Runner顶部的搜索过滤框,是不是误输入了过滤关键词,把写好用例的测试文件排除在外了;如果是刚新建的测试文件,直接重启Test Runner触发文件重新扫描即可。

实操提示:跑Salesforce测试不要用Cypress默认的Electron浏览器,优先选Chrome、Edge正式版,Electron对Lightning组件兼容性差,出现上下文丢失的概率高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:24:26