Rapporteur - Introduction
Ce chapitre vous donne une introduction à Protractor, où vous découvrirez l'origine de ce cadre de test et pourquoi vous devez le choisir, le fonctionnement et les limites de cet outil.
Qu'est-ce que le rapporteur?
Protractor est un framework de test open source de bout en bout pour les applications Angular et AngularJS. Il a été construit par Google sur le dessus de WebDriver. Il remplace également le cadre de test AngularJS E2E existant appelé «Angular Scenario Runner».
Il fonctionne également comme un intégrateur de solution qui combine des technologies puissantes telles que NodeJS, Selenium, Jasmine, WebDriver, Cucumber, Mocha, etc. Parallèlement aux tests de l'application AngularJS, il écrit également des tests de régression automatisés pour les applications Web normales. Cela nous permet de tester notre application comme un vrai utilisateur car il exécute le test en utilisant un navigateur réel.
Le diagramme suivant donne un bref aperçu de Protractor -
![](https://assets.edu.lat/protractor/images/overview_of_protractor.jpg)
Observez que dans le diagramme ci-dessus, nous avons -
Protractor - Comme indiqué précédemment, il s'agit d'un wrapper sur WebDriver JS spécialement conçu pour les applications angulaires.
Jasmine- Il s'agit essentiellement d'un cadre de développement axé sur le comportement pour tester le code JavaScript. Nous pouvons facilement écrire les tests avec Jasmine.
WebDriver JS - Il s'agit d'une implémentation de liaisons Node JS pour sélénium 2.0 / WebDriver.
Selenium - Il automatise simplement le navigateur.
Origine
Comme indiqué précédemment, Protractor remplace le cadre de test AngularJS E2E existant appelé «Angular Scenario Runner». Fondamentalement, l'origine de Protractor commence avec la fin de Scenario Runner. Une question qui se pose ici est pourquoi avons-nous besoin de construire Protractor? Pour comprendre cela, nous devons d'abord vérifier son prédécesseur - Scenario Runner.
Création du rapporteur
Julie Ralph, le principal contributeur au développement de Protractor, a eu l'expérience suivante avec Angular Scenario Runner sur un autre projet au sein de Google. Cela est devenu la motivation pour construire Protractor, spécialement pour combler les lacunes -
«Nous avons essayé d'utiliser Scenario Runner et nous avons constaté qu'il ne pouvait vraiment pas faire les choses que nous devions tester. Nous devions tester des choses comme la connexion. Votre page de connexion n'est pas une page angulaire, et le Scenario Runner n'a pas pu gérer cela. Et il ne pouvait pas gérer des choses comme les fenêtres contextuelles et les fenêtres multiples, la navigation dans l'historique du navigateur, des choses comme ça. "
Le plus grand avantage du rapporteur était la maturité du projet Selenium et il englobe ses méthodes afin qu'il puisse être facilement utilisé pour les projets angulaires. La conception de Protractor est conçue de manière à tester toutes les couches telles que l'interface utilisateur Web, les services de backend, la couche de persistance et ainsi de suite d'une application.
Pourquoi Protractor?
Comme nous le savons, presque toutes les applications utilisent JavaScript pour le développement. La tâche des testeurs devient difficile lorsque JavaScript augmente en taille et devient complexe pour les applications en raison du nombre croissant d'applications elles-mêmes. La plupart du temps, il devient très difficile de capturer les éléments Web dans les applications AngularJS, utilise une syntaxe HTML étendue pour exprimer des composants d'application Web, en utilisant JUnit ou Selenium WebDriver.
La question ici est la suivante: pourquoi Selenium Web Driver n'est-il pas en mesure de trouver les éléments Web AngularJS? La raison en est que les applications AngularJS ont des attributs HTML étendus tels que ng-repeater, ng-controller et ng-model etc. qui ne sont pas inclus dans les localisateurs Selenium.
Ici, l'importance de Protractor prend forme car Protractor sur le dessus de Selenium peut gérer et contrôler ces éléments HTML étendus dans les applications Web AngularJS. C'est pourquoi nous pouvons dire que la plupart des frameworks se concentrent sur la réalisation de tests unitaires pour les applications AngularJS, Protractor avait l'habitude de tester la fonctionnalité réelle d'une application.
Fonctionnement du rapporteur
Protractor, le framework de test, fonctionne en conjonction avec Selenium pour fournir une infrastructure de test automatisée pour simuler l'interaction d'un utilisateur avec une application AngularJS qui s'exécute dans un navigateur ou un appareil mobile.
Le fonctionnement du rapporteur peut être compris à l'aide des étapes suivantes -
Step 1- Dans un premier temps, nous devons écrire les tests. Cela peut être fait avec l'aide de jasmin ou de moka ou de concombre.
Step 2- Maintenant, nous devons exécuter le test qui peut être fait avec l'aide de Protractor. Il est également appelé test runner.
Step 3 - Dans cette étape, le serveur Selenium aidera à gérer les navigateurs.
Step 4 - Enfin, les API du navigateur sont appelées à l'aide de Selenium WebDriver.
![](https://assets.edu.lat/protractor/images/working_of_protractor.jpg)
Avantages
Ce cadre de test open source de bout en bout offre les avantages suivants:
Outil open source, Protractor est très facile à installer et à configurer.
Fonctionne bien avec le framework Jasmine pour créer le test.
Prend en charge le développement piloté par les tests (TDD).
Contient des attentes automatiques, ce qui signifie que nous n'avons pas besoin d'ajouter explicitement des attentes et des mises en veille à notre test.
Offre tous les avantages de Selenium WebDriver.
Prend en charge les tests parallèles via plusieurs navigateurs.
Fournit l'avantage de la synchronisation automatique.
A une excellente vitesse de test.
Limites
Ce cadre de test open source de bout en bout possède les limitations suivantes -
Ne découvre aucun secteur vertical dans l'automatisation du navigateur car il s'agit d'un wrapper pour WebDriver JS.
La connaissance de JavaScript est essentielle pour l'utilisateur, car elle n'est disponible que pour JavaScript.
Fournit uniquement des tests frontaux, car il s'agit d'un outil de test piloté par l'interface utilisateur.