Development #71358
Tests d'application - ticket chapeau
0%
Description
Comme discuté pendant l'EO Day Famille la semaine dernière, il y a une problématique croissante autour de la conception des démarches et des applications : il n'est pas facile de détecter les régressions et dysfonctionnements qui peuvent survenir quand on modifie des choses (formulaire, workflow, etc.). C'est d'autant plus vrai pour des applications ou des workflows complexes, qui sont très chronophages à tester manuellement.
Dans l'idée, on aimerait donc pouvoir automatiser certains tests, et les associer avec une appli, pour :
1. pouvoir jouer les tests lors d'une modification d'éléments liés à l'appli et vérifier que tout fonctionne comme attendu
2. pouvoir jouer les tests de manière régulière pour attester que l'appli continue de fonctionner au fur et à mesure des versions de publik
3. pouvoir savoir le plus tôt possible si quelque chose ne marche plus, par exemple avant de publier une nouvelle version de l'appli
Il s'agit d'un chantier complémentaire à #71296. #71296 se concentre sur les formulaires / démarches / workflow, lancé depuis l'intérieur d'un portail, sur des données sélectionnées à l'avance.
Ce chantier se focalise sur des tests plus générique et de bout en bout. Dans l'idée :
1. On provisionne, à la volée une instance publik dédiée au test
2. On installe l'application à tester dessus
3. On insère, si nécessaire et selon un mécanisme à définir, des donnée supplémentaires nécessaires à l'éxécution des tests
4. On lance les tests, qui sont exécutés automatiquement via un navigateur, en utilisant un outil type selenium, en allant effectuer des actions sur l'instance publik provisionnée en 1
Dans un premier temps, il a été décidé de partir d'un scenario de test simple autour d'un cas d'usage à Nîmes : Gestion de contenu éditorial
Le scénario du test : un agent rédige un contenu dans une fiche, puis un agent métier peut aller modifier le contenu.
Il y a beaucoup d'exploration et d'expérimentation sur ce ticket avant d'arriver à quelque chose. J'alimenterai le ticket au fur et à mesure.
Fichiers
Historique
Mis à jour par A. Berriot il y a plus d'un an
Point d'étape :
J'ai un prototype fonctionnel qui permet d'écrire des scenario de tests en utilisant le language Gherkin. Ça ressemble à ça:
Fonctionnalité: Authentik Scénario: Connexion valide Sachant que je suis sur la page "Portail Usager" Et que je clique sur "Connexion" Lorsque je saisis "admin@localhost" dans le champ "username" Et que je saisis "admin" dans le champ "password" Et que je valide le formulaire Alors je dois être connectée en tant que "admin admin" Scénario: Déconnexion Lorsque je clique sur "Déconnexion" Alors je ne dois pas être connectée
Ces instructions sont ensuite converties sous le capôt pour piloter un navigateur web, exécuter les étapes décrites et procéder aux vérifications demandées.
Deux exemples :
- https://gitea.entrouvert.org/attachments/6244e040-33ef-4283-930f-c4e572b4ee85 : pour une exécution du scénario ci-dessous sur mon environnement de dev local
- https://gitea.entrouvert.org/attachments/0a4dbc17-3139-402d-80d5-4e3f775464fd : pour une exécution d'un scénario très basique (connexion en tant qu'agent) sur le backoffice de recette de Nîmes
Niveau code, tout ça se passe sur https://gitea.entrouvert.org/entrouvert/app-testing/pulls/1. Je fais un point avec Anaïs mardi pour écrire ensemble le vrai scénario de test 'worflow d'édition'. Personnellement je trouve ça très encourageant, la syntaxe est à mon avis suffisamment accessible pour être prise en main par des CPF motivé.es.
Mis à jour par Anaïs Ecuvillon → en congés, retour le 30/04 il y a plus d'un an
- Fichier gabarit-editorial-pour-test.tar gabarit-editorial-pour-test.tar ajouté
- Fichier export_page_accueil-avec-recherche-fiche-pour-test_and_subpages_20221122.json export_page_accueil-avec-recherche-fiche-pour-test_and_subpages_20221122.json ajouté
- il te faut créer un rôle Contributeur
- il te faut ajouter dans Fiches > Sources de données : 1 fiche Catégorie (ex. Famille), 1 fiche Questions (Quels sont les délais ?), 1 fiche Type de liens (Lien vers la FAQ)
Mis à jour par A. Berriot il y a plus d'un an
Merci Anaïs, j'ai réussi a écrire et faire tourner les tests pour le premier bout du scénario qu'on a évoqué (création d'une fiche, vérification du statut brouillon).
Le scénario :
Fonctionnalité: Gestion de contenu éditorial Contexte: Sachant que je suis connectée en tant que "Contributeur" Scénario: Ajout d'une fiche Sachant que je suis sur la page "Portail Agent - Fiches" Et que je clique sur "Fiches pratiques" Et que je clique sur "Ajouter" Quand je saisis "Comment inscrire son enfant à la restauration scolaire" dans le champ "Titre" Quand je sélectionne "Contributeur" dans le champ "Contributeur" Quand je saisis "Pour inscrire son enfant…" dans le champ "Contenu" Quand je sélectionne "Famille" dans le champ "Catégorie(s)" Quand je saisis "lien vers la FAQ" dans le champ "Type du lien 1" Quand je saisis "https://fiche.example/faq" dans le champ "URL" Quand je sélectionne "Quels sont les délais ?" dans le champ "Question 1" Quand je saisis "Les délais sont de 2 semaines en moyenne." dans le champ "Réponse 1" Et que je clique sur "Valider" Alors je dois être redirigé vers la page de la fiche Alors la fiche doit être dans le statut "Brouillon"
J'ai passé pas mal de temps à faire en sorte d'améliorer la lisibilité et la facilité d'écriture du scénario. Je pense que les scénario suivants (modification, demande de relecture, publication et affichage dans combo) seront plus rapides à écrire grâce à ça.
Le rendu : https://gitea.entrouvert.org/attachments/7b5f9029-2691-4a73-94b6-437925f6b465
Le code : https://gitea.entrouvert.org/entrouvert/app-testing/pulls/1
Mis à jour par A. Berriot il y a plus d'un an
- Fichier Peek 2022-11-24 11-03.mp4 Peek 2022-11-24 11-03.mp4 ajouté
Scénario final, qui fait l'ensemble du parcours, avec le rendu en PJ :
Fonctionnalité: Gestion de contenu éditorial Scénario: Connexion en tant que contributeur Sachant que je suis connectée en tant que "Contributeur" Et que je suis sur la page "Portail Agent - Fiches" Scénario: Ajout d'une fiche Sachant que je clique sur "Fiches pratiques" Et que je clique sur "Ajouter" Quand je saisis "Comment inscrire son enfant à la restauration scolaire" dans le champ "Titre" Et que je sélectionne "Contributeur" dans le champ "Contributeur" Et que je saisis "Pour inscrire son enfant…" dans le champ "Contenu" Et que je sélectionne "Famille" dans le champ "Catégorie(s)" Et que je saisis "lien vers la FAQ" dans le champ "Type du lien 1" Et que je saisis "https://fiche.example/faq" dans le champ "URL" Et que je sélectionne "Quels sont les délais ?" dans le champ "Question 1" Et que je saisis "Les délais sont de 2 semaines en moyenne." dans le champ "Réponse 1" Et que je clique sur "Valider" Alors je dois être redirigé vers la page de la fiche Et la page doit afficher "Pour inscrire son enfant…" Et la fiche doit être dans le statut "Brouillon" Scénario: Modification de fiche Quand je clique sur "Modifier la fiche" Quand je saisis "Pour inscrire son enfant, il faut nous appeler." dans le champ "Contenu" Et que je clique sur "Enregistrer les changements" Alors je dois être redirigé vers la page de la fiche Et la fiche doit être dans le statut "Brouillon" Et la page doit afficher "Pour inscrire son enfant, il faut nous appeler." Scénario: Demande de relecture Quand je clique sur "Demander la relecture" Alors je dois être redirigé vers la page de la fiche Et la page doit afficher "En attente de relecture" Scénario: Connexion en tant qu'éditeur Sachant que je me reconnecte en tant que "Editeur" Et que je suis sur la page "Portail Agent - Fiches" Scénario: Publication Lorsque je clique sur "Fiches pratiques" Et que je clique sur la ligne 1 du tableau de listing Alors la page doit afficher "En attente de relecture" Lorsque je clique sur "Publié" Alors je dois être redirigé vers la page de la fiche Et la page doit afficher "Publié" Scénario: Recherche et affichage Sachant que je visite la page "/accueil-avec-recherche-fiche-pour-test" sur "Portail Usager" Et que je saisis "Inscrire" dans le champ "q" Et que j'attends 2 secondes Alors la page doit afficher "Comment inscrire son enfant à la restauration scolaire" Lorsque je clique sur "Comment inscrire son enfant à la restauration scolaire" Et que j'attends 2 secondes Alors la page doit afficher "Lien vers la FAQ" Et la page doit afficher "Quels sont les délais ?"
Mis à jour par A. Berriot il y a plus d'un an
- Statut changé de Nouveau à Fermé
Je ferme puisque cette solution n'est pas retenue.