2011-05-25 22 views
5

He estado usando pepino + webrat, pero necesitaba una compatibilidad adicional con Rails 3 y pruebas de javascript cambiadas a capibara + selenio. Actualmente estoy en Rails 3.0.7, Cucumber 0.10.2, caybara 1.0.0.beta1.Pepino + Capibara + Selenio firefox abre example.com no es mi aplicación

Problema: Cuando ejecuto un escenario de JavaScript, firefox abre "http://www.iana.org/domains/example/" o "www.example.com" en lugar de mi aplicación de rieles.

Estoy seguro de que es solo una pequeña configuración que me falta, pero no puedo encontrarla y esto me ha dejado perplejo durante un par de días.

De todos modos, mi Gemfile lee:

group :development, :test do 
    gem 'cucumber' 
    gem 'cucumber-rails', ">= 0.3.2" 
    gem 'pickle' 
    gem "launchy" 
    gem "rspec-rails" 
    gem "Selenium" 
    gem "selenium-client" 
    gem "selenium-webdriver" 
    gem "database_cleaner" 
    gem "factory_girl_rails" 
    gem "capybara" 
    gem "escape_utils" 
end 

La característica es:

@wip 
    @javascript 
    Scenario: Calculate 1 recipe and be deducted a credit 
    Given the following page records 
     | name | permalink | 
     | home | home  | 
    And the following role records 
     | name  | 
     | SuperAdmin | 
     | Admin  | 
     | Customer | 
    When I register "adam" with password "password" 
    And I go to the index 
    Then I should see "5 credits" 

El paso que se abre la ventana de Firefox:

When /^I am logged in as "([^"]*)" with password "([^"]*)"$/ do |username, password| 
    unless username.blank? 
    visit(root_path) 
    fill_in "user_session_username", :with => username 
    fill_in "user_session_password", :with => password 
    click_button "login" 
    page.should have_content("Successfully logged in!") 
    end 
end 

mi características/soporte/env. rb:

require 'cucumber/rails' 
    require 'factory_girl' 
    require 'ruby-debug' 
    require 'selenium/client' 
    # require 'capybara/cucumber' commented out because it doesn't want to work with it in 
    Capybara.default_driver = :selenium 

    Capybara.server_boot_timeout = 50 
    Capybara.default_selector = :css 

    begin 
     DatabaseCleaner.strategy = :truncation 
    rescue NameError 
     raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it." 
    end 

símbolo del sistema dice:

When I register "adam" with password "password"  # features/step_definiti 
ons/web_steps.rb:229 
     no link with title, id or text 'register' found (Capybara::ElementNotFound 
) 
     (eval):2:in `click_link' 
     ./features/step_definitions/web_steps.rb:232:in `/^I register "([^"]*)" wi 
th password "([^"]*)"$/' 
     features\credit_behaviour.feature:30:in `When I register "adam" with passw 
ord "password"' 

Soy bastante nuevo a Rails y Ruby por lo que será fácil en mí con alguna sugerencia, por favor, decir que cualquier ayuda sería muy apreciada.

Respuesta

14

OK, lo tengo funcionando. Esto es lo que hice.

env.rb añadido:

require "selenium-webdriver" 

y cambió mis pasos con la visita root_url 'a:

visit root_path 

Creo que eso es todo lo que he cambiado.

Honestamente pensé que había intentado eso (y cualquier otra permutación de cualquier otro problema/corrección que he visto). No puedo creer que haya perdido 3 días en esto y encontré la respuesta solo horas después de publicar la pregunta públicamente.

+0

¿Significa que está utilizando "ruta" en lugar de "url" en cada prueba? ¿O encontró una forma mejor (tal vez ajustar el host o algo así?) –

+0

sí, estoy usando _path en lugar de _url. No estoy seguro de si es la manera "correcta" de hacerlo, pero funciona por ahora. – RickyD

+0

De acuerdo con el jnicklas, quiere asegurarse de que está utilizando _path y no _url, ya que puede tener consecuencias no deseadas. – Galaxy

Cuestiones relacionadas