Cypress JS如何设置忽略指定的pending状态网络请求?
Cypress忽略指定pending网络请求解决方案
Cypress默认会等待页面发起的所有网络请求完成、失败或超时才会判定cy.visit执行完成,未完成的pending请求会阻塞后续用例执行,可通过以下几种方案解决:
- 方法1:拦截匹配目标请求,直接短路处理
这是最优方案,匹配到图标类请求后直接返回模拟响应,不发起真实网络请求,从根源规避pending等待问题。示例代码如下:
// 执行visit前先注册拦截规则,可根据实际情况调整匹配规则 cy.intercept('GET', '**/*.{svg,png,ico,jpg,webp}', (req) => { req.reply({ statusCode: 200, body: '' }) }) cy.visit('/')
如果只有特定路径的图标请求需要忽略,也可以把通配符替换为指定路径规则,比如**/icon/*精准匹配图标目录下的所有请求。
- 方法2:不拦截响应,仅跳过请求等待
如果需要真实请求正常发出,只是不想让Cypress等待这类请求完成再执行后续用例,可以按如下配置:
cy.intercept('GET', '**/*.{svg,png,ico,jpg,webp}', { log: false, continue: true }) cy.visit('/')
- 方法3:临时调整超时阈值(应急用)
如果不想配置拦截规则,可临时给当前cy.visit设置更长的超时时间,避免直接报错,但不会缩减等待时长:
cy.visit('/', { timeout: 15000 })

内容的提问来源于stack exchange,提问作者Metawaa
相关产品推荐
相关产品推荐

