使用量角器进行ng-upgrade

Mat*_*son 4 angularjs protractor ng-upgrade angular

我正在努力将我的AngularJS(1.6)应用程序迁移到Angular(4),现在有一个混合应用程序,用NgUpgrade引导.

然而,这似乎完全破坏了我的量角器测试.

失败:超时等待异步Angular任务在11秒后完成.这可能是因为当前页面不是Angular应用程序.有关详细信息,请参阅常见问题解答:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular

在等待带定位器的元素时 - Locator:By(css selector,.toggle-summary-button)

混合应用更改

应用程序似乎运行正常,AngularJS和Angular组件都按预期工作.我在引导过程中所做的更改是:

1 ng-app从html标签中删除:

<html lang="en" *ng-app="myapp">

2添加了AppModules(@NgModule)等.

3使用NgUpgrade引导应用程序:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { UpgradeModule } from '@angular/upgrade/static';
import { AppModule } from './app.module';

platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
  const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
  upgrade.bootstrap(document.body, ['myapp'], {strictDi: true});
});
Run Code Online (Sandbox Code Playgroud)

量角器测试

基于上面的错误,问题似乎与Protractor在等待Angular时所做的事情有关.我有一个beforeEach块加载登录页面,填写详细信息并登录.奇怪的是它仍然打开页面并在用户名字段中输入文本,但随后它无法继续下去.

我无法理解为什么这有任何不同,并且没有多少变化的东西似乎有帮助,所以任何指导都是最受欢迎的!

我试过了,没有成功:

  • 将"rootElement:'body'"添加到我的量角器配置文件中
  • 将"ng12Hybrid:true"添加到我的量角器配置文件中 - 我收到一条消息,说它不再需要,因为它会自动检测到.
  • allScriptsTimeout设置从11000增加到60000并且仍然超时.
  • 关闭waitForAngularEnabled设置.这解决了登录字段的问题,但是我的http模拟没有工作,测试失败.

Seb*_*rin 6

有趣的是我在15个月前问过完全相同的问题(+ github)关于角度1到角度2:

量角器+混合角度1 + 2应用=失败

在没有任何解决方案的情况下,我回到了角度1.今天我们决定再次尝试从你的角度1上升到4,并且因为我们仍有完全相同的问题而落在你的问题上......

嗯,实际上并不那么有趣......我无法理解为什么这样一个如此重要的特征被抛弃了.由于Angular 2+的突破性变化,AngularJs应该被积极维护!这有点令人失望(对于那些期待真正答案的人抱歉,如果有更新,我会发布)...

  • 在2019年有同样的问题,从1.7升级到8.2并且所有测试都被破坏 (2认同)