macos - rails - rspec and capybara
El selenio no funciona con Cucumber/Capybara(fuera de la caja)-MacOSX (2)
Tengo problemas para obtener un ejemplo de pepino para que funcione con selenio. Estoy corriendo
- Rails3
- Pepino 0.10.0
- Capibara 0.4.1.2
Leyendo el doco en https://github.com/jnicklas/capybara , parece que todo lo que necesito para obtener un ejemplo para ejecutar bajo selenio es hacer lo siguiente:
Paso 1: Prefijo el escenario con @javascript
@javascript
Scenario: User does x
...
Paso 2: Configure env.rb para decirle a capybara qué controlador usar:
Capybara.javascript_driver = :selenium
Cuando corro:
bundle exec cucumber feature/myfeature.feature
Obtengo lo siguiente:
Using the default profile...
F------------F
Failing Scenarios:
cucumber features/myfeature.feature:7 # Scenario: User does x
1 scenario (1 failed)
12 steps (12 skipped)
0m0.012s
Sin ventana de Firefox Nada. Corre, se cuelga y muere.
Para verificar si el capibara y el webliner de selenio funcionan, escribí el siguiente código:
require ''capybara''
require ''capybara/dsl''
Capybara.default_driver = :selenium
class Test
include Capybara
def dotest
visit(''http://www.stackoverflow.com'')
end
end
Test.new.dotest
Y lo ejecutó usando:
bundle exec ruby /tmp/test.rb
Eso funciona. Firefox abre la ventana y navega a www.stackoverflow.com.
Entonces, ¿cómo puedo obtener información de diagnóstico para entender qué le está haciendo pepino al capibara?
Estoy ejecutando OSX10., Ruby 1.8.7 y Firefox 3.6.13.
Ok ... descubrí mi problema. En algún lugar de los tazones de pepino hay una dependencia de DatabaseCleaner que se activa una vez cuando usas el controlador de selenio. La declaración de falla:
F______________F
Me dijo que la falla estaba ocurriendo en la configuración y desmontaje. Pepino no estaba informando la excepción e incluso con el -b no hizo nada.
Cómo encontré el problema:
Agregue ruby-debug como una dependencia de gema
Agregar requiere "ruby-debug" para env.rb
Agregué la siguiente declaración a env.rb:
Before do breakpoint; 0 end
Corrió la función usando bundle exec. El depurador entró en acción.
Escriba cat StandardError que indicará al depurador el punto de interrupción cuando se lanza "StandardError". StandardError es la clase base para todos los errores en Cucumber. Lo que queremos hacer es descubrir dónde se produce el error y por qué.
Ingrese cont para indicarle al depurador que continúe
Después de agregar el limpiador de base de datos como una dependencia de gema, todo desapareció. Firefox comenzó a dispararse y las cosas comenzaron a funcionar según lo anunciado.
Has probado
bundle exec cucumber feature/myfeature.feature
!!