Капибара требует сна, чтобы работать?
По всей видимости,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
не допускается во время тестирования и неwait_until
, Тем не менее, сон работает, но он кажется мне очень грубым. Должен ли я смотреть на#synchronized
? Из того, что я собираю из тех постов в блоге, это уже вызывается, когда я звонюclick_link
и тесты все еще не проходят.
Какой протокол здесь принят?
Я должен добавить, потому что я думаю, что это важно: это все тесты javascript. Я использую капибара-webkit, построенный на qt4 (не qt5). Я рассматриваю переключение на poltergeist или другой драйвер javascript в качестве шага отладки.