2012-07-12 19 views
18

Başsız mücevher, Xvfb ve ci sunucumuzla capybara-webkit'i çalıştırırken bazı problemlerim var. Ruby on Rails 3.2 uygulamasının otomatik entegrasyon testi ve javascript testi için bu kurulumu kullanıyoruz. testler sırasında buHeadless gem: webkit_server: X sunucusuna bağlanamıyor

webkit_server: cannot connect to X server 

şikayet Ama 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 

Ben Xvfb çalışan görünce. Testleri --trace ile çalıştırırsam, sadece yukarıdaki hata günlüğünü gösterir ve hatayı ayıklayamıyorum.

Daha fazla bilgiye nasıl ulaşabileceğime dair herhangi bir fikrin var mı, hatta bir çözüm mü?

cevap

14

Capibara ile çalışan capybara-webkit gemini almaya çalışıyordum ve testlerim için CI işinde xvfb-run kullanarak sona erdi.

xvfb-run bundle exec cucumber ... 

CI işinizin yürütmekte olduğu komut nedir?

+0

Benim CI, xvfb için herhangi bir komut yürütmez. Bu Başlıksız mücevher içinde ele alınır (https://github.com/leonid-shevtsov/headless). Şimdi buna daha yakından baktım ve bunu anlayabiliyordum, bu başsız Xvfb sunucusunu bu sistemle başlatıyor "sistem" # {CliUtil.path_to ("Xvfb")}: # {display} -screen 0 # {dimension} -ac>/dev/null 2> & 1 & "', burada 'CliUtil.path_to (" Xvfb ")' 'hangi # {app}' .strip' anlamına gelir. Benim durumumda sunucu '/ usr/bin/Xvfb' döndürür. Tamam, bu yöntemi geçici olarak geçersiz kılmaya çalışıyorum, böylece bunun yerine xvfb-run işlevini döndürüyor. Belki de bu denedim – 23tux

+0

yardımcı, ama yardımcı olmadı. Başka fikirlerin var mı? – 23tux

+0

aynı sorun burada. dört saatten fazla süredir. Bu konuda gezegende iki kişi var gibi görünüyor. – kikuchiyo

5

Aynı sorunla karşılaştık ... Bizim spec_helper.rb'de başsız başlatma komutunu (aşağıda) kaçırdığımızı ortaya çıkarır. Travis CI kullanıyorsanız

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

Neden üretim ortamını spec yapılandırma dosyasında kontrol ediyorsunuz? Bu dosya Üretim env'de ne zaman yüklenmemelidir? –

3

, bu yapılandırma ayarı bazı kilometre alabilirsiniz:

İşte RSpec yapılandırma var

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

İlk iki “echo” ifadesi ilgisiz ve diğerleri için kafa karıştırıcı olabilir. –

1

yükleyin xvfb

sudo apt-get install xvfb 

Sonra komutunu xvfb

kullanarak yürütün.
xvfb-run rspec