2011-12-07 15 views
14

Normalmente utilizo el servidor de desarrollo de rieles en el puerto 3000.Cuando ejecuta selenio con carpincho/rieles, ¿cómo configuro el servidor?

Capybara/Cucumber utiliza Capybara.server_port = 31337. Si yo cambiaré desde el controlador predeterminado de selenio, parece que se trata de conectar en el puerto 80.

Estoy tratando de entender:

  • Cuando se utiliza el selenio, necesito para crear una instancia de una prueba por separado servidor en el entorno de prueba.
  • Si la respuesta a la pregunta anterior es sí, ¿cómo puedo hacerlo para poder cambiar sin problemas entre los controladores web sin tener que seguir cambiando las cosas?

Si alguien tiene un ejemplo de una configuración env.rb que podría ayudar, ¡hágamelo saber!

Gracias!

Chris.

Respuesta

14

Si usa selenio, debe iniciar el servidor web en el entorno de prueba. Puede iniciarlo en un puerto diferente del desarrollo. A continuación, debe configurar capibara a utilizar ese puerto:

Capybara.run_server = true #Whether start server when testing 
    Capybara.server_port = 8200 
    Capybara.default_selector = :css #:xpath #default selector , you can change to :css 
    Capybara.default_wait_time = 5 #When we testing AJAX, we can set a default wait time 
    Capybara.ignore_hidden_elements = false #Ignore hidden elements when testing, make helpful when you hide or show elements using javascript 
    Capybara.javascript_driver = :selenium #default driver when you using @javascript tag 
    # Other option is: 
    # Capybara.javascript_driver = :webkit 

Si no desea iniciar el servidor cada vez que antes de ejecutar los escenarios de pepino que sugerimos utilizar capybara webkit conductor. Todos los escenarios de JavaScript se ejecutarán en segundo plano. También funcionará en el servidor de integración continua.

Si se encuentra en la plataforma Linux, capybara-webkit requiere la ejecución de un servidor X. Para configurarlo, puede usar la gema headless. Aquí está la configuración sin cabeza para el pepino:

# place code below in features/support/headless.rb 
if Capybara.current_driver == :webkit 
    require 'headless' 

    headless = Headless.new 
    headless.start 

    at_exit do 
    headless.destroy 
    end 
end 
4

Esto puede o no responder a su pregunta, pero aquí está mi archivo env.rb (los bits relevantes).

Capybara.app_host = "http://0.0.0.0:3000" 
Capybara.server_port = 3000 

que también tienen esta ahí:

Capybara.register_driver :iphone do |app| 
    require 'selenium/webdriver' 
    profile = Selenium::WebDriver::Firefox::Profile.new 
    profile['general.useragent.override'] = "iPhone" 

    Capybara::Selenium::Driver.new(app, :profile => profile) 
end 

Tal vez usted puede tener la Capybara.app_host y líneas .server_port dentro del register_driver poco y cambiar conductor en las secuencias de comandos de pepino. :/

Cuestiones relacionadas