Skip to content
Aurélien Bénel edited this page Apr 8, 2020 · 7 revisions

Expérimenter les tests automatisés d'interfaces utilisateurs

Dans cette section, vous allez devoir indiquer comment tester les différentes étapes d'un scénario (ce que vous n'aviez pas eu à faire dans le scénario précédent puisque vous aviez copié-collé toutes les étapes d'un autre scénario en changeant seulement les données).

Maintenant que vous avez bien compris le cycle du TDD, nous pouvons nous en écarter temporairement : nous allons tester une fonctionnalité existante (#32:Assign an existing topic to an item). Cela vous permettra de voir tout de suite si vos tests sont bien écrits.

  1. Créez une nouvelle branche feature-32 à partir de la branche maître (v7) :

    git checkout v7
    git checkout -b feature-32
    
  2. Faites une copie de features/attribute_set.feature en tant que features/topic_assign.feature. Ne gardez qu'un seul scénario et adaptez le pour décrire l'item non plus avec un attribut mais avec une rubrique existante (par exemple Monture en chef d'œuvre du point de vue Histoire de l'art). Pour éviter un petit bug de Cucumber, remplacez dans les textes les apostrophes droites ' par des apostrophes courbes .

  3. Lancez le test :

     cucumber features/topic_assign.feature
    

    Les étapes déjà définies sont exécutées. Par contre, Cucumber vous donne le squelette des deux étapes à définir.

  4. Pour le Alors :

    • Copiez le squelette du Alors dans features/step_definition/outcome.rb,
    • Remplacez le nom du paramètre (|string|) pour qu'il soit plus explicite (|topic|),
    • Cherchez s'il n'y a pas une étape existante qui serait synonyme, vérifiez que les opérations Capybara correspondent bien à la manière la plus simple de vérifier le résultat,
    • Supprimez donc le squelette que vous avez ajouté et modifiez la dernière étape de votre scénario pour réutiliser l'étape existante.
  5. Pour le Quand :

    • Copiez le squelette du Quand dans features/step_definition/event.rb,
    • Remplacez les noms des paramètres (|string, string|) pour qu'ils soient plus explicites,
    • Il n'y a pas d'étape synonyme... Par contre l'ajout d'une rubrique ressemble un peu à l'ajout d'un attribut. Copiez l'étape et, pour correspondre à l'interface, remplacez :
      • le "placeholder" du champ de saisie,
      • l'identifiant du bouton.
    • Lancez les tests. Quel problème pose le placeholder pour repérer le champ de saisie ?
    • Modifiez votre test en utilisant la structure de Capybara within('div', text: ...) do ... end.
    • Lancez le test et observez le texte de l'erreur. Reproduisez les actions à la main. Qu'êtes-vous en train de faire ? Que faudrait-il changer dans la séquence des actions ? Inspectez l'élément pour voir comment l'atteindre.
    • Ajoutez une action avec click_on class: ....

`

Clone this wiki locally