Тестирование AngularJS E2E: как выполнить код один раз (как beforeEach)

Я запускаю тесты E2E на сайте AngularJS, используя Karma и angular-сценарий.

Я выполняю некоторый код входа в beforeEach функционировать перед каждым it блок.

Моя функция входа в систему имеет задержку по таймауту, чтобы гарантировать, что вход в систему завершается правильно. Это отнимает много времени и неэффективно (не говоря уже о не элегантности). Кроме того, пользователь будет входить в систему только один раз во время сеанса, так что это будет более точно моделировать мой сценарий.

То, что я ищу, это before функция, которая выполняет вход в систему только один раз для коллекции it блоки, содержащиеся в describe блок, но эта возможность, кажется, не существует (я проверил документы и исходный код).

Кажется очевидным требованием для библиотеки тестирования! Кто-нибудь решил эту проблему?

1 ответ

Решение

Вы могли бы использовать переменную флаг? например:

var bdone = false;
describe('Search POC', function() {
    beforeEach(function() {
        if (!bdone) {
            browser().navigateTo('login');
            console.log('navigated once');
            bdone = true;
        }
    });

     it ('should have an img link on the login results', function() {
         expect(element('a:last').html()).toMatch(/jpg/);
     });

    it ('should redirect to user details when clicked', function() {
        element('#UserThumbImage:first').click();
        expect(browser().window().href()).toMatch(/user/);
    });


});
Другие вопросы по тегам