Bonjour,
J’aimerais vous présenter Canopy, une surcouche Selenium écrite en F#. Elle vous apporte la concision et la clarté de F# pour vos tests Selenium.
Tout d’abord, nous devons créer une nouvelle application console F#, puis nous installons canopy dans notre projet : 
Comme vous pouvez le voir, le package NuGet de canopy va récupérer l’écosystème Selenium.
Créons notre premier test. Il vérifiera qu’une recherche de “canopy F#” dans Google affichera le site officiel de Canopy comme premier résultat. Voici le petit bootstrapping nécessaire pour Canopy :
| |
D’abord, nous chargeons les dépendances : la bibliothèque core de canopy (bien sûr) et le runner canopy, qui est essentiellement un wrapper autour du driver Selenium. Ensuite nous démarrons un navigateur (Firefox, par exemple).
Après cela vient le corps du test lui-même (nous le verrons plus tard), et l’instruction pour exécuter la suite de tests. L’instruction quit() gérera tout pour finaliser l’exécution du test, comme fermer le navigateur.
Regardons le test lui-même. Voici une proposition d’implémentation :
| |
C’est un test très basique. La première ligne est la définition du cas de test. Le corps du test commence par une navigation vers la page d’accueil de Google. Ensuite, nous remplissons le champ de recherche avec la valeur “Canopy F#”. Il y a une petite subtilité ici, avec la façon dont la page d’accueil de Google fonctionne : dès que nous commençons à taper, la mise en page de la page change, la boîte de recherche affiche une sorte de liste déroulante avec des suggestions de recherche. Une fois que le mot de recherche est entièrement tapé dans la boîte de recherche, nous cliquons sur le bouton de recherche. Ensuite, nous cliquons sur le premier résultat dans la liste des résultats. Enfin, nous pouvons faire notre assertion. Dans ce cas, le ‘on “url”’ affirmera que nous sommes sur la page attendue.
Démo :
http://youtu.be/uKRzCAZBJDk?hd=1
Avons-nous terminé ? Non ! Le code de test doit être aussi propre que le code de production, alors faisons un peu de refactoring. Nous pouvons commencer par appliquer le Page Object pattern : c’est une façon d’abstraire une page, et d’encapsuler son comportement, ainsi le test devient bien plus lisible.
Ajoutons un fichier google.fs à notre solution (n’oubliez pas de le déplacer au-dessus de program.fs)

avec le contenu suivant :
| |
Ici, j’ai simplement extrait les interactions avec la page d’accueil de Google. Cela simplifie grandement mon cas de test, qui devient :
| |
C’est tout pour cette première introduction au framework d’automatisation et de tests Canopy et au Page Object pattern en F#. D’autres articles à venir bientôt sur ce sujet !
P.S. : Vous pouvez trouver le code source de cet exemple sur mon repo github.

Commentaires
💬 Les commentaires sont partagés entre toutes les versions linguistiques de cet article.