量角器无法在已部署的应用程序上检测到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>标签 我使用的是最新版本的Protractor,Cucumber,Chai和TypeScript.任何帮助将非常感激.非常感谢你提前!
这听起来像是一个潜在的Zone问题.角度取决于
ZoneJS(ngZone).在使用任何异步javaScript函数(如setTimeout(),setInterval()等)时遇到此错误并不罕见…
原因是ZoneJS猴子修补了这些功能,它是在Angular区域的上下文中完成的.当Protractor尝试连接到您的应用程序时,它不再在Angular Zone中运行,因此Protractor将挂起并最终因您收到的错误而超时. 如果我是你,我会看看你的应用程序是否有ZoneJS猴子补丁的任何异步功能.通常,在代码中查找在应用程序区域的上下文之外运行的任何内容. 这是一篇关于ZoneJS的好文章,它不仅可以帮助您理解ZoneJS,还列出了猴子修补的功能Understanding ZoneJS (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |