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

Cypress 13.15.1无头测试本该失败却通过,求排查帮助

问题分析与解决办法

核心原因:错误使用async关键字

你的测试用例中添加了async修饰符,但Cypress的命令系统基于自身异步队列机制实现,完全不需要手动使用async/await。当给it函数加上async后,Node.js会将其视为普通异步函数,在函数执行完毕(此时Cypress的命令队列可能还未启动或完成)时就直接标记测试通过,完全忽略了后续cy.get命令的执行结果。

解决步骤

  1. 移除async关键字
    修改测试代码,去掉it.only后的async关键字:

    describe('Website Landing', () => {    
        it.only('Should load', () => {
            cy.visit('http://www.mywebsite.com/');
            cy.get('[data-testid="sign-inx"]').should('have.length', 1);
        })
    })
    
  2. 验证测试行为
    重新执行cypress run,此时Cypress会正常等待命令队列执行完毕,当页面不存在目标元素时,测试会按照预期失败。

额外排查点

如果移除async后问题仍存在,可以检查以下内容:

  • 通过cypress open启动有头模式,确认页面确实不存在data-testid="sign-inx"元素
  • 检查Cypress配置文件中的defaultCommandTimeout参数,确保超时时间足够覆盖页面加载(默认4000ms,可根据页面情况调整)
  • 查看测试运行日志,确认cy.visit是否成功加载目标页面,是否存在重定向等异常情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:38:12