/ / Comment puis-je exécuter des tests de systèmes de navigateur sans tête dans Rails 5.1? - ruby-on-rails, capybara, capybara-webkit, test du système

Comment puis-je exécuter des tests de systèmes de navigateur sans tête dans Rails 5.1? - ruby-on-rails, capybara, capybara-webkit, test du système

le documentation pour les tests du système Rails 5.1 est un peu clairsemé. Je ne parviens pas à obtenir des tests sans tête exécutant javascript. Je pense qu’une approche implique l’installation et l’exécution de xvf. Mais c’est une configuration plus manuelle que celle à laquelle je suis habitué lors de l’exécution de capybara dans d’autres versions de rails.

Quel est le moyen le plus simple d’y parvenir?

Réponses:

10 pour la réponse № 1

Dans les tests du système Rails 5.1, le pilote utilisé est défini par le driven_by appel dans ApplicationSystemTestCase (test / application_system_test_case.rb). En supposant que vous ayez enregistré votre pilote capybara-webkit en tant que "webkit", vous devriez pouvoir le faire.

driven_by :webkit

Une autre option potentielle si vous utilisez Chrome 59+ sur linux / mac consiste à utiliser du chrome sans tête.

Capybara.register_driver :headless_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => ["headless"])
end

puis dans votre classe de cas de test

driven_by :headless_chrome

Cela vous donne une version sans tête de chrome afincapybara-webkit / poltergeist ne supporte pas les standards Web actuels. Malheureusement, chromedriver rencontre actuellement des problèmes avec les modaux du système JS (alerte, confirmation, invite - solution de contournement dans capybara master branch) et se bloque si vous tentez de fermer des fenêtres lors de vos tests. Espérons que ces 2 problèmes seront bientôt résolus.

Notez également que les rails 5.1 aurait dû supprimer le besoin de database_cleaner pour la plupart des tests de gens, puisqu'il gère déjà le partage d'une connexion de base de données unique entre plusieurs threads en mode test.