Cypress自动化Google登录时遇ResizeObserver循环超限错误求助
解决Cypress中Google登录时ResizeObserver循环超限的未捕获异常问题
问题原因
ResizeObserver loop limit exceeded 是应用代码触发的未捕获异常,Cypress默认会将这类异常判定为测试失败,导致你的Google登录流程测试中断。
解决方案
方案1:在单个测试中忽略该异常
在你的测试块中添加uncaught:exception事件监听,匹配目标错误并返回false,阻止Cypress标记测试失败:
describe('empty spec', () => { // 拦截未捕获异常,忽略ResizeObserver相关错误 Cypress.on('uncaught:exception', (err) => { if (err.message.includes('ResizeObserver loop limit exceeded')) { return false; } }); it('login multi domain ', () => { cy.visit('/login'); cy.get('form > .flex').click({force:true}); cy.origin(`https://accounts.google.com`, ()=>{ cy.get("#identifierId").type("user"); cy.get(".VfPpkd-LgbsSe-OWXEXe-k8QpJ").click({force:true}); cy.get(`#password`).type("pass"); cy.get(".VfPpkd-LgbsSe-OWXEXe-k8QpJ").click({force:true}); }) }) })
方案2:全局配置(适用于多个测试场景)
如果多个测试都遇到该错误,可在Cypress的全局支持文件中添加监听,让所有测试自动忽略该异常:
- 打开
cypress/support/e2e.js(或旧版本的cypress/support/index.js) - 添加以下代码:
Cypress.on('uncaught:exception', (err) => { // 匹配ResizeObserver循环超限错误,返回false跳过失败判定 if (err.message.includes('ResizeObserver loop limit exceeded')) { return false; } });
注意事项
- 返回
false仅针对指定异常生效,其他未捕获异常仍会正常触发测试失败,不影响测试的错误检测能力 - 若异常是在Google登录页面(
accounts.google.com)触发的,可在cy.origin块内添加同样的监听逻辑,但该错误通常源于你的应用代码,主测试块的监听即可覆盖
内容的提问来源于stack exchange,提问作者Yovel Hadad
相关产品推荐
相关产品推荐

