2012-07-12 67 views
18

我有一些問題運行capybara-webkit與無頭的寶石,Xvfb和我們的ci服務器。我們使用此設置進行自動集成測試和我們的Ruby on Rails 3.2應用程序的JavaScript測試。在測試中,它抱怨說,無頭寶石:webkit_server:無法連接到X服務器

webkit_server: cannot connect to X server 

但是,當我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 

我看到Xvfb來運行。如果我使用--trace運行測試,它也只顯示上面的錯誤日誌,我無法調試錯誤。

任何想法如何獲得更多信息,甚至解決方案?

回答

14

我試圖得到與水豚一起工作的capybara-webkit gem,並最終在CI作業中使用xvfb-run進行了測試。

xvfb-run bundle exec cucumber ... 

您的CI作業正在執行的命令是什麼?

+0

我的配置項不執行任何xvfb命令。這是在無頭的寶石內處理的(https://github.com/leonid-shevtsov/headless)。現在我詳細瞭解了這一點,並且我可以看出,無頭啓動使用此命令「system」的Xvfb服務器#{CliUtil.path_to(「Xvfb」)}:#{display} -screen 0#{dimensions} -ac>/dev/null 2>&1&「',其中'CliUtil.path_to(」Xvfb「)'指的是''哪個#{app}'.strip'。在我的情況下,服務器返回'/ usr/bin/Xvfb'。好吧,我試着暫時覆蓋這個方法,以便它返回'xvfb-run'。也許這有助於 – 23tux 2012-07-21 20:42:54

+0

我試過了,但它沒有幫助。任何其他想法? – 23tux 2012-07-21 21:10:32

+0

同樣的問題在這裏。已經過了四個多小時。好像這個星球上有兩個人有這個問題。 – kikuchiyo 2012-07-23 06:05:55

5

我們遇到了同樣的問題......原來,在我們的spec_helper.rb中,我們錯過了無頭啓動命令(下圖)。

這裏是我們的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

爲什麼在規格配置文件中檢查生產環境?生產環境中不應該加載此文件? – 2013-10-16 21:23:35

3

如果你使用的特拉維斯CI,你可能會從這個配置設置得到一些里程:

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

前兩個'echo'語句不相關,可能會讓其他人感到困惑。 – 2016-04-07 14:23:59

1

安裝xvfb的

sudo apt-get install xvfb 

然後使用xvfb執行命令

​​3210