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

Cypress测试Ionic Angular+Firebase登录时遇离线错误排查

问题排查:Cypress测试Firebase登录时出现"Failed to get document because the client is offline"

1. 网络连接问题

  • Cypress浏览器环境网络受限:Cypress默认会拦截并模拟网络请求,但Firebase的Auth、Firestore等服务依赖实时网络通信,若配置中存在额外网络限制(如未正确设置chromeWebSecurity: false)或代理干扰,可能导致客户端误判为离线。
  • 本地网络瞬时波动:手动登录正常不代表Cypress运行时网络状态稳定,瞬间丢包、DNS解析延迟都可能触发Firebase的离线判定,可尝试切换有线网络或重启路由器后重试测试。

2. 应用或Cypress本身问题

  • 测试环境状态残留:Cypress的测试隔离性可能未彻底清除Firebase本地缓存的离线状态,可在测试前置步骤中重置网络状态:
    cy.window().then(window => {
      window.firebase.firestore().disableNetwork();
      window.firebase.firestore().enableNetwork();
    });
    
    或在cypress.config.js中配置clearLocalStorage: true,确保每次测试从干净状态启动。
  • 版本兼容性隐性冲突:尽管未主动修改依赖,Cypress 12.x与Firebase 8.x可能存在未被记录的兼容性问题,可回退到1个月前测试正常的Cypress版本,或升级至最新稳定版验证。
  • Ionic网络插件误判:Cypress环境不支持Cordova原生插件,若应用依赖Ionic的Network插件判断网络状态并切换Firebase在线/离线模式,会导致测试环境下的误判,需在测试时禁用该逻辑。

3. Firebase后端变更

  • 旧SDK适配性问题:Firebase 8.2.5属于较旧版本,若后端调整了会话验证、文档读取的网络规则,旧SDK可能无法适配。可尝试升级Firebase与Angularfire至兼容稳定版本(如Firebase 9.x对应Angularfire 7.x,需注意版本匹配),或查看Firebase控制台状态页是否有服务变更通知。
  • 安全规则变更:检查Firebase控制台的Firestore安全规则,确认是否近期修改导致测试账号在Cypress环境下的文档读取权限受限(手动登录的请求上下文可能与Cypress不同),确保测试账号拥有对应文档的读取权限。

4. 其他原因

  • 跨域配置问题:确认Cypress配置中的origin已正确允许http://localhost:8100,避免CORS策略拦截Firebase请求,导致请求失败被判定为离线。
  • 本地安全软件拦截:防火墙、杀毒软件可能拦截Cypress浏览器的网络请求,而手动使用的浏览器未被限制,可临时关闭安全软件后重试测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:19:54