REX JFTL - Que l'automatisation soit avec toi !

L'atelier technique "Que l'automatisation soit avec toi" nous permet de tester l'outil CodeCeptJS. C'est un puissant framework d'automatisation de tests fonctionnels, qui se démarque par sa simplicité de configuration en javascript et la lisibilité du code grâce au Keyword Driven.

Son avantage repose surtout sur sa capacité de bascule de moteur d'automatisation (Sélénium, Playwright, Puppeteer...), en gardant le même code. Cela permet de garder une grande maintenabilité du code, notamment si l'on souhaite migrer vers un autre moteur d'automatisation :

  • plus performant ou pour tester un plus récent
  • adapté pour un navigateur spécifique
  • permettant l'utilisation de mocks(Playwright, puppeteer)
  • si l'on souhaite tester des applications mobile (Appium).

L'utilisation du Keyword Driven permet aux testeurs non-techniques d'y être opérationnel rapidement, et pourles projets privilégiant les développements en français, il est aussi possible d'utiliser les keywords en français grâce à la sur couche d'injection de langage des Keywords.

Le PageObject

Ce framework implémente également le concept de PageObject (qui est comparable au concept des langages orientés objet), permettant d'attribuer des « locators » à des variables contenues dans des objets, pour être réutilisés facilement :

Ce procédé permet de renforcer la lisibilité et la maintenabilité du projet, en ne modifiant que très peu de code si les attributs HTML sont modifiés.

Intégration du gherkin

Ce framework permet également l'utilisation du langage gherkin comme sur couche de langage d'automatisation :

Il est possible d'intégrer des paramètres et de les variabiliser depuis des fichiers 'features' via des accolades :

Exemple d'un fichier ‘features’:

Les tests d'API

Les tests d’API nécessitent l’ajout de “helpers” dans le fichier de configuration codecept.conf.js :

helpers:{

   REST: {

       endpoint:'https://api.francetravail.io',

       prettyPrintJson: true

   },

  JSONResponse: {},

}

Ensuite il suffit d'utiliser les mots clés adaptés pour envoyer l'appel, puis vérifier les codes retour :

  • I.seeResponseCodeIsSuccessful() : code retourentre 200 et 206
  • I.seeResponseCodeIsRedirection(): code retourentre 300 et 308
  • I.seeResponseCodeIsClientError(): code retourentre 400 et 451
  • I.seeResponseCodeIsServerError():code retour entre 500 et 511

On peut aussi utiliser des assertions intégrées :

  • I.seeResponseCodeIs(<int>)
  • I.seeResponseContainsJson({json})
  • I.seeResponseContainsKeys(array[])
  • I.seeResponseMatchesJsonSchema(<schema>)
  • I.seeResponseValidByCallback(({data, status, expect })=>{ })

Reporting

Enfin, CodeCeptJS permet l'export de rapports via les sur couches Allure ou Cucumber :

Divers

Nous n'avons pas eu le temps de letester, mais il est possible de mocker des données, d'intégrer des personas etdes bouchons.

Toute ces notions sont dans le repo git suivant : https://git.binard.info/conferences/jftl/2024-codeceptjs-jftl