运行Cypress测试时跳转至登录页导致后续用例失败是什么原因
问题常见原因分类
1. 登录态持久化异常
- Cypress默认会在每个
it测试块执行完成后,自动清空当前上下文的Cookie、localStorage、sessionStorage数据,若未在beforeEach等前置钩子中做登录态持久化处理,后续测试用例发起请求时会被服务端判定为未授权,触发登录重定向。 - 登录态本身存在有效期限制,若测试套件整体运行时长超过登录态有效时间,运行到后半段时登录态自动过期,也会触发重定向。
- 前序测试用例包含登出、权限变更等会销毁原有登录态的逻辑,执行完成后未重新执行登录操作就运行后续需要登录态的用例,同样会触发该问题。
2. 路由/跨域策略触发
- 测试操作跳转到了未在
cypress.config.js中配置跨域许可的第三方域名,Cypress安全策略会自动重置当前上下文的所有存储数据,跳转回业务域名时会被前端权限路由守卫拦截,重定向到登录页。 - 前端路由权限守卫逻辑存在时序问题,比如登录态判定逻辑早于本地存储读取完成,在Cypress用例执行的高并发场景下容易误判未登录,触发重定向。
3. 全局错误拦截逻辑触发
- 前序测试用例执行过程中某个接口请求返回401未授权状态码,被前端全局请求拦截器捕获后触发了跳转登录页的逻辑,若未做测试环境隔离重置,后续所有测试用例都会在登录页执行导致全部失败。
- 测试代码中调用
cy.visit()访问了未做权限豁免的路径,未提前校验登录态就直接访问,被路由守卫拦截重定向。
内容的提问来源于stack exchange,提问作者user2345
相关产品推荐
相关产品推荐

