3.15 Infos-test e2e


3.15.1 - Introduction

Protractor n’est plus utilisé par Angular. Aucun test ni configuration de test d’écrans (E2E) n’existe plus à la création d’un projet Angular. CYPRESS est le framework nouvellement conseillé. Il fournit notamment une migration automatique depuis Protractor. Mais son premier usage est parfois pénible. Donc le fichier package.json contient des commandes install-1*cypress

Les tests E2E permettent de valider le bon fonctionnement de l’application mais n’en sont pas les garants (malheureusement).


3.15.2 - Démarrage

Selon votre poste et la configuration du proxy présente dans les variables d’environnement, il peut être nécessire de préciser à Cypress le proxy à utiliser pour accéder à l’application :

export HTTP_PROXY=
export HTTPS_PROXY=

L’outil Cypress utilisé pour les tests E2E se démarre avec la commande npm run cypress


3.15.3 - FailFast

Quand une étape d’un test E2E échoue, la plus part du temps, le reste du test échoue ensuite car un bouton ou un champs n’a pas été trouvé/saisi/cliqué/… Pour éviter de perdre du temps à exécuter des étapes perdues d’avance, est mis en place le framework cypress-fail-fast. Ce dernier arrête toute action de Cypress dès la première erreur.


3.15.4 - Couverture de code

_La couverture de code ne fonctionne plus depuis le passage en Angular-17 et le passage de webpack à ESbuild/Vite (cf. https://v17.angular.io/guide/esbuild) _

Une grande partie de l’effort de développement de la nouvelle PSL est centrée sur la librairie Angular Framework. Les tests E2E permettent d’en tester les fonctionnalités. Mais, sans couverture de code, il n’est pas possible d’identifier les lignes de code, les classes et les fonctionnalités non couvertes par les tests. Cela est maintenant possible en :

  • démarrant la démarche en activant la couverture de code : npm run codeDemarche-startcoverage (ou yarn à la place de npm)
  • démarrant les tests E2E (la couverture de code code est paramétrée par défaut mais ne pénalise pas l’exécution) : npm run cypress (ou yarn à la place de npm)
  • à la fin du test, le rapport de couverture de code est disponible dans 2-code/front/coverage/lcov-report/index.html

Si la démarche est démarrée avec le codeDemarche-start, le code n’est pas instrumenté. Donc la couverture de code sera à 0%.


3.15.5 - Dépannage

Il est courant que les tests E2E ne démarrent pas car le package.json, à la commande e2e, définit que le webdriver ne doit pas être mis à jour à chaque exécution (gain de temps non négligeable). Si le message d’erreur indique que la version de Chrome n’est pas compatible avec celle du webdriver, il suffit de passer la valeur du paramètre webdriverUpdate à true puis de relancer la commande e2e (attention à bien remettre la valeur à false avant le prochain commit).

Il est courant que les tests E2E échouent :

  • si tous les bouchons ne sont pas activés dans le fichier environment.ts
  • si les données du brouillon présentes dans assets/bouchonapi
    • ne sont pas complètes
    • ou ne permettent pas d’aller au bout de la démarche
    • ou ne correspondent pas aux données présentes dans les bouchons
  • si l’application met trop de temps à charger sur le poste (performance du poste, …)
  • si le calcul du nombre d’options des listes déroulantes échouent