2011-12-23 12 views
12

Uso capybara, capybara-webkit, capybara-screenshot junto con pepino. (Rubí 1.9.3, 3.1.3 Carriles) y Capybara.javascript_driver = :webkit también se establece env.rbCapybara-webkit intenta abrir example.com

Desafortunadamente correr una especificación de pepino con @javascript no tendrá éxito por alguna razón y las capturas de pantalla de error simplemente capturan example.com.

La URL que intento abrir se genera con un resultado de enrutador de rieles para uno de mis modelos, p. con visit products_url

Entonces, ¿cómo puedo evitar que termine consultando example.com?

Cualquier entrada es bienvenida.


hecho de que el comentario está en mal estado - esto es lo que encontré fue la solución:

Capybara.run_server = true 
Capybara.server_port = 7787 
Before '@javascript' do 
    Capybara.app_host = "http://127.0.0.1:#{Capybara.server_port}" 
end 

Respuesta

11

Trate de usar visit products_path lugar. No recomiendan utilizar URL absolutas en la sección "Gotchas" del README.

+0

Usando products_path termina con un error en el primer lugar: No se puede cargar la URL: file: /// productos (capibara :: Controlador :: :: Webkit WebkitInvalidResponseError) Pero una vez que configure también la app_host Comienza trabajando. Así que esa es mi configuración actual: Capybara.run_server = true Capybara.server_port = 7787 Antes '@javascript' hacer Capybara.app_host = "http://127.0.0.1:#{Capybara.server_port}" final Además esto: http://www.emmanueloga.com/2011/07/26/taming-a-capybara.html parece que resolver algunos otros escollos con capibaras y rieles 3.1 – pagid

+0

Parece que los errores no se aplican a Webkit cuando hablando de URL absolutas –

1

Para mí, había muchas zapatillas "gotcha" (y yo estaba usando Capybara con Rspec). Originalmente en una especificación que tenía:

visit "foos/5" 

Esto funcionó bien con Rack::Test pero cuando quería cambiar al controlador webkit para probar las interacciones js, tengo esa excepción (No se puede cargar la URL: file: /// productos (Capybara :: Driver :: Webkit :: WebkitInvalidResponseError)).

Lo que tenía que hacer era cambiar la ruta pasé a visitar, así:

visit "/foos/5" 

Éxito !!

1

Aquí hay otro posible problema, publicado para otros que puedan tener este problema. Estaba probando el almacenamiento en caché de acciones, y la clave que genera Rails se ve como "views/www.example.com/products". Esto sucede incluso si usa products_path como la url. Esto puede llevar a la necesidad de configurar su nombre de servidor para que pueda saber de antemano qué clave de caché esperar.

Cuestiones relacionadas