J'ai Chrome sans tête et Chrome fonctionnant pour mes tests Rspec. Je veux qu'un drapeau permute entre les deux pour que je puisse voir les tests se dérouler quand je veux et les cacher quand je ne le veux pas. Comment puis-je implémenter quelque chose comme:
Capybara.javascript_driver = Rails.application.secrets.headless ? :headless_chrome : :chrome
Pour le moment, j'ai juste ce secret lié à un .env
var:
rspec --headless
3 Réponses :
Eh bien, remplacer la variable d'environnement fonctionne donc c'est quelque chose.
HEADLESS=true rspec
Juste une note pour tous ceux qui trouvent ça maintenant. Cela ne fonctionne apparemment qu'avec Rails> = 5.1, pas avec Rails 5.0.
Hmm, j'utilise personnellement ce code pour enregistrer le pilote:
Capybara.register_driver :chrome do |app| capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( chromeOptions: { args: [ ('headless' if ENV.fetch('HEADLESS', '1') == '1') ].compact } ) Capybara::Selenium::Driver.new( app, browser: :chrome, desired_capabilities: capabilities ) end
puis dans .env
vous pouvez définir la variable pour être HEADLESS ou non par défaut, puis si vous voulez l'écraser, tapez simplement HEADLESS = 0 rspec
Je ne sais pas en quoi c'est différent de ce que j'ai écrit.
dans votre rails_helper.rb, vous devez créer une instruction comme celle-ci:
$ HEADLESS=true rspec ./spec/features
puis envoyer une variable lors de l'exécution de specs
RSpec.configure do |config| config.before(:each) do if ENV['HEADLESS'] == 'true' Capybara.current_driver = :selenium_chrome_headless else Capybara.current_driver = :selenium_chrome end end end