8

Próbuję napisać specyfikację żądania dla strony internetowej.Błąd nieprawidłowej odpowiedzi Capybara Webkit, jak debugować?

Ta strona działa w dziale rozwoju bez błędów.

Ale działa w Kapibara WebKit otrzymuję ten błąd po próbie przesłania formularza:

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 

Starając się znaleźć przyczynę zacząłem stripping out znaczników i JavaScript na stronie. Do punktu, w którym jest to pusty formularz z prostym przyciskiem przesyłania. Nadal dostaję powyższy błąd!

Test jest teraz dosłownie:

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

Test ten ma jednak działać, jeśli mogę usunąć opcję: JS:

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

testy Javascript działają w innych stron w tej aplikacji ...

To nie ma dla mnie żadnego sensu. Czy ktoś ma jakieś sugestie, jak debugować tutaj?

Dzięki za wszelką pomoc

Odpowiedz

6

błąd Obserwujemy to najprawdopodobniej Kapibara-oprogramowania WebKit tajemniczy sposób z informacją, że jest jakiś wyjątek na stronie. Po jakimś czasie miałem the same problem, a "Nie można załadować adresu URL" całkowicie mnie wyrzuciło, przez co trudno było znaleźć prawdziwy problem.

jak kilka rzeczy, aby spróbować, polecam:

  • Upewnij się, że masz najnowszą wersję Kapibara-WebKit zainstalowany.
  • Sprawdź elementy testu inne niż rzeczywisty formularz, np. logika sterownika i wszystkie modele, które są zaangażowane. Rozbierz wszystko, póki nie masz nic.
  • Sprawdź w tym numerze discussion i podążaj za wskazówkami. Jestem prawie pewien, że to ten sam problem lub powiązany.

Powodzenia!

+0

dzięki ... absolutnie w moim przypadku nie ma to nic wspólnego z selenem! –

+0

Problem polegał na tym, że wymuszałem ssl w kontrolce application_controller bez wykluczenia dla środowiska testowego. –

19

Dodaj poniższe do swojej konfiguracji capybara.

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

Kiedy pojawi się błąd teraz zobaczysz go na standardowe wyjście i stojak odda stronę ze szczegółowymi informacjami o środowisku (ciasteczka itp) a backtrace.

+1

Wielkie dzięki! Działa świetnie! –

+0

Szukałem tego, bo wygląda na * na zawsze *. Miałem błędy nagrywania magnetowidu, które nie pojawiały się nigdzie, więc nie miałem pojęcia, co się dzieje. Teraz widzę problem. Dziękuję Ci! – mmrobins

+2

To powinna być zaakceptowana odpowiedź (moja odpowiedź była tylko kilkoma sugestiami, ta naprawdę rozwiązuje problem). –

2

pracuję z subdomen i mogłem zrobić to praca dodanie następujących do spec_helper.rb:

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

Oczywiście dodanie przed 127.0.0.1 subdomain.local.host do mojego pliku /etc/hosts

2

miałem podobny problem i był w stanie napraw to, włączając testy zezwalające na page.driver.browser.ignore_ssl_errors dla :js.Oto kod, który zadziałał:

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 
Powiązane problemy