Carpincho sincronizar con has_no_css?

Desde que actualicé a Capybara 2.4, me he encontrado con este problema. Anteriormente, este bloque funcionaba bien:

page.document.synchronize do
  page.should have_no_css('#ajax_indicator', :visible => true)
end

Está destinado a forzar la espera hasta que desaparezca el indicador ajax antes de continuar con el siguiente paso.

Como lo anterior devuelve unRSpec::Expectations::ExpectationNotMetError, la sincronización no vuelve a ejecutar el bloque y en su lugar solo arroja el error. No estoy seguro de por qué esto funcionaba en la versión que estaba usando antes (creo que 2.1).

lossynchronize block solo vuelve a ejecutar bloques que devuelven algo como:

Capybara::ElementNotFound
Capybara::ExpectationNotMet

Y lo que sea que un determinado controlador agregue a esa lista.

Vea la respuesta de Justin para una explicación más completa y ejemplos que no usansynchronize, o mira mi respuesta para la solución directa.

Respuestas a la pregunta(3)

Su respuesta a la pregunta