Мы тестируем веб-приложение с использованием Cucumber и жемчуга PageObject, запускаем CI на TeamCity. Мы столкнулись с проблемой, которую никто из нас не может решить.TeamCity - Приемочные испытания на огурцы, не срабатывающие в течение дня, но проходящие в ночное время
Мы имеем доступ к двум выпадающим спискам, объединенное содержимое которых генерирует поле выбора радио. Когда я запускаю его с моего локального компьютера, он проходит, но при запуске с сервера интеграции в той же среде он больше всего не работает ...
... кроме ночи. Я сконфигурировал некоторые запланированные сборки, чтобы я мог наблюдать их в стабильной среде, и он последовательно проходит всю ночь.
Ошибка, которую она выбрасывает, заключается в том, что выпадающее меню страны (второе поле, в зависимости от «клиент», которое является первым) не содержит значения для выбора. Я проверил его вручную, и кажется, что поле Client пусто.
Код ошибки, приводящий к ошибке, приведен ниже. Обратите внимание, что я пробовал несколько способов доступа к этому, включая отказ от Watir Webdriver, но ни одна из них не имела никакого значения.
Считаете ли вы, что это просто проблема с производительностью? Я не понимаю, как это может быть из-за того, что тестовые агенты запускают только один проект за раз, поэтому теоретически они должны выполнять то же самое независимо от нагрузки на сборку.
def safe_select_client(value, attempts = 10)
count_attempts_to(attempts)do
self.client_code = value
if self.client_code_element.selected? value
next
else
$stdout.puts attempts-1
safe_select_client(value, attempts-1)
end
end
end
def safe_select_country(value, attempts = 10)
count_attempts_to(attempts) do
self.client_country = value
if self.client_country_element.selected? value
next
else
safe_select_country(value, attempts-1) unless self.client_country_element.selected? value
end
end
end
def safe_select_proposition(value, attempts = 10)
count_attempts_to(attempts) do
self.select_default_proposition
safe_select_proposition(value, attempts-1) unless default_proposition_selected?
end
end
Глядя на код выше, кажется, что вы устанавливаете значение при выпадающем списке, а затем сразу проверяете, установлено ли значение. Зачем ты это делаешь? Что заставило вас написать этот код? – Cheezy
Поскольку это значение не было надежно установлено в элементе. Я бы закончил сдержанными скриптами, потому что зависимые select_lists не были заполнены. Я никогда не мог воспроизвести это вручную, но все время видел его в автоматизированном наборе. –
Скорее всего, это сценарии с задержкой, потому что, очевидно, они сообщают об ошибке и переходят после таймаута. –