5

CI に poltergeist/phantomjs を使用していますが、必要に応じて JS ドライバーを selenium に変更して、テストをローカルで実行できるようにしたいと考えています。理想的には、このデフォルトのポルターガイストのコマンド ライン フラグが必要ですが、rspec --driver=selenium (または同様のもの) を実行できるようにする必要があります。

何か案は?

4

4 に答える 4

0

ハックの少ないソリューションと思われるものがあります。私は基本的に Jeff Perrin のソリューションをはぎ取っていますが、複雑さを軽減しています。

MyDatabaseCleanerは常に切り捨てを使用するように設定されているだけなので、その部分を条件付きで構成する必要はありません。

このように設定しますjavascript_driver

# spec/spec_helper.rb

Capybara.javascript_driver = ENV['USE_SELENIUM_FOR_CAPYBARA'] ? :selenium : :webkit

javascript_driver常に明示的に何かを設定している場合、Capybara のデフォルト ドライバーを設定する必要はないと思います。(ジェフは私が知らない何かを知っている可能性があります。)

これは、環境で設定していない限り、ドライバーとして Webkit を使用USE_SELENIUM_FOR_CAPYBARAします。

もちろん、RSpec をいずれかのドライバーで機能させたい場合は、Gemfile に Selenium と Webkit の両方のドライバー gem を含める必要があります。

于 2014-07-25T13:59:14.200 に答える
0

spec/spec_helper.rb で使用できるコマンドラインから環境変数を設定できます。

DEBUG = ENV['DEBUG'] || false
if DEBUG
  Capybara.default_driver = :selenium
else
  Capybara.default_driver = :rack_test
  Capybara.javascript_driver = :poltergeist
end

次のようにコマンドラインから実行できます。

DEBUG=true rspec spec/features/my_spec.rb:35

これにより、特定の行番号を指定できます。

使用しているカピバラ ドライバーに応じて、クリーンアップ戦略を変更する必要がある場合もあります (つまり、データベース クリーナーを使用する場合)。

RSpec.configure do |config|
  config.before(:suite) do
    if DEBUG
      DatabaseCleaner.strategy = :truncation
    else
      DatabaseCleaner.strategy = :transaction
    end

    DatabaseCleaner.clean_with(:truncation)
  end
end

凝りたい場合は、このスタックオーバーフローの回答と組み合わせることができます: https://stackoverflow.com/a/5150855/95683デバッグモードで実行されているときにセレンがスペックを実行する速度を遅くします:

config.before(:each) do |group|
  set_speed :slow if DEBUG
end
于 2014-02-11T16:47:33.380 に答える
0

このソリューションは私にとって完璧に機能しました。環境変数を設定し、その値を確認します。これを spec_helper.rb ファイルに追加します

if ENV['DRIVER'] =='poltergeist' # use any driver you want to run on circlci
  Capybara.default_driver = :poltergeist
  URL = # use your own end point like http://www.localhost:8080
else
   Capybara.default_driver = :selenium
   URL = # Use your end point
end 
Capybara.configure do |config|
  config.app_host = URL
end

そして、コンソールでこのコマンドを実行します

DRIVER=poltergeist rspec //ポルターガイストでテストを実行するため

rspec //セレンで実行する場合

于 2015-11-13T01:01:23.940 に答える
0

これに対する答えが見つからなかったので、私が思いついたハッキーな解決策を次に示します。

確実に変更できることがわかったのは、タグ付けシステムだけでした。だから私は -t ビジュアルタグを使って呼び出し、それを取り除きます。

spec/spec_helper.rb で

Rspec.configure do |config|
  if config.filter_manager.inclusions[:visual]
    Capybara.javascript_driver = :selenium
    config.filter_manager.inclusions.delete(:visual)
  else
    Capybara.javascript_driver = :poltergeist
  end

~rest of rspec config code~

でテストを実行できるようにrspec (tests to run) -t visual
なりました。これに関する主な問題は、特定のテストを実行できなくなることです。単一のファイルを実行することはできますが、特定の行番号で実行するためrspec spec/features/signup_spec.rb -t visualに a を追加することはできません。:54

于 2013-12-17T15:46:50.923 に答える