【问题标题】:"Uncaught SyntaxError: Invalid or unexpected token" occurs when running e2e test for the angular app using cypress framework“未捕获的语法错误:无效或意外的令牌”在使用 cypress 框架为 Angular 应用程序运行 e2e 测试时发生
【发布时间】:2019-09-14 03:05:27
【问题描述】:

我正在使用cypress对我们的angular应用进行e2e测试,当cypress自动打开应用主页时,出现错误,并在浏览器控制台打印“Uncaught SyntaxError: Invalid or unexpected token”,如图所示附上截图,在vendor.xxx.js文件中似乎有乱七八糟的代码,但该文件是由angular框架自动编译生成的,在我们日常使用中没有问题。 cypress每次启动运行都不会出现的错误,如果我手动将URL输入浏览器访问应用程序,这个错误就会消失,我不确定是cypress触发还是启动浏览器时的错误测试一下,毕竟是cypress框架操纵浏览器。该错误发生在内置的 Eletron 浏览器和由 cypress 控制的 chrome 浏览器中。使用的 cypress 版本是 3.4.0,如果有人尝试提供一些建议,我将不胜感激,谢谢。

【问题讨论】:

  • 错误截图链接为:blog.csdn.net/qwegsb/article/details/100823983

标签: angular automated-tests e2e-testing cypress


【解决方案1】:

可能不太理想,但您是否尝试过添加

Cypress.on('uncaught:exception', (err, runnable) => {
    // returning false here prevents Cypress from
    // failing the test
    return false
  })

到您的支持文件夹下的 index.js?

如果有未捕获的异常,这将停止您的测试失败。

【讨论】:

  • 我已经尝试在cypress\support\index.js 文件中添加这个并开始为我工作,但不确定我得到这个的实际原因以及它是如何解决的。
【解决方案2】:
function d3_asin(x){
  return x > 1 half ??: x < -1 ? half :math.asin(x);
}

 function d3_asin(x){
   return ((x = Math.exp(x)) - 1 / x) / 2;
 }

在独立 Chrome 上运行的相同文件已正确加载,因此它必须是赛普拉斯编码的问题。经过一番谷歌搜索,我们发现赛普拉斯设置具有此属性的默认设置:

"modifyObstructiveCode": true

设置为 false 后效果很好。

【讨论】:

    【解决方案3】:

    您可以通过将文件 browserlist 的名称更改为 .browserlistrc 来解决它。 我遇到了同样的问题,它对我有帮助。 查看以下问题:

    https://github.com/cypress-io/cypress/issues/8864

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多