Синхронизировать капибару с 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Или посмотрите на мой ответ для прямого решения.