2011-12-07 8 views
14

通常、私はポート3000でrails devサーバを使用します。カピバラ/レールでセレンを使用する場合、サーバーをどのように設定するのですか?

Capybara/CucumberはCapybara.server_port = 31337を使用します。

  • セレンを使用している場合、私は別にテストをインスタンス化する必要があります:私はデフォルトのドライバからのセレンにスワップした場合、それがポート80

    に接続しようとするように私は理解しようとしているに見えますサーバーをテスト環境にインストールします。

  • 上記の質問に対する回答が「はい」の場合は、どのようにして変更することなく、Webドライバ間をシームレスにスワップできますか?

誰かが私に知らせるのに役立つenv.rb設定の例がある場合は、

ありがとうございます!

Chris。

答えて

14

セレンを使用する場合は、テスト環境でWebサーバーを起動する必要があります。開発とは異なるポートで起動することができます。あなたは私はあなたがcapybara webkitドライバを使用することをお勧めあなたのキュウリのシナリオを実行する前に、サーバーを毎回起動したくない場合

Capybara.run_server = true #Whether start server when testing 
    Capybara.server_port = 8200 
    Capybara.default_selector = :css #:xpath #default selector , you can change to :css 
    Capybara.default_wait_time = 5 #When we testing AJAX, we can set a default wait time 
    Capybara.ignore_hidden_elements = false #Ignore hidden elements when testing, make helpful when you hide or show elements using javascript 
    Capybara.javascript_driver = :selenium #default driver when you using @javascript tag 
    # Other option is: 
    # Capybara.javascript_driver = :webkit 

:次に、あなたがそのポートを使用するようにカピバラを設定する必要があります。すべてのjavascriptシナリオはバックグラウンドで実行されます。また、継続的な統合サーバーでも動作します。

Linuxプラットフォームの場合、capybara-webkitを実行するにはXサーバが必要です。それを設定するにはheadless gemを使用できます。キュウリのためのヘッドレス構成です:

# place code below in features/support/headless.rb 
if Capybara.current_driver == :webkit 
    require 'headless' 

    headless = Headless.new 
    headless.start 

    at_exit do 
    headless.destroy 
    end 
end 
4

これはあなたの質問に答えるかもしれませんが、ここに私のenv.rbファイル(関連ビット)があります。

Capybara.app_host = "http://0.0.0.0:3000" 
Capybara.server_port = 3000 

また、私はそこでこれを持っている:

Capybara.register_driver :iphone do |app| 
    require 'selenium/webdriver' 
    profile = Selenium::WebDriver::Firefox::Profile.new 
    profile['general.useragent.override'] = "iPhone" 

    Capybara::Selenium::Driver.new(app, :profile => profile) 
end 

たぶん、あなたはregister_driverビット内Capybara.app_hostと.server_portラインを持っているし、あなたのキュウリスクリプトでドライバーを切り替えることができます。 :/

関連する問題