8

Ich versuche, eine Anforderungsspezifikation für eine Webseite zu schreiben.Capybara webkit ungültiger Antwortfehler, wie man debuggt?

Diese Seite funktioniert in der Entwicklung ohne Fehler.

Aber in Capybara webkit läuft ich diesen Fehler nach dem Versuch, das Formular senden:

Failure/Error: Unable to find matching line from backtrace 
Capybara::Driver::Webkit::WebkitInvalidResponseError: 
    Unable to load URL: https://127.0.0.1:33416/sign_in 

In dem Bemühen, die Ursache herauszufinden ich Markup und JavaScript auf der Seite Strippen begonnen habe. Bis zu dem Punkt, wo es ein leeres Formular mit einem einfachen Absenden-Button ist. Ich bekomme immer noch den obigen Fehler!

Der Test ist nun wörtlich:

it "should be able create a new foo", :js, :focus do 
    visit new_foo_path 
    find('#submit').click 
end 

Dieser Test jedoch funktioniert, wenn ich die entfernen: js Option:

it "should be able create a new foo", :focus do 
    visit new_foo_path 
    find('#submit').click 
end 

Javascript Tests arbeiten in anderen Seiten auf diese Applikation ...

Das ergibt für mich keinen Sinn. Hat jemand irgendwelche Vorschläge, wie man von hier debuggt?

Vielen Dank für jede Hilfe

Antwort

6

Der Fehler Sie sehen, ist höchstwahrscheinlich kryptische Art und Weise Sie das Capybara-Webkit zu sagen, dass irgendeine Art von Ausnahme gibt es in der Seite. Ich hatte the same problem eine Weile zurück, und die "Unable to URL" -Ding warf mich total ab, so dass es schwierig ist, das eigentliche Problem zu finden.

Als ein paar Dinge zu versuchen, würde ich vorschlagen:

  • Stellen Sie sicher, dass die neueste Version von Capybara-webkit installiert haben.
  • Kontrollelemente des Tests, die nicht das tatsächliche Formular sind, z. die Steuerungslogik und alle beteiligten Modelle. Streifen Sie alles aus, bis Sie nichts mehr haben.
  • Überprüfen Sie die discussion zu diesem Thema und folgen Sie den Leads von dort. Ich bin mir ziemlich sicher, dass es das gleiche oder ein ähnliches Problem ist.

Viel Glück!

+0

danke ... absolut richtig in meinem Fall hatte überhaupt nichts mit Selen zu tun! –

+0

Das Problem war ich zwang ssl in meinem Application_controller ohne Ausschluss für die Testumgebung –

19

Fügen Sie Ihrer Capybara-Konfiguration Folgendes hinzu:

require 'rack/utils' 
Capybara.app = Rack::ShowExceptions.new(NameOfYourRailsApp::Application) 

Wenn Sie einen Fehler jetzt werden Sie es auf stdout sehen und Rack wird eine Seite mit Informationen über die Umwelt (Cookies etc.) und der Backtrace darstellen.

+1

Vielen Dank! Es funktioniert super! –

+0

Ich habe nach etwas gesucht, was wie * für immer * aussieht. Ich hatte Videorekorder-Aufzeichnungsfehler, die nirgendwohin auftauchten, also hatte ich keine Ahnung, was vor sich ging. Jetzt kann ich das Problem sehen. Vielen Dank! – mmrobins

+2

Dies sollte die akzeptierte Antwort sein (meine Antwort war nur ein paar Vorschläge, diese löst wirklich das Problem). –

2

Ich bin mit Subdomains arbeiten, und ich konnte es das Hinzufügen der folgenden machen arbeiten zu spec_helper.rb:

Capybara.configure do |config| 
    config.javascript_driver = :webkit 
    config.server_port = 3000 
    config.app_host = "http://subdomain.local.host:3000" 
end 

Offensichtlich Zugabe vor 127.0.0.1 subdomain.local.host meine /etc/hosts Datei

2

ich ein ähnliches Problem hatte und konnte beheben Sie es, indem Sie page.driver.browser.ignore_ssl_errors für :js freigegebene Tests aktivieren.Hier ist der Code, der für mich funktioniert:

config.before(:each) do 
    if Capybara.current_driver == :webkit 
     # Need to manually specify ignoring of SSL errors 
     page.driver.browser.ignore_ssl_errors 
    end 
end 
Verwandte Themen