量角器无法在已部署的应用程序上检测到Angular 5

前端之家收集整理的这篇文章主要介绍了量角器无法在已部署的应用程序上检测到Angular 5前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Protractor和Cucumber为我的Web应用程序创建一个包含E2E测试的存储库.我已经开始使用此存储库: https://github.com/spektrakel-blog/angular-protractor-cucumber

当我强迫Protractor将应用程序视为常规网页时,测试运行正常.测试运行器正在与应用程序交互并期待一些结果.问题是,我想让Protractor检测Angular,以便在检查’Then’断言之前等待区域稳定.

这是我的protractor.conf.js:

exports.config = {
  allScriptsTimeout: 30000,capabilities: {
    browserName: 'chrome',chromeOptions: {
      args: ['--no-sandBox']
    }
  },directConnect: true,baseUrl: 'http://<ci-server-address>/',specs: [
    './e2e/features/*.feature'
  ],framework: 'custom',frameworkPath: require.resolve('protractor-cucumber-framework'),cucumberOpts: {
    require: ['./e2e/steps/**/*.ts'],strict: true,format: [
      'json:reports/summary.json'
    ],dryRun: false,compiler: []
  },onPrepare() {
    browser.ignoreSynchronization = true;
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
  }
};

简而言之 – 测试使用以下配置运行,但是当我删除browser.ignoreSynchronization = true;时,我收到以下错误:超时等待异步Angular任务在30秒后完成.这可能是因为当前页面不是Angular应用程序..

到目前为止我尝试过的事情(没有改进):

>将ng-app添加到< body>标签
>检查window.getAllAngularRootElements() – 正确返回app-root
> checking window.getAllAngularTestabilities() – 返回一个Testability对象
>在Chrome上启动测试(有或没有沙盒)
>在Firefox上启动测试
>尝试部署我们的应用程序的CI服务器和使用ng服务的本地环境

我使用的是最新版本的Protractor,Cucumber,Chai和TypeScript.任何帮助将非常感激.非常感谢你提前!

这听起来像是一个潜在的Zone问题.角度取决于 ZoneJS(ngZone).在使用任何异步javaScript函数(如setTimeout(),setInterval()等)时遇到此错误并不罕见…

原因是ZoneJS猴子修补了这些功能,它是在Angular区域的上下文中完成的.当Protractor尝试连接到您的应用程序时,它不再在Angular Zone中运行,因此Protractor将挂起并最终因您收到的错误而超时.

如果我是你,我会看看你的应用程序是否有ZoneJS猴子补丁的任何异步功能.通常,在代码中查找在应用程序区域的上下文之外运行的任何内容.

这是一篇关于ZoneJS的好文章,它不仅可以帮助您理解ZoneJS,还列出了猴子修补的功能Understanding ZoneJS

猜你在找的Angularjs相关文章