2017-02-08 3 views
0

Es gibt eine Methode mit einem asynchronen Block als Parameter.EarlGrey friert Animation ein und ruft Callback nicht

Wenn diese App zum ersten Mal ausgeführt wird, wird diese Methode aufgerufen, und es gibt eine Animation, die den gesamten Bildschirm abdeckt. Die Methode führt einen Netzwerkanruf durch, der ziemlich lange dauern kann, ungefähr 7 Sekunden oder so. Wenn der Block ausgeführt wird, beendet der Rückruf die Animation und die App ist wieder bereit für die Interaktion.

Wenn ich die App im Simulator starte und klopfe, läuft alles wie es soll. Wenn ich das EarlGrey-Testziel starte, erstarrt die Animation, und der Test schlägt fehl, weil ein Element nicht gefunden werden kann. Hinter der Animationsansicht (eine Unterklasse von UIView) werden einige Schritte erfolgreich ausgeführt, obwohl die Elemente nicht sichtbar sind.

Schließlich geschieht dies nur beim ersten Start der App, da der Netzwerkaufruf in nachfolgenden Testläufen viel kürzer ist.

Ich habe versucht, Konfigurationen zu ändern, um Animationen zu deaktivieren, und nichts scheint für mich zu arbeiten. Ich kann Code nicht wirklich einfügen, da die App proprietär ist.

Ich bin glücklich, alle klärenden Fragen zu beantworten, und freue mich sehr auf etwas Hilfe!

+0

Ich würde auch vorschlagen, versuchen Sie fragen auf ihrer Slack-Kanal 1-on-1, wenn es etwas ist, dass Sie nicht auf SO oder nicht wollen, dass die Welt zu sehen. – khandpur

+0

Das klingt großartig, ich habe gerade eine Anfrage für eine Einladung gesendet! – ArielSD

Antwort

1

Haftungsausschluss: Dies war alles @ khandpur. Ich bin dem Google Open Source Slack-Kanal beigetreten und er hat mir beim Debuggen geholfen.

Das Problem war die Verwendung von Facebook's Shimmer. Ich hatte diese Linie in der setUp Methode:

[UIApplication sharedApplication].keyWindow.layer.speed = 100;

Dies wurde Animationen zu beschleunigen, aber einige Konflikte mit Schimmern verursacht, nicht sicher, warum. Ich werde in ihrem Repo kommentieren.

Ich habe diese Zeile gelöscht, und während Tests ein wenig langsamer sind, sind sie jetzt völlig stabil.

0

Haben Sie in Betracht gezogen, kGREYConfigKeyURLBlacklistRegex zu verwenden, um die URL aufzulisten, d. H. Verhindern, dass EarlGrey auf die Anforderung wartet? (Angenommen, das Warten auf das Netzwerk ist für den Test unnötig). siehe EarlGrey/Common/GREYConfiguration.h

+0

Ich hatte gehofft, du würdest antworten, @Gautam! Die Netzwerkwartezeit ist erforderlich, da die zurückkommenden Daten zum Erstellen von Elementen verwendet werden, mit denen der Rest des Tests interagiert. Hast du schon mal von so etwas gehört? – ArielSD

+0

Ich denke, dass EarlGrey warten würde, außer dass die Animation eingefroren wird. – ArielSD

+0

Ich bin überrascht, dass Animation eingefroren wird, weil ich netzwerkintensive Apps bei Google EarlGrey ohne Probleme mit Animationen gesehen habe. Um die Situation weiter zu verstehen: Irgendeine Idee, wie die Animationen umgesetzt werden? [UIView-Animation] (https://developer.apple.com/reference/uikit/uiview/1622515-animatewithduration)? Einige niedrigere CoreAnimation? – Gautam

Verwandte Themen