2012-05-09 15 views
8

En la documentación proporcionada por Capybara, se puede cambiar el default_driver en un grupo de prueba específica:¿Cómo se cambia el controlador predeterminado de prueba para una prueba de pepino en Capibara?

describe 'some stuff which requires js', :js => true do 
    it 'will use the default js driver' 
    it 'will switch to one specific driver', :driver => :selenium 
end 

¿Qué pasa si lo que quería hacer esto para un grupo específico de prueba de pepino? ¿Cómo agregaría esos parámetros?

When /^I do something$/ do 
    fill_in "a_text_box", :with => "stuff" 
    fill_in "another_text_box", :with => "another_thing" 
end 

¡Gracias!

Respuesta

5

En el pepino, he hecho esto en dos pasos:

En /features/support/env.rb, coloque la siguiente línea:

Capybara.javascript_driver = :webkit 

Luego, en la función de pepino, justo antes de la situación específica, agregue @javascript justo antes del escenario - como este:

@javascript 
Scenario: Successful sign in - with no flash message if using current firefox 
When I'm using a current version of Firefox 
When I visit the practitioner home page with "[email protected]"'s token 
Then I should be signed in as practitioner "Jane Doe" 
And I should be on the practitioner activities welcome page 
And I should not see a flash message warning me I have an unsupported browser 

Esto le dice a pepino que use el controlador javascript cuando ejecuta ese escenario en particular.

Así es como he hecho esto usando Capybara Webkit: estoy seguro de que otros controladores son similares.

+1

Capybara ahora cambia automáticamente a cualquier controlador con nombre que coincida con una etiqueta en su escenario, en lugar de ser un caso especial para '@ javascript'. p.ej. si crea un controlador 'tablet' y etiqueta su escenario con' @ tablet', ¡el controlador 'tablet' se utilizará automáticamente! –

+0

Gracias por ampliar la respuesta. –

+0

¿Esto hace que la prueba sea específica para el escenario y luego vuelve a su estado predeterminado? – Goalie

4
Capybara.current_driver = :webkit # temporarily select different driver 
#... tests ... 
Capybara.use_default_driver  # switch back to default driver 
+1

¿Me poner 'Capybara.current_driver =: webkit' justo antes del grupo When y luego el 'Capybara.user_default_driver' después? – Goalie

0

Con el pepino puede lograrlo con las etiquetas. Por ejemplo, si su controlador predeterminado es webkit pero desea ejecutar algún escenario con selenio, puede etiquetarlo con @selenium. Esto funciona con gem 'selenium-webdriver' por defecto

En general, si usted quiere cambiar a otro controlador (cromo sin cabeza en este ejemplo), coloque el código siguiente en features/support/drivers.rb:

# features/support/drivers.rb 
Around '@headless_chrome' do |scenario, block| 
    begin 
    Capybara.current_driver = :headless_chrome # temporarily select headless chrome 
    block.call 
    ensure 
    Capybara.use_default_driver    # switch back to default webkit driver 
    end 
end 
Cuestiones relacionadas