Recette fonctionnelle — GES-PRO

57 scénarios · résultats enregistrés dans ce navigateur (localStorage)
Accueil
Total 57 Conformes 0 Non conformes 0 Non testés 57 0 %
1. Authentification & sécurité de session
T1.1 Connexion réussie
Compte vendeur@gestionstock.ci actif
  1. Ouvrir /login
  2. Saisir l'email et le mot de passe corrects
  3. Cliquer sur Se connecter
Attendu : Redirection vers /dashboard ; le nom de l'utilisateur est visible dans le bandeau.
T1.2 Connexion refusée (mot de passe incorrect)
  1. Saisir un email valide et un mot de passe erroné
  2. Valider
Attendu : Message d'erreur en français ; aucune connexion ; retour sur /login.
T1.3 Inscription libre désactivée
  1. Naviguer vers /register
Attendu : Page 404 : aucune inscription libre (comptes créés par un administrateur via Agents & Accès).
T1.4 Verrouillage automatique par inactivité
SESSION_LOCK_TIMEOUT (60 min par défaut)
  1. Se connecter
  2. Rester inactif au-delà du délai configuré
Attendu : Redirection automatique vers l'écran Session verrouillée affichant le nom de l'utilisateur.
T1.5 Déverrouillage par mot de passe
Session verrouillée (T1.4)
  1. Saisir le mot de passe du compte connecté
  2. Cliquer sur Déverrouiller
Attendu : Retour sur /dashboard avec le message « Bon retour, {prénom} ! ».
T1.6 Déconnexion depuis l'écran de verrouillage
  1. Sur l'écran de verrouillage, cliquer sur Se déconnecter
Attendu : Retour sur /login ; session totalement terminée.
T1.7 Accès sans authentification refusé
  1. Sans être connecté, ouvrir /dashboard, /ventes, /produits
Attendu : Redirection systématique vers /login.
2. Tableau de bord
T2.1 Indicateurs clés affichés
Connecté (admin)
  1. Ouvrir /dashboard
Attendu : Cartes KPI visibles ; graphique « Ventes des 30 derniers jours » avec dates espacées d'environ 2 jours.
T2.2 Bouton « Nouvelle vente » dans le ruban
  1. Repérer le bouton Nouvelle vente en bout de ruban
  2. Cliquer dessus
Attendu : Redirection vers /ventes/create. Bouton absent pour un compte sans VENTE_GERER (ex. consult).
T2.3 Alerte visuelle sur articles sous seuil
Au moins un article avec stock ≤ seuil
  1. Observer la carte Articles sous seuil
Attendu : Badge « alerte » visible ; le lien mène vers /stock?alerte=1 filtré.
3. Catalogue — Articles
T3.1 Création d'un article (code auto-généré)
PRODUIT_GERER (ex. gestionnaire)
  1. /produits/create
  2. Vérifier l'absence de champ Code
  3. Renseigner Libellé, Catégorie, Prix ; laisser TVA et Seuil par défaut
  4. Valider
Attendu : Article créé, code ART-00001 auto ; TVA = 0 et Seuil = 5 par défaut ; redirection vers la fiche.
T3.2 Historique des prix
Article existant
  1. Ouvrir la fiche
  2. Modifier le prix et enregistrer
  3. Revenir sur la fiche → section Historique des prix
Attendu : Deux périodes : ancienne Clôturée (fin = veille), nouvelle Active (fin vide) ; prix courant = ligne active.
T3.3 Modification du code interdite
  1. Ouvrir /produits/{id}/edit
Attendu : Code en lecture seule (« Généré automatiquement, non modifiable »).
T3.4 Suppression bloquée si l'article a été vendu
Article avec ≥ 1 ligne de vente
  1. Ouvrir la fiche
  2. Cliquer Supprimer, confirmer
Attendu : Refus : « Impossible de supprimer un article ayant déjà fait l'objet d'une vente. » ; article conservé.
T3.5 Suppression autorisée si inutilisé
Article sans vente ni mouvement
  1. Depuis la fiche, Supprimer, confirmer
Attendu : Article supprimé ; redirection vers /produits avec message de succès.
T3.6 Bouton Supprimer absent de la liste
  1. Ouvrir /produits
Attendu : Aucun bouton Supprimer dans le tableau (uniquement Voir / Modifier).
T3.7 Prix de vente en vente — droit restreint
gestionnaire (avec VENTE_MODIFIER_PRIX) et vendeur (sans)
  1. vendeur : /ventes/create, choisir un article → champ Prix grisé
  2. gestionnaire : champ Prix modifiable
Attendu : Comportement conforme à la permission ; forçage côté vendeur ignoré côté serveur.
4. Catalogue — Catégories
T4.1 Création et liste
  1. /categories/create, saisir code + libellé, valider
Attendu : Catégorie créée, visible dans /categories avec 0 article rattaché.
T4.2 Suppression bloquée si des articles sont rattachés
Catégorie utilisée par ≥ 1 article
  1. Ouvrir /categories/{id}/edit
  2. Cliquer Supprimer
Attendu : Bouton désactivé (info-bulle : nombre d'articles rattachés).
T4.3 Suppression autorisée si vide
Catégorie sans article
  1. /categories/{id}/edit, Supprimer, confirmer
Attendu : Catégorie supprimée.
5. Partenaires — Fournisseurs & Clients
T5.1 Création d'un fournisseur
  1. /fournisseurs/create, renseigner, valider
Attendu : Fournisseur créé, visible dans /fournisseurs, fiche via Voir.
T5.2 Création d'un client
  1. /clients/create, renseigner, valider
Attendu : Client créé, sélectionnable dans le formulaire de vente.
T5.3 Suppression déplacée sur la fiche
  1. Vérifier l'absence de Supprimer dans /fournisseurs (ou /clients)
  2. Vérifier la présence de Supprimer sur la fiche
Attendu : Suppression uniquement depuis la fiche détail (permission GERER requise).
6. Approvisionnement — Arrivages
T6.1 Création d'un arrivage en brouillon
ARRIVAGE_GERER (ex. appro)
  1. /arrivages/create
  2. Vérifier en-tête : date + opérateur
  3. Renseigner Date, Fournisseur, une ligne (article, qté, coût)
  4. Touche Entrée dans Quantité → nouvelle ligne + focus article
  5. Enregistrer
Attendu : Arrivage Brouillon, stock non impacté, numéro ARR-AAAA-00001.
T6.2 Création rapide d'un article depuis le modal
PRODUIT_GERER et ARRIVAGE_GERER
  1. Cliquer Nouvel article
  2. Renseigner libellé, catégorie, prix, valider
Attendu : Modal fermé ; article ajouté en ligne pré-remplie, focus Quantité. Bouton absent sans PRODUIT_GERER.
T6.3 Lignes sans article ignorées
  1. Saisir qté + coût sans article
  2. Ajouter une ligne complète
  3. Enregistrer
Attendu : Seule la ligne avec article est conservée ; pas d'erreur de validation.
T6.4 Validation d'un arrivage et impact sur le stock
Arrivage brouillon, ARRIVAGE_VALIDER
  1. Ouvrir la fiche
  2. Relever la quantité en stock
  3. Cliquer Valider (mettre en stock), confirmer
Attendu : Statut Validé ; stock augmenté ; PMP recalculé ; bon d'arrivage PDF téléchargé ; mouvement d'entrée journalisé.
T6.5 Suppression impossible après validation
Arrivage validé
  1. Ouvrir sa fiche
Attendu : Aucun bouton Supprimer.
T6.6 Suppression autorisée en brouillon
Arrivage brouillon
  1. Depuis la fiche, Supprimer, confirmer
Attendu : Arrivage supprimé, retour /arrivages.
7. Ventes
T7.1 Filtre par défaut sur les ventes du jour
  1. Ouvrir /ventes sans filtre
Attendu : Seules les ventes du jour. Avec un filtre, résultats sur toutes les dates.
T7.2 Filtre par période (sélecteur de plage)
  1. Ouvrir le champ Période de la vente
  2. Sélectionner une plage passée
  3. Rechercher
Attendu : Uniquement les ventes de la plage.
T7.3 Création d'une vente au comptoir, saisie clavier
VENTE_GERER, stock disponible
  1. /ventes/create ; vérifier en-tête et Client en 1er
  2. Choisir article → focus Quantité pré-sélectionnée
  3. Entrée dans Qté/Coût/TVA → nouvelle ligne, focus article suivant
  4. Renseigner une ligne complète
Attendu : Total TTC calculé ; saisie 100 % clavier possible.
T7.4 Blocage si stock insuffisant
Article à stock limité
  1. Saisir une quantité > stock disponible
Attendu : Alerte de dépassement ; bouton Encaisser et valider désactivé.
T7.5 Refus d'encaissement si total nul ou négatif
  1. Vente sans ligne valide (total 0)
  2. Cliquer Encaisser et valider
Attendu : SweetAlert « Total invalide » ; modal de paiement non ouvert.
T7.6 Modal d'encaissement : montant remis obligatoire
Vente total > 0
  1. Cliquer Encaisser et valider (montant remis à 0)
  2. Tenter de valider sans montant
Attendu : Refus tant que montant < total ; pas de fermeture par clic extérieur / Échap (seuls Annuler, croix, Confirmer).
T7.7 Encaissement réussi et téléchargement du reçu
  1. Saisir montant ≥ total, choisir un moyen de paiement
  2. Confirmer et valider (ou Entrée)
Attendu : Vente Validée, stock déduit, marge calculée, reçu PDF téléchargé, monnaie correcte.
T7.8 Lignes sans article ignorées à la validation
  1. Ligne sans article + une ligne complète
  2. Valider
Attendu : Seule la ligne avec article enregistrée ; total sans la ligne incomplète.
T7.9 Suppression impossible après validation
Vente validée
  1. Ouvrir la fiche / la liste
Attendu : Aucun bouton Supprimer (fiche ni liste).
T7.10 Bouton « Nouvelle vente » depuis une fiche
  1. Sur la fiche d'une vente, repérer le bouton
Attendu : Bouton présent, redirige vers /ventes/create.
8. Stock
T8.1 Consultation de l'état des stocks
  1. Ouvrir /stock
Attendu : Quantités par article / dépôt ; bouton Nouvelle vente présent.
T8.2 Filtrage des articles sous seuil
  1. Appliquer le filtre alerte (ou lien depuis le dashboard)
Attendu : Seuls les articles dont la quantité ≤ seuil.
T8.3 Historique des mouvements
  1. Ouvrir /stock/mouvements
Attendu : Liste chronologique entrées / sorties / transferts avec origine.
T8.4 Transfert de stock vers une succursale
STOCK_TRANSFERER, succursale + stock suffisant
  1. /stock/transfert : article, dépôt source, destination, quantité
  2. Valider
Attendu : Stock principal diminué, succursale augmentée, 2 mouvements journalisés.
T8.5 Transfert refusé si stock insuffisant
  1. Transfert avec une quantité > stock
Attendu : Refus avec message ; aucun mouvement créé.
T8.6 Notification de seuil d'alerte
Article proche du seuil
  1. Vente faisant passer la quantité ≤ seuil
Attendu : Notification de réapprovisionnement émise (centre de notifications).
9. Administration & sécurité (RBAC)
T9.1 Gestion des agents et comptes utilisateurs
SECURITE_GERER_UTILISATEUR
  1. /agents, créer un agent
  2. Depuis sa fiche, créer un compte (email + mot de passe)
Attendu : Agent et compte créés ; le nouvel utilisateur peut se connecter.
T9.2 Attribution d'un rôle et permissions
SECURITE_GERER_ROLE
  1. Sécurité → Config Role
  2. Ouvrir un rôle, cocher/décocher une permission, enregistrer
  3. Se connecter avec ce rôle, vérifier l'effet
Attendu : La permission modifie immédiatement le comportement des comptes du rôle.
T9.3 Menu Sécurité regroupe Config Role
  1. Connecté admin, observer le menu latéral
Attendu : Config Role sous la section Sécurité ; plus de section Configuration distincte.
T9.4 Restriction d'accès par permission
Compte consult (lecture seule)
  1. Se connecter consult
  2. Ouvrir /produits/create, /ventes/create, /agents/create par URL
Attendu : Accès refusé (redirection / 403) sur les actions de gestion ; consultations accessibles selon *_CONSULTER.
T9.5 Journal des connexions
AUDIT_CONSULTER
  1. Se déconnecter / reconnecter
  2. Ouvrir Sécurité → Journal des connexions
Attendu : Événements connexion / déconnexion / verrouillage horodatés.
T9.6 Audit des données sensibles
  1. Modifier un article / prix ou supprimer une entité
  2. Ouvrir Sécurité → Audit des données
Attendu : Opération tracée (qui, quoi, quand).
T9.7 Ordre des sections du menu
  1. Observer l'ordre du menu (admin)
Attendu : Catalogue puis Ventes en tête, puis Partenaires, Appro & Stock, Administration.
10. Cas transverses
T10.1 Cohérence des montants (pas de flottants)
  1. Vente avec quantités décimales et prix à centimes
  2. Vérifier total affiché et reçu PDF
Attendu : Montants exacts au centime, aucun écart flottant.
T10.2 Portée collectivité
Données mono-collectivité
  1. Vérifier qu'aucune donnée d'une autre collectivité n'apparaît
Attendu : Cloisonnement respecté.
T10.3 Protection CSRF
  1. Rejouer un POST sans jeton CSRF valide
Attendu : Requête rejetée (419).
T10.4 Message d'expiration de session personnalisé
Session expirée (> SESSION_LIFETIME)
  1. Soumettre un formulaire resté ouvert
Attendu : Page 419 « Session expirée » claire, boutons Recharger / Se reconnecter.
T10.5 Responsive / accessibilité basique
  1. Réduire la largeur (mobile / tablette) sur Ventes, Arrivages, Dashboard
Attendu : Tableaux et formulaires utilisables ; menu escamotable.

Rapport de recette