2012-07-12 32 views
18

Tôi gặp phải một số sự cố khi chạy capybara-webkit bằng đá quý Không đầu, Xvfb và máy chủ ci của chúng tôi. Chúng tôi sử dụng thiết lập này cho thử nghiệm tích hợp tự động và thử nghiệm javascript của ứng dụng Ruby on Rails 3.2 của chúng tôi. Trong các cuộc thử nghiệm nó than phiền rằngĐá quý không đầu: webkit_server: không thể kết nối với máy chủ X

webkit_server: cannot connect to X server 

Nhưng khi tôi 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 

tôi thấy Xvfb chạy. Nếu tôi chạy thử nghiệm với --trace, nó cũng chỉ hiển thị nhật ký lỗi ở trên và tôi không thể gỡ lỗi.

Bất kỳ ý tưởng nào về cách tôi có thể nhận thêm một số thông tin hoặc thậm chí là giải pháp?

Trả lời

14

Tôi đã cố gắng để có được đá quý capybara-webkit làm việc với capybara và kết thúc bằng cách sử dụng xvfb-run trong công việc CI cho các bài kiểm tra của tôi.

xvfb-run bundle exec cucumber ... 

Lệnh CI của bạn đang thực thi là gì?

+0

CI của tôi không thực hiện bất kỳ lệnh nào cho xvfb. Điều này được xử lý bên trong viên ngọc Không đầu (https://github.com/leonid-shevtsov/headless). Bây giờ tôi đã có một cái nhìn gần hơn về điều đó, và tôi có thể tìm ra, mà không đầu bắt đầu máy chủ Xvfb với lệnh này 'hệ thống' # {CliUtil.path_to ("Xvfb")}: # {display} -screen 0 # {dimensions} -ac>/dev/null 2> & 1 & "', trong đó 'CliUtil.path_to (" Xvfb ")' dùng để chỉ '' mà # {app} '.strip'. Trong trường hợp của tôi, máy chủ trả về '/ usr/bin/Xvfb'. Ok, tôi cố gắng tạm thời ghi đè phương thức này, để nó trả về 'xvfb-run' thay thế. Có lẽ điều đó sẽ giúp – 23tux

+0

Tôi đã thử, nhưng nó không giúp được gì. Bất kỳ ý tưởng nào khác? – 23tux

+0

cùng một vấn đề ở đây. ở đây trong hơn bốn giờ. có vẻ như có hai người trên hành tinh với vấn đề này. – kikuchiyo

5

Chúng tôi gặp vấn đề tương tự ... Chỉ ra rằng trong spec_helper.rb của chúng tôi, chúng tôi đã thiếu lệnh bắt đầu không đầu (bên dưới).

Dưới đây là cấu hình rspec của chúng tôi:

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

tại sao bạn kiểm tra môi trường sản xuất trong tệp cấu hình cụ thể? nên tập tin này không được nạp khi trong sản xuất env? –

3

Nếu bạn đang sử dụng Travis CI, bạn có thể nhận được một số mileage từ thiết lập cấu hình này:

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

Hai câu lệnh 'echo' đầu tiên không liên quan và có thể gây nhầm lẫn cho người khác. –

1

Install Xvfb

sudo apt-get install xvfb 

Sau đó, thực hiện lệnh của bạn bằng cách sử dụng xvfb

xvfb-run rspec 
Các vấn đề liên quan