AvalyzTest another app

8/8 pages

Sample report

Fictitious application built for the demonstration: no real data. Your report will follow the same structure.

Test my app

What breaks in your app

Riad Dar Zitoun

riad-connect-hub.lovable.app

Address tested: https://riad-connect-hub.lovable.app/ · 2026-10-09 · full run, write mode requested (test data only, never a real payment or a deletion) · 8 pages visited · 10 test levels · verdict computed as the publisher would · app under construction

GO WITH CONDITIONS See the reasoned decision

Summary report

Decision

GO WITH CONDITIONS
Technical detail

La recherche de disponibilités et ses bornes, la connexion, l'affichage des réservations et les contrôles de saisie de la page de réservation se comportent comme attendu (CN-1, CL-1 à CL-8, CS-2, CL-20 à CL-23). En revanche, le parcours de l'argent n'est pas démontré de bout en bout : le paiement de l'acompte n'a jamais pu être joué (CN-2, I1), le calcul RIAD10 reste non confirmé (CS-20, I3) et la gérante ne retrouve pas dans la Gestion les réservations confirmées du voyageur, défaut reproduit (C01, I4). La mise en service n'est envisageable qu'une fois ces points démontrés ou corrigés et les

The test of riad-connect-hub.lovable.app found 21 issues, 4 of them critical or major (S1, S2), which come down to 12 fixes. Fix first: Business journey fails, then Sign-in pages can be framed by another site (clickjacking), then Form fields without a label.

Key figures

8pages tested
22business cases played17 passed · 1 failed · 1 blocked
21findings0 Critical · 4 Major · 12 Minor · 5 Note

Fix first

  1. #1MajorBusiness journey fails — /admin
    Customers cannot complete a revenue journey: lost bookings until it is fixed.
  2. #2MajorSign-in pages can be framed by another site (clickjacking) — /auth
    A third-party site can hijack clicks on the sign-in page: customer accounts exposed and trust lost.
  3. #3MinorSecurity headers missing — /
  4. #4NoteSecurity headers missing — /
  5. #5MajorForm fields without a label — /admin
    Some visitors (keyboard users, visually impaired) cannot finish: these are lost bookings, and accessibility is becoming a legal duty in several markets.

Next steps

  1. Fix the 5 "fix first" points, in order.
  2. Apply the 6 grouped fixes: each one settles several findings at once.
  3. Then handle the remaining minor findings, section by section.
  4. Run a new Avalyz test to verify the fixes.

Detailed report

Our understanding of the business (to be validated)

Analysis texts are shown in the language the analysis was written in.

This understanding was built from what the application shows; the business teams should validate it before it supports a decision.

Client clarifications taken into account (round 2)

  • Business model: Le code promo RIAD10 donne -10 % sur l hebergement seulement ; la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee ; l acompte de 30 % porte sur le total remise, taxe comprise.
  • Organisation and profiles: La gerante est la seule administratrice : elle gere le calendrier des reservations, les dates bloquees, les chambres et les prix, et lit les messages de contact. Le voyageur connecte voit ses reservations dans Mes reservations.

User stories added

  1. En tant que voyageur connecte, je veux reserver la chambre Majorelle 2 nuits pour 2 adultes avec le code RIAD10, afin de payer un acompte calcule sur le total remise.
  2. En tant que gerante, je veux retrouver dans mon tableau de bord la reservation que le voyageur vient de faire, afin de preparer son arrivee.

Cases derived from the client's user stories: CU-1, CU-2

Concept

Riad Dar Zitoun vend en direct des nuitées dans ses 5 chambres de la Médina de Marrakech à des voyageurs, réservées en ligne avec un acompte de 30 % payé en ligne. Promesse : un riad paisible au cœur de la Médina, des prix clairs par nuit et une annulation possible jusqu'à 48 h avant l'arrivée.

Target customers: Voyageurs (couples, familles, petits groupes jusqu'à 4 personnes par chambre) visitant Marrakech ; site FR avec bascule EN.

Value chain

  1. AttirerVIS-01, VIS-05, VIS-06
  2. ConvertirVIS-02, VIS-03, CLI-01, CLI-02
  3. EncaisserCLI-03
  4. Délivrer le séjourCLI-04, ADM-01, ADM-02, ADM-03, ADM-04
  5. Servir et fidéliserCLI-05, CLI-06, VIS-04, ADM-05

Business model

Customer segmentsVoyageurs, couples et petites familles (jusqu'à 4 personnes) visitant Marrakech, francophones et anglophones.
Value propositionRiad paisible au cœur de la Médina, 5 chambres de 750 à 1 800 MAD, annulation jusqu'à 48 h.
ChannelsSite web direct FR/EN : recherche de disponibilités, réservation en ligne, Mes réservations, contact, téléphone, e-mail.
Revenue streamsNuitées vendues par chambre, acompte 30 % en ligne (simulé), taxe de séjour 30 MAD/adulte/nuit.

Organisation

Functional org chart: application spaces and user profiles. ★ = profile used for testing.

  • riad-connect-hub.lovable.app
    • Espace public (accueil, disponibilités, avis, FAQ, contact)
      • Visiteur VIS ★
    • Espace voyageur « Mes réservations »
      • Client voyageur connecté CLI ★
    • Gestion (administration de la gérante)
      • Gérante (seule administratrice) ADM ★

Functions

Function (profile)MissionMain responsibilitiesUsed for testing
Visiteur VISDécouvrir le riad et vérifier les disponibilités avant de réserver.
  • Rechercher des dates libres
  • Choisir une chambre adaptée
  • Contacter le riad
★ yes
Client voyageur connecté CLIRéserver et suivre son séjour au riad en payant l'acompte en ligne.
  • Réserver et payer l'acompte
  • Suivre ou annuler ses réservations
  • Donner son avis après séjour
★ yes
Gérante (seule administratrice) ADMPiloter les réservations, l'offre de chambres et l'accueil des voyageurs.
  • Suivre les réservations et préparer les arrivées
  • Gérer chambres, prix et dates bloquées
  • Répondre aux messages de contact
★ yes

Domains

Business

  • Découverte de l'offre et disponibilités VIS-01, VIS-02, VIS-06
  • Réservation et suivi des séjours CLI-02, CLI-04, CLI-05, ADM-01
  • Gestion de l'offre (chambres, prix, calendrier, dates bloquées) ADM-02, ADM-03, ADM-04

Support

  • Paiement de l'acompte CLI-03
  • Comptes et accès VIS-03, CLI-01
  • Relation client (avis, contact, FAQ) VIS-04, VIS-05, CLI-06, ADM-05

Map of macro-processes and processes

Macro-processProcessProfileOutcomesCoverage
Faire découvrir le riad
Business · Découverte de l'offre et disponibilités
VIS-01 — Consulter les chambres et les prixVIS✓ Chambres, capacités et prix affichés, ✗ Prix ou capacité différents de la descriptionnot tested
VIS-02 — Rechercher des disponibilitésVIS✓ Chambres libres listées pour les dates, ✗ Date d'arrivée passée refusée, ✗ Départ non postérieur à l'arrivée refusé, ✗ Chambre réservée ou bloquée non proposée, ✗ Capacité dépassée : chambre non proposéetested: compliant (CN-1, CL-2, CL-3, CL-4, CL-5, CL-6)
VIS-06 — Basculer le site en anglaisVIS✓ Site affiché en anglais, ✗ Textes restés en françaistested: compliant (CS-4)
Préparer l'accueil
Business · Réservation et suivi des séjours
ADM-01 — Retrouver la réservation au tableau de bord (US-2)ADM✓ Réservation du voyageur affichée, montants justes, ✗ Réservation absente du tableau de bord, ✗ Total ou statut divergent de Mes réservationstested: defect (CU-2, CL-7)
Suivre ses séjours
Business · Réservation et suivi des séjours
CLI-04 — Consulter ses réservationsCLI✓ Réservation listée, statut Confirmée, montants justes, ✗ Réservation absente ou montants fauxtested: compliant (CS-2)
CLI-05 — Annuler une réservationCLI✓ Réservation annulée, dates libérées, ✗ Annulation à moins de 48 h refuséeblocked (CS-1)
Vendre un séjour
Business · Réservation et suivi des séjours
CLI-02 — Réserver une chambre avec code promo (US-1)CLI✓ Récapitulatif juste : hébergement remisé, taxe, total, ✗ Code promo invalide refusé, ✗ Dates chevauchant une réservation refusées, ✗ Capacité de la chambre dépassée refuséetested: compliant (CU-1)
Gérer l'offre
Business · Gestion de l'offre (chambres, prix, calendrier, dates bloquées)
ADM-03 — Bloquer des datesADM✓ Dates bloquées non réservables, ✗ Blocage sur dates déjà réservéesnot tested
ADM-04 — Gérer les chambres et les prixADM✓ Nouveau prix affiché et appliqué, ✗ Prix invalide refusénot tested
Préparer l'accueil
Business · Gestion de l'offre (chambres, prix, calendrier, dates bloquées)
ADM-02 — Consulter le calendrier des réservationsADM✓ Occupation conforme aux réservations, ✗ Réservation manquante au calendriernot tested
Vendre un séjour
Support · Paiement de l'acompte
CLI-03 — Payer l'acompte de 30 % (simulé)CLI✓ Acompte payé, numéro remis, statut Confirmée, ✗ Paiement simulé refusé, réservation non confirméenot tested
Gérer les comptes
Support · Comptes et accès
VIS-03 — Créer un compteVIS✓ Compte créé puis confirmé par e-mail, ✗ Mot de passe trop court refusé, ✗ E-mail déjà utilisé refusé, ✗ E-mail de confirmation non reçunot tested
CLI-01 — Se connecter et se déconnecterCLI✓ Menu « Mes réservations » affiché, ✗ Identifiants erronés refusés, ✗ Voyageur voyant « Gestion » (accès indu)tested: compliant (CL-1)
Fidéliser les hôtes
Support · Relation client (avis, contact, FAQ)
CLI-06 — Laisser un avisCLI✓ Avis publié après un séjour passé, ✗ Avis refusé sans séjour passétested: compliant (CL-8)
Informer et assister
Support · Relation client (avis, contact, FAQ)
VIS-04 — Envoyer un message de contactVIS✓ Message envoyé et confirmé, ✗ Champ obligatoire vide refusé, ✗ E-mail invalide refusénot tested
VIS-05 — Consulter la FAQVIS✓ Réponses cohérentes avec les règles, ✗ Réponse contredisant taxe, acompte ou annulationtested: compliant (CS-3)
ADM-05 — Lire les messages de contactADM✓ Message du formulaire Contact reçu, ✗ Message absent de la Gestionnot tested

Key business rules by process

ProcessBusiness ruleSource
VIS-01 — Consulter les chambres et les prixRG-01 — Atlas : 900 MAD par nuit, 2 personnesread on the site : « 900 MAD / nuit »
RG-02 — Majorelle : 1 200 MAD par nuit, 3 personnesread on the site : « 1 200 MAD / nuit »
RG-03 — Suite Koutoubia : 1 800 MAD par nuit, 4 personnesread on the site : « 1 800 MAD / nuit »
RG-04 — Palmeraie : 750 MAD par nuit, 2 personnesread on the site : « 750 MAD / nuit »
RG-05 — Menara : 1 000 MAD par nuit, 2 personnesread on the site : « 1 000 MAD / nuit »
VIS-02 — Rechercher des disponibilitésRG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentread on the site : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-13 — Pas de réservation dans le passéread on the site : « pas de reservation dans le passe »
RG-14 — 1 nuit minimumread on the site : « 1 nuit minimum »
RG-15 — Recherche : 1 à 4 adultes et 0 à 3 enfants (limites du formulaire)to be confirmed
RG-20 — La gérante bloque des dates, qui deviennent non réservablesread on the site : « blocage de dates »
VIS-03 — Créer un compteRG-17 — Inscription par e-mail et mot de passe avec e-mail de confirmationread on the site : « inscription par e-mail + mot de passe avec e-mail de confirmation »
RG-18 — Mot de passe de 6 caractères minimum (limite du formulaire)to be confirmed
VIS-04 — Envoyer un message de contactRG-21 — Contact : nom (100 car.), e-mail et message (2 000 car.) obligatoires, sujet facultatif (150 car.)to be confirmed
VIS-05 — Consulter la FAQRG-06 — Taxe de séjour : 30 MAD par adulte et par nuit, jamais remiséeread on the site : « la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee »
RG-07 — Code RIAD10 : -10 % sur l'hébergement seulement (US-1 : Majorelle 2 nuits 2 adultes = 2 400 - 240 + 120 = 2 280 MAD)read on the site : « Le code promo RIAD10 donne -10 % sur l hebergement seulement »
RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)read on the site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-11 — Annulation possible jusqu'à 48 h avant l'arrivéeread on the site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
VIS-06 — Basculer le site en anglaisRG-22 — Site en français avec bascule ENread on the site : « FR avec bascule EN »
CLI-01 — Se connecter et se déconnecterRG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionread on the site : « La gerante est la seule administratrice »
CLI-02 — Réserver une chambre avec code promo (US-1)RG-02 — Majorelle : 1 200 MAD par nuit, 3 personnesread on the site : « 1 200 MAD / nuit »
RG-06 — Taxe de séjour : 30 MAD par adulte et par nuit, jamais remiséeread on the site : « la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee »
RG-07 — Code RIAD10 : -10 % sur l'hébergement seulement (US-1 : Majorelle 2 nuits 2 adultes = 2 400 - 240 + 120 = 2 280 MAD)read on the site : « Le code promo RIAD10 donne -10 % sur l hebergement seulement »
RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)read on the site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentread on the site : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-14 — 1 nuit minimumread on the site : « 1 nuit minimum »
CLI-03 — Payer l'acompte de 30 % (simulé)RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)read on the site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-09 — Paiement simulé, jamais réelread on the site : « paiement SIMULE, jamais reel »
RG-10 — Un numéro de réservation est remis après le paiement de l'acompteread on the site : « numero de reservation »
CLI-04 — Consulter ses réservationsRG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)read on the site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléeread on the site : « Confirmée »
RG-25 — Le voyageur connecté voit ses réservations dans Mes réservationsread on the site : « Le voyageur connecte voit ses reservations dans Mes reservations »
CLI-05 — Annuler une réservationRG-11 — Annulation possible jusqu'à 48 h avant l'arrivéeread on the site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléeread on the site : « Confirmée »
CLI-06 — Laisser un avisRG-16 — Seuls les hôtes ayant séjourné peuvent publier un avisread on the site : « Seuls les hôtes ayant séjourné au riad peuvent publier un avis. »
ADM-01 — Retrouver la réservation au tableau de bord (US-2)RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)read on the site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionread on the site : « La gerante est la seule administratrice »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléeread on the site : « Confirmée »
ADM-02 — Consulter le calendrier des réservationsRG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentread on the site : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionread on the site : « La gerante est la seule administratrice »
ADM-03 — Bloquer des datesRG-20 — La gérante bloque des dates, qui deviennent non réservablesread on the site : « blocage de dates »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionread on the site : « La gerante est la seule administratrice »
ADM-04 — Gérer les chambres et les prixRG-01 — Atlas : 900 MAD par nuit, 2 personnesread on the site : « 900 MAD / nuit »
RG-02 — Majorelle : 1 200 MAD par nuit, 3 personnesread on the site : « 1 200 MAD / nuit »
RG-03 — Suite Koutoubia : 1 800 MAD par nuit, 4 personnesread on the site : « 1 800 MAD / nuit »
RG-04 — Palmeraie : 750 MAD par nuit, 2 personnesread on the site : « 750 MAD / nuit »
RG-05 — Menara : 1 000 MAD par nuit, 2 personnesread on the site : « 1 000 MAD / nuit »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionread on the site : « La gerante est la seule administratrice »
ADM-05 — Lire les messages de contactRG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionread on the site : « La gerante est la seule administratrice »
RG-21 — Contact : nom (100 car.), e-mail et message (2 000 car.) obligatoires, sujet facultatif (150 car.)to be confirmed
—RG-24 — Prix affichés en MAD, par chambre et par nuitread on the site : « 750 MAD / nuit »

Acceptance test book

Analysis texts are shown in the language the analysis was written in.

Each test case derives from the understanding above; each actual result comes with its evidence.

Ref.User storyExpected resultActual result and evidenceRecommendation
CN-1En tant que Client voyageur connecté, je veux trouver une chambre libre pour mes dates, afin de réserver mon séjour au riad.
VIS-02 · RG-02 · RG-12 · RG-13 · RG-14
Connexion réussie ; la Majorelle est proposée pour 2 adultes du 10 au 12 novembre à 1 200 MAD la nuit.

Pass

Server responses

  • POST /auth/v1/token → 200 (data)
  • POST /rest/v1/rpc/available_rooms → 200 (data)

Hygiene of related pages: #2, #18

Keep this case in the regression test suite.
CU-1En tant que Client voyageur connecté, je veux réserver la Majorelle 2 nuits pour 2 adultes avec RIAD10, afin de payer un acompte calculé sur le total remisé.
client user story · CLI-02 · RG-02 · RG-06 · RG-07 · RG-08
Récapitulatif : hébergement 2 400, remise RIAD10 -240, taxe 120, total 2 280 MAD ; acompte 684 MAD ; numéro de réservation affiché.

Pass

Server responses

  • POST /rest/v1/rpc/available_rooms → 200 (data)

Hygiene of related pages: #2, #18

Keep this case in the regression test suite.
CU-2En tant que Gérante (seule administratrice), je veux retrouver dans mon tableau de bord la réservation du voyageur, afin de préparer son arrivée.
client user story · ADM-01 · RG-19 · RG-23
Le tableau de bord liste DZ-2610-A646A et DZ-2610-39268 (Atlas, 1 920 MAD) avec chambre, client, dates et statut.

Fail

expected text missing: « DZ-2610-A646A » (page: « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact Mes réservations Gestion EN Déconnexion Tableau de bord Calendrier Dates bloquées Chambres & prix Messag »)

Server responses

  • POST /auth/v1/token → 200 (data)

Hygiene of related pages: #2, #5, #6, #7, #12, #18

Finding: #1

Severity S2: an important secondary or edge business case does not behave as promised. Replay the steps with the test account, fix, then run the acceptance test again.
CS-1En tant que Client voyageur connecté, je veux annuler une réservation plus de 48 h avant l'arrivée, afin de libérer mes dates sans litige.
CLI-05 · RG-11 · RG-23
La réservation passe au statut Annulée ; ses dates redeviennent réservables.

Blocked

« Annuler » : paiement, suppression ou annulation, jamais cliqué

Server responses

  • POST /auth/v1/token → 200 (data)

Hygiene of related pages: #2, #18

Remove the blocker (« Annuler » : paiement, suppression ou annulation, jamais cliqué), then replay.
CS-2En tant que Client voyageur connecté, je veux voir un total et un acompte justes dans Mes réservations, afin de payer le bon montant.
CLI-04 · RG-01 · RG-06 · RG-08
Atlas 2 nuits 2 adultes : 1 800 + taxe 120 = 1 920 MAD ; acompte 30 % = 576 MAD.

Pass

Server responses

  • POST /auth/v1/token → 200 (data)

Hygiene of related pages: #2, #18

Keep this case in the regression test suite.
CS-3En tant que Visiteur, je veux lire dans la FAQ les règles de promo, de taxe et d'annulation, afin de réserver en confiance.
VIS-05 · RG-06 · RG-07 · RG-11
Les réponses citent RIAD10, la taxe de 30 MAD et l'annulation jusqu'à 48 h, sans contradiction.

Pass

Hygiene of related pages: #20

Keep this case in the regression test suite.
CS-4En tant que Visiteur, je veux afficher le site en anglais, afin de comprendre l'offre sans parler français.
VIS-06 · RG-22
Les libellés passent en anglais ; les chambres restent affichées.

Pass

Hygiene of related pages: #3, #4, #8, #9, #10, #11, #13, #14, #15, #16

Keep this case in the regression test suite.
CL-1En tant que Client voyageur connecté, je veux être refusé avec un mauvais mot de passe, afin que personne n'accède à mes réservations.
CLI-01 · RG-17
Connexion refusée avec un message d'erreur ; aucun accès à Mes réservations.

Pass

Server responses

  • POST /auth/v1/token → 400 (data)

Hygiene of related pages: #2, #18

Keep this case in the regression test suite.
CL-2En tant que Visiteur, je veux être empêché de chercher une arrivée passée, afin de ne pas réserver une date impossible.
VIS-02 · RG-13
Date passée refusée ; aucune chambre proposée.

Pass

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-3En tant que Visiteur, je veux être alerté si mon départ précède mon arrivée, afin de corriger mes dates.
VIS-02 · RG-14
Dates incohérentes refusées ; aucune chambre proposée.

Pass

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-4En tant que Visiteur, je veux être empêché de réserver zéro nuit, afin de respecter le minimum d'une nuit.
VIS-02 · RG-14
Séjour de zéro nuit refusé ; aucune chambre proposée.

Pass

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-5En tant que Visiteur, je veux ne voir que les chambres assez grandes pour 4 adultes, afin de réserver une chambre adaptée.
VIS-02 · RG-02 · RG-03 · RG-15
Seule la Suite Koutoubia (4 pers.) est proposée.

Pass

Server responses

  • POST /rest/v1/rpc/available_rooms → 200 (data)

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-6En tant que Visiteur, je veux être bloqué au-delà de 4 adultes, afin de ne pas réserver une capacité inexistante.
VIS-02 · RG-15
Saisie refusée ; aucune chambre proposée pour 5 adultes.

Pass

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-7En tant que Gérante (seule administratrice), je veux que la Gestion soit fermée aux visiteurs, afin de protéger les réservations et les clients.
ADM-01 · RG-19 · RG-25
Sans connexion, ni la Gestion ni les réservations ne s'affichent.

Pass

Hygiene of related pages: #2, #5, #6, #7, #12, #18

Keep this case in the regression test suite.
CL-8En tant que Client voyageur connecté, je veux être empêché de publier un avis sans séjour passé, afin que les avis restent authentiques.
CLI-06 · RG-16
Le compte sans séjour passé ne peut pas publier ; la règle est rappelée.

Pass

Server responses

  • POST /auth/v1/token → 200 (data)
  • POST /rest/v1/rpc/has_past_stay → 200 (data)

Hygiene of related pages: #2, #18

Keep this case in the regression test suite.
CN-2En tant que Client voyageur connecté, je veux réserver la Majorelle 2 nuits avec RIAD10 et payer l'acompte, afin de confirmer mon séjour.
CLI-03 · RG-02 · RG-06 · RG-07 · RG-08 · RG-09
Total 2 280 MAD après RIAD10, acompte de 684 MAD payé (simulé), réservation confirmée avec numéro.

Not playable

not played: element not found: input >> nth=0 — to be confirmed

Hygiene of related pages: no technical finding on these pages

Remove the blocker (not played: element not found: input >> nth=0 — to be confirmed), then replay.
CS-20En tant que Client voyageur connecté, je veux appliquer RIAD10 à la Suite Koutoubia, afin de payer un acompte juste sur le total remisé.
CLI-02 · RG-03 · RG-06 · RG-07 · RG-08
Total 3 360 MAD, acompte 1 008 MAD, solde 2 352 MAD ; la taxe de 120 MAD n'est pas remisée.

Not playable

not played: element not found: input[placeholder="RIAD10"] — to be confirmed

Hygiene of related pages: no technical finding on these pages

Remove the blocker (not played: element not found: input[placeholder="RIAD10"] — to be confirmed), then replay.
CS-21En tant que Gérante (seule administratrice), je veux retrouver la réservation Majorelle que le voyageur vient de payer, afin de préparer son arrivée.
ADM-01 · RG-08 · RG-19 · RG-23 · RG-25
Mes réservations affiche 2 280 MAD et 684 MAD ; la Gestion liste la réservation Majorelle du 2026-11-10.

Inconclusive — to be confirmed

expected text missing: « Total: 2 280 MAD » (page: « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact EN Connexion Connexion E-mail Mot de passe ConnexionPas encore de compte ? Créer un compte Riad Dar Zito »)

Hygiene of related pages: #2, #18

Have the business confirm the expected result, then replay.
CL-20En tant que Client voyageur connecté, je veux qu'un code promo inconnu soit refusé, afin de payer le prix juste.
CLI-02 · RG-04 · RG-07
Code refusé ; total 1 620 MAD et acompte 486 MAD inchangés.

Pass

Server responses

  • POST /auth/v1/token → 200 (data)

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-21En tant que Client voyageur connecté, je veux être empêché de réserver une chambre déjà prise, afin d'éviter un surbooking.
CLI-02 · RG-12
Réservation refusée : chambre indisponible sur ces dates, aucun numéro émis.

Pass

payment in test mode (provider: simulation)

Server responses

  • POST /auth/v1/token → 200 (data)

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-22En tant que Client voyageur connecté, je veux être bloqué si le nom complet manque, afin que la gérante sache qui accueillir.
CLI-03 · RG-08
Paiement bloqué, champ Nom complet signalé ; aucune réservation créée.

Pass

payment in test mode (provider: simulation)

Server responses

  • POST /auth/v1/token → 200 (data)

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CL-23En tant que Client voyageur connecté, je veux être alerté si mon e-mail est invalide, afin de recevoir ma confirmation.
CLI-03 · RG-08
Paiement bloqué, format d'e-mail signalé ; aucune réservation créée.

Pass

payment in test mode (provider: simulation)

Server responses

  • POST /auth/v1/token → 200 (data)

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.

Technical hygiene

Acceptance test of riad-connect-hub.lovable.app: 21 findings, 12 fixes to make

The test of riad-connect-hub.lovable.app found 21 issues, 4 of them critical or major (S1, S2), which come down to 12 fixes. Fix first: Business journey fails, then Sign-in pages can be framed by another site (clickjacking), then Form fields without a label.

20 problems found, 3 to fix first.

Fix these first

  1. One cause → one fixSign-in pages can be framed by another site (clickjacking): 3 findings, one fix

    Cause: Same "Sign-in pages can be framed by another site (clickjacking)" defect repeated: probably one shared component or template.

    Single fix: Send the Content-Security-Policy: frame-ancestors 'none' header (and X-Frame-Options: DENY).

    Findings : #2, #3, #4

  2. #2MajorSign-in pages can be framed by another site (clickjacking) — /auth (Chromium (Chrome's engine))

    Why first: A third-party site can hijack clicks on the sign-in page: customer accounts exposed and trust lost. Effort : low

    Page: https://riad-connect-hub.lovable.app/auth

    Observed: Encadrables : /admin; /auth

    Technical detail

    Original title: Pages de connexion affichables dans un autre site (clickjacking)

    Expected: Ces pages refusent d'être affichées dans un cadre étranger

    Recommended fix: Envoyer Content-Security-Policy: frame-ancestors 'none' (et X-Frame-Options: DENY).

  3. #3MinorSecurity headers missing — / (desktop · Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Observed: Manquants : Content-Security-Policy, Permissions-Policy

    Technical detail

    Original title: En-têtes de sécurité absents sur riad-connect-hub.lovable.app

    Expected: En-têtes de sécurité présents

    Recommended fix: Les ajouter dans la configuration de l'hébergeur (fichier _headers Netlify, vercel.json...).

  4. #4NoteSecurity headers missing — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Observed: Cross-Origin-Opener-Policy: absent

    Technical detail

    Original title: Cross-Origin-Opener-Policy absente : une fenêtre ouverte par un autre site garde un lien vers la vôtre

    Expected: Cross-Origin-Opener-Policy: same-origin (ou same-origin-allow-popups si des fenêtres de paiement/connexion sont utilisées)

    Recommended fix: Ajouter Cross-Origin-Opener-Policy: same-origin-allow-popups, puis same-origin si aucun parcours n'en souffre.

  5. One cause → one fixForm fields without a label: 3 findings, one fix

    Cause: The fields are built without an associated label.

    Single fix: Attach a label (or aria-label) to each field in the shared form component.

    Findings : #5, #6, #7

  6. #5MajorForm fields without a label — /admin (Chromium (Chrome's engine))

    Why first: Some visitors (keyboard users, visually impaired) cannot finish: these are lost bookings, and accessibility is becoming a legal duty in several markets. Effort : low

    Page: https://riad-connect-hub.lovable.app/admin

    Observed: input[maxlength="100"] Form elements must have labels; input Form elements must have labels; input[maxlength="100"] Form elements must have labels

    Technical detail

    Original title: Accessibilité : champ-sans-libelle (label) (3 occurrence(s) sur 2 page(s)) — ordinateur, téléphone

    Expected: Conforme WCAG 2.2 AA — WCAG 2.2 : 4.1.2 Nom, rôle et valeur (A), 1.3.1 Information et relations (A) · RGAA 4.1 : 11.1 Champ de formulaire avec étiquette

    Recommended fix: axe-core (moteur de référence) : corriger chaque élément cité.

  7. #6MajorAccessibility issue — /admin (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/admin

    Observed: .bg-background.w-9.\[\&_svg\]\:pointer-events-none:nth-child(1) Buttons must have discernible text

    Technical detail

    Original title: Accessibilité : nom-accessible (button-name) (1 occurrence(s) sur 1 page(s))

    Expected: Conforme WCAG 2.2 AA — WCAG 2.2 : 4.1.2 Nom, rôle et valeur (A) · RGAA 4.1 : 11.9 Intitulé de bouton pertinent

    Recommended fix: axe-core (moteur de référence) : corriger chaque élément cité.

  8. #7NoteAccessibility issue — /admin (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/admin

    Observed: thead > tr > .p-3:nth-child(7) Table header text should not be empty

    Technical detail

    Original title: Accessibilité : empty-table-header (1 occurrence(s) sur 1 page(s))

    Expected: Conforme WCAG 2.2 AA — bonne pratique (aucun critère WCAG 2.2 ni RGAA 4.1 directement visé)

    Recommended fix: axe-core (moteur de référence) : corriger chaque élément cité.

  9. One cause → one fixNo link to the privacy policy: 2 findings, one fix

    Cause: Same "No link to the privacy policy" defect repeated: probably one shared component or template.

    Single fix: Fix it once in the shared component or template, then re-check every listed page.

    Findings : #8, #9

  10. #8MinorNo link to the privacy policy — / (Chromium (Chrome's engine))

    Why first: This information is usually mandatory for a site that sells online; its absence exposes the publisher and reassures buyers less. Effort : low

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: Pas de lien vers la politique de confidentialité

    Expected: Un lien vers la politique de confidentialité (RGPD / loi 09-08)

    Observed: Aucun lien ni texte « confidentialité / privacy / données personnelles » trouvé sur l'accueil.

    Recommended fix: Publier une politique de confidentialité et la lier depuis le pied de page.

  11. #9MinorNo legal notice — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: Pas de mentions légales

    Expected: Des mentions légales (éditeur, hébergeur, contact)

    Observed: Aucun lien « mentions légales / CGU / CGV / legal » trouvé sur l'accueil.

    Recommended fix: Ajouter une page de mentions légales liée depuis le pied de page.

  12. One cause → one fixPages and images too heavy: 2 findings, one fix

    Cause: Images and resources are served too heavy, probably without compression or proper sizing.

    Single fix: Compress and resize images (WebP or AVIF, srcset) once in the publishing pipeline.

    Findings : #10, #11

  13. #10MinorPages and images too heavy — / (Chromium (Chrome's engine))

    Why first: A slow page makes visitors leave before they even see the offer, especially on phones: fewer bookings. Effort : low

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: 2 image(s) trop lourde(s) pour leur taille d'affichage

    Expected: Images < 300 Ko, dimensionnées pour l'affichage

    Observed: ttps://riad-connect-hub.lovable.app/assets/hero-O0-s_7b9.jpg : 461 Ko, 1920 px affichés en 1440 px; /riad-connect-hub.lovable.app/assets/room-atlas-DfmmbZJQ.jpg : 187 Ko, 1200 px affichés en 192 px

    Recommended fix: SVG ou WebP pour le logo ; images responsives (srcset, AVIF/WebP) ; préchargement de l'image principale.

  14. #11MinorPages and images too heavy — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Observed: https://riad-connect-hub.lovable.app/assets/hero-O0-s_7b9.jpg (image/jpeg) : 462 Ko

    Technical detail

    Original title: Images lourdes : 1 fichier(s) au-dessus de 300 Ko

    Expected: Chaque fichier ≤ 300 Ko transférés

    Recommended fix: Convertir en WebP ou AVIF, redimensionner à la taille d'affichage (srcset), viser moins de 200 Ko par image ; charger en différé celles qui sont sous la ligne de flottaison.

The rest

0Critical
3Major
12Minor
5Note
  • #12MinorInsufficient text contrast — /admin (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/admin

    Technical detail

    Original title: Accessibilité : contraste (color-contrast) (1 occurrence(s) sur 1 page(s)) — 8 sélecteur(s)

    Expected: Conforme WCAG 2.2 AA — WCAG 2.2 : 1.4.3 Contraste (minimum) (AA) · RGAA 4.1 : 3.2 Contraste du texte

    Observed: .p-3:nth-child(3) > .text-xs : ratio 2,12:1 (texte #b9ada6 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .font-semibold.p-3 : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(2) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(3) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(4) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(5) : ra

    Recommended fix: Une règle CSS par sélecteur cité : foncer le texte ou éclaircir le fond jusqu'à la cible (4,5:1 ; 3:1 pour un texte d'au moins 24 px, ou 18,66 px en gras).

  • One cause → one fixS3 issue — /: 2 findings, one fix

    Cause: Same "S3 issue — /" defect repeated: probably one shared component or template.

    Single fix: Fix it once in the shared component or template, then re-check every listed page.

    Findings : #13, #14

  • #13MinorS3 issue — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: Aucun bandeau de consentement aux cookies détecté sur riad-connect-hub.lovable.app

    Expected: Un bandeau qui demande l'accord (accepter / refuser / personnaliser)

    Observed: Ni outil de consentement connu, ni texte « cookies » avec un bouton d'acceptation, alors que des traceurs ou cookies de mesure sont présents.

    Recommended fix: Le RGPD et la directive « ePrivacy » (en France, les règles de la CNIL ; au Maroc, la loi 09-08 et la CNDP) demandent l'accord du visiteur AVANT de déposer un cookie ou d'appeler un service qui sert à mesurer l'audience ou à faire de la publicité. Les cookies strictement nécessaires (session, panier, langue) n'ont pas besoin d'accord. Installez un outil de gestion du consentement et bloquez les traceurs tant que le visiteur n'a pas choisi.

  • #14MinorS3 issue — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: Cookies de mesure ou de publicité déposés avant tout consentement sur riad-connect-hub.lovable.app

    Expected: Seuls des cookies techniques (session, panier, langue) avant l'accord

    Observed: Déposés sans accord : __cf_bm (supabase.co, tiers)

    Recommended fix: Le RGPD et la directive « ePrivacy » (en France, les règles de la CNIL ; au Maroc, la loi 09-08 et la CNDP) demandent l'accord du visiteur AVANT de déposer un cookie ou d'appeler un service qui sert à mesurer l'audience ou à faire de la publicité. Les cookies strictement nécessaires (session, panier, langue) n'ont pas besoin d'accord. Déposez ces cookies seulement après l'accord, et proposez « Refuser » aussi simplement que « Accepter ».

  • One cause → one fixSlow loading: 3 findings, one fix

    Cause: Too many resources to load before display, especially on mobile networks.

    Single fix: Lighten and defer images and scripts, and cache shared resources.

    Findings : #15, #16, #17

  • #15MinorSlow loading (6252 ms) — / (phone · Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Expected: Chargement < 3000 ms

    Observed: / 6252 ms

    Technical detail

    Original title: Chargement lent (6252 ms) : / — téléphone uniquement

    Recommended fix: Mesurer avec Lighthouse ; compresser les images, decouper le JavaScript, mettre en cache.

  • #16MinorSlow loading (4600 ms, 4562 ms) — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: Lent sur téléphone en réseau lent : LCP 4600 ms, chargement 4562 ms (non confirmé)

    Expected: LCP ≤ 4000 ms et chargement ≤ 10000 ms dans ces conditions (profil mobile de Lighthouse)

    Observed: LCP 4600 ms, chargement 4562 ms (2 mesure(s), non confirmé)

    Recommended fix: Alléger d'abord l'élément principal affiché (image ou titre) : image compressée et préchargée (rel=preload), CSS critique en ligne, JavaScript différé ; servir les fichiers depuis un CDN proche des visiteurs.

  • #17MinorPages and images too heavy — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: Fichiers JavaScript lourds : 1 fichier(s) au-dessus de 500 Ko

    Expected: Chaque fichier ≤ 500 Ko transférés

    Observed: https://riad-connect-hub.lovable.app/assets/index-BYEaChBb.js (text/javascript) : 574 Ko décompressés (167 Ko transférés)

    Recommended fix: Découper le JavaScript par page (code splitting), retirer les bibliothèques inutilisées (tree shaking), minifier et compresser (brotli) ; différer les scripts non essentiels (defer/async).

  • #18MinorSign-in pages open to search engines — /auth (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/auth

    Observed: Indexables : /auth ; robots.txt : User-agent: Googlebot Allow: / User-agent: Bingbot Allow: / User-agent: Twitterbot Allow: / User-agent: facebookexter

    Technical detail

    Original title: Pages de connexion ouvertes aux moteurs de recherche

    Expected: noindex et Disallow sur les espaces privés

    Recommended fix: Ajouter <meta name=robots content=noindex> et Disallow: /admin, /vendeur (ou équivalents).

  • #19NoteNo security.txt file — /.well-known/security.txt (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/.well-known/security.txt

    Observed: HTTP 404

    Technical detail

    Original title: Pas de /.well-known/security.txt

    Expected: Un fichier security.txt indiquant comment signaler une faille (RFC 9116)

    Recommended fix: Ajouter /.well-known/security.txt avec un contact de sécurité.

  • #20NoteHeading levels skipped — /faq (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/faq

    Observed: .border-b:nth-child(1) > h3 Heading levels should only increase by one; .border-b:nth-child(1) > h3 Heading levels should only increase by one

    Technical detail

    Original title: Accessibilité : ordre-titres (heading-order) (2 occurrence(s) sur 1 page(s)) — ordinateur, téléphone

    Expected: Conforme WCAG 2.2 AA — RGAA 4.1 : 9.1 Hiérarchie des titres

    Recommended fix: axe-core (moteur de référence) : corriger chaque élément cité.

  • #21NoteSearch optimisation to improve — / (Chromium (Chrome's engine))

    Page: https://riad-connect-hub.lovable.app/

    Technical detail

    Original title: Référencement : 1 problème(s) sur riad-connect-hub.lovable.app

    Expected: Canonical propre à chaque langue, og:image, titres distincts

    Observed: sans canonical : /; /auth; /contact; /faq (+3)

    Recommended fix: Canonical auto-référent par langue, og:image/og:title partout, titre et canonical sur chaque page.

By theme

  • Security and trust — A weakness exposes customer accounts and data; lost trust costs bookings and puts the publisher at risk.
    4 finding(s), 1 critical or major; 2 fix(es) cover them. #2, #3, #4, #19
  • Accessibility — Some visitors (keyboard users, visually impaired) cannot finish: these are lost bookings, and accessibility is becoming a legal duty in several markets.
    5 finding(s), 2 critical or major; 3 fix(es) cover them. #5, #6, #7, #12, #20
  • Legal obligations — This information is usually mandatory for a site that sells online; its absence exposes the publisher and reassures buyers less.
    4 finding(s), 0 critical or major; 2 fix(es) cover them. #8, #9, #13, #14
  • Loading speed — A slow page makes visitors leave before they even see the offer, especially on phones: fewer bookings.
    5 finding(s), 0 critical or major; 2 fix(es) cover them. #10, #11, #15, #16, #17
  • Search visibility — Search brings visitors for free; poorly described or poorly indexed pages bring fewer.
    2 finding(s), 0 critical or major; 2 fix(es) cover them. #18, #21

Next steps

  1. Fix the 5 "fix first" points, in order.
  2. Apply the 6 grouped fixes: each one settles several findings at once.
  3. Then handle the remaining minor findings, section by section.
  4. Run a new Avalyz test to verify the fixes.
  5. Extend the scope to the 5 untested area(s) (for example with a test account).

Tested: Accessibility (partial), Signed-in area, Journeys by role (partial), Business logic (partial), Application security, API / integration (partial), Compliance, End-to-end by role, Performance, Business scenarios (partial), 16 other area(s). Not tested: Visual regression, Data security, Static analysis, Unit tests, Components. The absence of an issue does not prove that everything works: only what is listed was verified.

Coverage limits

  • Accessibility : partial
    Technical detail

    axe-core sur chaque page (bureau et téléphone) + focus clavier ; critères WCAG 2.2 et RGAA 4.1 cités dans les constats ; compléments navigateur : 8 page(s) (8 pages lues sur 8 visitées (mode complet)), contraste mesuré sur 16 texte(s) (clair, et sombre sur 8 page(s)), 320 tabulation(s) (135 élément(s) vérifiés pour le focus visible, 0 fenêtre(s) modale(s) cachée(s) parcourue(s) sans clic, 0 piège(s)), noms accessibles vérifiés sur 8 page(s), 0 PDF lié(s) non audité(s)

  • Visual regression : not tested
    Technical detail

    Aucune reference approuvee : approuve un passage comme reference.

  • Journeys by role : partial
    Technical detail

    3 pages, 57 actions relevées, 0 action jouée (lecture seule) — rôle « [email] » ; 1 autre(s) rôle(s) : voir les lignes « Profil »

  • Business logic : partial
    Technical detail

    logique métier décrite par le client jouée par les scénarios métier (voir la ligne « Scénarios métier ») ; aucune idée « Depuis ton idée » à rapprocher

  • API / integration : partial
    Technical detail

    pas de spécification OpenAPI trouvée (/openapi.json, /swagger.json, /api-docs, /api/openapi.json…) ; sondes GET : /api → 406, /api/health → 406, /graphql → 406 — importe le contrat de l'API pour des cas par opération ; spec reconstituée depuis le navigateur (7 page(s) — 7 pages lues sur 8 visitées (mode complet), 9 appel(s) observé(s), aucune requête ajoutée) : 1 point(s) d'entrée — POST /__l5e/trackevents [?] ; 0 constat(s)

  • Data security : not tested
    Technical detail

    aucune base détectée (Supabase : clé anon dans la page ; Firebase : apiKey + databaseURL) — le contrôle RLS demande un accès à la base ou une clé publique visible

  • Business scenarios : partial
    Technical detail

    15 cas conçus (1 nominal, 6 secondaires, 8 limites) ; joués : 15 (mode complet : CN-1, CU-1, CU-2, CS-1, CS-2, CS-3, CS-4, CL-1, CL-2, CL-3, CL-4, CL-5, CL-6, CL-7, CL-8) ; 13 réussis / 1 échecs / 1 bloqués / 0 non jouables ; écriture autorisée, 38 soumission(s) ; exploration en jouant : 5 écran(s) découvert(s) (https://riad-connect-hub.lovable.app/book/atlas?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0, https://riad-connect-hub.lovable.app/book/majorelle?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0, https://riad-connect-hub.lovable.a

  • Static analysis : not tested
    Technical detail

    code source non fourni (champ « URL du code source » du panneau) ou mode rapide

  • Unit tests : not tested
    Technical detail

    code source non fourni (champ « URL du code source » du panneau) ou mode rapide

  • Components : not tested
    Technical detail

    code source non fourni (champ « URL du code source » du panneau) ou mode rapide

  • Another area : partial
    Technical detail

    Niveaux

    6/13 exécutés, 3 partiels, 4 non testés (sur 13 niveaux du plan) ; demandés : 6/10 faits

  • Another area : partial
    Technical detail

    À vérifier (sans constat)

    1 point(s) non mesuré(s), sans constat : Accessibilité : contraste à vérifier à la main — fond non uni (image, dégradé, élément superposé ou transparence) : 18 sélecteur(s) sur 8 page(s) — .tracking-\[0\.25em\] : Element's background color could not be determined due to a background gradient — 1 page(s) : / ; h1 : Element's background color could not be determined due to a background gradient — 1 page(s) : / ; .max-w-xl : Element's background color could not be determined due to a bac

Test timings
  • 6779 msplan du site (0 adresse(s) à visiter en plus)
  • 11188 mscréation des comptes de recette (1/1 créé(s))
  • 1813 msnavigation bureau p1 (chargement 547, réseau calme 1246, relevés 20)
  • 5980 msa11y bureau p1
  • 216 msfocus clavier bureau p1
  • 1862 mscapture bureau p1
  • 1151 msnavigation bureau p2 (chargement 440, réseau calme 691, relevés 20)
  • 639 msa11y bureau p2
  • 110 mscapture bureau p2
  • 1359 msnavigation bureau p3 (chargement 566, réseau calme 782, relevés 11)
  • 692 msa11y bureau p3
  • 115 mscapture bureau p3
  • 1206 msnavigation bureau p4 (chargement 551, réseau calme 644, relevés 11)
  • 669 msa11y bureau p4
  • 117 mscapture bureau p4
  • 1147 msnavigation bureau p5 (chargement 454, réseau calme 670, relevés 23)
  • 549 msa11y bureau p5
  • 100 mscapture bureau p5
  • 1109 msnavigation bureau p6 (chargement 402, réseau calme 691, relevés 16)
  • 622 msa11y bureau p6
  • 135 mscapture bureau p6
  • 3075 msconnexion avec le compte de test (avalyz-test-gerante-143a7d4d@test.avalyz.com) (réussie)
  • 1449 msnavigation bureau p1 (chargement 385, réseau calme 1042, relevés 22)
  • 765 msa11y bureau p1
  • 179 mscapture bureau p1
  • 1427 msnavigation bureau p2 (chargement 431, réseau calme 979, relevés 17)
  • 814 msa11y bureau p2
  • 2198 mscapture bureau p2
  • 1411 msnavigation bureau p3 (chargement 415, réseau calme 969, relevés 27)
  • 1227 msa11y bureau p3
  • 551 mscapture bureau p3
  • 8294 msconnexion avec le compte de test (client) (réussie)
  • 1461 msnavigation bureau p1 (chargement 422, réseau calme 994, relevés 45)
  • 5656 msa11y bureau p1
  • 119 mscapture bureau p1
  • 1518 msnavigation bureau p2 (chargement 542, réseau calme 956, relevés 20)
  • 825 msa11y bureau p2
  • 1836 mscapture bureau p2
  • 581 mssondes (robots.txt, pages inexistantes, paramètres, limites)
  • 75 msliens (0 lien(s) vérifié(s) (plafond 50), 0 fil(s) réellement utilisé(s) sur 4, délai 8000 ms par lien, périmètre 4 ms, requêtes 0 ms, lien le plus lent 0 ms, 0 non vérifié(s) (délai ou réseau), 0 erreur(s) HTTP)

Reasoned GO / NO-GO decision

GO WITH CONDITIONS
Technical detail

La recherche de disponibilités et ses bornes, la connexion, l'affichage des réservations et les contrôles de saisie de la page de réservation se comportent comme attendu (CN-1, CL-1 à CL-8, CS-2, CL-20 à CL-23). En revanche, le parcours de l'argent n'est pas démontré de bout en bout : le paiement de l'acompte n'a jamais pu être joué (CN-2, I1), le calcul RIAD10 reste non confirmé (CS-20, I3) et la gérante ne retrouve pas dans la Gestion les réservations confirmées du voyageur, défaut reproduit (C01, I4). La mise en service n'est envisageable qu'une fois ces points démontrés ou corrigés et les

Reasons (evidence)

  • 17 cases pass out of 22 played; 1 fail; 1 inconclusive; 3 blocked.
  • Failing cases: CU-2.
  • Technical hygiene: 0 critical, 3 major, 17 minor finding(s).

Expert opinion

Decision: GO WITH CONDITIONS

Arguments

  1. see the technical detail (strong)
    evidence : CN-1, CL-2, CL-3, CL-4, CL-5, CL-6, processus:VIS-02
  2. see the technical detail (strong)
    evidence : #1 — Business journey fails — /admin, I4, CU-2, processus:ADM-01, https://riad-connect-hub.lovable.app/adm
  3. see the technical detail (strong)
    evidence : CN-2, I1, CS-21, I2, processus:CLI-03
  4. see the technical detail (medium)
    evidence : CS-20, I3
  5. see the technical detail (medium)
    evidence : CS-2, processus:CLI-04
  6. see the technical detail (medium)
    evidence : CL-20, CL-21, CL-22, CL-23, I1
  7. see the technical detail (medium)
    evidence : CL-1, CL-7, processus:CLI-01
  8. see the technical detail (medium)
    evidence : M03, M01, M02, https://riad-connect-hub.lovable.app/aut
  9. see the technical detail (weak)
    evidence : CS-3, CS-4, CL-8

Residual risks

  • see the technical detail
  • see the technical detail
  • see the technical detail
  • see the technical detail
  • see the technical detail
  • see the technical detail
  • see the technical detail

Conditions

  • see the technical detail
  • see the technical detail
  • see the technical detail
  • see the technical detail
  • see the technical detail
  • see the technical detail

Scope of the opinion

  • tested : see the technical detail
  • not tested : see the technical detail

Confidence: medium

Technical detail

Arguments: La recherche de disponibilités est conforme, y compris les bornes de dates (passé, départ avant arrivée, zéro nuit) et de capacité (4 et 5 adultes).

Arguments: US-2 est en défaut reproduit : les réservations confirmées du voyageur (DZ-2610-A646A) n'apparaissent pas sur la page Gestion de la gérante ; la cause (absence réelle ou filtre de période) reste à établir.

Arguments: Le paiement de l'acompte, cœur du parcours de l'argent, n'a jamais été joué : CN-2 est non jouable deux fois et aucune réservation payée n'a pu être vérifiée.

Arguments: La règle client RIAD10 n'est pas confirmée sur les montants : le total attendu est absent après application du code sur la Suite Koutoubia, résultat non concluant.

Arguments: Les montants affichés dans Mes réservations sont conformes aux règles de taxe et d'acompte.

Arguments: La page de réservation refuse un code promo inconnu, un nom manquant et un e-mail invalide ; le refus de double réservation (CL-21) est observé mais sa précondition n'est pas établie, CN-2 n'ayant pas payé.

Arguments: La connexion refuse un mauvais mot de passe et la Gestion comme Mes réservations restent fermées sans connexion.

Arguments: Les pages de connexion et de Gestion sont encadrables par un autre site et la Gestion présente des défauts d'accessibilité.

Arguments: La FAQ est cohérente avec les règles de promo, de taxe et d'annulation, la bascule anglaise fonctionne et l'avis est refusé sans séjour passé.

Residual risks: Encaissement de l'acompte et émission du numéro de réservation jamais observés (CN-2, I1) : un défaut sur le parcours de l'argent reste possible.

Residual risks: Calcul RIAD10 (remise sur l'hébergement seul, taxe non remisée) non confirmé (CS-20, I3).

Residual risks: Cause de C01 non établie : réservations absentes de la Gestion ou simple filtre de période.

Residual risks: Règle anti-double réservation non démontrée : CL-21 a réussi sans réservation préalable établie.

Residual risks: Annulation jusqu'à 48 h non testée (CS-1 bloqué).

Residual risks: Sécurité des données non testée (couverture:Securite des donnees).

Residual risks: Constats de moindre gravité omis du dossier (tronque) non examinés ici.

Conditions: Rejouer CN-2 avec un statut réussi : réservation Majorelle avec RIAD10, paiement simulé de l'acompte, total, acompte et numéro conformes à la règle du client (processus:CLI-03).

Conditions: Corriger ou expliquer C01 puis rejouer CU-2 avec succès : toute réservation confirmée du voyageur visible dans la Gestion (processus:ADM-01).

Conditions: Rejouer CS-20 avec succès : total après RIAD10 conforme à la remise sur l'hébergement seul.

Conditions: Après CN-2, rejouer CS-21 et CL-21 avec succès : réservation visible dans Mes réservations et dans la Gestion, seconde réservation des mêmes dates refusée.

Conditions: Couvrir processus:VIS-01 et processus:VIS-03 du parcours principal.

Conditions: Rendre /auth et /admin non encadrables (M03) et corriger M01 et M02.

tested: processus:VIS-02 Rechercher des disponibilités (CN-1, CL-2 à CL-6), processus:CLI-01 Se connecter et se déconnecter (CL-1), processus:CLI-02 Réserver une chambre, partiellement (CU-1 s'arrête au choix de la chambre ; CL-20 à CL-23 sur la page de réservation), processus:CLI-04 Consulter ses réservations (CS-2), processus:ADM-01 Retrouver la réservation au tableau de bord (CU-2, CL-7) : défaut C01, processus:VIS-05 Consulter la FAQ (CS-3), processus:VIS-06 Basculer le site en anglais (CS-4), processus:CLI-06 Laisser un avis, refus seulement (CL-8), couverture:Securite applicative, couverture:Per

not tested: processus:CLI-03 Payer l'acompte de 30 % (simulé) : CN-2 non jouable (I1), processus:VIS-01 Consulter les chambres et les prix, processus:VIS-03 Créer un compte, processus:CLI-05 Annuler une réservation : CS-1 bloqué, processus:VIS-04 Envoyer un message de contact, processus:ADM-02 Consulter le calendrier des réservations, processus:ADM-03 Bloquer des dates, processus:ADM-04 Gérer les chambres et les prix, processus:ADM-05 Lire les messages de contact, couverture:Securite des donnees

Avalyz proves what it saw, it does not guarantee the rest: what was not tested is not covered. Without a test account, signed-in pages are not explored; with a test account, signing in is the only form submitted.

The full account report (journeys, evidence, ISO 29119 format) is for accounts only.

AvalyzTester une autre app

8/8 pages

Exemple de rapport

Application fictive créée pour la démonstration : aucune donnée réelle. Ton rapport suivra la même structure.

Tester mon app

Ce qui casse dans ton app

Riad Dar Zitoun

riad-connect-hub.lovable.app

Adresse testée : https://riad-connect-hub.lovable.app/ · 09/10/2026 · passage complet, mode écriture demandé (données de test seulement, jamais de paiement réel ni de suppression) · 8 pages visitées · 10 niveaux de test · verdict calculé comme éditeur · app en construction

GO SOUS CONDITIONS La recherche de disponibilités et ses bornes, la connexion, l'affichage des réservations et les contrôles de saisie de la page de réservation se comportent comme attendu (CN-1, CL-1 à CL-8, CS-2, CL-20 à CL-23). Voir la décision motivée

Rapport de synthèse

Décision

GO SOUS CONDITIONSLa recherche de disponibilités et ses bornes, la connexion, l'affichage des réservations et les contrôles de saisie de la page de réservation se comportent comme attendu (CN-1, CL-1 à CL-8, CS-2, CL-20 à CL-23). En revanche, le parcours de l'argent n'est pas démontré de bout en bout : le paiement de l'acompte n'a jamais pu être joué (CN-2, I1), le calcul RIAD10 reste non confirmé (CS-20, I3) et la gérante ne retrouve pas dans la Gestion les réservations confirmées du voyageur, défaut reproduit (C01, I4). La mise en service n'est envisageable qu'une fois ces points démontrés ou corrigés et les pages /auth et /admin protégées contre l'encadrement (M03).

Le site tient ses promesses sur la recherche de disponibilités, la connexion et l'affichage des réservations, mais le paiement de l'acompte n'a pas pu être vérifié de bout en bout et la gérante ne retrouve pas dans sa Gestion une réservation confirmée du voyageur. Avant la mise en service : corriger la Gestion, protéger les pages de connexion et démontrer le parcours de paiement.

Chiffres clés

8pages testées
22cas métier joués17 réussis · 1 en échec · 1 bloqués
21constats0 Critique · 4 Majeur · 12 Mineur · 5 Remarque

À corriger d'abord

  1. #1MajeurUS-2 : réservation absente du tableau de bord de la gérante
    La gérante doit voir chaque réservation confirmée pour préparer l'accueil et éviter une double vente : c'est le parcours qui fait entrer l'argent.
  2. #2MajeurPages /auth et /admin encadrables (clickjacking)
    Protège la connexion des voyageurs et de la gérante ; le même réglage d'en-têtes corrige aussi C10 et C19.
  3. #3MineurEn-têtes CSP et Permissions-Policy absents
  4. #4RemarqueEn-tête Cross-Origin-Opener-Policy absent
  5. #5MajeurChamps de formulaire sans libellé
    Rend les formulaires et la Gestion utilisables par tous ; le même travail corrige C02 et C17.

Prochaines étapes

  1. Établir la cause de C04 (réservation absente ou tableau limité à une période), corriger puis rejouer le scénario US-2.
  2. Rendre jouable et rejouer de bout en bout la réservation avec RIAD10 et le paiement simulé de l'acompte, en confirmant le calcul de la remise.
  3. Ajouter les en-têtes de sécurité chez l'hébergeur (C03, C10, C19) et publier security.txt (C20).
  4. Publier mentions légales et politique de confidentialité, puis trancher la question du consentement aux cookies.

Rapport détaillé

Notre compréhension du métier (à valider)

Cette compréhension a été construite à partir de ce que l'application montre ; elle est à valider par les équipes métier avant de fonder une décision.

Précisions du client prises en compte (round 2)

  • Business model : Le code promo RIAD10 donne -10 % sur l hebergement seulement ; la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee ; l acompte de 30 % porte sur le total remise, taxe comprise.
  • Organisation et profils : La gerante est la seule administratrice : elle gere le calendrier des reservations, les dates bloquees, les chambres et les prix, et lit les messages de contact. Le voyageur connecte voit ses reservations dans Mes reservations.

User stories ajoutées

  1. En tant que voyageur connecte, je veux reserver la chambre Majorelle 2 nuits pour 2 adultes avec le code RIAD10, afin de payer un acompte calcule sur le total remise.
  2. En tant que gerante, je veux retrouver dans mon tableau de bord la reservation que le voyageur vient de faire, afin de preparer son arrivee.

Cas tirés des user stories du client : CU-1, CU-2

Concept

Riad Dar Zitoun vend en direct des nuitées dans ses 5 chambres de la Médina de Marrakech à des voyageurs, réservées en ligne avec un acompte de 30 % payé en ligne. Promesse : un riad paisible au cœur de la Médina, des prix clairs par nuit et une annulation possible jusqu'à 48 h avant l'arrivée.

Clients visés : Voyageurs (couples, familles, petits groupes jusqu'à 4 personnes par chambre) visitant Marrakech ; site FR avec bascule EN.

Chaîne de valeur

  1. AttirerVIS-01, VIS-05, VIS-06
  2. ConvertirVIS-02, VIS-03, CLI-01, CLI-02
  3. EncaisserCLI-03
  4. Délivrer le séjourCLI-04, ADM-01, ADM-02, ADM-03, ADM-04
  5. Servir et fidéliserCLI-05, CLI-06, VIS-04, ADM-05

Business model

Segments de clientsVoyageurs, couples et petites familles (jusqu'à 4 personnes) visitant Marrakech, francophones et anglophones.
Proposition de valeurRiad paisible au cœur de la Médina, 5 chambres de 750 à 1 800 MAD, annulation jusqu'à 48 h.
CanauxSite web direct FR/EN : recherche de disponibilités, réservation en ligne, Mes réservations, contact, téléphone, e-mail.
Sources de revenusNuitées vendues par chambre, acompte 30 % en ligne (simulé), taxe de séjour 30 MAD/adulte/nuit.

Organisation

Organigramme fonctionnel : espaces de l'application et profils d'utilisateurs. ★ = profil retenu pour les tests.

  • riad-connect-hub.lovable.app
    • Espace public (accueil, disponibilités, avis, FAQ, contact)
      • Visiteur VIS ★
    • Espace voyageur « Mes réservations »
      • Client voyageur connecté CLI ★
    • Gestion (administration de la gérante)
      • Gérante (seule administratrice) ADM ★

Tableau des fonctions

Fonction (profil)MissionPrincipales responsabilitésRetenu pour les tests
Visiteur VISDécouvrir le riad et vérifier les disponibilités avant de réserver.
  • Rechercher des dates libres
  • Choisir une chambre adaptée
  • Contacter le riad
★ oui
Client voyageur connecté CLIRéserver et suivre son séjour au riad en payant l'acompte en ligne.
  • Réserver et payer l'acompte
  • Suivre ou annuler ses réservations
  • Donner son avis après séjour
★ oui
Gérante (seule administratrice) ADMPiloter les réservations, l'offre de chambres et l'accueil des voyageurs.
  • Suivre les réservations et préparer les arrivées
  • Gérer chambres, prix et dates bloquées
  • Répondre aux messages de contact
★ oui

Domaines

Métier

  • Découverte de l'offre et disponibilités VIS-01, VIS-02, VIS-06
  • Réservation et suivi des séjours CLI-02, CLI-04, CLI-05, ADM-01
  • Gestion de l'offre (chambres, prix, calendrier, dates bloquées) ADM-02, ADM-03, ADM-04

Support

  • Paiement de l'acompte CLI-03
  • Comptes et accès VIS-03, CLI-01
  • Relation client (avis, contact, FAQ) VIS-04, VIS-05, CLI-06, ADM-05

Cartographie des macro-processus et processus

Macro-processusProcessusProfilIssuesCouverture
Faire découvrir le riad
Métier · Découverte de l'offre et disponibilités
VIS-01 — Consulter les chambres et les prixVIS✓ Chambres, capacités et prix affichés, ✗ Prix ou capacité différents de la descriptionnon testé
VIS-02 — Rechercher des disponibilitésVIS✓ Chambres libres listées pour les dates, ✗ Date d'arrivée passée refusée, ✗ Départ non postérieur à l'arrivée refusé, ✗ Chambre réservée ou bloquée non proposée, ✗ Capacité dépassée : chambre non proposéetesté : conforme (CN-1, CL-2, CL-3, CL-4, CL-5, CL-6)
VIS-06 — Basculer le site en anglaisVIS✓ Site affiché en anglais, ✗ Textes restés en françaistesté : conforme (CS-4)
Préparer l'accueil
Métier · Réservation et suivi des séjours
ADM-01 — Retrouver la réservation au tableau de bord (US-2)ADM✓ Réservation du voyageur affichée, montants justes, ✗ Réservation absente du tableau de bord, ✗ Total ou statut divergent de Mes réservationstesté : défaut (CU-2, CL-7)
Suivre ses séjours
Métier · Réservation et suivi des séjours
CLI-04 — Consulter ses réservationsCLI✓ Réservation listée, statut Confirmée, montants justes, ✗ Réservation absente ou montants fauxtesté : conforme (CS-2)
CLI-05 — Annuler une réservationCLI✓ Réservation annulée, dates libérées, ✗ Annulation à moins de 48 h refuséebloqué (CS-1)
Vendre un séjour
Métier · Réservation et suivi des séjours
CLI-02 — Réserver une chambre avec code promo (US-1)CLI✓ Récapitulatif juste : hébergement remisé, taxe, total, ✗ Code promo invalide refusé, ✗ Dates chevauchant une réservation refusées, ✗ Capacité de la chambre dépassée refuséetesté : conforme (CU-1)
Gérer l'offre
Métier · Gestion de l'offre (chambres, prix, calendrier, dates bloquées)
ADM-03 — Bloquer des datesADM✓ Dates bloquées non réservables, ✗ Blocage sur dates déjà réservéesnon testé
ADM-04 — Gérer les chambres et les prixADM✓ Nouveau prix affiché et appliqué, ✗ Prix invalide refusénon testé
Préparer l'accueil
Métier · Gestion de l'offre (chambres, prix, calendrier, dates bloquées)
ADM-02 — Consulter le calendrier des réservationsADM✓ Occupation conforme aux réservations, ✗ Réservation manquante au calendriernon testé
Vendre un séjour
Support · Paiement de l'acompte
CLI-03 — Payer l'acompte de 30 % (simulé)CLI✓ Acompte payé, numéro remis, statut Confirmée, ✗ Paiement simulé refusé, réservation non confirméenon testé
Gérer les comptes
Support · Comptes et accès
VIS-03 — Créer un compteVIS✓ Compte créé puis confirmé par e-mail, ✗ Mot de passe trop court refusé, ✗ E-mail déjà utilisé refusé, ✗ E-mail de confirmation non reçunon testé
CLI-01 — Se connecter et se déconnecterCLI✓ Menu « Mes réservations » affiché, ✗ Identifiants erronés refusés, ✗ Voyageur voyant « Gestion » (accès indu)testé : conforme (CL-1)
Fidéliser les hôtes
Support · Relation client (avis, contact, FAQ)
CLI-06 — Laisser un avisCLI✓ Avis publié après un séjour passé, ✗ Avis refusé sans séjour passétesté : conforme (CL-8)
Informer et assister
Support · Relation client (avis, contact, FAQ)
VIS-04 — Envoyer un message de contactVIS✓ Message envoyé et confirmé, ✗ Champ obligatoire vide refusé, ✗ E-mail invalide refusénon testé
VIS-05 — Consulter la FAQVIS✓ Réponses cohérentes avec les règles, ✗ Réponse contredisant taxe, acompte ou annulationtesté : conforme (CS-3)
ADM-05 — Lire les messages de contactADM✓ Message du formulaire Contact reçu, ✗ Message absent de la Gestionnon testé

Règles de gestion clés par processus

ProcessusRègle de gestionSource
VIS-01 — Consulter les chambres et les prixRG-01 — Atlas : 900 MAD par nuit, 2 personneslue sur le site : « 900 MAD / nuit »
RG-02 — Majorelle : 1 200 MAD par nuit, 3 personneslue sur le site : « 1 200 MAD / nuit »
RG-03 — Suite Koutoubia : 1 800 MAD par nuit, 4 personneslue sur le site : « 1 800 MAD / nuit »
RG-04 — Palmeraie : 750 MAD par nuit, 2 personneslue sur le site : « 750 MAD / nuit »
RG-05 — Menara : 1 000 MAD par nuit, 2 personneslue sur le site : « 1 000 MAD / nuit »
VIS-02 — Rechercher des disponibilitésRG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentlue sur le site : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-13 — Pas de réservation dans le passélue sur le site : « pas de reservation dans le passe »
RG-14 — 1 nuit minimumlue sur le site : « 1 nuit minimum »
RG-15 — Recherche : 1 à 4 adultes et 0 à 3 enfants (limites du formulaire)à confirmer
RG-20 — La gérante bloque des dates, qui deviennent non réservableslue sur le site : « blocage de dates »
VIS-03 — Créer un compteRG-17 — Inscription par e-mail et mot de passe avec e-mail de confirmationlue sur le site : « inscription par e-mail + mot de passe avec e-mail de confirmation »
RG-18 — Mot de passe de 6 caractères minimum (limite du formulaire)à confirmer
VIS-04 — Envoyer un message de contactRG-21 — Contact : nom (100 car.), e-mail et message (2 000 car.) obligatoires, sujet facultatif (150 car.)à confirmer
VIS-05 — Consulter la FAQRG-06 — Taxe de séjour : 30 MAD par adulte et par nuit, jamais remiséelue sur le site : « la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee »
RG-07 — Code RIAD10 : -10 % sur l'hébergement seulement (US-1 : Majorelle 2 nuits 2 adultes = 2 400 - 240 + 120 = 2 280 MAD)lue sur le site : « Le code promo RIAD10 donne -10 % sur l hebergement seulement »
RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)lue sur le site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-11 — Annulation possible jusqu'à 48 h avant l'arrivéelue sur le site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
VIS-06 — Basculer le site en anglaisRG-22 — Site en français avec bascule ENlue sur le site : « FR avec bascule EN »
CLI-01 — Se connecter et se déconnecterRG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionlue sur le site : « La gerante est la seule administratrice »
CLI-02 — Réserver une chambre avec code promo (US-1)RG-02 — Majorelle : 1 200 MAD par nuit, 3 personneslue sur le site : « 1 200 MAD / nuit »
RG-06 — Taxe de séjour : 30 MAD par adulte et par nuit, jamais remiséelue sur le site : « la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee »
RG-07 — Code RIAD10 : -10 % sur l'hébergement seulement (US-1 : Majorelle 2 nuits 2 adultes = 2 400 - 240 + 120 = 2 280 MAD)lue sur le site : « Le code promo RIAD10 donne -10 % sur l hebergement seulement »
RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)lue sur le site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentlue sur le site : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-14 — 1 nuit minimumlue sur le site : « 1 nuit minimum »
CLI-03 — Payer l'acompte de 30 % (simulé)RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)lue sur le site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-09 — Paiement simulé, jamais réellue sur le site : « paiement SIMULE, jamais reel »
RG-10 — Un numéro de réservation est remis après le paiement de l'acomptelue sur le site : « numero de reservation »
CLI-04 — Consulter ses réservationsRG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)lue sur le site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléelue sur le site : « Confirmée »
RG-25 — Le voyageur connecté voit ses réservations dans Mes réservationslue sur le site : « Le voyageur connecte voit ses reservations dans Mes reservations »
CLI-05 — Annuler une réservationRG-11 — Annulation possible jusqu'à 48 h avant l'arrivéelue sur le site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléelue sur le site : « Confirmée »
CLI-06 — Laisser un avisRG-16 — Seuls les hôtes ayant séjourné peuvent publier un avislue sur le site : « Seuls les hôtes ayant séjourné au riad peuvent publier un avis. »
ADM-01 — Retrouver la réservation au tableau de bord (US-2)RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)lue sur le site : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionlue sur le site : « La gerante est la seule administratrice »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléelue sur le site : « Confirmée »
ADM-02 — Consulter le calendrier des réservationsRG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentlue sur le site : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionlue sur le site : « La gerante est la seule administratrice »
ADM-03 — Bloquer des datesRG-20 — La gérante bloque des dates, qui deviennent non réservableslue sur le site : « blocage de dates »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionlue sur le site : « La gerante est la seule administratrice »
ADM-04 — Gérer les chambres et les prixRG-01 — Atlas : 900 MAD par nuit, 2 personneslue sur le site : « 900 MAD / nuit »
RG-02 — Majorelle : 1 200 MAD par nuit, 3 personneslue sur le site : « 1 200 MAD / nuit »
RG-03 — Suite Koutoubia : 1 800 MAD par nuit, 4 personneslue sur le site : « 1 800 MAD / nuit »
RG-04 — Palmeraie : 750 MAD par nuit, 2 personneslue sur le site : « 750 MAD / nuit »
RG-05 — Menara : 1 000 MAD par nuit, 2 personneslue sur le site : « 1 000 MAD / nuit »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionlue sur le site : « La gerante est la seule administratrice »
ADM-05 — Lire les messages de contactRG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionlue sur le site : « La gerante est la seule administratrice »
RG-21 — Contact : nom (100 car.), e-mail et message (2 000 car.) obligatoires, sujet facultatif (150 car.)à confirmer
—RG-24 — Prix affichés en MAD, par chambre et par nuitlue sur le site : « 750 MAD / nuit »

Cahier de recette

Chaque jeu de test est tiré de la compréhension ci-dessus ; le résultat obtenu est accompagné de ses preuves.

Réf.User storyRésultat attenduRésultat obtenu et preuvesRecommandation
CN-1En tant que Client voyageur connecté, je veux trouver une chambre libre pour mes dates, afin de réserver mon séjour au riad.
VIS-02 · RG-02 · RG-12 · RG-13 · RG-14
Connexion réussie ; la Majorelle est proposée pour 2 adultes du 10 au 12 novembre à 1 200 MAD la nuit.

Conforme

Réponses du serveur

  • POST /auth/v1/token → 200 (données)
  • POST /rest/v1/rpc/available_rooms → 200 (données)

Hygiène des pages liées : #2, #18

Garder ce cas dans la recette de non-régression.
CU-1En tant que Client voyageur connecté, je veux réserver la Majorelle 2 nuits pour 2 adultes avec RIAD10, afin de payer un acompte calculé sur le total remisé.
user story du client · CLI-02 · RG-02 · RG-06 · RG-07 · RG-08
Récapitulatif : hébergement 2 400, remise RIAD10 -240, taxe 120, total 2 280 MAD ; acompte 684 MAD ; numéro de réservation affiché.

Conforme

Réponses du serveur

  • POST /rest/v1/rpc/available_rooms → 200 (données)

Hygiène des pages liées : #2, #18

Garder ce cas dans la recette de non-régression.
CU-2En tant que Gérante (seule administratrice), je veux retrouver dans mon tableau de bord la réservation du voyageur, afin de préparer son arrivée.
user story du client · ADM-01 · RG-19 · RG-23
Le tableau de bord liste DZ-2610-A646A et DZ-2610-39268 (Atlas, 1 920 MAD) avec chambre, client, dates et statut.

Non conforme

texte attendu absent : « DZ-2610-A646A » (page : « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact Mes réservations Gestion EN Déconnexion Tableau de bord Calendrier Dates bloquées Chambres & prix Messag »)

Réponses du serveur

  • POST /auth/v1/token → 200 (données)

Hygiène des pages liées : #2, #5, #6, #7, #12, #18

Constat : #1

Gravité S2 : un cas secondaire ou limite important du métier ne se comporte pas comme promis. Rejouer les étapes avec le compte de test, corriger, relancer la recette.
CS-1En tant que Client voyageur connecté, je veux annuler une réservation plus de 48 h avant l'arrivée, afin de libérer mes dates sans litige.
CLI-05 · RG-11 · RG-23
La réservation passe au statut Annulée ; ses dates redeviennent réservables.

Bloqué

« Annuler » : paiement, suppression ou annulation, jamais cliqué

Réponses du serveur

  • POST /auth/v1/token → 200 (données)

Hygiène des pages liées : #2, #18

Lever le blocage (« Annuler » : paiement, suppression ou annulation, jamais cliqué), puis rejouer.
CS-2En tant que Client voyageur connecté, je veux voir un total et un acompte justes dans Mes réservations, afin de payer le bon montant.
CLI-04 · RG-01 · RG-06 · RG-08
Atlas 2 nuits 2 adultes : 1 800 + taxe 120 = 1 920 MAD ; acompte 30 % = 576 MAD.

Conforme

Réponses du serveur

  • POST /auth/v1/token → 200 (données)

Hygiène des pages liées : #2, #18

Garder ce cas dans la recette de non-régression.
CS-3En tant que Visiteur, je veux lire dans la FAQ les règles de promo, de taxe et d'annulation, afin de réserver en confiance.
VIS-05 · RG-06 · RG-07 · RG-11
Les réponses citent RIAD10, la taxe de 30 MAD et l'annulation jusqu'à 48 h, sans contradiction.

Conforme

Hygiène des pages liées : #20

Garder ce cas dans la recette de non-régression.
CS-4En tant que Visiteur, je veux afficher le site en anglais, afin de comprendre l'offre sans parler français.
VIS-06 · RG-22
Les libellés passent en anglais ; les chambres restent affichées.

Conforme

Hygiène des pages liées : #3, #4, #8, #9, #10, #11, #13, #14, #15, #16

Garder ce cas dans la recette de non-régression.
CL-1En tant que Client voyageur connecté, je veux être refusé avec un mauvais mot de passe, afin que personne n'accède à mes réservations.
CLI-01 · RG-17
Connexion refusée avec un message d'erreur ; aucun accès à Mes réservations.

Conforme

Réponses du serveur

  • POST /auth/v1/token → 400 (données)

Hygiène des pages liées : #2, #18

Garder ce cas dans la recette de non-régression.
CL-2En tant que Visiteur, je veux être empêché de chercher une arrivée passée, afin de ne pas réserver une date impossible.
VIS-02 · RG-13
Date passée refusée ; aucune chambre proposée.

Conforme

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-3En tant que Visiteur, je veux être alerté si mon départ précède mon arrivée, afin de corriger mes dates.
VIS-02 · RG-14
Dates incohérentes refusées ; aucune chambre proposée.

Conforme

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-4En tant que Visiteur, je veux être empêché de réserver zéro nuit, afin de respecter le minimum d'une nuit.
VIS-02 · RG-14
Séjour de zéro nuit refusé ; aucune chambre proposée.

Conforme

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-5En tant que Visiteur, je veux ne voir que les chambres assez grandes pour 4 adultes, afin de réserver une chambre adaptée.
VIS-02 · RG-02 · RG-03 · RG-15
Seule la Suite Koutoubia (4 pers.) est proposée.

Conforme

Réponses du serveur

  • POST /rest/v1/rpc/available_rooms → 200 (données)

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-6En tant que Visiteur, je veux être bloqué au-delà de 4 adultes, afin de ne pas réserver une capacité inexistante.
VIS-02 · RG-15
Saisie refusée ; aucune chambre proposée pour 5 adultes.

Conforme

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-7En tant que Gérante (seule administratrice), je veux que la Gestion soit fermée aux visiteurs, afin de protéger les réservations et les clients.
ADM-01 · RG-19 · RG-25
Sans connexion, ni la Gestion ni les réservations ne s'affichent.

Conforme

Hygiène des pages liées : #2, #5, #6, #7, #12, #18

Garder ce cas dans la recette de non-régression.
CL-8En tant que Client voyageur connecté, je veux être empêché de publier un avis sans séjour passé, afin que les avis restent authentiques.
CLI-06 · RG-16
Le compte sans séjour passé ne peut pas publier ; la règle est rappelée.

Conforme

Réponses du serveur

  • POST /auth/v1/token → 200 (données)
  • POST /rest/v1/rpc/has_past_stay → 200 (données)

Hygiène des pages liées : #2, #18

Garder ce cas dans la recette de non-régression.
CN-2En tant que Client voyageur connecté, je veux réserver la Majorelle 2 nuits avec RIAD10 et payer l'acompte, afin de confirmer mon séjour.
CLI-03 · RG-02 · RG-06 · RG-07 · RG-08 · RG-09
Total 2 280 MAD après RIAD10, acompte de 684 MAD payé (simulé), réservation confirmée avec numéro.

Non jouable

non joué : élément introuvable : input >> nth=0 — à confirmer

Hygiène des pages liées : aucun constat technique sur ces pages

Lever le blocage (non joué : élément introuvable : input >> nth=0 — à confirmer), puis rejouer.
CS-20En tant que Client voyageur connecté, je veux appliquer RIAD10 à la Suite Koutoubia, afin de payer un acompte juste sur le total remisé.
CLI-02 · RG-03 · RG-06 · RG-07 · RG-08
Total 3 360 MAD, acompte 1 008 MAD, solde 2 352 MAD ; la taxe de 120 MAD n'est pas remisée.

Non jouable

non joué : élément introuvable : input[placeholder="RIAD10"] — à confirmer

Hygiène des pages liées : aucun constat technique sur ces pages

Lever le blocage (non joué : élément introuvable : input[placeholder="RIAD10"] — à confirmer), puis rejouer.
CS-21En tant que Gérante (seule administratrice), je veux retrouver la réservation Majorelle que le voyageur vient de payer, afin de préparer son arrivée.
ADM-01 · RG-08 · RG-19 · RG-23 · RG-25
Mes réservations affiche 2 280 MAD et 684 MAD ; la Gestion liste la réservation Majorelle du 2026-11-10.

Non concluant — à confirmer

texte attendu absent : « Total: 2 280 MAD » (page : « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact EN Connexion Connexion E-mail Mot de passe ConnexionPas encore de compte ? Créer un compte Riad Dar Zito »)

Hygiène des pages liées : #2, #18

Faire confirmer l'attendu par le métier, puis rejouer.
CL-20En tant que Client voyageur connecté, je veux qu'un code promo inconnu soit refusé, afin de payer le prix juste.
CLI-02 · RG-04 · RG-07
Code refusé ; total 1 620 MAD et acompte 486 MAD inchangés.

Conforme

Réponses du serveur

  • POST /auth/v1/token → 200 (données)

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-21En tant que Client voyageur connecté, je veux être empêché de réserver une chambre déjà prise, afin d'éviter un surbooking.
CLI-02 · RG-12
Réservation refusée : chambre indisponible sur ces dates, aucun numéro émis.

Conforme

paiement en mode test (prestataire : simulation)

Réponses du serveur

  • POST /auth/v1/token → 200 (données)

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-22En tant que Client voyageur connecté, je veux être bloqué si le nom complet manque, afin que la gérante sache qui accueillir.
CLI-03 · RG-08
Paiement bloqué, champ Nom complet signalé ; aucune réservation créée.

Conforme

paiement en mode test (prestataire : simulation)

Réponses du serveur

  • POST /auth/v1/token → 200 (données)

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.
CL-23En tant que Client voyageur connecté, je veux être alerté si mon e-mail est invalide, afin de recevoir ma confirmation.
CLI-03 · RG-08
Paiement bloqué, format d'e-mail signalé ; aucune réservation créée.

Conforme

paiement en mode test (prestataire : simulation)

Réponses du serveur

  • POST /auth/v1/token → 200 (données)

Hygiène des pages liées : aucun constat technique sur ces pages

Garder ce cas dans la recette de non-régression.

Hygiène technique

Recette du site du Riad Dar Zitoun : avis GO SOUS CONDITIONS

Le site tient ses promesses sur la recherche de disponibilités, la connexion et l'affichage des réservations, mais le paiement de l'acompte n'a pas pu être vérifié de bout en bout et la gérante ne retrouve pas dans sa Gestion une réservation confirmée du voyageur. Avant la mise en service : corriger la Gestion, protéger les pages de connexion et démontrer le parcours de paiement.

20 problèmes trouvés, dont 3 à corriger d'abord.

À corriger en premier

  1. Une cause → un correctifEn-têtes de sécurité non envoyés par l'hébergeur

    Cause : La configuration de l'hébergeur n'envoie pas les en-têtes de sécurité standard.

    Correctif unique : Déclarer en une fois dans la configuration de l'hébergeur : Content-Security-Policy avec frame-ancestors 'none', X-Frame-Options: DENY, Permissions-Policy et Cross-Origin-Opener-Policy.

    Constats : #2, #3, #4

  2. #2MajeurPages /auth et /admin encadrables (clickjacking) (Chromium (moteur de Chrome))

    Pourquoi d'abord : Protège la connexion des voyageurs et de la gérante ; le même réglage d'en-têtes corrige aussi C10 et C19. Effort : faible

    Page : https://riad-connect-hub.lovable.app/auth

    Attendu : Ces pages refusent d'être affichées dans un cadre étranger

    Constaté : Encadrables : /admin; /auth

    Correction conseillée : Envoyer Content-Security-Policy: frame-ancestors 'none' (et X-Frame-Options: DENY).

    Détail technique

    Titre d'origine : Pages de connexion affichables dans un autre site (clickjacking)

  3. #3MineurEn-têtes CSP et Permissions-Policy absents (ordinateur · Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : En-têtes de sécurité présents

    Constaté : Manquants : Content-Security-Policy, Permissions-Policy

    Correction conseillée : Les ajouter dans la configuration de l'hébergeur (fichier _headers Netlify, vercel.json...).

    Détail technique

    Titre d'origine : En-têtes de sécurité absents sur riad-connect-hub.lovable.app

  4. #4RemarqueEn-tête Cross-Origin-Opener-Policy absent (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Cross-Origin-Opener-Policy: same-origin (ou same-origin-allow-popups si des fenêtres de paiement/connexion sont utilisées)

    Constaté : Cross-Origin-Opener-Policy: absent

    Correction conseillée : Ajouter Cross-Origin-Opener-Policy: same-origin-allow-popups, puis same-origin si aucun parcours n'en souffre.

    Détail technique

    Titre d'origine : Cross-Origin-Opener-Policy absente : une fenêtre ouverte par un autre site garde un lien vers la vôtre

  5. Une cause → un correctifÉléments d'interface sans nom accessible

    Cause : Des composants sont posés sans libellé ni texte lisible par les lecteurs d'écran.

    Correctif unique : Associer un libellé à chaque champ, un aria-label au bouton icône et un texte à la colonne d'en-tête vide.

    Constats : #5, #6, #7

  6. #5MajeurChamps de formulaire sans libellé (Chromium (moteur de Chrome))

    Pourquoi d'abord : Rend les formulaires et la Gestion utilisables par tous ; le même travail corrige C02 et C17. Effort : faible

    Page : https://riad-connect-hub.lovable.app/admin

    Attendu : Conforme WCAG 2.2 AA — WCAG 2.2 : 4.1.2 Nom, rôle et valeur (A), 1.3.1 Information et relations (A) · RGAA 4.1 : 11.1 Champ de formulaire avec étiquette

    Correction conseillée : axe-core (moteur de référence) : corriger chaque élément cité.

    Détail technique

    Titre d'origine : Accessibilité : champ-sans-libelle (label) (3 occurrence(s) sur 2 page(s)) — ordinateur, téléphone

    Constaté : input[maxlength="100"] Form elements must have labels; input Form elements must have labels; input[maxlength="100"] Form elements must have labels

  7. #6MajeurBouton sans nom accessible dans la Gestion (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/admin

    Attendu : Conforme WCAG 2.2 AA — WCAG 2.2 : 4.1.2 Nom, rôle et valeur (A) · RGAA 4.1 : 11.9 Intitulé de bouton pertinent

    Correction conseillée : axe-core (moteur de référence) : corriger chaque élément cité.

    Détail technique

    Titre d'origine : Accessibilité : nom-accessible (button-name) (1 occurrence(s) sur 1 page(s))

    Constaté : .bg-background.w-9.\[\&_svg\]\:pointer-events-none:nth-child(1) Buttons must have discernible text

  8. #7RemarqueEn-tête de tableau vide dans la Gestion (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/admin

    Attendu : Conforme WCAG 2.2 AA — bonne pratique (aucun critère WCAG 2.2 ni RGAA 4.1 directement visé)

    Correction conseillée : axe-core (moteur de référence) : corriger chaque élément cité.

    Détail technique

    Titre d'origine : Accessibilité : empty-table-header (1 occurrence(s) sur 1 page(s))

    Constaté : thead > tr > .p-3:nth-child(7) Table header text should not be empty

  9. Une cause → un correctifPages légales absentes

    Cause : Le site n'a pas encore de pages légales.

    Correctif unique : Publier mentions légales et politique de confidentialité, liées depuis le pied de page.

    Constats : #8, #9

  10. #8MineurPas de politique de confidentialité (Chromium (moteur de Chrome))

    Pourquoi d'abord : Le site gère des comptes et des réservations : l'information légale est une obligation et un gage de confiance ; couvre aussi C16. Effort : faible

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Un lien vers la politique de confidentialité (RGPD / loi 09-08)

    Constaté : Aucun lien ni texte « confidentialité / privacy / données personnelles » trouvé sur l'accueil.

    Correction conseillée : Publier une politique de confidentialité et la lier depuis le pied de page.

    Détail technique

    Titre d'origine : Pas de lien vers la politique de confidentialité

  11. #9MineurPas de mentions légales (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Des mentions légales (éditeur, hébergeur, contact)

    Constaté : Aucun lien « mentions légales / CGU / CGV / legal » trouvé sur l'accueil.

    Correction conseillée : Ajouter une page de mentions légales liée depuis le pied de page.

  12. Une cause → un correctifImages non optimisées

    Cause : L'image d'accueil (461 Ko) et une photo de chambre sont servies plus grandes que leur affichage.

    Correctif unique : Convertir en WebP ou AVIF, redimensionner avec srcset et précharger l'image d'accueil.

    Constats : #10, #11

  13. #10MineurImages trop lourdes pour leur taille d'affichage (Chromium (moteur de Chrome))

    Pourquoi d'abord : L'image d'accueil alourdit le premier affichage sur téléphone ; correctif simple qui couvre aussi C12. Effort : faible

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Images < 300 Ko, dimensionnées pour l'affichage

    Constaté : ttps://riad-connect-hub.lovable.app/assets/hero-O0-s_7b9.jpg : 461 Ko, 1920 px affichés en 1440 px; /riad-connect-hub.lovable.app/assets/room-atlas-DfmmbZJQ.jpg : 187 Ko, 1200 px affichés en 192 px

    Correction conseillée : SVG ou WebP pour le logo ; images responsives (srcset, AVIF/WebP) ; préchargement de l'image principale.

    Détail technique

    Titre d'origine : 2 image(s) trop lourde(s) pour leur taille d'affichage

  14. #11MineurImage d'accueil de 462 Ko (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Chaque fichier ≤ 300 Ko transférés

    Constaté : https://riad-connect-hub.lovable.app/assets/hero-O0-s_7b9.jpg (image/jpeg) : 462 Ko

    Correction conseillée : Convertir en WebP ou AVIF, redimensionner à la taille d'affichage (srcset), viser moins de 200 Ko par image ; charger en différé celles qui sont sous la ligne de flottaison.

    Détail technique

    Titre d'origine : Images lourdes : 1 fichier(s) au-dessus de 300 Ko

Le reste

0Critique
3Majeur
12Mineur
5Remarque
  • #12MineurContraste insuffisant dans la Gestion (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/admin

    Attendu : Conforme WCAG 2.2 AA — WCAG 2.2 : 1.4.3 Contraste (minimum) (AA) · RGAA 4.1 : 3.2 Contraste du texte

    Constaté : .p-3:nth-child(3) > .text-xs : ratio 2,12:1 (texte #b9ada6 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .font-semibold.p-3 : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(2) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(3) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(4) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(5) : ra

    Correction conseillée : Une règle CSS par sélecteur cité : foncer le texte ou éclaircir le fond jusqu'à la cible (4,5:1 ; 3:1 pour un texte d'au moins 24 px, ou 18,66 px en gras).

    Détail technique

    Titre d'origine : Accessibilité : contraste (color-contrast) (1 occurrence(s) sur 1 page(s)) — 8 sélecteur(s)

  • Une cause → un correctifConsentement aux cookies

    Cause : Aucun dispositif n'encadre les cookies déposés à l'arrivée sur le site.

    Correctif unique : Vérifier si __cf_bm est strictement nécessaire (probablement un cookie de sécurité du fournisseur) ; sinon, bloquer les cookies non essentiels jusqu'à l'accord via un bandeau de consentement.

    Constats : #13, #14

  • #13MineurAucun bandeau de consentement aux cookies (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Un bandeau qui demande l'accord (accepter / refuser / personnaliser)

    Constaté : Ni outil de consentement connu, ni texte « cookies » avec un bouton d'acceptation, alors que des traceurs ou cookies de mesure sont présents.

    Correction conseillée : Le RGPD et la directive « ePrivacy » (en France, les règles de la CNIL ; au Maroc, la loi 09-08 et la CNDP) demandent l'accord du visiteur AVANT de déposer un cookie ou d'appeler un service qui sert à mesurer l'audience ou à faire de la publicité. Les cookies strictement nécessaires (session, panier, langue) n'ont pas besoin d'accord. Installez un outil de gestion du consentement et bloquez les traceurs tant que le visiteur n'a pas choisi.

    Détail technique

    Titre d'origine : Aucun bandeau de consentement aux cookies détecté sur riad-connect-hub.lovable.app

  • #14MineurCookie tiers déposé avant consentement (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Seuls des cookies techniques (session, panier, langue) avant l'accord

    Constaté : Déposés sans accord : __cf_bm (supabase.co, tiers)

    Correction conseillée : Le RGPD et la directive « ePrivacy » (en France, les règles de la CNIL ; au Maroc, la loi 09-08 et la CNDP) demandent l'accord du visiteur AVANT de déposer un cookie ou d'appeler un service qui sert à mesurer l'audience ou à faire de la publicité. Les cookies strictement nécessaires (session, panier, langue) n'ont pas besoin d'accord. Déposez ces cookies seulement après l'accord, et proposez « Refuser » aussi simplement que « Accepter ».

    Détail technique

    Titre d'origine : Cookies de mesure ou de publicité déposés avant tout consentement sur riad-connect-hub.lovable.app

  • Une cause → un correctifPremier affichage lent sur téléphone

    Cause : Probablement le poids cumulé de l'image d'accueil et du fichier JavaScript unique de 574 Ko.

    Correctif unique : Découper et différer le JavaScript, puis remesurer sur téléphone après l'optimisation des images.

    Constats : #15, #16, #17

  • #15MineurAccueil lent sur téléphone (6 252 ms) (téléphone · Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Chargement < 3000 ms

    Constaté : / 6252 ms

    Correction conseillée : Mesurer avec Lighthouse ; compresser les images, decouper le JavaScript, mettre en cache.

    Détail technique

    Titre d'origine : Chargement lent (6252 ms) : / — téléphone uniquement

  • #16MineurLCP lent sur téléphone en réseau lent (non confirmé) (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : LCP ≤ 4000 ms et chargement ≤ 10000 ms dans ces conditions (profil mobile de Lighthouse)

    Constaté : LCP 4600 ms, chargement 4562 ms (2 mesure(s), non confirmé)

    Correction conseillée : Alléger d'abord l'élément principal affiché (image ou titre) : image compressée et préchargée (rel=preload), CSS critique en ligne, JavaScript différé ; servir les fichiers depuis un CDN proche des visiteurs.

    Détail technique

    Titre d'origine : Lent sur téléphone en réseau lent : LCP 4600 ms, chargement 4562 ms (non confirmé)

  • #17MineurFichier JavaScript de 574 Ko (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Chaque fichier ≤ 500 Ko transférés

    Constaté : https://riad-connect-hub.lovable.app/assets/index-BYEaChBb.js (text/javascript) : 574 Ko décompressés (167 Ko transférés)

    Correction conseillée : Découper le JavaScript par page (code splitting), retirer les bibliothèques inutilisées (tree shaking), minifier et compresser (brotli) ; différer les scripts non essentiels (defer/async).

    Détail technique

    Titre d'origine : Fichiers JavaScript lourds : 1 fichier(s) au-dessus de 500 Ko

  • #18MineurPage de connexion indexable par les moteurs (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/auth

    Attendu : noindex et Disallow sur les espaces privés

    Constaté : Indexables : /auth ; robots.txt : User-agent: Googlebot Allow: / User-agent: Bingbot Allow: / User-agent: Twitterbot Allow: / User-agent: facebookexter

    Correction conseillée : Ajouter <meta name=robots content=noindex> et Disallow: /admin, /vendeur (ou équivalents).

    Détail technique

    Titre d'origine : Pages de connexion ouvertes aux moteurs de recherche

  • #19RemarqueFichier security.txt absent (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/.well-known/security.txt

    Attendu : Un fichier security.txt indiquant comment signaler une faille (RFC 9116)

    Constaté : HTTP 404

    Correction conseillée : Ajouter /.well-known/security.txt avec un contact de sécurité.

    Détail technique

    Titre d'origine : Pas de /.well-known/security.txt

  • #20RemarqueOrdre des titres irrégulier dans la FAQ (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/faq

    Attendu : Conforme WCAG 2.2 AA — RGAA 4.1 : 9.1 Hiérarchie des titres

    Correction conseillée : axe-core (moteur de référence) : corriger chaque élément cité.

    Détail technique

    Titre d'origine : Accessibilité : ordre-titres (heading-order) (2 occurrence(s) sur 1 page(s)) — ordinateur, téléphone

    Constaté : .border-b:nth-child(1) > h3 Heading levels should only increase by one; .border-b:nth-child(1) > h3 Heading levels should only increase by one

  • #21RemarqueAdresses canoniques manquantes (Chromium (moteur de Chrome))

    Page : https://riad-connect-hub.lovable.app/

    Attendu : Canonical propre à chaque langue, og:image, titres distincts

    Constaté : sans canonical : /; /auth; /contact; /faq (+3)

    Correction conseillée : Canonical auto-référent par langue, og:image/og:title partout, titre et canonical sur chaque page.

    Détail technique

    Titre d'origine : Référencement : 1 problème(s) sur riad-connect-hub.lovable.app

Par thème

  • Sécurité des pages de connexion et de la Gestion — Une page de connexion encadrable permet de piéger les clics ou les identifiants des voyageurs et de la gérante.
    Les pages /auth et /admin peuvent être affichées à l'intérieur d'un autre site (C03), plusieurs en-têtes de sécurité manquent (C10, C19) et aucun contact de sécurité n'est publié (C20). #2, #3, #4, #19
  • Accessibilité des formulaires et de la Gestion — Un voyageur ou une gérante qui utilise un lecteur d'écran ne peut pas remplir ces formulaires ni lire le tableau des réservations.
    Champs sans libellé, bouton sans nom et en-tête de tableau vide, surtout dans la Gestion ; contraste insuffisant sur /admin et ordre des titres irrégulier sur /faq. #5, #6, #7, #12, #20
  • Conformité et données personnelles — Le site gère des comptes et des réservations de voyageurs : la loi 09-08 et le RGPD imposent information et, le cas échéant, consentement.
    Ni mentions légales ni politique de confidentialité ne sont liées depuis l'accueil, et aucun bandeau de consentement n'est affiché alors qu'un cookie tiers (__cf_bm, supabase.co) est déposé. #8, #9, #13, #14
  • Vitesse d'affichage sur téléphone — Une page d'accueil lente fait perdre des visiteurs avant même la recherche de disponibilités.
    L'accueil est lent sur téléphone (C08 : 6 252 ms ; C13 : LCP 4 600 ms, non confirmé), avec des images lourdes (C05, C12) et un JavaScript de 574 Ko (C11). #10, #11, #15, #16, #17
  • Référencement — Indexer /auth n'apporte aucun client et expose la porte d'entrée de la Gestion ; les canoniques évitent de disperser le référencement.
    La page de connexion est indexable par les moteurs (C14) et plusieurs pages n'ont pas d'adresse canonique (C21). #18, #21

Prochaines étapes

  1. Établir la cause de C04 (réservation absente ou tableau limité à une période), corriger puis rejouer le scénario US-2.
  2. Rendre jouable et rejouer de bout en bout la réservation avec RIAD10 et le paiement simulé de l'acompte, en confirmant le calcul de la remise.
  3. Ajouter les en-têtes de sécurité chez l'hébergeur (C03, C10, C19) et publier security.txt (C20).
  4. Publier mentions légales et politique de confidentialité, puis trancher la question du consentement aux cookies.
  5. Optimiser les images et découper le JavaScript, puis remesurer sur téléphone.
  6. Relancer une recette complète après corrections, en couvrant aussi l'annulation et les écrans de la gérante.

Testés : chargement et erreurs, navigateurs et appareils, liens, formulaires, pages publiques et zone connectée, scénarios métier (recherche de disponibilités et ses bornes, connexion, Mes réservations, FAQ, bascule anglaise, contrôles de la page de réservation, tableau de bord de la gérante), sécurité applicative, en-têtes, résilience, performance, conformité ; accessibilité, logique métier, API et parcours par rôle partiellement. Non testés : paiement de l'acompte de bout en bout (cas non jouable), annulation, sécurité des données, tests statiques, unitaires et de composants ; régression visuelle sans référence.

Limites de couverture

  • Accessibilite : partiel — axe-core sur chaque page (bureau et téléphone) + focus clavier ; critères WCAG 2.2 et RGAA 4.1 cités dans les constats ; compléments navigateur : 8 page(s) (8 pages lues sur 8 visitées (mode complet)), contraste mesuré sur 16 texte(s) (clair, et sombre sur 8 page(s)), 320 tabulation(s) (135 élément(s) vérifiés pour le focus visible, 0 fenêtre(s) modale(s) cachée(s) parcourue(s) sans clic, 0 piège(s)), noms accessibles vérifiés sur 8 page(s), 0 PDF lié(s) non audité(s)
  • Regression visuelle : non testé — Aucune reference approuvee : approuve un passage comme reference.
  • Parcours par rôle : partiel — 3 pages, 57 actions relevées, 0 action jouée (lecture seule) — rôle « avalyz-test-gerante-143a7d4d@test.avalyz.com » ; 1 autre(s) rôle(s) : voir les lignes « Profil »
  • Logique metier : partiel — logique métier décrite par le client jouée par les scénarios métier (voir la ligne « Scénarios métier ») ; aucune idée « Depuis ton idée » à rapprocher
  • API / integration : partiel — pas de spécification OpenAPI trouvée (/openapi.json, /swagger.json, /api-docs, /api/openapi.json…) ; sondes GET : /api → 406, /api/health → 406, /graphql → 406 — importe le contrat de l'API pour des cas par opération ; spec reconstituée depuis le navigateur (7 page(s) — 7 pages lues sur 8 visitées (mode complet), 9 appel(s) observé(s), aucune requête ajoutée) : 1 point(s) d'entrée — POST /__l5e/trackevents [?] ; 0 constat(s)
  • Securite des donnees : non testé — aucune base détectée (Supabase : clé anon dans la page ; Firebase : apiKey + databaseURL) — le contrôle RLS demande un accès à la base ou une clé publique visible
  • Scénarios métier : partiel — 15 cas conçus (1 nominal, 6 secondaires, 8 limites) ; joués : 15 (mode complet : CN-1, CU-1, CU-2, CS-1, CS-2, CS-3, CS-4, CL-1, CL-2, CL-3, CL-4, CL-5, CL-6, CL-7, CL-8) ; 13 réussis / 1 échecs / 1 bloqués / 0 non jouables ; écriture autorisée, 38 soumission(s) ; exploration en jouant : 5 écran(s) découvert(s) (https://riad-connect-hub.lovable.app/book/atlas?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0, https://riad-connect-hub.lovable.app/book/majorelle?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0, https://riad-connect-hub.lovable.app/book/koutoubia?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0, https://riad-connect-hub.lovable.app/book/palmeraie?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0) → complément de 7 cas (CN-2, CS-20, CS-21, CL-20, CL-21, CL-22, CL-23) : 4 réussis / 0 échecs / 0 bloqués / 2
  • Statique : non testé — code source non fourni (champ « URL du code source » du panneau) ou mode rapide
  • Unitaire : non testé — code source non fourni (champ « URL du code source » du panneau) ou mode rapide
  • Composant : non testé — code source non fourni (champ « URL du code source » du panneau) ou mode rapide
  • Niveaux : partiel — 6/13 exécutés, 3 partiels, 4 non testés (sur 13 niveaux du plan) ; demandés : 6/10 faits
  • À vérifier (sans constat) : partiel — 1 point(s) non mesuré(s), sans constat : Accessibilité : contraste à vérifier à la main — fond non uni (image, dégradé, élément superposé ou transparence) : 18 sélecteur(s) sur 8 page(s) — .tracking-\[0\.25em\] : Element's background color could not be determined due to a background gradient — 1 page(s) : / ; h1 : Element's background color could not be determined due to a background gradient — 1 page(s) : / ; .max-w-xl : Element's background color could not be determined due to a bac
Durées du test
  • 6779 msplan du site (0 adresse(s) à visiter en plus)
  • 11188 mscréation des comptes de recette (1/1 créé(s))
  • 1813 msnavigation bureau p1 (chargement 547, réseau calme 1246, relevés 20)
  • 5980 msa11y bureau p1
  • 216 msfocus clavier bureau p1
  • 1862 mscapture bureau p1
  • 1151 msnavigation bureau p2 (chargement 440, réseau calme 691, relevés 20)
  • 639 msa11y bureau p2
  • 110 mscapture bureau p2
  • 1359 msnavigation bureau p3 (chargement 566, réseau calme 782, relevés 11)
  • 692 msa11y bureau p3
  • 115 mscapture bureau p3
  • 1206 msnavigation bureau p4 (chargement 551, réseau calme 644, relevés 11)
  • 669 msa11y bureau p4
  • 117 mscapture bureau p4
  • 1147 msnavigation bureau p5 (chargement 454, réseau calme 670, relevés 23)
  • 549 msa11y bureau p5
  • 100 mscapture bureau p5
  • 1109 msnavigation bureau p6 (chargement 402, réseau calme 691, relevés 16)
  • 622 msa11y bureau p6
  • 135 mscapture bureau p6
  • 3075 msconnexion avec le compte de test (avalyz-test-gerante-143a7d4d@test.avalyz.com) (réussie)
  • 1449 msnavigation bureau p1 (chargement 385, réseau calme 1042, relevés 22)
  • 765 msa11y bureau p1
  • 179 mscapture bureau p1
  • 1427 msnavigation bureau p2 (chargement 431, réseau calme 979, relevés 17)
  • 814 msa11y bureau p2
  • 2198 mscapture bureau p2
  • 1411 msnavigation bureau p3 (chargement 415, réseau calme 969, relevés 27)
  • 1227 msa11y bureau p3
  • 551 mscapture bureau p3
  • 8294 msconnexion avec le compte de test (client) (réussie)
  • 1461 msnavigation bureau p1 (chargement 422, réseau calme 994, relevés 45)
  • 5656 msa11y bureau p1
  • 119 mscapture bureau p1
  • 1518 msnavigation bureau p2 (chargement 542, réseau calme 956, relevés 20)
  • 825 msa11y bureau p2
  • 1836 mscapture bureau p2
  • 581 mssondes (robots.txt, pages inexistantes, paramètres, limites)
  • 75 msliens (0 lien(s) vérifié(s) (plafond 50), 0 fil(s) réellement utilisé(s) sur 4, délai 8000 ms par lien, périmètre 4 ms, requêtes 0 ms, lien le plus lent 0 ms, 0 non vérifié(s) (délai ou réseau), 0 erreur(s) HTTP)

Décision GO / NO-GO motivée

GO SOUS CONDITIONSLa recherche de disponibilités et ses bornes, la connexion, l'affichage des réservations et les contrôles de saisie de la page de réservation se comportent comme attendu (CN-1, CL-1 à CL-8, CS-2, CL-20 à CL-23). En revanche, le parcours de l'argent n'est pas démontré de bout en bout : le paiement de l'acompte n'a jamais pu être joué (CN-2, I1), le calcul RIAD10 reste non confirmé (CS-20, I3) et la gérante ne retrouve pas dans la Gestion les réservations confirmées du voyageur, défaut reproduit (C01, I4). La mise en service n'est envisageable qu'une fois ces points démontrés ou corrigés et les pages /auth et /admin protégées contre l'encadrement (M03).

Motifs (preuves)

  • 17 cas conformes sur 22 joués ; 1 non conforme(s) ; 1 non concluant(s) ; 3 bloqué(s).
  • Cas non conformes : CU-2.
  • Hygiène technique : 0 constat(s) critique(s), 3 majeur(s), 17 mineur(s).

Avis d'expert

Décision : GO SOUS CONDITIONS

Arguments

  1. La recherche de disponibilités est conforme, y compris les bornes de dates (passé, départ avant arrivée, zéro nuit) et de capacité (4 et 5 adultes). (fort)
    preuves : CN-1, CL-2, CL-3, CL-4, CL-5, CL-6, processus:VIS-02
  2. US-2 est en défaut reproduit : les réservations confirmées du voyageur (DZ-2610-A646A) n'apparaissent pas sur la page Gestion de la gérante ; la cause (absence réelle ou filtre de période) reste à établir. (fort)
    preuves : #1 — US-2 : réservation absente du tableau de bord de la gérante, I4, CU-2, processus:ADM-01, https://riad-connect-hub.lovable.app/adm
  3. Le paiement de l'acompte, cœur du parcours de l'argent, n'a jamais été joué : CN-2 est non jouable deux fois et aucune réservation payée n'a pu être vérifiée. (fort)
    preuves : CN-2, I1, CS-21, I2, processus:CLI-03
  4. La règle client RIAD10 n'est pas confirmée sur les montants : le total attendu est absent après application du code sur la Suite Koutoubia, résultat non concluant. (moyen)
    preuves : CS-20, I3
  5. Les montants affichés dans Mes réservations sont conformes aux règles de taxe et d'acompte. (moyen)
    preuves : CS-2, processus:CLI-04
  6. La page de réservation refuse un code promo inconnu, un nom manquant et un e-mail invalide ; le refus de double réservation (CL-21) est observé mais sa précondition n'est pas établie, CN-2 n'ayant pas payé. (moyen)
    preuves : CL-20, CL-21, CL-22, CL-23, I1
  7. La connexion refuse un mauvais mot de passe et la Gestion comme Mes réservations restent fermées sans connexion. (moyen)
    preuves : CL-1, CL-7, processus:CLI-01
  8. Les pages de connexion et de Gestion sont encadrables par un autre site et la Gestion présente des défauts d'accessibilité. (moyen)
    preuves : M03, M01, M02, https://riad-connect-hub.lovable.app/aut
  9. La FAQ est cohérente avec les règles de promo, de taxe et d'annulation, la bascule anglaise fonctionne et l'avis est refusé sans séjour passé. (faible)
    preuves : CS-3, CS-4, CL-8

Risques résiduels

  • Encaissement de l'acompte et émission du numéro de réservation jamais observés (CN-2, I1) : un défaut sur le parcours de l'argent reste possible.
  • Calcul RIAD10 (remise sur l'hébergement seul, taxe non remisée) non confirmé (CS-20, I3).
  • Cause de C01 non établie : réservations absentes de la Gestion ou simple filtre de période.
  • Règle anti-double réservation non démontrée : CL-21 a réussi sans réservation préalable établie.
  • Annulation jusqu'à 48 h non testée (CS-1 bloqué).
  • Sécurité des données non testée (couverture:Securite des donnees).
  • Constats de moindre gravité omis du dossier (tronque) non examinés ici.

Conditions

  • Rejouer CN-2 avec un statut réussi : réservation Majorelle avec RIAD10, paiement simulé de l'acompte, total, acompte et numéro conformes à la règle du client (processus:CLI-03).
  • Corriger ou expliquer C01 puis rejouer CU-2 avec succès : toute réservation confirmée du voyageur visible dans la Gestion (processus:ADM-01).
  • Rejouer CS-20 avec succès : total après RIAD10 conforme à la remise sur l'hébergement seul.
  • Après CN-2, rejouer CS-21 et CL-21 avec succès : réservation visible dans Mes réservations et dans la Gestion, seconde réservation des mêmes dates refusée.
  • Couvrir processus:VIS-01 et processus:VIS-03 du parcours principal.
  • Rendre /auth et /admin non encadrables (M03) et corriger M01 et M02.

Périmètre de l'avis

  • testé : processus:VIS-02 Rechercher des disponibilités (CN-1, CL-2 à CL-6), processus:CLI-01 Se connecter et se déconnecter (CL-1), processus:CLI-02 Réserver une chambre, partiellement (CU-1 s'arrête au choix de la chambre ; CL-20 à CL-23 sur la page de réservation), processus:CLI-04 Consulter ses réservations (CS-2), processus:ADM-01 Retrouver la réservation au tableau de bord (CU-2, CL-7) : défaut C01, processus:VIS-05 Consulter la FAQ (CS-3), processus:VIS-06 Basculer le site en anglais (CS-4), processus:CLI-06 Laisser un avis, refus seulement (CL-8), couverture:Securite applicative, couverture:Performance, couverture:Resilience, couverture:Conformite, couverture:Visuel et langues, couverture:Bout en bout par role, couverture:Accessibilite (partiel)
  • non testé : processus:CLI-03 Payer l'acompte de 30 % (simulé) : CN-2 non jouable (I1), processus:VIS-01 Consulter les chambres et les prix, processus:VIS-03 Créer un compte, processus:CLI-05 Annuler une réservation : CS-1 bloqué, processus:VIS-04 Envoyer un message de contact, processus:ADM-02 Consulter le calendrier des réservations, processus:ADM-03 Bloquer des dates, processus:ADM-04 Gérer les chambres et les prix, processus:ADM-05 Lire les messages de contact, couverture:Securite des donnees

Confiance : moyenne

Avalyz prouve ce qu'il a vu, il ne garantit pas le reste : ce qui n'a pas été testé n'est pas couvert. Sans compte de test, les pages connectées ne sont pas explorées ; avec un compte de test, la connexion est le seul formulaire soumis.

Le rapport complet d'un compte (parcours, preuves, format ISO 29119) est réservé aux comptes.

Avalyzاختبر تطبيقًا آخر

8/8 صفحات

تقرير نموذجي

تطبيق خيالي أُنشئ للعرض: لا توجد بيانات حقيقية. سيتبع تقريرك البنية نفسها.

اختبر تطبيقي

ما الذي ينكسر في تطبيقك

Riad Dar Zitoun

riad-connect-hub.lovable.app

العنوان المختبَر: https://riad-connect-hub.lovable.app/ · 2026-10-09 · اختبار كامل مع طلب وضع الكتابة (بيانات اختبار فقط، دون أي دفع حقيقي أو حذف) · 8 صفحات مزارة · 10 مستويات اختبار · الحكم محسوب كما يراه الناشر · التطبيق قيد البناء

موافقة بشروط انظر القرار المعلّل

التقرير الموجز

القرار

موافقة بشروط
تفاصيل تقنية

La recherche de disponibilités et ses bornes, la connexion, l'affichage des réservations et les contrôles de saisie de la page de réservation se comportent comme attendu (CN-1, CL-1 à CL-8, CS-2, CL-20 à CL-23). En revanche, le parcours de l'argent n'est pas démontré de bout en bout : le paiement de l'acompte n'a jamais pu être joué (CN-2, I1), le calcul RIAD10 reste non confirmé (CS-20, I3) et la gérante ne retrouve pas dans la Gestion les réservations confirmées du voyageur, défaut reproduit (C01, I4). La mise en service n'est envisageable qu'une fois ces points démontrés ou corrigés et les

رصد اختبار riad-connect-hub.lovable.app عدد 21 ملاحظة، منها 4 حرجة أو رئيسية (S1 و S2)، وتعود إلى 12 إصلاحات. يُعالج أولًا: مسار عمل يفشل، ثم يمكن عرض صفحات الدخول داخل موقع آخر (clickjacking)، ثم حقول نموذج بلا تسمية.

أرقام أساسية

8صفحات مختبَرة
22حالات عمل منفَّذة17 ناجحة · 1 فاشلة · 1 متوقفة
21ملاحظات0 حرج · 4 مهم · 12 طفيف · 5 ملاحظة

يُصلَح أولًا

  1. #1مهممسار عمل يفشل — /admin
    لا يستطيع العميل إكمال مسار يدرّ المال: الحجوزات ضائعة حتى الإصلاح.
  2. #2مهميمكن عرض صفحات الدخول داخل موقع آخر (clickjacking) — /auth
    يمكن لموقع خارجي اختطاف النقرات على صفحة الدخول: حسابات العملاء معرضة والثقة مفقودة.
  3. #3طفيفترويسات الأمان غائبة — /
  4. #4ملاحظةترويسات الأمان غائبة — /
  5. #5مهمحقول نموذج بلا تسمية — /admin
    جزء من الزوار (مستخدمو لوحة المفاتيح وضعاف البصر) لا يستطيعون الإكمال: إنها الحجوزات ضائعة، وإمكانية الوصول أصبحت التزامًا قانونيًا في عدة أسواق.

الخطوات التالية

  1. إصلاح النقاط الـ5 المصنّفة «تُصلح أولًا» بالترتيب.
  2. تطبيق الإصلاحات المجمّعة الـ6: كل واحد منها يعالج عدة ملاحظات دفعة واحدة.
  3. ثم معالجة الملاحظات الثانوية المتبقية، قسمًا بعد قسم.
  4. إعادة تشغيل اختبار Avalyz للتحقق من الإصلاحات.

التقرير المفصّل

فهمنا للنشاط (للتأكيد)

تُعرض نصوص التحليل باللغة التي كُتب بها التحليل.

بُني هذا الفهم مما يُظهره التطبيق؛ ويجب أن تؤكده فرق العمل قبل أن يُبنى عليه قرار.

توضيحات العميل المأخوذة بعين الاعتبار (الجولة 2)

  • نموذج العمل: Le code promo RIAD10 donne -10 % sur l hebergement seulement ; la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee ; l acompte de 30 % porte sur le total remise, taxe comprise.
  • التنظيم والملفات: La gerante est la seule administratrice : elle gere le calendrier des reservations, les dates bloquees, les chambres et les prix, et lit les messages de contact. Le voyageur connecte voit ses reservations dans Mes reservations.

قصص المستخدم المضافة

  1. En tant que voyageur connecte, je veux reserver la chambre Majorelle 2 nuits pour 2 adultes avec le code RIAD10, afin de payer un acompte calcule sur le total remise.
  2. En tant que gerante, je veux retrouver dans mon tableau de bord la reservation que le voyageur vient de faire, afin de preparer son arrivee.

حالات مستخرجة من قصص العميل: CU-1, CU-2

المفهوم

Riad Dar Zitoun vend en direct des nuitées dans ses 5 chambres de la Médina de Marrakech à des voyageurs, réservées en ligne avec un acompte de 30 % payé en ligne. Promesse : un riad paisible au cœur de la Médina, des prix clairs par nuit et une annulation possible jusqu'à 48 h avant l'arrivée.

العملاء المستهدفون: Voyageurs (couples, familles, petits groupes jusqu'à 4 personnes par chambre) visitant Marrakech ; site FR avec bascule EN.

سلسلة القيمة

  1. AttirerVIS-01, VIS-05, VIS-06
  2. ConvertirVIS-02, VIS-03, CLI-01, CLI-02
  3. EncaisserCLI-03
  4. Délivrer le séjourCLI-04, ADM-01, ADM-02, ADM-03, ADM-04
  5. Servir et fidéliserCLI-05, CLI-06, VIS-04, ADM-05

نموذج العمل

شرائح العملاءVoyageurs, couples et petites familles (jusqu'à 4 personnes) visitant Marrakech, francophones et anglophones.
عرض القيمةRiad paisible au cœur de la Médina, 5 chambres de 750 à 1 800 MAD, annulation jusqu'à 48 h.
القنواتSite web direct FR/EN : recherche de disponibilités, réservation en ligne, Mes réservations, contact, téléphone, e-mail.
مصادر الإيراداتNuitées vendues par chambre, acompte 30 % en ligne (simulé), taxe de séjour 30 MAD/adulte/nuit.

التنظيم

الهيكل الوظيفي: فضاءات التطبيق وملفات المستخدمين. ★ = ملف معتمد في الاختبار.

  • riad-connect-hub.lovable.app
    • Espace public (accueil, disponibilités, avis, FAQ, contact)
      • Visiteur VIS ★
    • Espace voyageur « Mes réservations »
      • Client voyageur connecté CLI ★
    • Gestion (administration de la gérante)
      • Gérante (seule administratrice) ADM ★

جدول الوظائف

الوظيفة (الملف)المهمةأهم المسؤولياتمعتمد في الاختبار
Visiteur VISDécouvrir le riad et vérifier les disponibilités avant de réserver.
  • Rechercher des dates libres
  • Choisir une chambre adaptée
  • Contacter le riad
★ نعم
Client voyageur connecté CLIRéserver et suivre son séjour au riad en payant l'acompte en ligne.
  • Réserver et payer l'acompte
  • Suivre ou annuler ses réservations
  • Donner son avis après séjour
★ نعم
Gérante (seule administratrice) ADMPiloter les réservations, l'offre de chambres et l'accueil des voyageurs.
  • Suivre les réservations et préparer les arrivées
  • Gérer chambres, prix et dates bloquées
  • Répondre aux messages de contact
★ نعم

المجالات

أساسي

  • Découverte de l'offre et disponibilités VIS-01, VIS-02, VIS-06
  • Réservation et suivi des séjours CLI-02, CLI-04, CLI-05, ADM-01
  • Gestion de l'offre (chambres, prix, calendrier, dates bloquées) ADM-02, ADM-03, ADM-04

داعم

  • Paiement de l'acompte CLI-03
  • Comptes et accès VIS-03, CLI-01
  • Relation client (avis, contact, FAQ) VIS-04, VIS-05, CLI-06, ADM-05

خريطة العمليات الكبرى والعمليات

عملية كبرىالعمليةالملفالنتائجالتغطية
Faire découvrir le riad
أساسي · Découverte de l'offre et disponibilités
VIS-01 — Consulter les chambres et les prixVIS✓ Chambres, capacités et prix affichés, ✗ Prix ou capacité différents de la descriptionغير مختبَر
VIS-02 — Rechercher des disponibilitésVIS✓ Chambres libres listées pour les dates, ✗ Date d'arrivée passée refusée, ✗ Départ non postérieur à l'arrivée refusé, ✗ Chambre réservée ou bloquée non proposée, ✗ Capacité dépassée : chambre non proposéeمختبَر: مطابق (CN-1, CL-2, CL-3, CL-4, CL-5, CL-6)
VIS-06 — Basculer le site en anglaisVIS✓ Site affiché en anglais, ✗ Textes restés en françaisمختبَر: مطابق (CS-4)
Préparer l'accueil
أساسي · Réservation et suivi des séjours
ADM-01 — Retrouver la réservation au tableau de bord (US-2)ADM✓ Réservation du voyageur affichée, montants justes, ✗ Réservation absente du tableau de bord, ✗ Total ou statut divergent de Mes réservationsمختبَر: عيب (CU-2, CL-7)
Suivre ses séjours
أساسي · Réservation et suivi des séjours
CLI-04 — Consulter ses réservationsCLI✓ Réservation listée, statut Confirmée, montants justes, ✗ Réservation absente ou montants fauxمختبَر: مطابق (CS-2)
CLI-05 — Annuler une réservationCLI✓ Réservation annulée, dates libérées, ✗ Annulation à moins de 48 h refuséeمتوقف (CS-1)
Vendre un séjour
أساسي · Réservation et suivi des séjours
CLI-02 — Réserver une chambre avec code promo (US-1)CLI✓ Récapitulatif juste : hébergement remisé, taxe, total, ✗ Code promo invalide refusé, ✗ Dates chevauchant une réservation refusées, ✗ Capacité de la chambre dépassée refuséeمختبَر: مطابق (CU-1)
Gérer l'offre
أساسي · Gestion de l'offre (chambres, prix, calendrier, dates bloquées)
ADM-03 — Bloquer des datesADM✓ Dates bloquées non réservables, ✗ Blocage sur dates déjà réservéesغير مختبَر
ADM-04 — Gérer les chambres et les prixADM✓ Nouveau prix affiché et appliqué, ✗ Prix invalide refuséغير مختبَر
Préparer l'accueil
أساسي · Gestion de l'offre (chambres, prix, calendrier, dates bloquées)
ADM-02 — Consulter le calendrier des réservationsADM✓ Occupation conforme aux réservations, ✗ Réservation manquante au calendrierغير مختبَر
Vendre un séjour
داعم · Paiement de l'acompte
CLI-03 — Payer l'acompte de 30 % (simulé)CLI✓ Acompte payé, numéro remis, statut Confirmée, ✗ Paiement simulé refusé, réservation non confirméeغير مختبَر
Gérer les comptes
داعم · Comptes et accès
VIS-03 — Créer un compteVIS✓ Compte créé puis confirmé par e-mail, ✗ Mot de passe trop court refusé, ✗ E-mail déjà utilisé refusé, ✗ E-mail de confirmation non reçuغير مختبَر
CLI-01 — Se connecter et se déconnecterCLI✓ Menu « Mes réservations » affiché, ✗ Identifiants erronés refusés, ✗ Voyageur voyant « Gestion » (accès indu)مختبَر: مطابق (CL-1)
Fidéliser les hôtes
داعم · Relation client (avis, contact, FAQ)
CLI-06 — Laisser un avisCLI✓ Avis publié après un séjour passé, ✗ Avis refusé sans séjour passéمختبَر: مطابق (CL-8)
Informer et assister
داعم · Relation client (avis, contact, FAQ)
VIS-04 — Envoyer un message de contactVIS✓ Message envoyé et confirmé, ✗ Champ obligatoire vide refusé, ✗ E-mail invalide refuséغير مختبَر
VIS-05 — Consulter la FAQVIS✓ Réponses cohérentes avec les règles, ✗ Réponse contredisant taxe, acompte ou annulationمختبَر: مطابق (CS-3)
ADM-05 — Lire les messages de contactADM✓ Message du formulaire Contact reçu, ✗ Message absent de la Gestionغير مختبَر

قواعد التسيير الأساسية لكل عملية

العمليةقاعدة التسييرالمصدر
VIS-01 — Consulter les chambres et les prixRG-01 — Atlas : 900 MAD par nuit, 2 personnesمقروءة في الموقع : « 900 MAD / nuit »
RG-02 — Majorelle : 1 200 MAD par nuit, 3 personnesمقروءة في الموقع : « 1 200 MAD / nuit »
RG-03 — Suite Koutoubia : 1 800 MAD par nuit, 4 personnesمقروءة في الموقع : « 1 800 MAD / nuit »
RG-04 — Palmeraie : 750 MAD par nuit, 2 personnesمقروءة في الموقع : « 750 MAD / nuit »
RG-05 — Menara : 1 000 MAD par nuit, 2 personnesمقروءة في الموقع : « 1 000 MAD / nuit »
VIS-02 — Rechercher des disponibilitésRG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentمقروءة في الموقع : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-13 — Pas de réservation dans le passéمقروءة في الموقع : « pas de reservation dans le passe »
RG-14 — 1 nuit minimumمقروءة في الموقع : « 1 nuit minimum »
RG-15 — Recherche : 1 à 4 adultes et 0 à 3 enfants (limites du formulaire)للتأكيد
RG-20 — La gérante bloque des dates, qui deviennent non réservablesمقروءة في الموقع : « blocage de dates »
VIS-03 — Créer un compteRG-17 — Inscription par e-mail et mot de passe avec e-mail de confirmationمقروءة في الموقع : « inscription par e-mail + mot de passe avec e-mail de confirmation »
RG-18 — Mot de passe de 6 caractères minimum (limite du formulaire)للتأكيد
VIS-04 — Envoyer un message de contactRG-21 — Contact : nom (100 car.), e-mail et message (2 000 car.) obligatoires, sujet facultatif (150 car.)للتأكيد
VIS-05 — Consulter la FAQRG-06 — Taxe de séjour : 30 MAD par adulte et par nuit, jamais remiséeمقروءة في الموقع : « la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee »
RG-07 — Code RIAD10 : -10 % sur l'hébergement seulement (US-1 : Majorelle 2 nuits 2 adultes = 2 400 - 240 + 120 = 2 280 MAD)مقروءة في الموقع : « Le code promo RIAD10 donne -10 % sur l hebergement seulement »
RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)مقروءة في الموقع : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-11 — Annulation possible jusqu'à 48 h avant l'arrivéeمقروءة في الموقع : « Annulation possible jusqu'à 48 h avant l'arrivée. »
VIS-06 — Basculer le site en anglaisRG-22 — Site en français avec bascule ENمقروءة في الموقع : « FR avec bascule EN »
CLI-01 — Se connecter et se déconnecterRG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionمقروءة في الموقع : « La gerante est la seule administratrice »
CLI-02 — Réserver une chambre avec code promo (US-1)RG-02 — Majorelle : 1 200 MAD par nuit, 3 personnesمقروءة في الموقع : « 1 200 MAD / nuit »
RG-06 — Taxe de séjour : 30 MAD par adulte et par nuit, jamais remiséeمقروءة في الموقع : « la taxe de sejour (30 MAD par adulte et par nuit) n est jamais remisee »
RG-07 — Code RIAD10 : -10 % sur l'hébergement seulement (US-1 : Majorelle 2 nuits 2 adultes = 2 400 - 240 + 120 = 2 280 MAD)مقروءة في الموقع : « Le code promo RIAD10 donne -10 % sur l hebergement seulement »
RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)مقروءة في الموقع : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentمقروءة في الموقع : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-14 — 1 nuit minimumمقروءة في الموقع : « 1 nuit minimum »
CLI-03 — Payer l'acompte de 30 % (simulé)RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)مقروءة في الموقع : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-09 — Paiement simulé, jamais réelمقروءة في الموقع : « paiement SIMULE, jamais reel »
RG-10 — Un numéro de réservation est remis après le paiement de l'acompteمقروءة في الموقع : « numero de reservation »
CLI-04 — Consulter ses réservationsRG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)مقروءة في الموقع : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléeمقروءة في الموقع : « Confirmée »
RG-25 — Le voyageur connecté voit ses réservations dans Mes réservationsمقروءة في الموقع : « Le voyageur connecte voit ses reservations dans Mes reservations »
CLI-05 — Annuler une réservationRG-11 — Annulation possible jusqu'à 48 h avant l'arrivéeمقروءة في الموقع : « Annulation possible jusqu'à 48 h avant l'arrivée. »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléeمقروءة في الموقع : « Confirmée »
CLI-06 — Laisser un avisRG-16 — Seuls les hôtes ayant séjourné peuvent publier un avisمقروءة في الموقع : « Seuls les hôtes ayant séjourné au riad peuvent publier un avis. »
ADM-01 — Retrouver la réservation au tableau de bord (US-2)RG-08 — Acompte de 30 % du total remisé, taxe comprise, payé en ligne (US-1 : 684 MAD)مقروءة في الموقع : « l acompte de 30 % porte sur le total remise, taxe comprise »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionمقروءة في الموقع : « La gerante est la seule administratrice »
RG-23 — Statuts de réservation visibles : Confirmée, Annuléeمقروءة في الموقع : « Confirmée »
ADM-02 — Consulter le calendrier des réservationsRG-12 — Une chambre ne peut pas être réservée deux fois sur des dates qui se chevauchentمقروءة في الموقع : « une chambre ne peut pas etre reservee deux fois sur des dates qui se chevauchent »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionمقروءة في الموقع : « La gerante est la seule administratrice »
ADM-03 — Bloquer des datesRG-20 — La gérante bloque des dates, qui deviennent non réservablesمقروءة في الموقع : « blocage de dates »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionمقروءة في الموقع : « La gerante est la seule administratrice »
ADM-04 — Gérer les chambres et les prixRG-01 — Atlas : 900 MAD par nuit, 2 personnesمقروءة في الموقع : « 900 MAD / nuit »
RG-02 — Majorelle : 1 200 MAD par nuit, 3 personnesمقروءة في الموقع : « 1 200 MAD / nuit »
RG-03 — Suite Koutoubia : 1 800 MAD par nuit, 4 personnesمقروءة في الموقع : « 1 800 MAD / nuit »
RG-04 — Palmeraie : 750 MAD par nuit, 2 personnesمقروءة في الموقع : « 750 MAD / nuit »
RG-05 — Menara : 1 000 MAD par nuit, 2 personnesمقروءة في الموقع : « 1 000 MAD / nuit »
RG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionمقروءة في الموقع : « La gerante est la seule administratrice »
ADM-05 — Lire les messages de contactRG-19 — La gérante est la seule administratrice : seule elle accède à la Gestionمقروءة في الموقع : « La gerante est la seule administratrice »
RG-21 — Contact : nom (100 car.), e-mail et message (2 000 car.) obligatoires, sujet facultatif (150 car.)للتأكيد
—RG-24 — Prix affichés en MAD, par chambre et par nuitمقروءة في الموقع : « 750 MAD / nuit »

دفتر الاستلام

تُعرض نصوص التحليل باللغة التي كُتب بها التحليل.

كل حالة اختبار مستمدة من الفهم أعلاه؛ وكل نتيجة محصّلة مرفقة بأدلتها.

المرجعقصة المستخدمالنتيجة المتوقعةالنتيجة المحصّلة والأدلةالتوصية
CN-1En tant que Client voyageur connecté, je veux trouver une chambre libre pour mes dates, afin de réserver mon séjour au riad.
VIS-02 · RG-02 · RG-12 · RG-13 · RG-14
Connexion réussie ; la Majorelle est proposée pour 2 adultes du 10 au 12 novembre à 1 200 MAD la nuit.

مطابق

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)
  • POST /rest/v1/rpc/available_rooms → 200 (بيانات)

سلامة الصفحات المرتبطة: #2, #18

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CU-1En tant que Client voyageur connecté, je veux réserver la Majorelle 2 nuits pour 2 adultes avec RIAD10, afin de payer un acompte calculé sur le total remisé.
قصة من العميل · CLI-02 · RG-02 · RG-06 · RG-07 · RG-08
Récapitulatif : hébergement 2 400, remise RIAD10 -240, taxe 120, total 2 280 MAD ; acompte 684 MAD ; numéro de réservation affiché.

مطابق

ردود الخادم

  • POST /rest/v1/rpc/available_rooms → 200 (بيانات)

سلامة الصفحات المرتبطة: #2, #18

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CU-2En tant que Gérante (seule administratrice), je veux retrouver dans mon tableau de bord la réservation du voyageur, afin de préparer son arrivée.
قصة من العميل · ADM-01 · RG-19 · RG-23
Le tableau de bord liste DZ-2610-A646A et DZ-2610-39268 (Atlas, 1 920 MAD) avec chambre, client, dates et statut.

غير مطابق

النص المتوقع غائب: « DZ-2610-A646A » (الصفحة: « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact Mes réservations Gestion EN Déconnexion Tableau de bord Calendrier Dates bloquées Chambres & prix Messag »)

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)

سلامة الصفحات المرتبطة: #2, #5, #6, #7, #12, #18

ملاحظة: #1

الخطورة S2: حالة ثانوية أو حدّية مهمة للنشاط لا تتصرف كما وُعد. أعد تنفيذ الخطوات بحساب الاختبار، أصلح، ثم أعد اختبار القبول.
CS-1En tant que Client voyageur connecté, je veux annuler une réservation plus de 48 h avant l'arrivée, afin de libérer mes dates sans litige.
CLI-05 · RG-11 · RG-23
La réservation passe au statut Annulée ; ses dates redeviennent réservables.

متوقف

« Annuler » : paiement, suppression ou annulation, jamais cliqué

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)

سلامة الصفحات المرتبطة: #2, #18

رفع العائق (« Annuler » : paiement, suppression ou annulation, jamais cliqué) ثم إعادة التنفيذ.
CS-2En tant que Client voyageur connecté, je veux voir un total et un acompte justes dans Mes réservations, afin de payer le bon montant.
CLI-04 · RG-01 · RG-06 · RG-08
Atlas 2 nuits 2 adultes : 1 800 + taxe 120 = 1 920 MAD ; acompte 30 % = 576 MAD.

مطابق

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)

سلامة الصفحات المرتبطة: #2, #18

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-3En tant que Visiteur, je veux lire dans la FAQ les règles de promo, de taxe et d'annulation, afin de réserver en confiance.
VIS-05 · RG-06 · RG-07 · RG-11
Les réponses citent RIAD10, la taxe de 30 MAD et l'annulation jusqu'à 48 h, sans contradiction.

مطابق

سلامة الصفحات المرتبطة: #20

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-4En tant que Visiteur, je veux afficher le site en anglais, afin de comprendre l'offre sans parler français.
VIS-06 · RG-22
Les libellés passent en anglais ; les chambres restent affichées.

مطابق

سلامة الصفحات المرتبطة: #3, #4, #8, #9, #10, #11, #13, #14, #15, #16

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-1En tant que Client voyageur connecté, je veux être refusé avec un mauvais mot de passe, afin que personne n'accède à mes réservations.
CLI-01 · RG-17
Connexion refusée avec un message d'erreur ; aucun accès à Mes réservations.

مطابق

ردود الخادم

  • POST /auth/v1/token → 400 (بيانات)

سلامة الصفحات المرتبطة: #2, #18

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-2En tant que Visiteur, je veux être empêché de chercher une arrivée passée, afin de ne pas réserver une date impossible.
VIS-02 · RG-13
Date passée refusée ; aucune chambre proposée.

مطابق

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-3En tant que Visiteur, je veux être alerté si mon départ précède mon arrivée, afin de corriger mes dates.
VIS-02 · RG-14
Dates incohérentes refusées ; aucune chambre proposée.

مطابق

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-4En tant que Visiteur, je veux être empêché de réserver zéro nuit, afin de respecter le minimum d'une nuit.
VIS-02 · RG-14
Séjour de zéro nuit refusé ; aucune chambre proposée.

مطابق

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-5En tant que Visiteur, je veux ne voir que les chambres assez grandes pour 4 adultes, afin de réserver une chambre adaptée.
VIS-02 · RG-02 · RG-03 · RG-15
Seule la Suite Koutoubia (4 pers.) est proposée.

مطابق

ردود الخادم

  • POST /rest/v1/rpc/available_rooms → 200 (بيانات)

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-6En tant que Visiteur, je veux être bloqué au-delà de 4 adultes, afin de ne pas réserver une capacité inexistante.
VIS-02 · RG-15
Saisie refusée ; aucune chambre proposée pour 5 adultes.

مطابق

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-7En tant que Gérante (seule administratrice), je veux que la Gestion soit fermée aux visiteurs, afin de protéger les réservations et les clients.
ADM-01 · RG-19 · RG-25
Sans connexion, ni la Gestion ni les réservations ne s'affichent.

مطابق

سلامة الصفحات المرتبطة: #2, #5, #6, #7, #12, #18

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-8En tant que Client voyageur connecté, je veux être empêché de publier un avis sans séjour passé, afin que les avis restent authentiques.
CLI-06 · RG-16
Le compte sans séjour passé ne peut pas publier ; la règle est rappelée.

مطابق

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)
  • POST /rest/v1/rpc/has_past_stay → 200 (بيانات)

سلامة الصفحات المرتبطة: #2, #18

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CN-2En tant que Client voyageur connecté, je veux réserver la Majorelle 2 nuits avec RIAD10 et payer l'acompte, afin de confirmer mon séjour.
CLI-03 · RG-02 · RG-06 · RG-07 · RG-08 · RG-09
Total 2 280 MAD après RIAD10, acompte de 684 MAD payé (simulé), réservation confirmée avec numéro.

غير قابل للتنفيذ

لم يُنفَّذ: عنصر غير موجود: input >> nth=0 — يُؤكَّد لاحقًا

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

رفع العائق (لم يُنفَّذ: عنصر غير موجود: input >> nth=0 — يُؤكَّد لاحقًا) ثم إعادة التنفيذ.
CS-20En tant que Client voyageur connecté, je veux appliquer RIAD10 à la Suite Koutoubia, afin de payer un acompte juste sur le total remisé.
CLI-02 · RG-03 · RG-06 · RG-07 · RG-08
Total 3 360 MAD, acompte 1 008 MAD, solde 2 352 MAD ; la taxe de 120 MAD n'est pas remisée.

غير قابل للتنفيذ

لم يُنفَّذ: عنصر غير موجود: input[placeholder="RIAD10"] — يُؤكَّد لاحقًا

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

رفع العائق (لم يُنفَّذ: عنصر غير موجود: input[placeholder="RIAD10"] — يُؤكَّد لاحقًا) ثم إعادة التنفيذ.
CS-21En tant que Gérante (seule administratrice), je veux retrouver la réservation Majorelle que le voyageur vient de payer, afin de préparer son arrivée.
ADM-01 · RG-08 · RG-19 · RG-23 · RG-25
Mes réservations affiche 2 280 MAD et 684 MAD ; la Gestion liste la réservation Majorelle du 2026-11-10.

غير حاسم — للتأكيد

النص المتوقع غائب: « Total: 2 280 MAD » (الصفحة: « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact EN Connexion Connexion E-mail Mot de passe ConnexionPas encore de compte ? Créer un compte Riad Dar Zito »)

سلامة الصفحات المرتبطة: #2, #18

تأكيد النتيجة المتوقعة مع فريق العمل ثم إعادة التنفيذ.
CL-20En tant que Client voyageur connecté, je veux qu'un code promo inconnu soit refusé, afin de payer le prix juste.
CLI-02 · RG-04 · RG-07
Code refusé ; total 1 620 MAD et acompte 486 MAD inchangés.

مطابق

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-21En tant que Client voyageur connecté, je veux être empêché de réserver une chambre déjà prise, afin d'éviter un surbooking.
CLI-02 · RG-12
Réservation refusée : chambre indisponible sur ces dates, aucun numéro émis.

مطابق

دفع في وضع الاختبار (المزوّد: simulation)

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-22En tant que Client voyageur connecté, je veux être bloqué si le nom complet manque, afin que la gérante sache qui accueillir.
CLI-03 · RG-08
Paiement bloqué, champ Nom complet signalé ; aucune réservation créée.

مطابق

دفع في وضع الاختبار (المزوّد: simulation)

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-23En tant que Client voyageur connecté, je veux être alerté si mon e-mail est invalide, afin de recevoir ma confirmation.
CLI-03 · RG-08
Paiement bloqué, format d'e-mail signalé ; aucune réservation créée.

مطابق

دفع في وضع الاختبار (المزوّد: simulation)

ردود الخادم

  • POST /auth/v1/token → 200 (بيانات)

سلامة الصفحات المرتبطة: لا توجد ملاحظة تقنية على هذه الصفحات

الإبقاء على هذه الحالة في اختبارات عدم التراجع.

السلامة التقنية

اختبار قبول riad-connect-hub.lovable.app: 21 ملاحظة و12 إصلاحات مطلوبة

رصد اختبار riad-connect-hub.lovable.app عدد 21 ملاحظة، منها 4 حرجة أو رئيسية (S1 و S2)، وتعود إلى 12 إصلاحات. يُعالج أولًا: مسار عمل يفشل، ثم يمكن عرض صفحات الدخول داخل موقع آخر (clickjacking)، ثم حقول نموذج بلا تسمية.

تم العثور على 20 مشكلات، منها 3 يجب إصلاحها أولًا.

أصلح هذه أولًا

  1. سبب واحد ← إصلاح واحديمكن عرض صفحات الدخول داخل موقع آخر (clickjacking): 3 ملاحظات وإصلاح واحد

    السبب: الخلل نفسه «يمكن عرض صفحات الدخول داخل موقع آخر (clickjacking)» يتكرر: على الأرجح مكوّن أو قالب مشترك واحد.

    إصلاح واحد: إرسال الترويسة Content-Security-Policy: frame-ancestors 'none' (و X-Frame-Options: DENY).

    الملاحظات : #2, #3, #4

  2. #2مهميمكن عرض صفحات الدخول داخل موقع آخر (clickjacking) — /auth (Chromium (محرّك Chrome))

    لماذا أولًا: يمكن لموقع خارجي اختطاف النقرات على صفحة الدخول: حسابات العملاء معرضة والثقة مفقودة. الجهد : منخفض

    الصفحة: https://riad-connect-hub.lovable.app/auth

    الملاحظ: Encadrables : /admin; /auth

    تفاصيل تقنية

    العنوان الأصلي: Pages de connexion affichables dans un autre site (clickjacking)

    المتوقع: Ces pages refusent d'être affichées dans un cadre étranger

    الإصلاح الموصى به: Envoyer Content-Security-Policy: frame-ancestors 'none' (et X-Frame-Options: DENY).

  3. #3طفيفترويسات الأمان غائبة — / (الحاسوب · Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: En-têtes de sécurité absents sur riad-connect-hub.lovable.app

    المتوقع: En-têtes de sécurité présents

    الملاحظ: Manquants : Content-Security-Policy, Permissions-Policy

    الإصلاح الموصى به: Les ajouter dans la configuration de l'hébergeur (fichier _headers Netlify, vercel.json...).

  4. #4ملاحظةترويسات الأمان غائبة — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Cross-Origin-Opener-Policy absente : une fenêtre ouverte par un autre site garde un lien vers la vôtre

    المتوقع: Cross-Origin-Opener-Policy: same-origin (ou same-origin-allow-popups si des fenêtres de paiement/connexion sont utilisées)

    الملاحظ: Cross-Origin-Opener-Policy: absent

    الإصلاح الموصى به: Ajouter Cross-Origin-Opener-Policy: same-origin-allow-popups, puis same-origin si aucun parcours n'en souffre.

  5. سبب واحد ← إصلاح واحدحقول نموذج بلا تسمية: 3 ملاحظات وإصلاح واحد

    السبب: الحقول منشأة دون تسمية مرتبطة بها.

    إصلاح واحد: ربط label (أو aria-label) بكل حقل في مكوّن النموذج المشترك.

    الملاحظات : #5, #6, #7

  6. #5مهمحقول نموذج بلا تسمية — /admin (Chromium (محرّك Chrome))

    لماذا أولًا: جزء من الزوار (مستخدمو لوحة المفاتيح وضعاف البصر) لا يستطيعون الإكمال: إنها الحجوزات ضائعة، وإمكانية الوصول أصبحت التزامًا قانونيًا في عدة أسواق. الجهد : منخفض

    الصفحة: https://riad-connect-hub.lovable.app/admin

    تفاصيل تقنية

    العنوان الأصلي: Accessibilité : champ-sans-libelle (label) (3 occurrence(s) sur 2 page(s)) — ordinateur, téléphone

    المتوقع: Conforme WCAG 2.2 AA — WCAG 2.2 : 4.1.2 Nom, rôle et valeur (A), 1.3.1 Information et relations (A) · RGAA 4.1 : 11.1 Champ de formulaire avec étiquette

    الملاحظ: input[maxlength="100"] Form elements must have labels; input Form elements must have labels; input[maxlength="100"] Form elements must have labels

    الإصلاح الموصى به: axe-core (moteur de référence) : corriger chaque élément cité.

  7. #6مهمخلل في إمكانية الوصول — /admin (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/admin

    تفاصيل تقنية

    العنوان الأصلي: Accessibilité : nom-accessible (button-name) (1 occurrence(s) sur 1 page(s))

    المتوقع: Conforme WCAG 2.2 AA — WCAG 2.2 : 4.1.2 Nom, rôle et valeur (A) · RGAA 4.1 : 11.9 Intitulé de bouton pertinent

    الملاحظ: .bg-background.w-9.\[\&_svg\]\:pointer-events-none:nth-child(1) Buttons must have discernible text

    الإصلاح الموصى به: axe-core (moteur de référence) : corriger chaque élément cité.

  8. #7ملاحظةخلل في إمكانية الوصول — /admin (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/admin

    تفاصيل تقنية

    العنوان الأصلي: Accessibilité : empty-table-header (1 occurrence(s) sur 1 page(s))

    المتوقع: Conforme WCAG 2.2 AA — bonne pratique (aucun critère WCAG 2.2 ni RGAA 4.1 directement visé)

    الملاحظ: thead > tr > .p-3:nth-child(7) Table header text should not be empty

    الإصلاح الموصى به: axe-core (moteur de référence) : corriger chaque élément cité.

  9. سبب واحد ← إصلاح واحدلا يوجد رابط لسياسة الخصوصية: 2 ملاحظات وإصلاح واحد

    السبب: الخلل نفسه «لا يوجد رابط لسياسة الخصوصية» يتكرر: على الأرجح مكوّن أو قالب مشترك واحد.

    إصلاح واحد: أصلحه مرة واحدة في المكوّن أو القالب المشترك، ثم أعد فحص كل الصفحات المذكورة.

    الملاحظات : #8, #9

  10. #8طفيفلا يوجد رابط لسياسة الخصوصية — / (Chromium (محرّك Chrome))

    لماذا أولًا: هذه المعلومات إلزامية عادةً لموقع يبيع عبر الإنترنت؛ وغيابها يعرّض الناشر للمساءلة ويقلّل طمأنة المشترين. الجهد : منخفض

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Pas de lien vers la politique de confidentialité

    المتوقع: Un lien vers la politique de confidentialité (RGPD / loi 09-08)

    الملاحظ: Aucun lien ni texte « confidentialité / privacy / données personnelles » trouvé sur l'accueil.

    الإصلاح الموصى به: Publier une politique de confidentialité et la lier depuis le pied de page.

  11. #9طفيفلا توجد بيانات قانونية — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Pas de mentions légales

    المتوقع: Des mentions légales (éditeur, hébergeur, contact)

    الملاحظ: Aucun lien « mentions légales / CGU / CGV / legal » trouvé sur l'accueil.

    الإصلاح الموصى به: Ajouter une page de mentions légales liée depuis le pied de page.

  12. سبب واحد ← إصلاح واحدصفحات وصور ثقيلة جدًا: 2 ملاحظات وإصلاح واحد

    السبب: الصور والموارد ثقيلة جدًا، على الأرجح دون ضغط أو أبعاد مناسبة.

    إصلاح واحد: ضغط الصور وتغيير أبعادها (WebP أو AVIF و srcset) مرة واحدة في سلسلة النشر.

    الملاحظات : #10, #11

  13. #10طفيفصفحات وصور ثقيلة جدًا — / (Chromium (محرّك Chrome))

    لماذا أولًا: الصفحة البطيئة تجعل الزوار يغادرون قبل رؤية العرض، خاصة على الهاتف: الحجوزات أقل. الجهد : منخفض

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: 2 image(s) trop lourde(s) pour leur taille d'affichage

    المتوقع: Images < 300 Ko, dimensionnées pour l'affichage

    الملاحظ: ttps://riad-connect-hub.lovable.app/assets/hero-O0-s_7b9.jpg : 461 Ko, 1920 px affichés en 1440 px; /riad-connect-hub.lovable.app/assets/room-atlas-DfmmbZJQ.jpg : 187 Ko, 1200 px affichés en 192 px

    الإصلاح الموصى به: SVG ou WebP pour le logo ; images responsives (srcset, AVIF/WebP) ; préchargement de l'image principale.

  14. #11طفيفصفحات وصور ثقيلة جدًا — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    الملاحظ: https://riad-connect-hub.lovable.app/assets/hero-O0-s_7b9.jpg (image/jpeg) : 462 Ko

    تفاصيل تقنية

    العنوان الأصلي: Images lourdes : 1 fichier(s) au-dessus de 300 Ko

    المتوقع: Chaque fichier ≤ 300 Ko transférés

    الإصلاح الموصى به: Convertir en WebP ou AVIF, redimensionner à la taille d'affichage (srcset), viser moins de 200 Ko par image ; charger en différé celles qui sont sous la ligne de flottaison.

الباقي

0حرج
3مهم
12طفيف
5ملاحظة
  • #12طفيفتباين النص غير كافٍ — /admin (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/admin

    تفاصيل تقنية

    العنوان الأصلي: Accessibilité : contraste (color-contrast) (1 occurrence(s) sur 1 page(s)) — 8 sélecteur(s)

    المتوقع: Conforme WCAG 2.2 AA — WCAG 2.2 : 1.4.3 Contraste (minimum) (AA) · RGAA 4.1 : 3.2 Contraste du texte

    الملاحظ: .p-3:nth-child(3) > .text-xs : ratio 2,12:1 (texte #b9ada6 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .font-semibold.p-3 : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(2) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(3) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(4) : ratio 3,17:1 (texte #978c86 sur fond #fffbf6), cible 4,5:1 — 1 page(s) : /admin ; .opacity-50 > .p-3:nth-child(5) : ra

    الإصلاح الموصى به: Une règle CSS par sélecteur cité : foncer le texte ou éclaircir le fond jusqu'à la cible (4,5:1 ; 3:1 pour un texte d'au moins 24 px, ou 18,66 px en gras).

  • سبب واحد ← إصلاح واحدملاحظة S3 — /: 2 ملاحظات وإصلاح واحد

    السبب: الخلل نفسه «ملاحظة S3 — /» يتكرر: على الأرجح مكوّن أو قالب مشترك واحد.

    إصلاح واحد: أصلحه مرة واحدة في المكوّن أو القالب المشترك، ثم أعد فحص كل الصفحات المذكورة.

    الملاحظات : #13, #14

  • #13طفيفملاحظة S3 — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Aucun bandeau de consentement aux cookies détecté sur riad-connect-hub.lovable.app

    المتوقع: Un bandeau qui demande l'accord (accepter / refuser / personnaliser)

    الملاحظ: Ni outil de consentement connu, ni texte « cookies » avec un bouton d'acceptation, alors que des traceurs ou cookies de mesure sont présents.

    الإصلاح الموصى به: Le RGPD et la directive « ePrivacy » (en France, les règles de la CNIL ; au Maroc, la loi 09-08 et la CNDP) demandent l'accord du visiteur AVANT de déposer un cookie ou d'appeler un service qui sert à mesurer l'audience ou à faire de la publicité. Les cookies strictement nécessaires (session, panier, langue) n'ont pas besoin d'accord. Installez un outil de gestion du consentement et bloquez les traceurs tant que le visiteur n'a pas choisi.

  • #14طفيفملاحظة S3 — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Cookies de mesure ou de publicité déposés avant tout consentement sur riad-connect-hub.lovable.app

    المتوقع: Seuls des cookies techniques (session, panier, langue) avant l'accord

    الملاحظ: Déposés sans accord : __cf_bm (supabase.co, tiers)

    الإصلاح الموصى به: Le RGPD et la directive « ePrivacy » (en France, les règles de la CNIL ; au Maroc, la loi 09-08 et la CNDP) demandent l'accord du visiteur AVANT de déposer un cookie ou d'appeler un service qui sert à mesurer l'audience ou à faire de la publicité. Les cookies strictement nécessaires (session, panier, langue) n'ont pas besoin d'accord. Déposez ces cookies seulement après l'accord, et proposez « Refuser » aussi simplement que « Accepter ».

  • سبب واحد ← إصلاح واحدتحميل بطيء: 3 ملاحظات وإصلاح واحد

    السبب: موارد كثيرة يجب تحميلها قبل العرض، خاصة على شبكة الهاتف.

    إصلاح واحد: تخفيف الصور والسكربتات وتأجيلها وتخزين الموارد المشتركة مؤقتًا.

    الملاحظات : #15, #16, #17

  • #15طفيفتحميل بطيء (6252 ms) — / (الهاتف · Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    المتوقع: Chargement < 3000 ms

    الملاحظ: / 6252 ms

    تفاصيل تقنية

    العنوان الأصلي: Chargement lent (6252 ms) : / — téléphone uniquement

    الإصلاح الموصى به: Mesurer avec Lighthouse ; compresser les images, decouper le JavaScript, mettre en cache.

  • #16طفيفتحميل بطيء (4600 ms, 4562 ms) — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Lent sur téléphone en réseau lent : LCP 4600 ms, chargement 4562 ms (non confirmé)

    المتوقع: LCP ≤ 4000 ms et chargement ≤ 10000 ms dans ces conditions (profil mobile de Lighthouse)

    الملاحظ: LCP 4600 ms, chargement 4562 ms (2 mesure(s), non confirmé)

    الإصلاح الموصى به: Alléger d'abord l'élément principal affiché (image ou titre) : image compressée et préchargée (rel=preload), CSS critique en ligne, JavaScript différé ; servir les fichiers depuis un CDN proche des visiteurs.

  • #17طفيفصفحات وصور ثقيلة جدًا — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Fichiers JavaScript lourds : 1 fichier(s) au-dessus de 500 Ko

    المتوقع: Chaque fichier ≤ 500 Ko transférés

    الملاحظ: https://riad-connect-hub.lovable.app/assets/index-BYEaChBb.js (text/javascript) : 574 Ko décompressés (167 Ko transférés)

    الإصلاح الموصى به: Découper le JavaScript par page (code splitting), retirer les bibliothèques inutilisées (tree shaking), minifier et compresser (brotli) ; différer les scripts non essentiels (defer/async).

  • #18طفيفصفحات الدخول مفتوحة لمحركات البحث — /auth (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/auth

    تفاصيل تقنية

    العنوان الأصلي: Pages de connexion ouvertes aux moteurs de recherche

    المتوقع: noindex et Disallow sur les espaces privés

    الملاحظ: Indexables : /auth ; robots.txt : User-agent: Googlebot Allow: / User-agent: Bingbot Allow: / User-agent: Twitterbot Allow: / User-agent: facebookexter

    الإصلاح الموصى به: Ajouter <meta name=robots content=noindex> et Disallow: /admin, /vendeur (ou équivalents).

  • #19ملاحظةلا يوجد ملف security.txt — /.well-known/security.txt (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/.well-known/security.txt

    الملاحظ: HTTP 404

    تفاصيل تقنية

    العنوان الأصلي: Pas de /.well-known/security.txt

    المتوقع: Un fichier security.txt indiquant comment signaler une faille (RFC 9116)

    الإصلاح الموصى به: Ajouter /.well-known/security.txt avec un contact de sécurité.

  • #20ملاحظةمستويات العناوين غير متسلسلة — /faq (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/faq

    تفاصيل تقنية

    العنوان الأصلي: Accessibilité : ordre-titres (heading-order) (2 occurrence(s) sur 1 page(s)) — ordinateur, téléphone

    المتوقع: Conforme WCAG 2.2 AA — RGAA 4.1 : 9.1 Hiérarchie des titres

    الملاحظ: .border-b:nth-child(1) > h3 Heading levels should only increase by one; .border-b:nth-child(1) > h3 Heading levels should only increase by one

    الإصلاح الموصى به: axe-core (moteur de référence) : corriger chaque élément cité.

  • #21ملاحظةتحسين الظهور في محركات البحث — / (Chromium (محرّك Chrome))

    الصفحة: https://riad-connect-hub.lovable.app/

    تفاصيل تقنية

    العنوان الأصلي: Référencement : 1 problème(s) sur riad-connect-hub.lovable.app

    المتوقع: Canonical propre à chaque langue, og:image, titres distincts

    الملاحظ: sans canonical : /; /auth; /contact; /faq (+3)

    الإصلاح الموصى به: Canonical auto-référent par langue, og:image/og:title partout, titre et canonical sur chaque page.

حسب الموضوع

  • الأمان والثقة — أي ثغرة تعرّض حسابات العملاء وبياناتهم للخطر؛ وفقدان الثقة يكلّف الحجوزات ويُحمّل الناشر المسؤولية.
    عدد الملاحظات: 4، منها 1 حرجة أو رئيسية؛ يكفي 2 إصلاح. #2, #3, #4, #19
  • إمكانية الوصول — جزء من الزوار (مستخدمو لوحة المفاتيح وضعاف البصر) لا يستطيعون الإكمال: إنها الحجوزات ضائعة، وإمكانية الوصول أصبحت التزامًا قانونيًا في عدة أسواق.
    عدد الملاحظات: 5، منها 2 حرجة أو رئيسية؛ يكفي 3 إصلاح. #5, #6, #7, #12, #20
  • الالتزامات القانونية — هذه المعلومات إلزامية عادةً لموقع يبيع عبر الإنترنت؛ وغيابها يعرّض الناشر للمساءلة ويقلّل طمأنة المشترين.
    عدد الملاحظات: 4، منها 0 حرجة أو رئيسية؛ يكفي 2 إصلاح. #8, #9, #13, #14
  • سرعة التحميل — الصفحة البطيئة تجعل الزوار يغادرون قبل رؤية العرض، خاصة على الهاتف: الحجوزات أقل.
    عدد الملاحظات: 5، منها 0 حرجة أو رئيسية؛ يكفي 2 إصلاح. #10, #11, #15, #16, #17
  • الظهور في محركات البحث — محركات البحث تجلب الزوار مجانًا؛ والصفحات سيئة الوصف أو الفهرسة تجلب عددًا أقل.
    عدد الملاحظات: 2، منها 0 حرجة أو رئيسية؛ يكفي 2 إصلاح. #18, #21

الخطوات التالية

  1. إصلاح النقاط الـ5 المصنّفة «تُصلح أولًا» بالترتيب.
  2. تطبيق الإصلاحات المجمّعة الـ6: كل واحد منها يعالج عدة ملاحظات دفعة واحدة.
  3. ثم معالجة الملاحظات الثانوية المتبقية، قسمًا بعد قسم.
  4. إعادة تشغيل اختبار Avalyz للتحقق من الإصلاحات.
  5. توسيع النطاق ليشمل 5 مجالات غير مختبرة (مثلًا بحساب تجريبي).

ما اختُبر: إمكانية الوصول (جزئي)، المنطقة بعد الدخول، المسارات حسب الدور (جزئي)، منطق العمل (جزئي)، أمان التطبيق، الواجهات البرمجية / التكامل (جزئي)، الامتثال، من البداية للنهاية حسب الدور، الأداء، سيناريوهات العمل (جزئي)، 16 مجالات أخرى. ما لم يُختبر: الانحدار البصري، أمن البيانات، التحليل الثابت، اختبارات الوحدات، المكوّنات. غياب ملاحظة لا يثبت أن كل شيء يعمل: لم يُفحص إلا ما هو مذكور.

حدود التغطية

  • إمكانية الوصول : جزئي
    تفاصيل تقنية

    axe-core sur chaque page (bureau et téléphone) + focus clavier ; critères WCAG 2.2 et RGAA 4.1 cités dans les constats ; compléments navigateur : 8 page(s) (8 pages lues sur 8 visitées (mode complet)), contraste mesuré sur 16 texte(s) (clair, et sombre sur 8 page(s)), 320 tabulation(s) (135 élément(s) vérifiés pour le focus visible, 0 fenêtre(s) modale(s) cachée(s) parcourue(s) sans clic, 0 piège(s)), noms accessibles vérifiés sur 8 page(s), 0 PDF lié(s) non audité(s)

  • الانحدار البصري : لم يُختبر
    تفاصيل تقنية

    Aucune reference approuvee : approuve un passage comme reference.

  • المسارات حسب الدور : جزئي
    تفاصيل تقنية

    3 pages, 57 actions relevées, 0 action jouée (lecture seule) — rôle « [email] » ; 1 autre(s) rôle(s) : voir les lignes « Profil »

  • منطق العمل : جزئي
    تفاصيل تقنية

    logique métier décrite par le client jouée par les scénarios métier (voir la ligne « Scénarios métier ») ; aucune idée « Depuis ton idée » à rapprocher

  • الواجهات البرمجية / التكامل : جزئي
    تفاصيل تقنية

    pas de spécification OpenAPI trouvée (/openapi.json, /swagger.json, /api-docs, /api/openapi.json…) ; sondes GET : /api → 406, /api/health → 406, /graphql → 406 — importe le contrat de l'API pour des cas par opération ; spec reconstituée depuis le navigateur (7 page(s) — 7 pages lues sur 8 visitées (mode complet), 9 appel(s) observé(s), aucune requête ajoutée) : 1 point(s) d'entrée — POST /__l5e/trackevents [?] ; 0 constat(s)

  • أمن البيانات : لم يُختبر
    تفاصيل تقنية

    aucune base détectée (Supabase : clé anon dans la page ; Firebase : apiKey + databaseURL) — le contrôle RLS demande un accès à la base ou une clé publique visible

  • سيناريوهات العمل : جزئي
    تفاصيل تقنية

    15 cas conçus (1 nominal, 6 secondaires, 8 limites) ; joués : 15 (mode complet : CN-1, CU-1, CU-2, CS-1, CS-2, CS-3, CS-4, CL-1, CL-2, CL-3, CL-4, CL-5, CL-6, CL-7, CL-8) ; 13 réussis / 1 échecs / 1 bloqués / 0 non jouables ; écriture autorisée, 38 soumission(s) ; exploration en jouant : 5 écran(s) découvert(s) (https://riad-connect-hub.lovable.app/book/atlas?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0, https://riad-connect-hub.lovable.app/book/majorelle?checkIn=2026-11-10&checkOut=2026-11-12&adults=2&children=0, https://riad-connect-hub.lovable.a

  • التحليل الثابت : لم يُختبر
    تفاصيل تقنية

    code source non fourni (champ « URL du code source » du panneau) ou mode rapide

  • اختبارات الوحدات : لم يُختبر
    تفاصيل تقنية

    code source non fourni (champ « URL du code source » du panneau) ou mode rapide

  • المكوّنات : لم يُختبر
    تفاصيل تقنية

    code source non fourni (champ « URL du code source » du panneau) ou mode rapide

  • مجال آخر : جزئي
    تفاصيل تقنية

    Niveaux

    6/13 exécutés, 3 partiels, 4 non testés (sur 13 niveaux du plan) ; demandés : 6/10 faits

  • مجال آخر : جزئي
    تفاصيل تقنية

    À vérifier (sans constat)

    1 point(s) non mesuré(s), sans constat : Accessibilité : contraste à vérifier à la main — fond non uni (image, dégradé, élément superposé ou transparence) : 18 sélecteur(s) sur 8 page(s) — .tracking-\[0\.25em\] : Element's background color could not be determined due to a background gradient — 1 page(s) : / ; h1 : Element's background color could not be determined due to a background gradient — 1 page(s) : / ; .max-w-xl : Element's background color could not be determined due to a bac

مدد الاختبار
  • 6779 msplan du site (0 adresse(s) à visiter en plus)
  • 11188 mscréation des comptes de recette (1/1 créé(s))
  • 1813 msnavigation bureau p1 (chargement 547, réseau calme 1246, relevés 20)
  • 5980 msa11y bureau p1
  • 216 msfocus clavier bureau p1
  • 1862 mscapture bureau p1
  • 1151 msnavigation bureau p2 (chargement 440, réseau calme 691, relevés 20)
  • 639 msa11y bureau p2
  • 110 mscapture bureau p2
  • 1359 msnavigation bureau p3 (chargement 566, réseau calme 782, relevés 11)
  • 692 msa11y bureau p3
  • 115 mscapture bureau p3
  • 1206 msnavigation bureau p4 (chargement 551, réseau calme 644, relevés 11)
  • 669 msa11y bureau p4
  • 117 mscapture bureau p4
  • 1147 msnavigation bureau p5 (chargement 454, réseau calme 670, relevés 23)
  • 549 msa11y bureau p5
  • 100 mscapture bureau p5
  • 1109 msnavigation bureau p6 (chargement 402, réseau calme 691, relevés 16)
  • 622 msa11y bureau p6
  • 135 mscapture bureau p6
  • 3075 msconnexion avec le compte de test (avalyz-test-gerante-143a7d4d@test.avalyz.com) (réussie)
  • 1449 msnavigation bureau p1 (chargement 385, réseau calme 1042, relevés 22)
  • 765 msa11y bureau p1
  • 179 mscapture bureau p1
  • 1427 msnavigation bureau p2 (chargement 431, réseau calme 979, relevés 17)
  • 814 msa11y bureau p2
  • 2198 mscapture bureau p2
  • 1411 msnavigation bureau p3 (chargement 415, réseau calme 969, relevés 27)
  • 1227 msa11y bureau p3
  • 551 mscapture bureau p3
  • 8294 msconnexion avec le compte de test (client) (réussie)
  • 1461 msnavigation bureau p1 (chargement 422, réseau calme 994, relevés 45)
  • 5656 msa11y bureau p1
  • 119 mscapture bureau p1
  • 1518 msnavigation bureau p2 (chargement 542, réseau calme 956, relevés 20)
  • 825 msa11y bureau p2
  • 1836 mscapture bureau p2
  • 581 mssondes (robots.txt, pages inexistantes, paramètres, limites)
  • 75 msliens (0 lien(s) vérifié(s) (plafond 50), 0 fil(s) réellement utilisé(s) sur 4, délai 8000 ms par lien, périmètre 4 ms, requêtes 0 ms, lien le plus lent 0 ms, 0 non vérifié(s) (délai ou réseau), 0 erreur(s) HTTP)

قرار GO / NO-GO معلّل

موافقة بشروط
تفاصيل تقنية

La recherche de disponibilités et ses bornes, la connexion, l'affichage des réservations et les contrôles de saisie de la page de réservation se comportent comme attendu (CN-1, CL-1 à CL-8, CS-2, CL-20 à CL-23). En revanche, le parcours de l'argent n'est pas démontré de bout en bout : le paiement de l'acompte n'a jamais pu être joué (CN-2, I1), le calcul RIAD10 reste non confirmé (CS-20, I3) et la gérante ne retrouve pas dans la Gestion les réservations confirmées du voyageur, défaut reproduit (C01, I4). La mise en service n'est envisageable qu'une fois ces points démontrés ou corrigés et les

الأسباب (الأدلة)

  • 17 حالة مطابقة من 22 منفّذة؛ 1 غير مطابقة؛ 1 غير حاسمة؛ 3 متوقفة.
  • الحالات غير المطابقة: CU-2.
  • السلامة التقنية: 0 حرجة، 3 كبيرة، 17 صغيرة.

رأي الخبير

القرار: موافقة بشروط

الحجج

  1. انظر التفاصيل التقنية (قوي)
    الأدلة : CN-1, CL-2, CL-3, CL-4, CL-5, CL-6, processus:VIS-02
  2. انظر التفاصيل التقنية (قوي)
    الأدلة : #1 — مسار عمل يفشل — /admin, I4, CU-2, processus:ADM-01, https://riad-connect-hub.lovable.app/adm
  3. انظر التفاصيل التقنية (قوي)
    الأدلة : CN-2, I1, CS-21, I2, processus:CLI-03
  4. انظر التفاصيل التقنية (متوسط)
    الأدلة : CS-20, I3
  5. انظر التفاصيل التقنية (متوسط)
    الأدلة : CS-2, processus:CLI-04
  6. انظر التفاصيل التقنية (متوسط)
    الأدلة : CL-20, CL-21, CL-22, CL-23, I1
  7. انظر التفاصيل التقنية (متوسط)
    الأدلة : CL-1, CL-7, processus:CLI-01
  8. انظر التفاصيل التقنية (متوسط)
    الأدلة : M03, M01, M02, https://riad-connect-hub.lovable.app/aut
  9. انظر التفاصيل التقنية (ضعيف)
    الأدلة : CS-3, CS-4, CL-8

المخاطر المتبقية

  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية

الشروط

  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية
  • انظر التفاصيل التقنية

نطاق الرأي

  • مختبَر : انظر التفاصيل التقنية
  • غير مختبَر : انظر التفاصيل التقنية

درجة الثقة: متوسطة

تفاصيل تقنية

الحجج: La recherche de disponibilités est conforme, y compris les bornes de dates (passé, départ avant arrivée, zéro nuit) et de capacité (4 et 5 adultes).

الحجج: US-2 est en défaut reproduit : les réservations confirmées du voyageur (DZ-2610-A646A) n'apparaissent pas sur la page Gestion de la gérante ; la cause (absence réelle ou filtre de période) reste à établir.

الحجج: Le paiement de l'acompte, cœur du parcours de l'argent, n'a jamais été joué : CN-2 est non jouable deux fois et aucune réservation payée n'a pu être vérifiée.

الحجج: La règle client RIAD10 n'est pas confirmée sur les montants : le total attendu est absent après application du code sur la Suite Koutoubia, résultat non concluant.

الحجج: Les montants affichés dans Mes réservations sont conformes aux règles de taxe et d'acompte.

الحجج: La page de réservation refuse un code promo inconnu, un nom manquant et un e-mail invalide ; le refus de double réservation (CL-21) est observé mais sa précondition n'est pas établie, CN-2 n'ayant pas payé.

الحجج: La connexion refuse un mauvais mot de passe et la Gestion comme Mes réservations restent fermées sans connexion.

الحجج: Les pages de connexion et de Gestion sont encadrables par un autre site et la Gestion présente des défauts d'accessibilité.

الحجج: La FAQ est cohérente avec les règles de promo, de taxe et d'annulation, la bascule anglaise fonctionne et l'avis est refusé sans séjour passé.

المخاطر المتبقية: Encaissement de l'acompte et émission du numéro de réservation jamais observés (CN-2, I1) : un défaut sur le parcours de l'argent reste possible.

المخاطر المتبقية: Calcul RIAD10 (remise sur l'hébergement seul, taxe non remisée) non confirmé (CS-20, I3).

المخاطر المتبقية: Cause de C01 non établie : réservations absentes de la Gestion ou simple filtre de période.

المخاطر المتبقية: Règle anti-double réservation non démontrée : CL-21 a réussi sans réservation préalable établie.

المخاطر المتبقية: Annulation jusqu'à 48 h non testée (CS-1 bloqué).

المخاطر المتبقية: Sécurité des données non testée (couverture:Securite des donnees).

المخاطر المتبقية: Constats de moindre gravité omis du dossier (tronque) non examinés ici.

الشروط: Rejouer CN-2 avec un statut réussi : réservation Majorelle avec RIAD10, paiement simulé de l'acompte, total, acompte et numéro conformes à la règle du client (processus:CLI-03).

الشروط: Corriger ou expliquer C01 puis rejouer CU-2 avec succès : toute réservation confirmée du voyageur visible dans la Gestion (processus:ADM-01).

الشروط: Rejouer CS-20 avec succès : total après RIAD10 conforme à la remise sur l'hébergement seul.

الشروط: Après CN-2, rejouer CS-21 et CL-21 avec succès : réservation visible dans Mes réservations et dans la Gestion, seconde réservation des mêmes dates refusée.

الشروط: Couvrir processus:VIS-01 et processus:VIS-03 du parcours principal.

الشروط: Rendre /auth et /admin non encadrables (M03) et corriger M01 et M02.

مختبَر: processus:VIS-02 Rechercher des disponibilités (CN-1, CL-2 à CL-6)، processus:CLI-01 Se connecter et se déconnecter (CL-1)، processus:CLI-02 Réserver une chambre, partiellement (CU-1 s'arrête au choix de la chambre ; CL-20 à CL-23 sur la page de réservation)، processus:CLI-04 Consulter ses réservations (CS-2)، processus:ADM-01 Retrouver la réservation au tableau de bord (CU-2, CL-7) : défaut C01، processus:VIS-05 Consulter la FAQ (CS-3)، processus:VIS-06 Basculer le site en anglais (CS-4)، processus:CLI-06 Laisser un avis, refus seulement (CL-8)، couverture:Securite applicative، couverture:Per

غير مختبَر: processus:CLI-03 Payer l'acompte de 30 % (simulé) : CN-2 non jouable (I1)، processus:VIS-01 Consulter les chambres et les prix، processus:VIS-03 Créer un compte، processus:CLI-05 Annuler une réservation : CS-1 bloqué، processus:VIS-04 Envoyer un message de contact، processus:ADM-02 Consulter le calendrier des réservations، processus:ADM-03 Bloquer des dates، processus:ADM-04 Gérer les chambres et les prix، processus:ADM-05 Lire les messages de contact، couverture:Securite des donnees

يثبت Avalyz ما رآه ولا يضمن الباقي: ما لم يُختبر غير مشمول. دون حساب اختبار لا تُستكشف الصفحات المتصلة؛ ومع حساب اختبار، تسجيل الدخول هو النموذج الوحيد المُرسل.

التقرير الكامل للحساب (المسارات، الأدلة، صيغة ISO 29119) مخصص للحسابات.

English · Français · العربية