Comment sont les gens de l'écriture angulaire e2e tests qui impliquent le déclenchement d'une séquence d'événements de l'UI? La nature asynchrone de scénario semble rendre difficile.
détails: Je suis en train d'écrire des tests pour une application qui a beaucoup de gestion des clés pour aider à la vitesse de l'édition d'une forme particulière. J'ai réuni une extension du clavier pour le scénario dsl (voir ci-dessous), mais seul le premier événement majeur de un test a aucun effet. c'est à 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 deuxième keydown ne fait rien, car il ne trouve pas de *:focus sur route de la clé (même si il y en a un sur l'écran). Source de confusion.
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;
};
});