Я пытаюсь нажать кнопку в тесте транспортира. Однако я всегда получаю ошибку тайм-аута скрипта и понятия не имею, что делаю не так. Кнопка находится внутри диалогового окна материала. Диалог отображается сразу после запуска приложения 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 таймер уничтожает тесты транспортира?