Тест транспортира висит на await browser.wait с отключенным потоком управления - PullRequest
0 голосов
/ 23 ноября 2018

Мы пишем тесты e2e асинхронно / ожидаемо, чтобы иметь возможность их отлаживать.Но тест, который имеет

await browser.wait(ExpectedConditions.presenceOf(appPage.getLogo()));

Просто висит на этой строке.Я не знаю почему, и я не понимаю.Он работает нормально, когда поток управления включен, но как только мы отключаем его, он начинает зависать.Тестовый пример выглядит следующим образом

it('should login', async () => {
    await page.navigateTo();
    await page.login();
    await browser.wait(ExpectedConditions.presenceOf(appPage.getLogo()));
    await browser.waitForAngularEnabled(false);
    expect(await browser.getCurrentUrl()).toContain('/login');
  });

Идея состоит в том, чтобы дождаться завершения навигации после того, как мы войдем в систему.В браузере, где я вижу выполнение e2e, ясно видно, что он достиг нужной страницы и там есть логотип, но он застревает там до истечения времени ожидания.Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 23 ноября 2018

Позвольте мне разобраться в сценарии:

Вы ждете входа в систему, и когда этот шаг сделан, он показывает логотип на другой странице, верно?Если это так, то я мог бы догадаться о проблеме.Допустим, что функция login () выполнена, прежде чем она сможет отобразить логотип в DOM, она уже запускает app.Page.getLogo ().Таким образом, у вас есть сценарий, подобный;

Login (), затем визуализирует логотип, затем getLogo ()

Так что вам сложно найти время рендеринга со страницы 1 -> страница 2. Это непостоянное времяИтак, вы хотите, чтобы в DOM было что-то, что запускает код и проверяет определенный элемент несколько раз.

Я не уверен, как был проведен ваш тест, чтобы проверить, доступен ли логотипили нет на странице, но я бы порекомендовал вам поискать идентификатор тега в DOM.

Просто чтобы посмотреть, работает ли ваша функция await, установите тайм-аут после вызова await page.login ();и посмотрите, что произойдет. Установите тайм-аут на 30 секунд, просто проверьте.

Так что обычно при рендеринге страницы вам, вероятно, понадобится таймер сна, который проверяет, есть ли элемент на следующей странице (элемент вашего входа в систему).-лог и т. д.)

Ссылка на код:

ожидание полной загрузки страницы не работает, как ожидалось в транспортире

...