транспортир несогласованные результаты - Ошибка: время ожидания сценария: результат не был получен - PullRequest
0 голосов
/ 01 октября 2018

В моем угловом приложении у меня тест на транспортировку e2e.Я только что проводил один и тот же тест несколько раз подряд, и он проходил около 5% времени, не пройдя с ошибкой на скриншоте ниже.

The Test:

it('should open the cart with the cart button in the header', () => {
    page.navigateTo('/calendar/day/(dmy:27-9-2018)');

    page.cartButton().click();

    expect(element(by.css('h2.cart-header')).isPresent()).toBe(true);
});

Экземпляр chrome, запущенный паузами транспортира, показывает, что кнопка была нажата, и присутствует элемент h2 (см. Изображение внизу).

Что я пробовал

  1. Я заменилданные в этом компоненте с фиктивными данными для устранения асинхронных операций
  2. У меня отключена анимация
  3. Я попытался сделать эту функцию асинхронной: ... header', async () => { ...
  4. Я пытался подождать (ing) элемент: expect(await element(by.css('h2.cart...
  5. Я пытался browser.sleep(1000)
  6. Я пытался различные утверждения, такие как .toBe(true), .toEqual(true) и .toBeTruthy()

Что является причиной этой ошибки и как ее устранить?

Сообщение об ошибке: enter image description here

Элемент присутствует в браузере, запущенном транспортиром enter image description here

Ответы [ 2 ]

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

isPresent () возвращает обещание, которое вам нужно разрешить.Да, используйте функцию async () + await, чтобы легко ее разрешить. Более того, используйте модуль ExpectedConditions так:

let cart = await element(by.css('h2.cart-header'))
await browser.wait(ExpectedConditions.visibilityOf(cart), 5000, "Cart is not visible even in 5 seconds!")
0 голосов
/ 26 октября 2018

Пожалуйста, используйте browser.ignoreSynchronization = true;

...