In che modo le persone scrivono test angolari di e2e che implicano l'attivazione di una sequenza di eventi dell'interfaccia utente? La natura asincrona dello scenario sembra renderla difficile.test di e2e per scenari angolari: attendere che gli eventi chiave vengano completati prima di procedere
dettagli: Sto scrivendo i test per un'applicazione che ha un sacco di gestione delle chiavi per facilitare la modifica di un modulo specializzato. Ho unito un'estensione della tastiera allo scenario dsl (vedi sotto), ma solo il primo evento chiave di un test ha alcun effetto. vale a dire
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
La seconda KeyDown non fa nulla, perché non trova un *: focus per instradare la chiave (anche se c'è uno sullo schermo). Confondere.
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;
};
});
Quindi il problema è probabilmente sul codice, non sul test. Vuoi pubblicare cosa sta facendo il tuo evento 'keydown' sulla tua app? Ho copiato il tuo test dello scenario e, aggiunto un 'browser.navigateTo', aggiunto un singolo' div' sul mio HTML ('tabindex =" 0 "'), e ho aggiunto un semplice evento che alterna il contenuto tra '' e '00: 40 'su keydown. Tutto ha funzionato bene. –