Подтвердить что ты не робот

Angular -scenario e2e testing - ожидание завершения ключевых событий перед продолжением

Как люди пишут тесты angular 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

Второе нажатие клавиши ничего не делает, потому что он не находит *: focus для маршрутизации ключа (хотя есть один на экране). Смешение.

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; 
    }; 
}); 
4b9b3361

Ответ 1

Пользователь, похоже, отказался от этого вопроса, но, как я сказал, , вероятно, это проблема с обработчиком событий keydown.

Сделано Plnker здесь с точно таким же кодом, и все работает как ожидалось.