31
一連のUIイベントをトリガする角度e2eテストを作成する人々はどのようにしていますか?シナリオの非同期性が難しいようです。角度シナリオe2eテスト - 進行する前にキーイベントが完了するのを待つ
詳細: 私は特殊なフォームの編集を高速化するためのキー処理が多いアプリケーションのテストを書いています。私は、シナリオdsl(以下を参照)にキーボード拡張をまとめましたが、テストの最初のキーイベントだけが効果を持ちます。それは*を見つけることができませんので、すなわち
keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual('00:04');
keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down
expect(element('*:focus').text()).toEqual(''); // but equals 00:04
第二のKeyDownは、何もしない:フォーカスをルーティングするための鍵を(画面上のものもあるが)。混乱する。
angular.scenario.dsl('keyboard', function() {
var chain = {};
chain.keydown = function(selector, keyEvent, keyCode, shift, ctrl) {
return this.addFutureAction("keyEvent", function($window, $document, done) {
var jQuery = $window.$;
var e = jQuery.Event(keyEvent);
e.keyCode = keyCode; // # Some key code value
e.altKey = false;
e.ctrlKey = ctrl;
e.shiftKey = shift;
if (selector == null) selector = '*:focus';
var j = jQuery(selector);
if (j == null) j = jQuery('body');
j.trigger(e);
done();
});
};
return function() {
return chain;
};
});
問題はおそらくあなたのコードではなく、あなたのテストです。あなたの「keydown」イベントがあなたのアプリでやっていることを投稿してください。あなたのシナリオテストをコピーし、 'browser.navigateTo'を追加し、HTMLに' div'を1つ追加しました( 'tabindex =" 0 "')、 ''と'00の間で内容を切り替えるシンプルなイベントを追加しました: keydownの40 '。すべてうまくいった。 –