Синхронизировать капибару с has_no_css?
После обновления до Capybara 2.4 я столкнулся с этой проблемой. Ранее этот блок работал нормально:
page.document.synchronize do
page.should have_no_css('#ajax_indicator', :visible => true)
end
Это означает принудительное ожидание, пока индикатор ajax не исчезнет, прежде чем перейти к следующему шагу.
Поскольку вышесказанное возвращаетRSpec::Expectations::ExpectationNotMetError
, синхронизация не перезапускает блок, а просто выдает ошибку. Не уверен, почему это работало в версии, которую я использовал раньше (я считаю, 2.1).
synchronize
block только перезапускает блоки, которые возвращают что-то вроде:
Capybara::ElementNotFound
Capybara::ExpectationNotMet
И все, что определенный драйвер добавляет в этот список.
Смотрите ответ Джастина для более полного объяснения и примеров, не использующихsynchronize
Или посмотрите на мой ответ для прямого решения.