Капибара требует сна, чтобы работать?
По-видимому,sleep
или жеwait_until
не действительны при использовании последних версий Capybara, в соответствии сстраница интернета Обновления.
Тем не менее, у меня есть набор тестов, которые работают на быстрых машинах, только если я добавлюsleep(1)
вызов к тесту. То есть тест, который выглядит так:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
становится
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
где я'мы определилиunix_wait
как:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
Дело в том, что у меня есть старый четырехъядерный ноутбук Ubuntu 12.04, который запускает эти тесты на Jenkins, и на нем все хорошо работает безunix_wait
звонки. Тесты случайно провалились на рабочем столе hexacore под управлением Ubuntu 13.10 и на ноутбуке MacBook Pro, но если я добавлю вunix_wait
позвоните, затем испытания пройдут.
Сами тестовые сбои указывают на сбои загрузки (т. Е. Элементы css отсутствуют на некоторых запусках, но не на других), а тестируемые объекты действительно работают, когда сайт загружается вручную.
И что'Соответствующее действие здесь? По-видимому,sleep
ISN»не допускается во время тестированияwait_until
, Тем не менее, сон работает, но он кажется мне очень грубым. Должен ли я смотреть на#synchronized
? Из того, что я собираю из тех сообщений в блоге, это 'мне уже звонят, когда я звонюclick_link
и тесты все еще не пройдены.
Какой протокол здесь принят?
Я должен добавить, потому что я думаю, что этоВажно: это все тесты javascript. Я'используя капибара-webkit, построенный на qt4 (не qt5). Я'Я рассматриваю переключение на poltergeist или другой драйвер javascript в качестве шага отладки.