2012-07-12 7 views
18

Tengo algunos problemas al ejecutar capybara-webkit con la gema Headless, Xvfb y nuestro servidor ci. Usamos esta configuración para las pruebas de integración automática y las pruebas de JavaScript de nuestra aplicación Ruby on Rails 3.2. Durante las pruebas se queja de queGema sin cabeza: webkit_server: no se puede conectar al servidor X

webkit_server: cannot connect to X server 

Pero cuando ps aux | grep Xvfb

deploy 1602 0.0 0.1 61696 1912 pts/2 S+ Jul10 0:00 /usr/bin/Xvfb :99 -screen 0 1280x1024x24 -ac 

veo la Xvfb ejecución. Si ejecuto las pruebas con --trace, también solo muestra el registro de errores anterior y no puedo corregir el error.

Alguna idea de cómo podría obtener más información, o incluso una solución?

Respuesta

14

Estaba tratando de obtener la joya capybara-webkit trabajando con carpincho y terminé usando xvfb-run en el trabajo de CI para mis pruebas.

xvfb-run bundle exec cucumber ... 

¿Cuál es el comando que está ejecutando su trabajo de CI?

+0

Mi CI no ejecuta ningún comando para xvfb. Esto se maneja dentro de la gema Headless (https://github.com/leonid-shevtsov/headless). Ahora lo observé más de cerca y pude darme cuenta de que el sistema headless inicia el servidor Xvfb con este comando 'system" # {CliUtil.path_to ("Xvfb")}: # {display} -screen 0 # {dimensions} -ac>/dev/null 2> & 1 & "', donde 'CliUtil.path_to (" Xvfb ")' se refiere a '' which # {app} '.strip'. En mi caso, el servidor devuelve '/ usr/bin/Xvfb'. Bien, intento anular temporalmente este método, de modo que devuelva 'xvfb-run' en su lugar. Tal vez eso ayuda – 23tux

+0

Lo he intentado, pero no sirvió. ¿Alguna otra idea? – 23tux

+0

mismo problema aquí. estado en esto por más de cuatro horas. parece que hay dos personas en el planeta con este problema. – kikuchiyo

5

Nos encontramos con el mismo problema ... Resulta que en nuestro spec_helper.rb nos faltaba el comando headless start (abajo).

Aquí está nuestra configuración rspec:

require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 
require 'capybara/rspec' 
require 'capybara/webkit' 
require 'headless' 

Capybara.register_driver :webkit do |app| 
    Capybara::Driver::Webkit.new(app, :ignore_ssl_errors => true) 
end 

Capybara.javascript_driver = :webkit 

# don't run on the local machine (since we don't have xvfb running locally) 
if Rails.env.production? 
    headless = Headless.new 
    headless.start 
end 
+3

¿por qué comprueba el entorno de producción en un archivo de configuración de especificaciones? ¿No debería este archivo NO cargarse cuando esté en Producción env? –

3

Si está utilizando Travis CI, es posible obtener algún provecho de esta opción de configuración:

before_install: 
- "echo 'gem: --no-document' > ~/.gemrc" 
- "echo '--colour' > ~/.rspec" 
- export DISPLAY=:99.0 
- sh -e /etc/init.d/xvfb start 
+0

Las dos primeras declaraciones 'echo' no están relacionadas y pueden ser confusas para otras. –

1

Instalar XVFB

sudo apt-get install xvfb 

A continuación, ejecute su comando usando xvfb

xvfb-run rspec 
Cuestiones relacionadas