End-2-end тестирование Angular TypeScript Protractror - устранение необходимости в вызовах browser.sleep () в коде - PullRequest
0 голосов
/ 18 декабря 2018

Я пишу в интерфейсе на Angular с TypeScript.Мы используем транспортир для тестирования конца-2-конца.Проблема в том, что на наших экранах есть несколько секций, которые складываются / разворачиваются, или модалы, которые появляются и закрываются при нажатии кнопок.

На них мы должны добавить browser.sleep(500) после нажатия, чтобы открыть ихтак что они будут открыты до следующей части теста.

Это лучший способ? или мы должны добавить своего рода обратный вызов, когда окно / секцияоткрывать / закрывать и продолжать только тогда, когда он вызывается?

if('the confirmation modal opens, I can accept', () => {
  element(by.id('openPopUpButton')).click();
  browser.sleep(500);
  expect(element(by.id('confirmationTextString')).isPresent()).toBeTruthy();
});

Я не решаюсь добавить код, предназначенный специально и исключительно для правильной работы тестов.Я бы предпочел, чтобы мы могли как-то полагаться на async / await или обещания, но возможно ли это?

1 Ответ

0 голосов
/ 18 декабря 2018

browser.wait() - более детальная версия сна.Используя Ожидаемые условия , вы можете заставить свой код ждать желаемого условия.Например (Использование вашего кода)

let EC = protractor.ExpectedConditions;
element(by.id('openPopUpButton')).click();
let confirm = element(by.id('confirmationTextString'));
browser.wait(EC.presenceOf(confirm),15000); //Timeout of 15 seconds
expect(confirm.getText()).toBe('Random Text') //Checked for text since wait basically checks for isPresent

Если элементу требуется 1 секунда, чтобы стать настоящим, он будет ждать только 1 секунду, но если вы используете медленный браузер и для загрузки требуется 10 секунд, вашкод будет ждать 10 секунд.

...