Dans un article précédent, je vous ai montré comment faire des tests end to end (E2E) avec Protractor pour tester une application Angular. Voyons comment nous pouvons utiliser grunt afin de faciliter le lancement de ces tests.
Nous allons avoir besoin des modules grunt à installer avec la commande :
npm install grunt-protractor-runner grunt-shell grunt-protractor-webdriver --save-dev
- grunt-protractor-runner : permet de lancer protractor
- grunt-shell : permet de lancer des commandes shells. Dans notre cas, il permet de mettre à jour webdriver dans la dernière version
- grunt-protractor-webdriver : permet de lancer webdriver
Il faut ensuite modifier le fichier Gruntfile.js afin de configurer les plugins.
shell: { updateSeleniumWebDriver: { command: 'node node_modules/protractor/bin/webdriver-manager update', options: { stdout: true } } }, 'protractor_webdriver': { options: { // Task-specific options go here. }, run: { // Target-specific file lists and/or options go here. } }, protractor: { options: { configFile: 'node_modules/protractor/referenceConf.js', // Default config file keepAlive: true, // If false, the grunt process stops when the test fails. noColor: false, // If true, protractor will not use colors in its output. args: { // Arguments passed to the command } }, local: { options: { configFile: 'protractor.conf.js', // Target-specific config file args: {} // Target-specific arguments } } } } ///autre configs ...
On créé ensuite une tache qui permet de lancer les tests E2E.
grunt.registerTask('e2e', [ 'connect:dist', 'shell:updateSeleniumWebDriver', 'protractor_webdriver:run', 'protractor:local' ]);
La tache effectue les actions suivantes :
- on lance le site avec connect
- on met à jour selenium web driver
- on lance webdriver
- on lance les tests
Le lancement des tests se fait ensuite via la commande :
grunt e2e
Voici le résultat de l’exécution des tests :
Comme d’habitude, je l’ai mis en place sur mon application de Volley dont vous pouvez trouver le code sur github.
Pour ceux qui utilisent gulp, il existe les modules également :
gulp-protractror,
gulp-shell