2017-06-02 3 views
1

J'utilise des tests système dans Rails 5.1 et je souhaite désactiver les captures d'écran automatisées pour les cas de défaillance. Habituellement, le message d'échec est assez pour moi de comprendre ce qui se passe - et notamment, la fenêtre du navigateur Webdriver prend toujours le focus afin de prendre une capture d'écran, ce qui est ennuyeux quand je travaille sur le code (ou d'essayer de faire autre chose).Désactiver les captures d'écran dans les tests du système Rails

Y a-t-il une configuration intégrée dans Capybara pour désactiver les captures d'écran? J'ai regardé à travers les docs et je n'ai rien trouvé de précis, mais comme il s'agit d'un ajout récent aux Rails grand public, je me dis que cela ne veut pas nécessairement dire qu'il n'existe pas.

Répondre

2

Rails 5.1 ActionDispatch :: SystemTestCase (dont ApplicationSystemTestCase dérive) a une méthode par défaut after_teardown de

def after_teardown 
    take_failed_screenshot 
    Capybara.reset_sessions! 
    super 
end 

Pour arrêter ce de prendre une capture d'écran, la méthode la plus simple est de passer outre take_failed_screenshot dans votre classe ApplicationSystemTestCase

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase 
    driven_by ... 

    # Add this method 
    def take_failed_screenshot 
    false 
    end 
end 
+0

Merci! Je peux ouvrir un PR sur ActionDispatch pour cela. On dirait que cela devrait être configurable sans avoir recours à des méthodes prioritaires. – dfaulken

+0

@dfaulken Oui - il semble que ce soit un oubli dans l'API System Tests, à l'origine il fallait que vous ajoutiez 'take_failed_screenshot' à votre propre' after_teardown' - mais ensuite ils l'ont déplacé dans AD :: SystemTestCase et ont oublié un moyen de désactiver –

0
Capybara::Screenshot.autosave_on_failure = false 

Je pense que cela résoudra votre problème.

Essayez de trouver le fichier dans lequel vous importez cette bibliothèque. Ou trouver capybara-capture d'écran/lib/capybara-screenshot.rb et changer self.autosave_on_failure = true à false

+0

cela semble probable. Où est-ce que j'écrirais ça? Je ne trouve nulle part où cette constante est définie. – dfaulken

+1

Cela n'est pas correct pour Rails 5.1 car il ne dépend pas de la gem capybara-screenshot - à la place, il est cuit dans le SystemTestCase - https://github.com/rails/rails/blob/5-1-stable/actionpack /lib/action_dispatch/system_test_case.rb#L90 –