我使用poltergeist / phantomjs作为CI,但我希望能够选择将JS驱动程序更改为selenium以观察我的本地测试运行。理想情况下,我想为这个默认的恶意攻击者设置一个命令行标志,但能够运行rspec --driver = selenium(或类似的东西)
有什么想法吗?
答案 0 :(得分:0)
永远不会找到答案,所以这就是我提出的hacky解决方案:
我发现我唯一能够可靠改变的是标记系统。所以我打电话使用-t visual tag然后把它带走。
在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
执行单个文件,但无法添加:54
以在特定的行号运行。
答案 1 :(得分: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
如果你想获得幻想,你可以将它与这个stackoverflow答案结合起来https://stackoverflow.com/a/5150855/95683,以减慢selenium在DEBUG模式下运行时运行规范的速度:
config.before(:each) do |group|
set_speed :slow if DEBUG
end
答案 2 :(得分:0)
我认为可能是一个不太讨厌的解决方案。我基本上是在扯掉Jeff Perrin的解决方案,但却不那么复杂。
我的DatabaseCleaner
设置为始终使用截断,因此无需有条件地配置该部分。
以这种方式设置javascript_driver
:
# spec/spec_helper.rb
Capybara.javascript_driver = ENV['USE_SELENIUM_FOR_CAPYBARA'] ? :selenium : :webkit
如果我们总是明确地设置javascript_driver
,我认为没有必要设置Capybara的默认驱动程序。 (Jeff可能知道我不知道的事情。)
除非您在环境中设置了USE_SELENIUM_FOR_CAPYBARA
,否则这将使用Webkit作为驱动程序。
如果您希望RSpec能够与任一驱动程序一起运行,您当然也应该在Gemfile中同时拥有Selenium和Webkit驱动程序。
答案 3 :(得分: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 //用于在poltergeist上运行测试
rspec //用于在selenium上运行