Capybara mit has_no_css synchronisieren?

Seit dem Upgrade auf Capybara 2.4 ist dieses Problem aufgetreten. Bisher funktionierte dieser Block einwandfrei:

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

Es soll das Warten erzwingen, bis die Ajax-Anzeige verschwindet, bevor mit dem nächsten Schritt fortgefahren wird.

Da das obige a zurückgibtRSpec::Expectations::ExpectationNotMetErrorführt die Synchronisierung den Block nicht erneut aus und löst stattdessen nur den Fehler aus. Ich bin mir nicht sicher, warum dies in der Version funktioniert hat, die ich zuvor verwendet habe (ich glaube 2.1).

Dassynchronize block nur Wiederholungen von Blöcken, die etwa Folgendes zurückgeben:

Capybara::ElementNotFound
Capybara::ExpectationNotMet

Und was auch immer ein bestimmter Treiber dieser Liste hinzufügt.

In Justins Antwort finden Sie eine ausführlichere Erklärung und Beispiele, die nicht verwendet werdensynchronize, oder schau auf meine Antwort für die direkte Lösung.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage