2017-05-05 1 views
6

documentation for Rails 5.1 system testsは少し疎です。私はjavascriptを実行するヘッドレステストを実行することができません。私は1つのアプローチはxvfのインストールと実行を必要とすると考えています。しかしこれは、他のバージョンのレールでcapybaraを実行するときに慣れていたものよりも手動での設定です。Rails 5.1でヘッドレスブラウザシステムテストを実行するにはどうすればよいですか?

これを達成する最も簡単な方法は何ですか?

答えて

8

Rails 5.1のシステムテストでは、使用されるドライバはApplicationSystemTestCase(test/application_system_test_case.rb)のdriven_by呼び出しによって設定されます。あなたは

driven_by :webkit 

に別の潜在的なオプションを行うことができるはずあなたは「WebKitの」としてあなたのカピバラ、WebKitのドライバを登録していると仮定すると、あなたは、Linux/Mac上でクロム59+を使用する場合

Capybara.register_driver :headless_chrome do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => ['headless']) 
end 
ヘッドレスクロムを使用することです

してからテストケースクラスであなたのクロムのヘッドレスバージョンを与える

driven_by :headless_chrome 

ので、現在のWeb標準をサポートしていないカピバラ-のWebKit /ポルターガイストの問題のどれも。残念ながら現在chromeriverはJSシステムのモーダル(アラート、確認、プロンプト - capybara masterブランチの回避策)に問題があり、テスト中にウィンドウを閉じるとハングします。うまくいけば、これらの2つの問題がすぐに修正されることを願って

はまた、それはそれは、すでにテストモードでは、複数のスレッド間で単一のデータベース接続の共有を扱うので、5.1は、ほとんどの人々のテストのためのdatabase_cleanerの必要性を取り除いているはずレールに注意してください。

+0

ありがとう! "あなたがcapybara-webkitドライバを 'webkit'として登録したと仮定すると、どうすればいいですか? –

+1

は@JohnBachirは 'Capybara.register_driver'を使用して - あなたは1つの自動登録があるでしょう、あなたのプロジェクトにカピバラ-のWebKitが含まれている場合 - あなたは設定を変更する必要がある場合のみ、ドライバの登録を介して設定することができることを変更する必要があるだけだろう - HTTPS ://github.com/teamcapybara/capybara#configuring-and-adding-drivers非推奨メッセージを回避するには –

+0

、あなたは::セレン 'の[' add_argument'構文:: webdriverを:: Chromeを使用する必要があるとしていますOptions'](https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/Chrome/Options.html#add_argument-instance_method)を参照してください。 – croceldon

関連する問題