Я столкнулся с очень странной проблемой. У меня был набор тестов, которые я провожу ежедневно на Jenkins, и без каких-либо заметных изменений некоторые утверждения (ожидаемые) начали терпеть неудачу. Странно то, что они терпят неудачу ТОЛЬКО, если я выполняю тесты от Jenkins в Browserstack. Локально все нормально, локально в браузере все нормально, на saucelabs все нормально. У меня есть 3 блока it () с похожими ожиданиями:
value1 = $('.someclass');
value2 = ..
value3 = ..
expect(value1.getText()).toContain('tratata');
expect(value2.getText()).toContain('uhuhuhu');
expect(value3.getText()).toContain('ahahaha');
все они расположены в разных блоках it (). Теперь странная вещь:
Когда я выполняю тесты, тест с 1-м блоком assert проходит нормально, на 2-м блоке он говорит, что assert терпит неудачу (я делаю кое-что, чтобы изменить значения), но вручную / локально я вижу, что все в порядке. Кроме того, пока выполняется тест, я вижу, что значения меняются (я даже делал скриншоты и проверял визуальный журнал в браузере). В 3-м блоке я выполнил другое действие и снова завершился ошибкой assert, НО сравнил его со значением, которое я ожидал с шага 2, а не с шага 1 !! Похоже, что по какой-то причине я на шаг позади ... Если я прокомментирую его блок или просто утверждаю в 1-м тесте, 2-й проходит нормально, а 3 - нет. Если я прокомментирую 2, это блок, 3-й пройдет нормально.
Похоже, что в этом конкретном случае по какой-то причине происходит какое-то волшебство и только на Jenkins и только на Browserstack. Кстати тесты какое-то время работали без проблем и запускались без обновлений.
Я подумал, что по какой-то причине у меня проблемы с потоком управления, Я ЖДУ, чтобы элементы были представлены дополнительно, я пробовал анти-шаблон browser.sleep () также, чтобы лучше его исследовать, но он волшебным образом продолжает отставать.
Я не ищу конкретного решения напрямую, но любые предложения будут приняты с благодарностью, я не уверен, какую дополнительную информацию мне следует предоставить, надеюсь, я достаточно описал проблему.
@ protractor2.1.0 @ жасмин2.3.2
browser.ignoreSynchronization = false
it('', function () {
expect(viewBookingDetailsPage.totalCostSection.depositDue.getText()).toContain('542.00');
expect(viewBookingDetailsPage.totalCostSection.remainingBalance.getText()).toContain('4,878.00');
expect(viewBookingDetailsPage.totalCostSection.totalDepositAmount.getText()).toContain('5,420.00');
});
it('', function () {
$(viewBookingDetailsPage.eventAndItemsSection.addItemsBtn).click();
helper.waitElementToBeVisisble(viewBookingDetailsPage.addItemsModal.modalOpen);
viewBookingDetailsPage.addonItemAttribute(0, viewBookingDetailsPage.addItemsModal.events).click();
helper.waitElementToBeVisisble(viewBookingDetailsPage.addItemsModal.eventSelectionPopup);
viewBookingDetailsPage.addItemsModal.availableEvents.then(function (events) {
//Morning event
events[3].$('i').click();
viewBookingDetailsPage.addonItemAttribute(0, viewBookingDetailsPage.addItemsModal.selectItem).click();
viewBookingDetailsPage.addonItemAttribute(1, viewBookingDetailsPage.addItemsModal.selectItem).click();
viewBookingDetailsPage.addItemsModal.addButton.click();
helper.waitElementToDisappear(viewBookingDetailsPage.addItemsModal.modalOpen);
helper.waitElementToBeVisible(viewBookingDetailsPage.addonItemDetail(0, 0, 0, viewBookingDetailsPage.eventAndItemsSection.itemName));
expect(viewBookingDetailsPage.totalCostSection.depositDue.getText()).toContain('592.00');
expect(viewBookingDetailsPage.totalCostSection.remainingBalance.getText()).toContain('5,328.00');
expect(viewBookingDetailsPage.totalCostSection.totalDepositAmount.getText()).toContain('5,920.00');
});
});
it('', function () {
viewBookingDetailsPage.addonItemDetail(0, 0, 0, viewBookingDetailsPage.eventAndItemsSection.removeItem).click(); ----- method just returns element into multiple internal repeaters
expect(viewBookingDetailsPage.totalCostSection.depositDue.getText()).toContain('580.00');
expect(viewBookingDetailsPage.totalCostSection.remainingBalance.getText()).toContain('5,220.00');
expect(viewBookingDetailsPage.totalCostSection.totalDepositAmount.getText()).toContain('5,800.00');
});
it
? Кроме того, было бы полезно, если бы вы разместили более подробный пример кода, который не работает. - person finspin   schedule 31.08.2015