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

Cypress测试顺序是否影响结果?PDF上传用例开头通过末尾报atob错误

问题原因分析

Failed to execute atob on Window报错的核心原因是代码尝试对非合法Base64格式的字符串执行解码操作,对应你的场景就是调用attachFile时传入的PDF相关内容不符合Base64规范,具体到测试顺序影响结果的情况,常见诱因有3种:

  • 测试套件状态污染

    如果你手动关闭了Cypress默认的测试隔离配置(testIsolation: false),或是将PDF文件路径、文件内容的读取逻辑放在了before全局钩子而非beforeEach每个用例前执行的钩子中,前面的测试用例可能会修改这个套件级别的变量值,比如误赋值为其他字符串、或是异步读取的内容被截断,导致后续测试调用上传方法时拿到非法内容。
    如果你使用的是较旧版本的cypress-file-upload插件,存在已知的缓存bug:多次调用attachFile上传Base64编码文件时会残留之前的文件缓冲区,导致后续传入的Base64字符串被拼接或截断,变成非法格式。

  • 文件路径解析失效

    如果前面的测试用例执行了自定义的文件系统操作、或是修改了Cypress的fixture目录默认配置,会导致你定义的pdfFilePath相对路径解析错误,最终读取到的不是目标PDF文件,而是404响应文本、错误日志这类非Base64内容,解码时自然触发报错。

  • 异步逻辑时序问题

    如果你是通过cy.fixture()异步读取PDF的Base64内容赋值给相关变量,测试放在套件开头执行时,环境资源充足,读取逻辑能在attachFile执行前完成;放到套件末尾执行时,前面的测试占用了较多内存和运行资源,异步读取速度变慢,attachFile执行时还没拿到完整的Base64内容,传入了空值或不完整的字符串触发报错。

快速排查方法

你可以在attachFile执行前加一行日志打印pdfFilePath以及实际读取到的文件内容,对比测试放在开头和末尾执行时的输出差异,就能快速定位具体诱因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:02