2016-10-11 7 views
3

私は手作業でブートストラップされた角度アプリケーションを作成しました。 2016年6月頃、テストは機能しましたが、もう動作しません。それ以来、以下の変更が発生している:角度2にアップグレードした後、角度計のテストが機能しなくなりました

  • 角度2は、アプリケーションのログイン部分が書き換えられている
  • リリースされました。もともと、ログインページはAngularをまったく使用していませんでした。今ではAngular 2を使用しています。残りのアプリケーションはまだAngular 1です。

私はログイン以外でアプリケーションとやりとりしないで、1つのテスト(たとえば「expect(true).toBe true) ")、すべてが完了し、エラーメッセージは生成されません。

私のテストの自動化をアプリと対話しない場合は、次のことが起こる:

  • を私conf.jsファイルは「useAllAngular2AppRoots:true」に含まれている場合:分度器を待っている「時限うち、私はエラーメッセージが表示されますhttps://github.com/angular/protractor/blob/master/docs/faq.md
  • 私のconf.jsファイルに "useAllAngular2AppRoots:true"が含まれていないと、「プロトラクターがページと同期するのを待っている間にエラーが発生しました:」というエラーメッセージが表示されます。要素のテスト容易性が見つかりませんでした。」

いずれの場合も、自動化はログインとアプリケーションのAngular1部分に進みます。

私が持っている質問は以下のとおりです。

  1. は分度器をテストするためにこの種のアプリケーション(Angular2ログインページ、他のすべてAngular1)は可能ですか?
  2. "useAllAngular2AppRoots:true"を使用する必要がありますか?
  3. 私が得ているエラーメッセージは、テストコードの特定の領域を修正するためのものではありません。どのように問題が起こっているのか判断するにはどうすればいいですか?この質問は、受信した最初の答えの後

EDIT 2016年10月27日 、私は失敗していたまさに突き止めるしようとしましたが、どこ。

私がことが判明:私のconf.jsファイルにrootElementを設定

  • は効果がなかったです。私はそれを完全に放棄したかどうか、具体的にはそれを 'body'に設定するか、それをランダムなナンセンス文字列に設定しても、私は同じ動作をします。
  • 私はまだ、エラーメッセージ 'AfterAll Failed:エラーがページと同期するのを待っている間にエラーが発生しました:「要素のテスト容易性を見つけることができませんでした」「テストしていない私のAfterAll関数で、ログアウトボタンをクリックするだけで
  • 私のテストのbeforeAll関数で 'browser.ignoreSynchronization = true'を設定すると、画面要素をクリックするなど、アプリケーションとやりとりする呼び出しを行うことができます。この行がなければ、そのような呼び出しは何の効果もありませんでした。しかし、私はこれが私がやるべきことではない、あるいは私が必要とするべきことではないと確信しています。
  • 'ブラウザでも。ignoreSynchronization = true '、by.repeater()と要素を一致させるなど、Angular1固有の呼び出しをしようとすると、エラーメッセージが表示されます。これは、Angular 1で書かれているため、ngForではなくng-repeatを使用しているアプリの部分で発生します。

この追加情報は、何が起こっているのかについてのさらなる洞察を与えますか?

+0

ウリッシュの解決策があなたのために働いた場合は、それを答えとしてマークしてください。 – santon

答えて

2

まず、最新の分度器(4.0.9)とzone.js> = 0.6.25を使用していることを確認する必要があります。

その後、あなたはまた、protractor's own test specsの例を見つけることができ、角度ハイブリッド1 + 2のアプリが含まれている各ページ、すなわち:

beforeEach(function() { 
    browser.ng12Hybrid = true; 
    browser.get('/somepage.html'); 
}); 

afterEach(function() { 
    browser.ng12Hybrid = false; 
}); 

ためtruebrowser.ng12Hybridを設定してください。

useAllAngular2AppRoots: trueについては、hereのように、アプリが完全に2に移行され、アップグレードアダプターが削除された場合にのみ使用してください。

あなたのプロジェクトに幸運を祈る!

+0

ありがとうございます。私はあなたの提案を実装しようとします。 – Phil

関連する問題