8

Sto provando a scrivere una richiesta specifica per una pagina web.Errore di risposta non valida del webkit di Capybara, come eseguire il debug?

Questa pagina è in sviluppo senza errori.

Ma in esecuzione in capibara webkit ottengo questo errore dopo aver tentato di inviare il modulo:

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 

Nel tentativo di scoprire la causa che ho iniziato a nudo fuori markup e JavaScript nella pagina. Al punto in cui è una forma vuota con un semplice pulsante di invio. Ho ancora l'errore sopra riportato!

Il test è ora letteralmente:

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

Questo test ha tuttavia funziona se rimuovere l'opzione: js:

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

test Javascript funzionano in altre pagine di questa applicazione ...

Questo non ha senso per me. Qualcuno ha qualche suggerimento su come eseguire il debug da qui?

Grazie per qualsiasi aiuto

risposta

6

L'errore che stai vedendo è il modo criptico di più probabile capibara-webkit di dirvi che non v'è una sorta di eccezione nel pagina. Avevo the same problem un po 'di tempo fa, e la cosa "Impossibile caricare URL" mi ha completamente buttato fuori, rendendo difficile trovare il vero problema.

Come un paio di cose da provare, io suggerirei:

  • Assicurarsi di avere l'ultima versione di capibara-WebKit installato.
  • Controllare gli elementi del test tranne la forma effettiva, ad es. la logica del controller e tutti i modelli coinvolti. Rimuovi tutto finché non hai nulla.
  • Controlla lo discussion su questo problema e segui i lead da lì. Sono abbastanza sicuro che si tratti dello stesso problema o di uno correlato.

Buona fortuna!

+0

grazie ... assolutamente nel mio caso non aveva nulla a che fare con il selenio! –

+0

Il problema era che stavo forzando ssl nel mio application_controller senza esclusione per l'ambiente di test –

19

Aggiungere quanto segue al proprio capybara config.

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

Quando si ottiene un errore ora lo vedrai su stdout e cremagliera sarà rendering di una pagina con i dettagli circa l'ambiente (biscotti, ecc) e il backtrace.

+1

Grazie mille! Funziona alla grande! –

+0

Ho cercato questo per quello che sembra * per sempre *. Avevo errori di registrazione del videoregistratore che non venivano mostrati da nessuna parte, quindi non avevo idea di cosa stesse succedendo. Ora posso vedere il problema. Grazie! – mmrobins

+2

Questa dovrebbe essere la risposta accettata (la mia risposta era solo un paio di suggerimenti, questo risolve davvero il problema). –

2

sto lavorando con sottodomini e ho potuto farlo funzionare aggiungendo quanto segue al spec_helper.rb:

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

Ovviamente l'aggiunta di prima 127.0.0.1 subdomain.local.host al mio file /etc/hosts

2

ho avuto un problema simile e sono riuscito a risolvilo abilitando il test page.driver.browser.ignore_ssl_errors per i test abilitati a :js.Ecco il codice che ha funzionato per me:

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 
Problemi correlati