2015-04-30 33 views
25

我一直在使用$超時進行輪詢(另請參見:waitForAngular超時),這是造成間歇性超時的原因。我不知道它是否也會在沒有投票的情況下失敗。對於我們的團隊來說,由於我們依賴於角度材料組件,因此更加重要。他們在持續使用$ timeout(func,0)的動畫交互中佔據重要地位。 此問題與issue #29966301類似,但重點介紹Angular Material和量角器之間的可能問題。 我真的很想知道,如果他們遇到了這些問題,那麼大量使用Angular Material和Protractor的人會如何處理這些問題。使用角度材料和量角器進行E2E測試是否存在問題?

有趣的是,我沒有在量角器和角材料github網站上看到任何其他能力的利用。由於它們都是來自Google的同一組的Angular庫,因此@juliemr和量角器幫會與@ThomasBurleson和Material組討論以使用量角器爲角度材料提供全面的用例和E2E測試,以清除這些問題。

+0

不完全和答案,但對於動畫,我已經成功地使用顯式等待與預期的條件(http://stackoverflow.com/a/29151849/771848)。 – alecxe

+0

我其實已經開始全面使用EC。它確實減少了這些問題的發生,但它們仍然間歇性地發生。 –

+0

你能提供一個具體的例子嗎? (HTML和測試中遇到問題的片段?) –

回答

1

好量角器旨在測試的角度,因此,如果您正在使用waitForAngular功能,您的網站的角度,你不應該使用,你應該做到以下幾點beforeEach測試:

browser.ignoreSynchronization = false; 

,你可以這樣做使你的測試速度更快,可能會幫助消除超時問題,您量角器,conf.js文件添加以下代碼:

...

onPrepare: function() { 
    var disableNgAnimate = function() { 
     angular.module('disableNgAnimate', []).run(function($animate){ 
      $animate.enabled(false); 
     });  
    }, 
    browser.addMockModule('disableNgAnimate', disableNgAnimate); 
}, 

...

也許你應該檢查這個video了。

+1

ignoreSynchronization似乎大量地混淆了測試,因爲它看起來像是量角器團隊打算使用它的方式。我已經禁用了動畫,並且仍然偶爾在Angular上等待測試失敗。無論是直接連接還是通過Selenium運行,都會發生。 –

1

我會補充說,禁用ngAnimate可能不夠。您可能還必須通過在量角器'onPrepare'選項中注入CSS來禁用Angular Material的CSS動畫。 (How to disable animations in protractor for angular js application)。

+0

您可以在答案中添加說明,並附上鍊接。 – Vikrant

+0

不知道我理解你的評論。你的意思是我應該在那裏複製/引用鏈接的內容到這裏? – dhwang