2012-07-12 13 views
18

Ho alcuni problemi con capybara-webkit con la gemma senza testa, Xvfb e il nostro server ci. Utilizziamo questa configurazione per i test di integrazione automatici e per i test javascript della nostra app Ruby on Rails 3.2. Durante le prove si lamenta cheGemma senza testa: webkit_server: impossibile connettersi al server X

webkit_server: cannot connect to X server 

Ma quando ho 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 

vedo il Xvfb esecuzione. Se eseguo i test con --trace, mostra anche solo il log degli errori sopra riportato e non riesco a eseguire il debug dell'errore.

Qualche idea su come ottenere ulteriori informazioni o anche una soluzione?

risposta

14

Stavo cercando di far funzionare il capybara-webkit gem con capybara e ho finito con l'utilizzo di xvfb-run nel lavoro CI per i miei test.

xvfb-run bundle exec cucumber ... 

Qual è il comando in corso?

+0

Il mio elemento della configurazione non esegue alcun comando per xvfb. Questo è gestito all'interno della gemma senza testa (https://github.com/leonid-shevtsov/headless). Ora ho dato un'occhiata più da vicino a questo, e ho potuto capire, che headless avvia il server Xvfb con questo comando 'system" # {CliUtil.path_to ("Xvfb")}: # {display} -screen 0 # {dimensions} -ac>/dev/null 2> & 1 & "', dove 'CliUtil.path_to (" Xvfb ")' si riferisce a '' quale # {app} '.strip'. Nel mio caso il server restituisce '/ usr/bin/Xvfb'. Ok, provo a sostituire temporaneamente questo metodo, in modo che restituisca 'xvfb-run'. Forse questo aiuta – 23tux

+0

, ma non è stato d'aiuto. Altre idee? – 23tux

+0

stesso problema qui. è stato a questo per oltre quattro ore. sembra che ci siano due persone sul pianeta con questo problema. – kikuchiyo

5

Ci siamo imbattuti nello stesso problema ... Risulta che nel nostro spec_helper.rb ci mancava il comando di avvio senza testa (sotto).

Ecco la nostra configurazione 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

perché si verifica l'ambiente di produzione in un file di configurazione delle specifiche? questo file NON dovrebbe essere caricato quando è in produzione env? –

3

Se stai usando Travis CI, si potrebbe ottenere un po 'di distanza in miglia da questa impostazione di configurazione:

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

Le prime due istruzioni 'echo' non sono correlate e potrebbero essere fonte di confusione per gli altri. –

1

Installare Xvfb

sudo apt-get install xvfb 

Quindi esegui il comando usando xvfb

xvfb-run rspec 
Problemi correlati