Почему я получаю ошибку тайм-аута сценария транспортира при попытке нажать кнопку? - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь нажать кнопку в тесте транспортира. Однако я всегда получаю ошибку тайм-аута скрипта и понятия не имею, что делаю не так. Кнопка находится внутри диалогового окна материала. Диалог отображается сразу после запуска приложения Angular. Мой код выглядит так:

  it('Dialog 1 check', () => {
    expect(page.getSelect().isPresent()).toBeTruthy();
    expect(page.getSaveButton().isPresent()).toBeTruthy();
    page.hitSaveButton().then(() => {
     browser.wait(ExpectedConditions.not(ExpectedConditions.presenceOf(page.getTitelElement())), 1000);
    });
  });
  getSelect() {
    return element(by.css('select'));
  }

  getTitelElement() {
    return element(by.id('title'));
  }

  getSaveButton() {
    return element(by.id('saveButton'));
  }

  hitSaveButton() {
    return this.getSaveButton().click() as Promise<any>;
  }

Если я вставлю browser.ignoreSynchronization = true; в начало метода, я могу нажать кнопку, но оба ожидают неудачи. При добавлении ignoreSyn c между двумя ожидаемыми данными и hitButton я также получаю ошибку тайм-аута сценария. Кто-нибудь знает решение этой проблемы?

Обновление: я нашел решение: я использую rx js -timer в своем компоненте приложения для получения данных с сервера каждые 60 секунд:

    timer(0, 60000).subscribe(() => {
      // data fetch from server
    });

При удалении все нормально. Я проверил несколько вариантов, и проблема определенно вызвана таймером. Даже если я просто напишу console.log внутри таймера, это вызовет ошибки тайм-аута. Есть идеи, почему rx js таймер уничтожает тесты транспортира?

...