Project

General

Profile

Development #71358

Tests d'application - ticket chapeau

Added by Agate Berriot 3 months ago. Updated 17 days ago.

Status:
Fermé
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
16 November 2022
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No
Club:
No

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.


Files

gabarit-editorial-pour-test.tar (130 KB) gabarit-editorial-pour-test.tar App gabarit éditorial Anaïs Ecuvillon, 22 November 2022 10:21 AM
export_page_accueil-avec-recherche-fiche-pour-test_and_subpages_20221122.json (28.2 KB) export_page_accueil-avec-recherche-fiche-pour-test_and_subpages_20221122.json 2 pages combo Anaïs Ecuvillon, 22 November 2022 10:22 AM
Peek 2022-11-24 11-03.mp4 (3.08 MB) Peek 2022-11-24 11-03.mp4 Agate Berriot, 24 November 2022 11:03 AM

History

#1

Updated by Agate Berriot 3 months ago

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 :

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.

#2

Updated by Anaïs Ecuvillon 2 months ago

Pour que tu puisses l'utiliser en local :
  • 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)
#3

Updated by Agate Berriot 2 months ago

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

#4

Updated by Agate Berriot 2 months ago

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 ?" 
#5

Updated by Agate Berriot 17 days ago

  • Status changed from Nouveau to Fermé

Je ferme puisque cette solution n'est pas retenue.

Also available in: Atom PDF