AvalyzTest another app

7/7 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) · 7 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

الموقع يعرض الغرف الخمس بأسعارها ويسمح بالبحث عن التوفر حسب التواريخ وعدد البالغين والأطفال، وقد نجحت كل حالات البحث والتحقق من المدخلات (CN-1، CS-1، CS-2، CS-3، CL-1 إلى CL-5). لكن المسار الذي يُدخل المال فعلاً (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%، الإلغاء) لم يُغطَّ بالكامل: CLI-01 وCLI-03 وCLI-05 غير مغطاة، وCLI-02 محجوب، وحالة التحقق من العربون مع رمز RIAD10 (CS-22) بقيت «à confirmer» بعد إعادة اللعب (I1: غير حاسم). لذلك لا يمكن إصدار GO، والموافقة مشروطة بإتمام اختبار مسار الحجز والدفع والإلغاء من البداية إلى النهاية.

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

Key figures

7pages tested
27business cases played21 passed · 0 failed · 0 blocked
17findings0 Critical · 2 Major · 11 Minor · 4 Note

Fix first

  1. #1MajorSign-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.
  2. #2MinorSecurity headers missing — /
  3. #3NoteSecurity headers missing — /
  4. #4MajorForm fields without a label — /contact
    Some visitors (keyboard users, visually impaired) cannot finish: these are lost bookings, and accessibility is becoming a legal duty in several markets.
  5. #5MinorS3 issue — /
    These points do not block the journey but are worth fixing.

Next steps

  1. Fix the 5 "fix first" points, in order.
  2. Apply the 4 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.

Concept

دار ضيافة (رياض) في الميدينة بمراكش تُدعى Riad Dar Zitoun، تضم خمس غرف حول فناء برتقال قرب جامع الكتبية. تتيح المنصة للمسافر البحث عن التوفر حسب التواريخ وعدد البالغين والأطفال ثم اختيار الغرفة والحجز، مع تقييمات وأسئلة شائعة واتصال.

Target customers: المسافرون والنزلاء الباحثون عن إقامة في رياض بمراكش، بما في ذلك العائلات الصغيرة.

Value chain

  1. جذب الزائرVIS-01, VIS-02
  2. التحويل إلى حجزCLI-01, CLI-02
  3. الدفع والتأكيدCLI-03, CLI-04
  4. الاستقبال والإقامةCLI-05
  5. ما بعد الإقامة والولاءCLI-06, CLI-07
  6. التسيير والماليةMGR-01, MGR-02, MGR-03, MGR-04

Business model

Customer segmentsمسافرون ونزلاء يبحثون عن إقامة في رياض بمراكش، عائلات صغيرة (غرف من شخصين إلى 4).
Value propositionرياض هادئ بخمس غرف حول فناء برتقال قرب الكتبية، بأسعار ليلية واضحة بالدرهم.
Channelsموقع ويب بالفرنسية مع مبدّل إلى الإنجليزية، صفحة اتصال، بريد وهاتف.
Revenue streamsحجز الغرف بالليلة (750 إلى 1800 درهم)، عربون 30%، ضريبة إقامة 30 درهم/بالغ/ليلة.

Organisation

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

  • riad-connect-hub.lovable.app
    • الفضاء العمومي (الموقع التعريفي)
      • زائر VIS ★
        • نزيل/مسافر CLI ★
    • فضاء النزيل (حجوزاتي)
    • فضاء المدير (لوحة التسيير) (announced, not seen)
      • مدير (المسؤول الإداري الوحيد) MGR ★

Functions

Function (profile)MissionMain responsibilitiesUsed for testing
زائر VISاكتشاف الرياض والتحقق من التوفر قبل الحجز.
  • تصفح الغرف والأسعار
  • البحث حسب التواريخ والضيوف
  • التواصل مع الرياض
★ yes
نزيل/مسافر CLIحجز الغرفة وإتمام العربون ومتابعة إقامته.
  • إنشاء الحجز
  • دفع العربون 30%
  • إدارة الحجز والتقييم
★ yes
مدير (المسؤول الإداري الوحيد) MGRتسيير توفر الغرف والأسعار ومتابعة الحجوزات والرسائل.
  • إدارة التقويم والتوفر
  • إدارة الغرف والأسعار
  • معالجة رسائل الاتصال
★ yes

Domains

Business

  • الحجز والإقامة VIS-01, VIS-02, CLI-01, CLI-02, CLI-04, CLI-05
  • التواصل والتقييمات CLI-06, CLI-07

Support

  • الدفع والمالية CLI-03
  • الحساب والمصادقة CPT-01
  • الإدارة والتسيير MGR-01, MGR-02, MGR-03, MGR-04

Map of macro-processes and processes

Macro-processProcessProfileOutcomesCoverage
إدارة الحجز
Business · الحجز والإقامة
CLI-04 — متابعة الحجوزاتCLI✓ عرض الحجوزات, ✗ لا حجوزات مسجلةnot played (CS-6)
CLI-05 — إلغاء الحجزCLI✓ إلغاء مؤكد, ✗ رفض الإلغاء أقل من 48 ساعةnot tested
جذب الزائر
Business · الحجز والإقامة
VIS-01 — تصفح الموقع والتعرف على الغرفVIS✓ عرض الغرف والأسعارtested: compliant (CS-3, CL-10)
VIS-02 — البحث عن التوفرVIS✓ عرض صفحة التوفر, ✗ تواريخ غير صحيحة أو ناقصة, ✗ عدد ضيوف خارج الحدودtested: compliant (CN-1, CS-1, CS-2, CL-1, CL-2, CL-3, CL-4, CL-5)
حجز غرفة
Business · الحجز والإقامة
CLI-01 — اختيار الغرفةCLI✓ الانتقال إلى الحجز, ✗ لا توفر على التواريخ المطلوبةnot tested
CLI-02 — إنشاء الحجز والملخصCLI✓ ملخص صحيح مع العربون, ✗ رمز ترويجي غير صالح, ✗ تواريخ متداخلة مع حجز آخرblocked (CU-1)
التقييم والولاء
Business · التواصل والتقييمات
CLI-06 — ترك تقييمCLI✓ نشر التقييم, ✗ رفض لأن النزيل لم يقم سابقًاtested: compliant (CS-5)
الدعم والتواصل
Business · التواصل والتقييمات
CLI-07 — التواصل مع الرياضVIS✓ إرسال الرسالة, ✗ حقول مطلوبة ناقصة, ✗ تجاوز الحد الأقصى للأحرفtested: compliant (CS-4, CL-7, CL-8, CL-9)
حجز غرفة
Support · الدفع والمالية
CLI-03 — دفع العربون 30%CLI✓ تأكيد الدفع ورقم الحجز, ✗ فشل الدفع المحاكى, ✗ انتهاء صلاحية الحجزnot tested
إدارة الحساب
Support · الحساب والمصادقة
CPT-01 — إنشاء حساب وتسجيل الدخولCLI✓ دخول ناجح, ✗ بيانات اعتماد خاطئة, ✗ كلمة مرور أقل من 6 أحرفtested: compliant (CL-6)
تسيير الرياض
Support · الإدارة والتسيير
MGR-01 — تسيير تقويم الحجوزاتMGR✓ عرض الحجز الجديد, ✗ حجز غير ظاهرtested: compliant (CU-2)
MGR-02 — حجب التواريخMGR✓ تواريخ محجوبة, ✗ تعارض مع حجز قائمnot tested
MGR-03 — إدارة الغرف والأسعارMGR✓ سعر محدث, ✗ سعر غير صالحnot tested
MGR-04 — معالجة رسائل الاتصالMGR✓ رسالة معالجة, ✗ رسالة غير ظاهرةnot tested

Key business rules by process

ProcessBusiness ruleSource
VIS-01 — تصفح الموقع والتعرف على الغرفRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينread on the site : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصread on the site : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-03 — سعر جناح الكتبية 1800 درهم في الليلة لأربعة أشخاصread on the site : « Suite Koutoubia 4 pers. Notre plus belle suite : salon privé, cheminée et vue sur les toits de la Médina. 1 800 MAD / nuit »
RG-04 — سعر غرفة النخيل 750 درهم في الليلة لشخصينread on the site : « Palmeraie 2 pers. Chambre douce et verdoyante, inspirée des jardins de la Palmeraie. 750 MAD / nuit »
RG-05 — سعر غرفة منارة 1000 درهم في الليلة لشخصينread on the site : « Menara 2 pers. Chambre élégante aux zelliges verts, ouverte sur la galerie. 1 000 MAD / nuit »
VIS-02 — البحث عن التوفرRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينread on the site : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصread on the site : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-06 — الحد الأدنى للبالغين 1 والأقصى 4to be confirmed
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3to be confirmed
CLI-01 — اختيار الغرفةRG-06 — الحد الأدنى للبالغين 1 والأقصى 4to be confirmed
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3to be confirmed
CLI-02 — إنشاء الحجز والملخصRG-06 — الحد الأدنى للبالغين 1 والأقصى 4to be confirmed
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3to be confirmed
RG-08 — ضريبة الإقامة 30 درهمًا لكل بالغ في الليلةto be confirmed
RG-09 — رمز RIAD10 يمنح خصمًا 10% على الإقامة فقط دون ضريبة الإقامةto be confirmed
RG-10 — العربون 30% يُحسب على المجموع بعد الخصم مع احتساب الضريبةto be confirmed
CLI-03 — دفع العربون 30%RG-10 — العربون 30% يُحسب على المجموع بعد الخصم مع احتساب الضريبةto be confirmed
CLI-04 — متابعة الحجوزاتRG-11 — الإلغاء ممكن حتى 48 ساعة قبل الوصولread on the site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
CLI-05 — إلغاء الحجزRG-11 — الإلغاء ممكن حتى 48 ساعة قبل الوصولread on the site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
CLI-06 — ترك تقييمRG-12 — نشر التقييمات مقصور على النزلاء الذين أقاموا في الرياضread on the site : « Seuls les hôtes ayant séjourné au riad peuvent publier un avis. »
CLI-07 — التواصل مع الرياضRG-13 — حقل البريد الإلكتروني مطلوب في نموذج الاتصال بحد أقصى 255 حرفًاto be confirmed
RG-14 — حقل الرسالة مطلوب في نموذج الاتصال بحد أقصى 2000 حرفto be confirmed
CPT-01 — إنشاء حساب وتسجيل الدخولRG-15 — كلمة المرور يجب ألا تقل عن 6 أحرف عند تسجيل الدخولread on the site : « Mot de passe »
RG-16 — التسجيل بالبريد الإلكتروني وكلمة المرور مع بريد تأكيدto be confirmed
MGR-02 — حجب التواريخRG-06 — الحد الأدنى للبالغين 1 والأقصى 4to be confirmed
MGR-03 — إدارة الغرف والأسعارRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينread on the site : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصread on the site : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-03 — سعر جناح الكتبية 1800 درهم في الليلة لأربعة أشخاصread on the site : « Suite Koutoubia 4 pers. Notre plus belle suite : salon privé, cheminée et vue sur les toits de la Médina. 1 800 MAD / nuit »
RG-04 — سعر غرفة النخيل 750 درهم في الليلة لشخصينread on the site : « Palmeraie 2 pers. Chambre douce et verdoyante, inspirée des jardins de la Palmeraie. 750 MAD / nuit »
RG-05 — سعر غرفة منارة 1000 درهم في الليلة لشخصينread on the site : « Menara 2 pers. Chambre élégante aux zelliges verts, ouverte sur la galerie. 1 000 MAD / nuit »
MGR-04 — معالجة رسائل الاتصالRG-13 — حقل البريد الإلكتروني مطلوب في نموذج الاتصال بحد أقصى 255 حرفًاto be confirmed
RG-14 — حقل الرسالة مطلوب في نموذج الاتصال بحد أقصى 2000 حرفto be confirmed
—RG-17 — لا يمكن حجز الغرفة مرتين على تواريخ متداخلةto be confirmed
—RG-18 — لا حجز في الماضي والحد الأدنى ليلة واحدةto be confirmed
—RG-19 — المدير هو المسؤول الإداري الوحيدto be confirmed

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 نزيل، je veux حجز غرفة أطلس لليلتين، afin de تأمين إقامتي في الرياض.
VIS-02 · RG-06 · RG-07
الانتقال إلى صفحة التوفر بعد البحث بتواريخ صحيحة وعدد بالغين 2.

Pass

Server responses

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

Hygiene of related pages: #1, #2, #3, #5, #6, #7, #8, #9, #10, #11

Keep this case in the regression test suite.
CS-1En tant que نزيل، je veux البحث عن جناح الكتبية لأربعة بالغين، afin de حجز أكبر غرفة لعائلتي.
VIS-02 · RG-03 · RG-06
عرض جناح الكتبية ضمن نتائج التوفر للتواريخ المطلوبة.

Pass

Server responses

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

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CS-2En tant que زائر، je veux البحث مع طفلين، afin de حجز إقامة عائلية مناسبة.
VIS-02 · RG-07
قبول عدد الأطفال 2 ضمن الحد الأقصى والانتقال إلى صفحة التوفر.

Pass

Server responses

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

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CS-3En tant que زائر، je veux مقارنة أسعار الغرف الخمس، afin de اختيار الغرفة المناسبة لميزانيتي.
VIS-01 · RG-01 · RG-02 · RG-03 · RG-04 · RG-05
عرض الغرف الخمس بأسعارها المعلنة بالدرهم في الصفحة الرئيسية.

Pass

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CS-4En tant que زائر، je veux إرسال رسالة إلى الرياض، afin de الاستفسار قبل الحجز.
CLI-07 · RG-13 · RG-14
قبول الرسالة بعد تعبئة الحقول المطلوبة وإرسالها دون خطأ.

Not playable

not played: element not found: input[type=text] — to be confirmed

Hygiene of related pages: #4

Remove the blocker (not played: element not found: input[type=text] — to be confirmed), then replay.
CS-5En tant que زائر، je veux قراءة شروط نشر التقييمات، afin de معرفة من يحق له التقييم.
CLI-06 · RG-12
عرض شرط النشر وعدم وجود تقييمات منشورة حاليًا.

Pass

Hygiene of related pages: no technical finding on these pages

Keep this case in the regression test suite.
CS-6En tant que نزيل، je veux عرض حجوزاتي، afin de متابعة حالة حجزي وإلغائه إن لزم.
CLI-04 · RG-11
عرض صفحة الحجوزات مع شرط الإلغاء 48 ساعة قبل الوصول.

Inconclusive — to be confirmed

expected text missing: « Mes réservations » (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: #1, #14

Have the business confirm the expected result, then replay.
CU-1En tant que نزيل مسجل، je veux حجز ماجوريل لليلتين مع رمز RIAD10، afin de دفع عربون محسوب على المجموع بعد الخصم.
client user story · CLI-02 · RG-09 · RG-10
الوصول إلى مسار حجز ماجوريل؛ التحقق من الخصم والعربون غير ممكن لغياب صفحة الدفع.

Not playable

not played: element not found: text=Voir les disponibilités — to be confirmed

Server responses

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

Hygiene of related pages: #1, #2, #3, #5, #6, #7, #8, #9, #10, #11

Remove the blocker (not played: element not found: text=Voir les disponibilités — to be confirmed), then replay.
CU-2En tant que مدير، je veux إيجاد الحجز الجديد في لوحة التسيير، afin de تحضير وصول النزيل.
client user story · MGR-01 · RG-19
لا يمكن تنفيذ هذا المسار: لا توجد لوحة تسيير في الموقع.

Pass

Hygiene of related pages: #1, #14

Keep this case in the regression test suite.
CL-1En tant que زائر، je veux البحث دون تاريخ وصول، afin de vérifier أن الحقل مطلوب.
VIS-02 · RG-06
عدم الانتقال إلى صفحة التوفر لأن تاريخ الوصول مطلوب.

Pass

Server responses

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

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CL-2En tant que زائر، je veux إدخال مغادرة قبل الوصول، afin de vérifier رفض التواريخ غير المنطقية.
VIS-02 · RG-18
رفض البحث لأن تاريخ المغادرة قبل تاريخ الوصول.

Pass

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CL-3En tant que زائر، je veux إدخال صفر بالغين، afin de vérifier الحد الأدنى للبالغين.
VIS-02 · RG-06
رفض القيمة 0 لأن الحد الأدنى للبالغين هو 1.

Pass

Server responses

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

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CL-4En tant que زائر، je veux إدخال خمسة بالغين، afin de vérifier الحد الأقصى للبالغين.
VIS-02 · RG-06
رفض القيمة 5 لأن الحد الأقصى للبالغين هو 4.

Pass

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CL-5En tant que زائر، je veux إدخال أربعة أطفال، afin de vérifier الحد الأقصى للأطفال.
VIS-02 · RG-07
رفض القيمة 4 لأن الحد الأقصى للأطفال هو 3.

Pass

Hygiene of related pages: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Keep this case in the regression test suite.
CL-6En tant que نزيل، je veux تسجيل الدخول بكلمة مرور خاطئة، afin de vérifier رفض بيانات الاعتماد الخاطئة.
CPT-01 · RG-15
رفض تسجيل الدخول والبقاء في صفحة Connexion.

Pass

Server responses

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

Hygiene of related pages: #1, #14

Keep this case in the regression test suite.
CL-7En tant que زائر، je veux إرسال نموذج فارغ، afin de vérifier إلزامية الحقول.
CLI-07 · RG-13 · RG-14
عدم إرسال الرسالة لأن الاسم والبريد والرسالة مطلوبة.

Pass

Hygiene of related pages: #4

Keep this case in the regression test suite.
CL-8En tant que زائر، je veux إدخال بريد غير صحيح، afin de vérifier رفض الصيغة الخاطئة.
CLI-07 · RG-13
رفض الإرسال لأن صيغة البريد الإلكتروني غير صحيحة.

Not playable

not played: element not found: input[type=text] — to be confirmed

Hygiene of related pages: #4

Remove the blocker (not played: element not found: input[type=text] — to be confirmed), then replay.
CL-9En tant que زائر، je veux إرسال رسالة بأحرف خاصة، afin de vérifier قبول المحتوى عند الحد الأقصى.
CLI-07 · RG-14
قبول الأحرف الخاصة والرموز دون خطأ في الإرسال.

Not playable

not played: element not found: input[type=text] — to be confirmed

Hygiene of related pages: #4

Remove the blocker (not played: element not found: input[type=text] — to be confirmed), then replay.
CL-10En tant que زائر، je veux قراءة الأسئلة الشائعة، afin de معرفة سياسة الدفع والإلغاء.
VIS-01 · RG-09 · RG-11
عرض عناوين الأسئلة فقط دون أجوبة، فلا يمكن التحقق من سياسة الإلغاء أو الرمز.

Pass

Hygiene of related pages: #16

Keep this case in the regression test suite.
CN-2بصفتي نزيلاً مسجلاً، أريد حجز غرفة أطلس لليلتين مع رمز RIAD10، لأدفع عربوناً محسوباً على المجموع المخفّض.
الحجز والدفع الإلكتروني · رمز RIAD10 = خصم 10% على الإقامة فقط · ضريبة الإقامة لا تُخفَّض أبداً · العربون 30% يُحسب على المجموع المخفّض شامل الضريبة
ظهور تأكيد الحجز مع رقم الحجز والمبلغ 522 MAD بعد الدفع المحاكى.

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.
CS-20بصفتي نزيلاً مسجلاً، أريد حجز جناح الكتبية لليلتين، لأتحقق من صحة حساب العربون والرصيد.
الحجز والدفع الإلكتروني · العربون 30% من المجموع شامل الضريبة
المبالغ معروضة صحيحة: 3720 إجمالي، 1116 عربون، 2604 رصيد.

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.
CS-21بصفتي نزيلاً مسجلاً، أريد حجز غرفة النخيل لليلتين، لأتأكد من أن العربون الأدنى محسوب بدقة.
الحجز والدفع الإلكتروني · العربون 30% من المجموع شامل الضريبة
المبالغ معروضة صحيحة: 1620 إجمالي، 486 عربون، 1134 رصيد.

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.
CS-22بصفتي نزيلاً مسجلاً، أريد حجز غرفة ماجوريل لليلتين مع رمز RIAD10، لأدفع عربوناً على المجموع المخفّض.
الحجز والدفع الإلكتروني · رمز RIAD10 = خصم 10% على الإقامة فقط · ضريبة الإقامة لا تُخفَّض أبداً
العربون بعد الخصم = 684 MAD والضريبة 120 MAD غير مخفّضة.

Inconclusive — to be confirmed

expected text missing: « 684 MAD » (page: « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact Mes réservations EN Déconnexion Majorelle Vos coordonnées Nom complet E-mail Téléphone Code promo Appliq »)

Server responses

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

Hygiene of related pages: no technical finding on these pages

Have the business confirm the expected result, then replay.
CL-20بصفتي نزيلاً مسجلاً، أريد الدفع دون تعبئة بياناتي، لأرى إن كان النظام يمنع الحجز الناقص.
الحجز والدفع الإلكتروني · الاسم والبريد الإلكتروني مطلوبان
لا يتم تأكيد الحجز ويبقى المستخدم في صفحة الحجز.

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-21بصفتي نزيلاً مسجلاً، أريد الدفع ببريد إلكتروني خاطئ، لأرى إن كان النظام يرفض الصيغة.
الحجز والدفع الإلكتروني · البريد الإلكتروني يجب أن يكون بصيغة صحيحة
رفض البريد غير الصالح وعدم تأكيد الحجز.

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-22بصفتي نزيلاً مسجلاً، أريد تطبيق رمز خصم خاطئ، لأرى إن كان النظام يرفضه دون تغيير المبلغ.
الحجز والدفع الإلكتروني · رمز RIAD10 هو الرمز الصالح الوحيد
الرمز الخاطئ لا يغيّر المجموع ولا العربون.

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-23بصفتي نزيلاً مسجلاً، أريد الدفع دون رقم بطاقة، لأرى إن كان النظام يمنع تأكيد الحجز.
الحجز والدفع الإلكتروني · رقم البطاقة مطلوب للدفع المحاكى
لا يتم تأكيد الحجز دون رقم بطاقة.

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: 17 findings, 9 fixes to make

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

17 problems found, 2 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 : #1, #2, #3

  2. #1MajorSign-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 : /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. #2MinorSecurity 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. #3NoteSecurity 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. #4MajorForm fields without a label — /contact (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/contact

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

    Technical detail

    Original title: Accessibilité : champ-sans-libelle (label) (2 occurrence(s) sur 1 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é.

  6. 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 : #5, #6

  7. #5MinorS3 issue — / (Chromium (Chrome's engine))

    Why first: These points do not block the journey but are worth fixing. Effort : medium

    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.

  8. #6MinorS3 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 ».

  9. One cause → one fixPages and images too heavy: 5 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 : #7, #8, #9, #10, #11

  10. #7MinorPages 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 : medium

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

    Technical detail

    Original title: 1 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

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

  11. #8MinorSlow loading (6547 ms) — / (phone · Chromium (Chrome's engine))

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

    Expected: Chargement < 3000 ms

    Observed: / 6547 ms

    Technical detail

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

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

  12. #9MinorPages 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).

  13. #10MinorPages 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.

  14. #11MinorSlow loading (4400 ms, 4346 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 4400 ms, chargement 4346 ms (non confirmé)

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

    Observed: LCP 4400 ms, chargement 4346 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.

  15. 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 : #12, #13

  16. #12MinorNo 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.

  17. #13MinorNo 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.

The rest

0Critical
2Major
11Minor
4Note
  • #14MinorSign-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).

  • #15NoteNo 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é.

  • #16NoteHeading 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é.

  • #17NoteSearch 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

  • 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; 1 fix(es) cover them. #7, #8, #9, #10, #11
  • 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. #1, #2, #3, #15
  • 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. #5, #6, #12, #13
  • Accessibility — Some visitors (keyboard users, visually impaired) cannot finish: these are lost bookings, and accessibility is becoming a legal duty in several markets.
    2 finding(s), 1 critical or major; 2 fix(es) cover them. #4, #16
  • 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. #14, #17

Next steps

  1. Fix the 5 "fix first" points, in order.
  2. Apply the 4 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), 15 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 : 7 page(s) (7 pages lues sur 7 visitées (mode complet)), contraste mesuré sur 14 texte(s) (clair, et sombre sur 7 page(s)), 280 tabulation(s) (119 é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 7 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

    2 pages, 33 actions relevées, 0 action jouée (lecture seule) — rôle « [email] »

  • 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 7 visitées (mode complet), 10 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

    19 cas conçus (1 nominal, 8 secondaires, 10 limites) ; joués : 19 (mode complet : CN-1, CS-1, CS-2, CS-3, CS-4, CS-5, CS-6, CU-1, CU-2, CL-1, CL-2, CL-3, CL-4, CL-5, CL-6, CL-7, CL-8, CL-9, CL-10) ; 14 réussis / 0 échecs / 0 bloqués / 4 non jouables ; 1 attendu(s) deviné(s) par le BA non vérifié(s) : à confirmer par le client (non déclarés) — CS-6 ; CS-4 non joué : élément introuvable : input[type=text] — à confirmer ; CU-1 non joué : élément introuvable : text=Voir les disponibilités — à confirmer ; CL-8 non joué : élément introuvable : input[type=text] — à confirmer ; CL-9 non joué : élément

  • 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) : 17 sélecteur(s) sur 7 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
  • 6695 msplan du site (0 adresse(s) à visiter en plus)
  • 13525 mscréation des comptes de recette (1/1 créé(s))
  • 2201 msnavigation bureau p1 (chargement 569, réseau calme 1616, relevés 16)
  • 5979 msa11y bureau p1
  • 253 msfocus clavier bureau p1
  • 2204 mscapture bureau p1
  • 1154 msnavigation bureau p2 (chargement 486, réseau calme 655, relevés 13)
  • 604 msa11y bureau p2
  • 181 mscapture bureau p2
  • 1516 msnavigation bureau p3 (chargement 560, réseau calme 938, relevés 18)
  • 754 msa11y bureau p3
  • 127 mscapture bureau p3
  • 1104 msnavigation bureau p4 (chargement 422, réseau calme 667, relevés 15)
  • 661 msa11y bureau p4
  • 109 mscapture bureau p4
  • 1147 msnavigation bureau p5 (chargement 393, réseau calme 742, relevés 12)
  • 787 msa11y bureau p5
  • 117 mscapture bureau p5
  • 1113 msnavigation bureau p6 (chargement 416, réseau calme 683, relevés 14)
  • 745 msa11y bureau p6
  • 129 mscapture bureau p6
  • 2964 msconnexion avec le compte de test (client) (réussie)
  • 1342 msnavigation bureau p1 (chargement 434, réseau calme 887, relevés 21)
  • 631 msa11y bureau p1
  • 87 mscapture bureau p1
  • 1680 msnavigation bureau p2 (chargement 527, réseau calme 1135, relevés 18)
  • 778 msa11y bureau p2
  • 1787 mscapture bureau p2
  • 477 mssondes (robots.txt, pages inexistantes, paramètres, limites)
  • 91 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 2 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)
  • 8794 msrgpd (visite en navigateur neuf + capture)
  • 7317 msnavigation telephone p1 (chargement 6554, réseau calme 747, relevés 16)
  • 5754 msa11y telephone p1
  • 817 mscapture telephone p1
  • 1112 msnavigation telephone p2 (chargement 466, réseau calme 632, relevés 14)
  • 500 msa11y telephone p2
  • 55 mscapture telephone p2
  • 1302 msnavigation telephone p3 (chargement 395, réseau calme 891, relevés 16)
  • 550 msa11y telephone p3
  • 65 mscapture telephone p3

Reasoned GO / NO-GO decision

GO WITH CONDITIONS
Technical detail

الموقع يعرض الغرف الخمس بأسعارها ويسمح بالبحث عن التوفر حسب التواريخ وعدد البالغين والأطفال، وقد نجحت كل حالات البحث والتحقق من المدخلات (CN-1، CS-1، CS-2، CS-3، CL-1 إلى CL-5). لكن المسار الذي يُدخل المال فعلاً (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%، الإلغاء) لم يُغطَّ بالكامل: CLI-01 وCLI-03 وCLI-05 غير مغطاة، وCLI-02 محجوب، وحالة التحقق من العربون مع رمز RIAD10 (CS-22) بقيت «à confirmer» بعد إعادة اللعب (I1: غير حاسم). لذلك لا يمكن إصدار GO، والموافقة مشروطة بإتمام اختبار مسار الحجز والدفع والإلغاء من البداية إلى النهاية.

Reasons (evidence)

  • 21 cases pass out of 27 played; 0 fail; 2 inconclusive; 4 blocked.
  • Technical hygiene: 0 critical, 2 major, 15 minor finding(s).

Expert opinion

Decision: GO WITH CONDITIONS

Arguments

  1. see the technical detail (strong)
    evidence : CN-1, CS-1, CS-2, CL-1, CL-2, CL-3, CL-4, CL-5
  2. see the technical detail (medium)
    evidence : CS-3, processus:VIS-01, https://riad-connect-hub.lovable.app/
  3. see the technical detail (strong)
    evidence : processus:CLI-01, processus:CLI-02, processus:CLI-03, CU-1, I2, I7
  4. see the technical detail (strong)
    evidence : CS-22, I1, CS-20, I4, CS-21, I5
  5. see the technical detail (strong)
    evidence : processus:CLI-05, https://riad-connect-hub.lovable.app/my-
  6. see the technical detail (medium)
    evidence : CS-6, I3, processus:CLI-04
  7. see the technical detail (medium)
    evidence : CL-20, CL-21, CL-22, CL-23
  8. see the technical detail (medium)
    evidence : processus:MGR-02, processus:MGR-03, processus:MGR-04
  9. see the technical detail (medium)
    evidence : CS-4, CL-8, CL-9, I8, processus:CLI-07
  10. see the technical detail (weak)
    evidence : couverture:Securite applicative, couverture:Securite des donnees

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: البحث عن التوفر والتحقق من المدخلات يعملان بشكل صحيح على الحالات المختبرة (تواريخ ناقصة أو معكوسة، صفر بالغين، تجاوز الحد الأقصى للبالغين والأطفال).

Arguments: عرض الغرف الخمس وأسعارها من الصفحة الرئيسية يعمل، ما يدعم وضوح العرض التجاري.

Arguments: المسار الذي يُدخل المال (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%) غير مُغطّى أو محجوب، فلا يمكن تأكيد سلامة حساب العربون والخصم على المسار الكامل.

Arguments: التحقق من مبلغ العربون مع رمز RIAD10 (CS-22) بقي «à confirmer» وإعادة اللعب (I1) كانت غير حاسمة، بينما نجحت حالات الحساب بدون رمز (CS-20، CS-21) وأُعيد لعبها بنجاح.

Arguments: الإلغاء حتى 48 ساعة قبل الوصول، وهو وعد مكتوب للعميل، لم يُختبر فعليًا لعدم وجود حجز قائم ولا زر إلغاء ظاهر.

Arguments: صفحة «حجوزاتي» تعمل بعد تسجيل الدخول (CS-6 نجح في إعادتَي لعب)، ما يدعم متابعة الحجز من طرف النزيل.

Arguments: التحقق من المدخلات في صفحة الحجز يعمل على الحالات المختبرة (اسم وبريد فارغان، بريد غير صحيح، رمز خصم غير صحيح، بطاقة غائبة).

Arguments: واجهات الإدارة (حجب التواريخ، إدارة الغرف والأسعار، معالجة رسائل الاتصال) غير موجودة في الموقع، فلا يمكن اختبارها من الخارج.

Arguments: نموذج الاتصال لم يُختبر فعليًا: CS-4 وCL-8 وCL-9 غير قابلة للعب (عنصر الإدخال غير موجود) وإعادة اللعب (I8) كانت غير حاسمة.

Arguments: لا توجد ثغرات أمنية مكتشفة في الملفات الحساسة المسبورة (11 ملفًا، 0 مكشوف)، وهذا لا يغطي أمن البيانات لعدم وجود قاعدة بيانات مكتشفة.

Residual risks: خطأ محتمل في حساب العربون أو تطبيق رمز RIAD10 على المسار الكامل لم يُتحقق منه (CS-22 غير حاسم، I1).

Residual risks: عدم إمكانية تأكيد أن الإلغاء حتى 48 ساعة يعمل فعليًا (CLI-05 غير مغطى).

Residual risks: عدم إمكانية تأكيد أن الحجز يُنشئ رقم حجز ويُرسل تأكيدًا للنزيل (CLI-02 محجوب، I2).

Residual risks: عدم إمكانية تأكيد منع الحجز المزدوج على تواريخ متداخلة (RG-17 خارج نطاق الاختبار).

Residual risks: نموذج الاتصال قد يكون معطلاً أو غير قابل للاستخدام (CS-4، CL-8، CL-9 غير قابلة للعب).

Residual risks: غياب واجهات الإدارة يعني عدم إمكانية تأكيد تسيير التقويم وحجب التواريخ والأسعار من الخارج.

Residual risks: أمن البيانات غير مُختبر لعدم اكتشاف قاعدة بيانات.

Conditions: اختبار مسار الحجز الكامل من البداية إلى النهاية: اختيار الغرفة (CLI-01)، إنشاء الحجز والملخص (CLI-02)، دفع العربون 30% (CLI-03)، والحصول على رقم الحجز.

Conditions: إعادة اختبار CS-22 (حساب العربون على غرفة ماجوريل مع رمز RIAD10) حتى نتيجة حاسمة، والتأكد من أن الخصم يُطبَّق على الإقامة فقط وأن العربون يُحسب على المجموع المخفّض شاملًا ضريبة الإقامة.

Conditions: اختبار الإلغاء فعليًا على حجز قائم والتحقق من احترام شرط 48 ساعة قبل الوصول (CLI-05).

Conditions: اختبار منع الحجز المزدوج على تواريخ متداخلة (RG-17).

Conditions: إعادة اختبار نموذج الاتصال (CS-4، CL-8، CL-9) بعد إصلاح أو تحديد عنصر الإدخال، والتأكد من وصول الرسائل إلى المدير.

Conditions: توفير واجهات الإدارة واختبار MGR-02 وMGR-03 وMGR-04 (حجب التواريخ، إدارة الغرف والأسعار، معالجة رسائل الاتصال).

tested: تصفح الموقع والتعرف على الغرف (VIS-01), البحث عن التوفر (VIS-02), متابعة الحجوزات (CLI-04، CS-6), ترك تقييم (CLI-06، CS-5), إنشاء حساب وتسجيل الدخول (CPT-01، CL-6), تسيير تقويم الحجوزات (MGR-01، CU-2), التحقق من المدخلات في البحث والحجز (CL-1 إلى CL-5، CL-20 إلى CL-23), الأداء (Core Web Vitals على 5 صفحات), الأمان التطبيقي (11 ملفًا حساسًا), الامتثال (سياسة الخصوصية، الإشعارات القانونية), المرونة (بدون خدمة عاملة), من البداية إلى النهاية حسب الدور (صفحتان متصلتان)

not tested: اختيار الغرفة (CLI-01), إنشاء الحجز والملخص (CLI-02، محجوب), دفع العربون 30% (CLI-03), إلغاء الحجز (CLI-05), التواصل مع الرياض (CLI-07، CS-4/CL-8/CL-9 غير قابلة للعب), حجب التواريخ (MGR-02), إدارة الغرف والأسعار (MGR-03), معالجة رسائل الاتصال (MGR-04), إنشاء حساب جديد وبريد التأكيد (CPT-01، RG-16), منع الحجز المزدوج على تواريخ متداخلة (RG-17), أمن البيانات (لا قاعدة بيانات مكتشفة), واجهة API (لا مواصفات OpenAPI), CLI-04 متابعة الحجوزات : cas conçus, non joués dans ce mode

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

7/7 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) · 7 pages visitées · 10 niveaux de test · verdict calculé comme éditeur · app en construction

GO SOUS CONDITIONS Voir la décision motivée

Rapport de synthèse

Décision

GO SOUS CONDITIONS
Détail technique

الموقع يعرض الغرف الخمس بأسعارها ويسمح بالبحث عن التوفر حسب التواريخ وعدد البالغين والأطفال، وقد نجحت كل حالات البحث والتحقق من المدخلات (CN-1، CS-1، CS-2، CS-3، CL-1 إلى CL-5). لكن المسار الذي يُدخل المال فعلاً (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%، الإلغاء) لم يُغطَّ بالكامل: CLI-01 وCLI-03 وCLI-05 غير مغطاة، وCLI-02 محجوب، وحالة التحقق من العربون مع رمز RIAD10 (CS-22) بقيت «à confirmer» بعد إعادة اللعب (I1: غير حاسم). لذلك لا يمكن إصدار GO، والموافقة مشروطة بإتمام اختبار مسار الحجز والدفع والإلغاء من البداية إلى النهاية.

Le test de riad-connect-hub.lovable.app relève 17 constats, dont 2 majeurs ou critiques (S1, S2), qui se ramènent à 9 correctifs. À traiter d'abord : Pages de connexion affichables dans un autre site (clickjacking), puis Champs de formulaire sans libellé.

Chiffres clés

7pages testées
27cas métier joués21 réussis · 0 en échec · 0 bloqués
17constats0 Critique · 2 Majeur · 11 Mineur · 4 Remarque

À corriger d'abord

  1. #1MajeurPages de connexion affichables dans un autre site (clickjacking)
    Un site tiers peut piéger les clics sur la page de connexion : comptes clients exposés et confiance perdue.
  2. #2MineurEn-têtes de sécurité absents sur riad-connect-hub.lovable.app
  3. #3RemarqueCross-Origin-Opener-Policy absente : une fenêtre ouverte par un autre site garde un lien vers la vôtre
  4. #4MajeurAccessibilité : champ-sans-libelle (label) (2 occurrence(s) sur 1 page(s)) — ordinateur, téléphone
    Une partie des visiteurs (clavier, malvoyants) ne peut pas aller au bout : ce sont des réservations perdues, et l'accessibilité devient une obligation légale sur plusieurs marchés.
  5. #5MineurAucun bandeau de consentement aux cookies détecté sur riad-connect-hub.lovable.app
    Ces points ne bloquent pas le parcours mais méritent d'être traités.

Prochaines étapes

  1. Corriger les 5 points « à corriger d'abord », dans l'ordre.
  2. Appliquer les 4 correctifs groupés : chacun règle plusieurs constats à la fois.
  3. Traiter ensuite les constats mineurs restants, section par section.
  4. Relancer un test Avalyz pour vérifier les corrections.

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.

Concept

دار ضيافة (رياض) في الميدينة بمراكش تُدعى Riad Dar Zitoun، تضم خمس غرف حول فناء برتقال قرب جامع الكتبية. تتيح المنصة للمسافر البحث عن التوفر حسب التواريخ وعدد البالغين والأطفال ثم اختيار الغرفة والحجز، مع تقييمات وأسئلة شائعة واتصال.

Clients visés : المسافرون والنزلاء الباحثون عن إقامة في رياض بمراكش، بما في ذلك العائلات الصغيرة.

Chaîne de valeur

  1. جذب الزائرVIS-01, VIS-02
  2. التحويل إلى حجزCLI-01, CLI-02
  3. الدفع والتأكيدCLI-03, CLI-04
  4. الاستقبال والإقامةCLI-05
  5. ما بعد الإقامة والولاءCLI-06, CLI-07
  6. التسيير والماليةMGR-01, MGR-02, MGR-03, MGR-04

Business model

Segments de clientsمسافرون ونزلاء يبحثون عن إقامة في رياض بمراكش، عائلات صغيرة (غرف من شخصين إلى 4).
Proposition de valeurرياض هادئ بخمس غرف حول فناء برتقال قرب الكتبية، بأسعار ليلية واضحة بالدرهم.
Canauxموقع ويب بالفرنسية مع مبدّل إلى الإنجليزية، صفحة اتصال، بريد وهاتف.
Sources de revenusحجز الغرف بالليلة (750 إلى 1800 درهم)، عربون 30%، ضريبة إقامة 30 درهم/بالغ/ليلة.

Organisation

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

  • riad-connect-hub.lovable.app
    • الفضاء العمومي (الموقع التعريفي)
      • زائر VIS ★
        • نزيل/مسافر CLI ★
    • فضاء النزيل (حجوزاتي)
    • فضاء المدير (لوحة التسيير) (annoncé, non vu)
      • مدير (المسؤول الإداري الوحيد) MGR ★

Tableau des fonctions

Fonction (profil)MissionPrincipales responsabilitésRetenu pour les tests
زائر VISاكتشاف الرياض والتحقق من التوفر قبل الحجز.
  • تصفح الغرف والأسعار
  • البحث حسب التواريخ والضيوف
  • التواصل مع الرياض
★ oui
نزيل/مسافر CLIحجز الغرفة وإتمام العربون ومتابعة إقامته.
  • إنشاء الحجز
  • دفع العربون 30%
  • إدارة الحجز والتقييم
★ oui
مدير (المسؤول الإداري الوحيد) MGRتسيير توفر الغرف والأسعار ومتابعة الحجوزات والرسائل.
  • إدارة التقويم والتوفر
  • إدارة الغرف والأسعار
  • معالجة رسائل الاتصال
★ oui

Domaines

Métier

  • الحجز والإقامة VIS-01, VIS-02, CLI-01, CLI-02, CLI-04, CLI-05
  • التواصل والتقييمات CLI-06, CLI-07

Support

  • الدفع والمالية CLI-03
  • الحساب والمصادقة CPT-01
  • الإدارة والتسيير MGR-01, MGR-02, MGR-03, MGR-04

Cartographie des macro-processus et processus

Macro-processusProcessusProfilIssuesCouverture
إدارة الحجز
Métier · الحجز والإقامة
CLI-04 — متابعة الحجوزاتCLI✓ عرض الحجوزات, ✗ لا حجوزات مسجلةnon joué (CS-6)
CLI-05 — إلغاء الحجزCLI✓ إلغاء مؤكد, ✗ رفض الإلغاء أقل من 48 ساعةnon testé
جذب الزائر
Métier · الحجز والإقامة
VIS-01 — تصفح الموقع والتعرف على الغرفVIS✓ عرض الغرف والأسعارtesté : conforme (CS-3, CL-10)
VIS-02 — البحث عن التوفرVIS✓ عرض صفحة التوفر, ✗ تواريخ غير صحيحة أو ناقصة, ✗ عدد ضيوف خارج الحدودtesté : conforme (CN-1, CS-1, CS-2, CL-1, CL-2, CL-3, CL-4, CL-5)
حجز غرفة
Métier · الحجز والإقامة
CLI-01 — اختيار الغرفةCLI✓ الانتقال إلى الحجز, ✗ لا توفر على التواريخ المطلوبةnon testé
CLI-02 — إنشاء الحجز والملخصCLI✓ ملخص صحيح مع العربون, ✗ رمز ترويجي غير صالح, ✗ تواريخ متداخلة مع حجز آخرbloqué (CU-1)
التقييم والولاء
Métier · التواصل والتقييمات
CLI-06 — ترك تقييمCLI✓ نشر التقييم, ✗ رفض لأن النزيل لم يقم سابقًاtesté : conforme (CS-5)
الدعم والتواصل
Métier · التواصل والتقييمات
CLI-07 — التواصل مع الرياضVIS✓ إرسال الرسالة, ✗ حقول مطلوبة ناقصة, ✗ تجاوز الحد الأقصى للأحرفtesté : conforme (CS-4, CL-7, CL-8, CL-9)
حجز غرفة
Support · الدفع والمالية
CLI-03 — دفع العربون 30%CLI✓ تأكيد الدفع ورقم الحجز, ✗ فشل الدفع المحاكى, ✗ انتهاء صلاحية الحجزnon testé
إدارة الحساب
Support · الحساب والمصادقة
CPT-01 — إنشاء حساب وتسجيل الدخولCLI✓ دخول ناجح, ✗ بيانات اعتماد خاطئة, ✗ كلمة مرور أقل من 6 أحرفtesté : conforme (CL-6)
تسيير الرياض
Support · الإدارة والتسيير
MGR-01 — تسيير تقويم الحجوزاتMGR✓ عرض الحجز الجديد, ✗ حجز غير ظاهرtesté : conforme (CU-2)
MGR-02 — حجب التواريخMGR✓ تواريخ محجوبة, ✗ تعارض مع حجز قائمnon testé
MGR-03 — إدارة الغرف والأسعارMGR✓ سعر محدث, ✗ سعر غير صالحnon testé
MGR-04 — معالجة رسائل الاتصالMGR✓ رسالة معالجة, ✗ رسالة غير ظاهرةnon testé

Règles de gestion clés par processus

ProcessusRègle de gestionSource
VIS-01 — تصفح الموقع والتعرف على الغرفRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينlue sur le site : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصlue sur le site : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-03 — سعر جناح الكتبية 1800 درهم في الليلة لأربعة أشخاصlue sur le site : « Suite Koutoubia 4 pers. Notre plus belle suite : salon privé, cheminée et vue sur les toits de la Médina. 1 800 MAD / nuit »
RG-04 — سعر غرفة النخيل 750 درهم في الليلة لشخصينlue sur le site : « Palmeraie 2 pers. Chambre douce et verdoyante, inspirée des jardins de la Palmeraie. 750 MAD / nuit »
RG-05 — سعر غرفة منارة 1000 درهم في الليلة لشخصينlue sur le site : « Menara 2 pers. Chambre élégante aux zelliges verts, ouverte sur la galerie. 1 000 MAD / nuit »
VIS-02 — البحث عن التوفرRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينlue sur le site : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصlue sur le site : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-06 — الحد الأدنى للبالغين 1 والأقصى 4à confirmer
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3à confirmer
CLI-01 — اختيار الغرفةRG-06 — الحد الأدنى للبالغين 1 والأقصى 4à confirmer
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3à confirmer
CLI-02 — إنشاء الحجز والملخصRG-06 — الحد الأدنى للبالغين 1 والأقصى 4à confirmer
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3à confirmer
RG-08 — ضريبة الإقامة 30 درهمًا لكل بالغ في الليلةà confirmer
RG-09 — رمز RIAD10 يمنح خصمًا 10% على الإقامة فقط دون ضريبة الإقامةà confirmer
RG-10 — العربون 30% يُحسب على المجموع بعد الخصم مع احتساب الضريبةà confirmer
CLI-03 — دفع العربون 30%RG-10 — العربون 30% يُحسب على المجموع بعد الخصم مع احتساب الضريبةà confirmer
CLI-04 — متابعة الحجوزاتRG-11 — الإلغاء ممكن حتى 48 ساعة قبل الوصولlue sur le site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
CLI-05 — إلغاء الحجزRG-11 — الإلغاء ممكن حتى 48 ساعة قبل الوصولlue sur le site : « Annulation possible jusqu'à 48 h avant l'arrivée. »
CLI-06 — ترك تقييمRG-12 — نشر التقييمات مقصور على النزلاء الذين أقاموا في الرياضlue sur le site : « Seuls les hôtes ayant séjourné au riad peuvent publier un avis. »
CLI-07 — التواصل مع الرياضRG-13 — حقل البريد الإلكتروني مطلوب في نموذج الاتصال بحد أقصى 255 حرفًاà confirmer
RG-14 — حقل الرسالة مطلوب في نموذج الاتصال بحد أقصى 2000 حرفà confirmer
CPT-01 — إنشاء حساب وتسجيل الدخولRG-15 — كلمة المرور يجب ألا تقل عن 6 أحرف عند تسجيل الدخولlue sur le site : « Mot de passe »
RG-16 — التسجيل بالبريد الإلكتروني وكلمة المرور مع بريد تأكيدà confirmer
MGR-02 — حجب التواريخRG-06 — الحد الأدنى للبالغين 1 والأقصى 4à confirmer
MGR-03 — إدارة الغرف والأسعارRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينlue sur le site : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصlue sur le site : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-03 — سعر جناح الكتبية 1800 درهم في الليلة لأربعة أشخاصlue sur le site : « Suite Koutoubia 4 pers. Notre plus belle suite : salon privé, cheminée et vue sur les toits de la Médina. 1 800 MAD / nuit »
RG-04 — سعر غرفة النخيل 750 درهم في الليلة لشخصينlue sur le site : « Palmeraie 2 pers. Chambre douce et verdoyante, inspirée des jardins de la Palmeraie. 750 MAD / nuit »
RG-05 — سعر غرفة منارة 1000 درهم في الليلة لشخصينlue sur le site : « Menara 2 pers. Chambre élégante aux zelliges verts, ouverte sur la galerie. 1 000 MAD / nuit »
MGR-04 — معالجة رسائل الاتصالRG-13 — حقل البريد الإلكتروني مطلوب في نموذج الاتصال بحد أقصى 255 حرفًاà confirmer
RG-14 — حقل الرسالة مطلوب في نموذج الاتصال بحد أقصى 2000 حرفà confirmer
—RG-17 — لا يمكن حجز الغرفة مرتين على تواريخ متداخلةà confirmer
—RG-18 — لا حجز في الماضي والحد الأدنى ليلة واحدةà confirmer
—RG-19 — المدير هو المسؤول الإداري الوحيدà confirmer

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 نزيل، je veux حجز غرفة أطلس لليلتين، afin de تأمين إقامتي في الرياض.
VIS-02 · RG-06 · RG-07
الانتقال إلى صفحة التوفر بعد البحث بتواريخ صحيحة وعدد بالغين 2.

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 : #1, #2, #3, #5, #6, #7, #8, #9, #10, #11

Garder ce cas dans la recette de non-régression.
CS-1En tant que نزيل، je veux البحث عن جناح الكتبية لأربعة بالغين، afin de حجز أكبر غرفة لعائلتي.
VIS-02 · RG-03 · RG-06
عرض جناح الكتبية ضمن نتائج التوفر للتواريخ المطلوبة.

Conforme

Réponses du serveur

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

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CS-2En tant que زائر، je veux البحث مع طفلين، afin de حجز إقامة عائلية مناسبة.
VIS-02 · RG-07
قبول عدد الأطفال 2 ضمن الحد الأقصى والانتقال إلى صفحة التوفر.

Conforme

Réponses du serveur

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

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CS-3En tant que زائر، je veux مقارنة أسعار الغرف الخمس، afin de اختيار الغرفة المناسبة لميزانيتي.
VIS-01 · RG-01 · RG-02 · RG-03 · RG-04 · RG-05
عرض الغرف الخمس بأسعارها المعلنة بالدرهم في الصفحة الرئيسية.

Conforme

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CS-4En tant que زائر، je veux إرسال رسالة إلى الرياض، afin de الاستفسار قبل الحجز.
CLI-07 · RG-13 · RG-14
قبول الرسالة بعد تعبئة الحقول المطلوبة وإرسالها دون خطأ.

Non jouable

non joué : élément introuvable : input[type=text] — à confirmer

Hygiène des pages liées : #4

Lever le blocage (non joué : élément introuvable : input[type=text] — à confirmer), puis rejouer.
CS-5En tant que زائر، je veux قراءة شروط نشر التقييمات، afin de معرفة من يحق له التقييم.
CLI-06 · RG-12
عرض شرط النشر وعدم وجود تقييمات منشورة حاليًا.

Conforme

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

Garder ce cas dans la recette de non-régression.
CS-6En tant que نزيل، je veux عرض حجوزاتي، afin de متابعة حالة حجزي وإلغائه إن لزم.
CLI-04 · RG-11
عرض صفحة الحجوزات مع شرط الإلغاء 48 ساعة قبل الوصول.

Non concluant — à confirmer

texte attendu absent : « Mes réservations » (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 : #1, #14

Faire confirmer l'attendu par le métier, puis rejouer.
CU-1En tant que نزيل مسجل، je veux حجز ماجوريل لليلتين مع رمز RIAD10، afin de دفع عربون محسوب على المجموع بعد الخصم.
user story du client · CLI-02 · RG-09 · RG-10
الوصول إلى مسار حجز ماجوريل؛ التحقق من الخصم والعربون غير ممكن لغياب صفحة الدفع.

Non jouable

non joué : élément introuvable : text=Voir les disponibilités — à confirmer

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 : #1, #2, #3, #5, #6, #7, #8, #9, #10, #11

Lever le blocage (non joué : élément introuvable : text=Voir les disponibilités — à confirmer), puis rejouer.
CU-2En tant que مدير، je veux إيجاد الحجز الجديد في لوحة التسيير، afin de تحضير وصول النزيل.
user story du client · MGR-01 · RG-19
لا يمكن تنفيذ هذا المسار: لا توجد لوحة تسيير في الموقع.

Conforme

Hygiène des pages liées : #1, #14

Garder ce cas dans la recette de non-régression.
CL-1En tant que زائر، je veux البحث دون تاريخ وصول، afin de vérifier أن الحقل مطلوب.
VIS-02 · RG-06
عدم الانتقال إلى صفحة التوفر لأن تاريخ الوصول مطلوب.

Conforme

Réponses du serveur

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

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CL-2En tant que زائر، je veux إدخال مغادرة قبل الوصول، afin de vérifier رفض التواريخ غير المنطقية.
VIS-02 · RG-18
رفض البحث لأن تاريخ المغادرة قبل تاريخ الوصول.

Conforme

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CL-3En tant que زائر، je veux إدخال صفر بالغين، afin de vérifier الحد الأدنى للبالغين.
VIS-02 · RG-06
رفض القيمة 0 لأن الحد الأدنى للبالغين هو 1.

Conforme

Réponses du serveur

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

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CL-4En tant que زائر، je veux إدخال خمسة بالغين، afin de vérifier الحد الأقصى للبالغين.
VIS-02 · RG-06
رفض القيمة 5 لأن الحد الأقصى للبالغين هو 4.

Conforme

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CL-5En tant que زائر، je veux إدخال أربعة أطفال، afin de vérifier الحد الأقصى للأطفال.
VIS-02 · RG-07
رفض القيمة 4 لأن الحد الأقصى للأطفال هو 3.

Conforme

Hygiène des pages liées : #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

Garder ce cas dans la recette de non-régression.
CL-6En tant que نزيل، je veux تسجيل الدخول بكلمة مرور خاطئة، afin de vérifier رفض بيانات الاعتماد الخاطئة.
CPT-01 · RG-15
رفض تسجيل الدخول والبقاء في صفحة Connexion.

Conforme

Réponses du serveur

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

Hygiène des pages liées : #1, #14

Garder ce cas dans la recette de non-régression.
CL-7En tant que زائر، je veux إرسال نموذج فارغ، afin de vérifier إلزامية الحقول.
CLI-07 · RG-13 · RG-14
عدم إرسال الرسالة لأن الاسم والبريد والرسالة مطلوبة.

Conforme

Hygiène des pages liées : #4

Garder ce cas dans la recette de non-régression.
CL-8En tant que زائر، je veux إدخال بريد غير صحيح، afin de vérifier رفض الصيغة الخاطئة.
CLI-07 · RG-13
رفض الإرسال لأن صيغة البريد الإلكتروني غير صحيحة.

Non jouable

non joué : élément introuvable : input[type=text] — à confirmer

Hygiène des pages liées : #4

Lever le blocage (non joué : élément introuvable : input[type=text] — à confirmer), puis rejouer.
CL-9En tant que زائر، je veux إرسال رسالة بأحرف خاصة، afin de vérifier قبول المحتوى عند الحد الأقصى.
CLI-07 · RG-14
قبول الأحرف الخاصة والرموز دون خطأ في الإرسال.

Non jouable

non joué : élément introuvable : input[type=text] — à confirmer

Hygiène des pages liées : #4

Lever le blocage (non joué : élément introuvable : input[type=text] — à confirmer), puis rejouer.
CL-10En tant que زائر، je veux قراءة الأسئلة الشائعة، afin de معرفة سياسة الدفع والإلغاء.
VIS-01 · RG-09 · RG-11
عرض عناوين الأسئلة فقط دون أجوبة، فلا يمكن التحقق من سياسة الإلغاء أو الرمز.

Conforme

Hygiène des pages liées : #16

Garder ce cas dans la recette de non-régression.
CN-2بصفتي نزيلاً مسجلاً، أريد حجز غرفة أطلس لليلتين مع رمز RIAD10، لأدفع عربوناً محسوباً على المجموع المخفّض.
الحجز والدفع الإلكتروني · رمز RIAD10 = خصم 10% على الإقامة فقط · ضريبة الإقامة لا تُخفَّض أبداً · العربون 30% يُحسب على المجموع المخفّض شامل الضريبة
ظهور تأكيد الحجز مع رقم الحجز والمبلغ 522 MAD بعد الدفع المحاكى.

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.
CS-20بصفتي نزيلاً مسجلاً، أريد حجز جناح الكتبية لليلتين، لأتحقق من صحة حساب العربون والرصيد.
الحجز والدفع الإلكتروني · العربون 30% من المجموع شامل الضريبة
المبالغ معروضة صحيحة: 3720 إجمالي، 1116 عربون، 2604 رصيد.

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.
CS-21بصفتي نزيلاً مسجلاً، أريد حجز غرفة النخيل لليلتين، لأتأكد من أن العربون الأدنى محسوب بدقة.
الحجز والدفع الإلكتروني · العربون 30% من المجموع شامل الضريبة
المبالغ معروضة صحيحة: 1620 إجمالي، 486 عربون، 1134 رصيد.

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.
CS-22بصفتي نزيلاً مسجلاً، أريد حجز غرفة ماجوريل لليلتين مع رمز RIAD10، لأدفع عربوناً على المجموع المخفّض.
الحجز والدفع الإلكتروني · رمز RIAD10 = خصم 10% على الإقامة فقط · ضريبة الإقامة لا تُخفَّض أبداً
العربون بعد الخصم = 684 MAD والضريبة 120 MAD غير مخفّضة.

Non concluant — à confirmer

texte attendu absent : « 684 MAD » (page : « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact Mes réservations EN Déconnexion Majorelle Vos coordonnées Nom complet E-mail Téléphone Code promo Appliq »)

Réponses du serveur

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

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

Faire confirmer l'attendu par le métier, puis rejouer.
CL-20بصفتي نزيلاً مسجلاً، أريد الدفع دون تعبئة بياناتي، لأرى إن كان النظام يمنع الحجز الناقص.
الحجز والدفع الإلكتروني · الاسم والبريد الإلكتروني مطلوبان
لا يتم تأكيد الحجز ويبقى المستخدم في صفحة الحجز.

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-21بصفتي نزيلاً مسجلاً، أريد الدفع ببريد إلكتروني خاطئ، لأرى إن كان النظام يرفض الصيغة.
الحجز والدفع الإلكتروني · البريد الإلكتروني يجب أن يكون بصيغة صحيحة
رفض البريد غير الصالح وعدم تأكيد الحجز.

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-22بصفتي نزيلاً مسجلاً، أريد تطبيق رمز خصم خاطئ، لأرى إن كان النظام يرفضه دون تغيير المبلغ.
الحجز والدفع الإلكتروني · رمز RIAD10 هو الرمز الصالح الوحيد
الرمز الخاطئ لا يغيّر المجموع ولا العربون.

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-23بصفتي نزيلاً مسجلاً، أريد الدفع دون رقم بطاقة، لأرى إن كان النظام يمنع تأكيد الحجز.
الحجز والدفع الإلكتروني · رقم البطاقة مطلوب للدفع المحاكى
لا يتم تأكيد الحجز دون رقم بطاقة.

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 de riad-connect-hub.lovable.app : 17 constats, 9 correctifs à faire

Le test de riad-connect-hub.lovable.app relève 17 constats, dont 2 majeurs ou critiques (S1, S2), qui se ramènent à 9 correctifs. À traiter d'abord : Pages de connexion affichables dans un autre site (clickjacking), puis Champs de formulaire sans libellé.

17 problèmes trouvés, dont 2 à corriger d'abord.

À corriger en premier

  1. Une cause → un correctifPages de connexion affichables dans un autre site (clickjacking) : 3 constats, un seul correctif

    Cause : Même défaut « Pages de connexion affichables dans un autre site (clickjacking) » répété : probablement un composant ou un gabarit commun.

    Correctif unique : Envoyer l'en-tête Content-Security-Policy: frame-ancestors 'none' (et X-Frame-Options: DENY).

    Constats : #1, #2, #3

  2. #1MajeurPages de connexion affichables dans un autre site (clickjacking) (Chromium (moteur de Chrome))

    Pourquoi d'abord : Un site tiers peut piéger les clics sur la page de connexion : comptes clients exposés et confiance perdue. Effort : faible

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

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

    Constaté : Encadrables : /auth

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

  3. #2MineurEn-têtes de sécurité absents sur riad-connect-hub.lovable.app (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...).

  4. #3RemarqueCross-Origin-Opener-Policy absente : une fenêtre ouverte par un autre site garde un lien vers la vôtre (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.

  5. #4MajeurAccessibilité : champ-sans-libelle (label) (2 occurrence(s) sur 1 page(s)) — ordinateur, téléphone (Chromium (moteur de Chrome))

    Pourquoi d'abord : Une partie des visiteurs (clavier, malvoyants) ne peut pas aller au bout : ce sont des réservations perdues, et l'accessibilité devient une obligation légale sur plusieurs marchés. Effort : faible

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

    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

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

  6. Une cause → un correctifAucun bandeau de consentement aux cookies détecté sur riad-connect-hub.lovable.app : 2 constats, un seul correctif

    Cause : Même défaut « Aucun bandeau de consentement aux cookies détecté sur riad-connect-hub.lovable.app » répété : probablement un composant ou un gabarit commun.

    Correctif unique : Corriger une fois dans le composant ou le gabarit commun, puis revérifier toutes les pages citées.

    Constats : #5, #6

  7. #5MineurAucun bandeau de consentement aux cookies détecté sur riad-connect-hub.lovable.app (Chromium (moteur de Chrome))

    Pourquoi d'abord : Ces points ne bloquent pas le parcours mais méritent d'être traités. Effort : moyen

    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.

  8. #6MineurCookies de mesure ou de publicité déposés avant tout consentement sur riad-connect-hub.lovable.app (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 ».

  9. Une cause → un correctifPages et images trop lourdes : 5 constats, un seul correctif

    Cause : Images et ressources servies trop lourdes, probablement sans compression ni dimension adaptée.

    Correctif unique : Compresser et redimensionner les images (WebP ou AVIF, srcset) une fois dans la chaîne de publication.

    Constats : #7, #8, #9, #10, #11

  10. #7Mineur1 image(s) trop lourde(s) pour leur taille d'affichage (Chromium (moteur de Chrome))

    Pourquoi d'abord : Une page lente fait partir les visiteurs avant même de voir l'offre, surtout sur téléphone : moins de réservations. Effort : moyen

    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

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

  11. #8MineurChargement lent (6547 ms) : / — téléphone uniquement (téléphone · Chromium (moteur de Chrome))

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

    Attendu : Chargement < 3000 ms

    Constaté : / 6547 ms

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

  12. #9MineurFichiers JavaScript lourds : 1 fichier(s) au-dessus de 500 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).

  13. #10MineurImages lourdes : 1 fichier(s) au-dessus de 300 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.

  14. #11MineurLent sur téléphone en réseau lent : LCP 4400 ms, chargement 4346 ms (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 4400 ms, chargement 4346 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.

  15. Une cause → un correctifPas de lien vers la politique de confidentialité : 2 constats, un seul correctif

    Cause : Même défaut « Pas de lien vers la politique de confidentialité » répété : probablement un composant ou un gabarit commun.

    Correctif unique : Corriger une fois dans le composant ou le gabarit commun, puis revérifier toutes les pages citées.

    Constats : #12, #13

  16. #12MineurPas de lien vers la politique de confidentialité (Chromium (moteur de Chrome))

    Pourquoi d'abord : Ces informations sont généralement obligatoires pour un site qui vend en ligne ; leur absence expose l'éditeur et rassure moins les acheteurs. 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.

  17. #13MineurPas 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.

Le reste

0Critique
2Majeur
11Mineur
4Remarque
  • #14MineurPages de connexion ouvertes aux moteurs de recherche (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).

  • #15RemarquePas de /.well-known/security.txt (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é.

  • #16RemarqueAccessibilité : ordre-titres (heading-order) (2 occurrence(s) sur 1 page(s)) — ordinateur, téléphone (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

    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

  • #17RemarqueRéférencement : 1 problème(s) sur riad-connect-hub.lovable.app (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.

Par thème

  • Vitesse de chargement — Une page lente fait partir les visiteurs avant même de voir l'offre, surtout sur téléphone : moins de réservations.
    5 constat(s), dont 0 majeur(s) ou critique(s) ; 1 correctif(s) suffisent. #7, #8, #9, #10, #11
  • Sécurité et confiance — Une faille expose les comptes et les données des clients ; la confiance perdue coûte des réservations et engage l'éditeur.
    4 constat(s), dont 1 majeur(s) ou critique(s) ; 2 correctif(s) suffisent. #1, #2, #3, #15
  • Obligations légales — Ces informations sont généralement obligatoires pour un site qui vend en ligne ; leur absence expose l'éditeur et rassure moins les acheteurs.
    4 constat(s), dont 0 majeur(s) ou critique(s) ; 2 correctif(s) suffisent. #5, #6, #12, #13
  • Accessibilité — Une partie des visiteurs (clavier, malvoyants) ne peut pas aller au bout : ce sont des réservations perdues, et l'accessibilité devient une obligation légale sur plusieurs marchés.
    2 constat(s), dont 1 majeur(s) ou critique(s) ; 2 correctif(s) suffisent. #4, #16
  • Référencement — Le référencement amène des visiteurs sans payer ; des pages mal décrites ou mal indexées en apportent moins.
    2 constat(s), dont 0 majeur(s) ou critique(s) ; 2 correctif(s) suffisent. #14, #17

Prochaines étapes

  1. Corriger les 5 points « à corriger d'abord », dans l'ordre.
  2. Appliquer les 4 correctifs groupés : chacun règle plusieurs constats à la fois.
  3. Traiter ensuite les constats mineurs restants, section par section.
  4. Relancer un test Avalyz pour vérifier les corrections.
  5. Élargir le périmètre aux 5 zone(s) non testée(s) (par exemple avec un compte de test).

Testé : Smoke (chargement, erreurs, mobile), Navigateurs, En-tetes de securite et anti-encadrement, Accessibilite (partiel), Sondes en lecture seule, SEO, marque, images, cookies, Appareils, Liens cassés, Formulaires, RGPD et cookies, Pages, Zone connectée, Parcours par rôle (partiel), Profil « client », Comptes de recette créés, Visuel et langues, Logique metier (partiel), Securite applicative, API / integration (partiel), Resilience, Conformite, Bout en bout par role, Performance, Scénarios métier (partiel), À vérifier (sans constat) (partiel). Non testé : Regression visuelle, Securite des donnees, Statique, Unitaire, Composant. L'absence d'un constat ne prouve pas que tout fonctionne : seul ce qui est listé a été vérifié.

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 : 7 page(s) (7 pages lues sur 7 visitées (mode complet)), contraste mesuré sur 14 texte(s) (clair, et sombre sur 7 page(s)), 280 tabulation(s) (119 é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 7 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 — 2 pages, 33 actions relevées, 0 action jouée (lecture seule) — rôle « avalyz-test-client-9565b061@test.avalyz.com »
  • 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 7 visitées (mode complet), 10 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 — 19 cas conçus (1 nominal, 8 secondaires, 10 limites) ; joués : 19 (mode complet : CN-1, CS-1, CS-2, CS-3, CS-4, CS-5, CS-6, CU-1, CU-2, CL-1, CL-2, CL-3, CL-4, CL-5, CL-6, CL-7, CL-8, CL-9, CL-10) ; 14 réussis / 0 échecs / 0 bloqués / 4 non jouables ; 1 attendu(s) deviné(s) par le BA non vérifié(s) : à confirmer par le client (non déclarés) — CS-6 ; CS-4 non joué : élément introuvable : input[type=text] — à confirmer ; CU-1 non joué : élément introuvable : text=Voir les disponibilités — à confirmer ; CL-8 non joué : élément introuvable : input[type=text] — à confirmer ; CL-9 non joué : élément introuvable : input[type=text] — à confirmer ; écriture autorisée, 35 soumission(s) ; exploration en jouant : 4 é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
  • 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) : 17 sélecteur(s) sur 7 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
  • 6695 msplan du site (0 adresse(s) à visiter en plus)
  • 13525 mscréation des comptes de recette (1/1 créé(s))
  • 2201 msnavigation bureau p1 (chargement 569, réseau calme 1616, relevés 16)
  • 5979 msa11y bureau p1
  • 253 msfocus clavier bureau p1
  • 2204 mscapture bureau p1
  • 1154 msnavigation bureau p2 (chargement 486, réseau calme 655, relevés 13)
  • 604 msa11y bureau p2
  • 181 mscapture bureau p2
  • 1516 msnavigation bureau p3 (chargement 560, réseau calme 938, relevés 18)
  • 754 msa11y bureau p3
  • 127 mscapture bureau p3
  • 1104 msnavigation bureau p4 (chargement 422, réseau calme 667, relevés 15)
  • 661 msa11y bureau p4
  • 109 mscapture bureau p4
  • 1147 msnavigation bureau p5 (chargement 393, réseau calme 742, relevés 12)
  • 787 msa11y bureau p5
  • 117 mscapture bureau p5
  • 1113 msnavigation bureau p6 (chargement 416, réseau calme 683, relevés 14)
  • 745 msa11y bureau p6
  • 129 mscapture bureau p6
  • 2964 msconnexion avec le compte de test (client) (réussie)
  • 1342 msnavigation bureau p1 (chargement 434, réseau calme 887, relevés 21)
  • 631 msa11y bureau p1
  • 87 mscapture bureau p1
  • 1680 msnavigation bureau p2 (chargement 527, réseau calme 1135, relevés 18)
  • 778 msa11y bureau p2
  • 1787 mscapture bureau p2
  • 477 mssondes (robots.txt, pages inexistantes, paramètres, limites)
  • 91 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 2 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)
  • 8794 msrgpd (visite en navigateur neuf + capture)
  • 7317 msnavigation telephone p1 (chargement 6554, réseau calme 747, relevés 16)
  • 5754 msa11y telephone p1
  • 817 mscapture telephone p1
  • 1112 msnavigation telephone p2 (chargement 466, réseau calme 632, relevés 14)
  • 500 msa11y telephone p2
  • 55 mscapture telephone p2
  • 1302 msnavigation telephone p3 (chargement 395, réseau calme 891, relevés 16)
  • 550 msa11y telephone p3
  • 65 mscapture telephone p3

Décision GO / NO-GO motivée

GO SOUS CONDITIONS
Détail technique

الموقع يعرض الغرف الخمس بأسعارها ويسمح بالبحث عن التوفر حسب التواريخ وعدد البالغين والأطفال، وقد نجحت كل حالات البحث والتحقق من المدخلات (CN-1، CS-1، CS-2، CS-3، CL-1 إلى CL-5). لكن المسار الذي يُدخل المال فعلاً (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%، الإلغاء) لم يُغطَّ بالكامل: CLI-01 وCLI-03 وCLI-05 غير مغطاة، وCLI-02 محجوب، وحالة التحقق من العربون مع رمز RIAD10 (CS-22) بقيت «à confirmer» بعد إعادة اللعب (I1: غير حاسم). لذلك لا يمكن إصدار GO، والموافقة مشروطة بإتمام اختبار مسار الحجز والدفع والإلغاء من البداية إلى النهاية.

Motifs (preuves)

  • 21 cas conformes sur 27 joués ; 0 non conforme(s) ; 2 non concluant(s) ; 4 bloqué(s).
  • Hygiène technique : 0 constat(s) critique(s), 2 majeur(s), 15 mineur(s).

Avis d'expert

Décision : GO SOUS CONDITIONS

Arguments

  1. voir le détail technique (fort)
    preuves : CN-1, CS-1, CS-2, CL-1, CL-2, CL-3, CL-4, CL-5
  2. voir le détail technique (moyen)
    preuves : CS-3, processus:VIS-01, https://riad-connect-hub.lovable.app/
  3. voir le détail technique (fort)
    preuves : processus:CLI-01, processus:CLI-02, processus:CLI-03, CU-1, I2, I7
  4. voir le détail technique (fort)
    preuves : CS-22, I1, CS-20, I4, CS-21, I5
  5. voir le détail technique (fort)
    preuves : processus:CLI-05, https://riad-connect-hub.lovable.app/my-
  6. voir le détail technique (moyen)
    preuves : CS-6, I3, processus:CLI-04
  7. voir le détail technique (moyen)
    preuves : CL-20, CL-21, CL-22, CL-23
  8. voir le détail technique (moyen)
    preuves : processus:MGR-02, processus:MGR-03, processus:MGR-04
  9. voir le détail technique (moyen)
    preuves : CS-4, CL-8, CL-9, I8, processus:CLI-07
  10. voir le détail technique (faible)
    preuves : couverture:Securite applicative, couverture:Securite des donnees

Risques résiduels

  • voir le détail technique
  • voir le détail technique
  • voir le détail technique
  • voir le détail technique
  • voir le détail technique
  • voir le détail technique
  • voir le détail technique

Conditions

  • voir le détail technique
  • voir le détail technique
  • voir le détail technique
  • voir le détail technique
  • voir le détail technique
  • voir le détail technique

Périmètre de l'avis

  • testé : voir le détail technique
  • non testé : voir le détail technique

Confiance : moyenne

Détail technique

Arguments : البحث عن التوفر والتحقق من المدخلات يعملان بشكل صحيح على الحالات المختبرة (تواريخ ناقصة أو معكوسة، صفر بالغين، تجاوز الحد الأقصى للبالغين والأطفال).

Arguments : عرض الغرف الخمس وأسعارها من الصفحة الرئيسية يعمل، ما يدعم وضوح العرض التجاري.

Arguments : المسار الذي يُدخل المال (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%) غير مُغطّى أو محجوب، فلا يمكن تأكيد سلامة حساب العربون والخصم على المسار الكامل.

Arguments : التحقق من مبلغ العربون مع رمز RIAD10 (CS-22) بقي «à confirmer» وإعادة اللعب (I1) كانت غير حاسمة، بينما نجحت حالات الحساب بدون رمز (CS-20، CS-21) وأُعيد لعبها بنجاح.

Arguments : الإلغاء حتى 48 ساعة قبل الوصول، وهو وعد مكتوب للعميل، لم يُختبر فعليًا لعدم وجود حجز قائم ولا زر إلغاء ظاهر.

Arguments : صفحة «حجوزاتي» تعمل بعد تسجيل الدخول (CS-6 نجح في إعادتَي لعب)، ما يدعم متابعة الحجز من طرف النزيل.

Arguments : التحقق من المدخلات في صفحة الحجز يعمل على الحالات المختبرة (اسم وبريد فارغان، بريد غير صحيح، رمز خصم غير صحيح، بطاقة غائبة).

Arguments : واجهات الإدارة (حجب التواريخ، إدارة الغرف والأسعار، معالجة رسائل الاتصال) غير موجودة في الموقع، فلا يمكن اختبارها من الخارج.

Arguments : نموذج الاتصال لم يُختبر فعليًا: CS-4 وCL-8 وCL-9 غير قابلة للعب (عنصر الإدخال غير موجود) وإعادة اللعب (I8) كانت غير حاسمة.

Arguments : لا توجد ثغرات أمنية مكتشفة في الملفات الحساسة المسبورة (11 ملفًا، 0 مكشوف)، وهذا لا يغطي أمن البيانات لعدم وجود قاعدة بيانات مكتشفة.

Risques résiduels : خطأ محتمل في حساب العربون أو تطبيق رمز RIAD10 على المسار الكامل لم يُتحقق منه (CS-22 غير حاسم، I1).

Risques résiduels : عدم إمكانية تأكيد أن الإلغاء حتى 48 ساعة يعمل فعليًا (CLI-05 غير مغطى).

Risques résiduels : عدم إمكانية تأكيد أن الحجز يُنشئ رقم حجز ويُرسل تأكيدًا للنزيل (CLI-02 محجوب، I2).

Risques résiduels : عدم إمكانية تأكيد منع الحجز المزدوج على تواريخ متداخلة (RG-17 خارج نطاق الاختبار).

Risques résiduels : نموذج الاتصال قد يكون معطلاً أو غير قابل للاستخدام (CS-4، CL-8، CL-9 غير قابلة للعب).

Risques résiduels : غياب واجهات الإدارة يعني عدم إمكانية تأكيد تسيير التقويم وحجب التواريخ والأسعار من الخارج.

Risques résiduels : أمن البيانات غير مُختبر لعدم اكتشاف قاعدة بيانات.

Conditions : اختبار مسار الحجز الكامل من البداية إلى النهاية: اختيار الغرفة (CLI-01)، إنشاء الحجز والملخص (CLI-02)، دفع العربون 30% (CLI-03)، والحصول على رقم الحجز.

Conditions : إعادة اختبار CS-22 (حساب العربون على غرفة ماجوريل مع رمز RIAD10) حتى نتيجة حاسمة، والتأكد من أن الخصم يُطبَّق على الإقامة فقط وأن العربون يُحسب على المجموع المخفّض شاملًا ضريبة الإقامة.

Conditions : اختبار الإلغاء فعليًا على حجز قائم والتحقق من احترام شرط 48 ساعة قبل الوصول (CLI-05).

Conditions : اختبار منع الحجز المزدوج على تواريخ متداخلة (RG-17).

Conditions : إعادة اختبار نموذج الاتصال (CS-4، CL-8، CL-9) بعد إصلاح أو تحديد عنصر الإدخال، والتأكد من وصول الرسائل إلى المدير.

Conditions : توفير واجهات الإدارة واختبار MGR-02 وMGR-03 وMGR-04 (حجب التواريخ، إدارة الغرف والأسعار، معالجة رسائل الاتصال).

testé : تصفح الموقع والتعرف على الغرف (VIS-01), البحث عن التوفر (VIS-02), متابعة الحجوزات (CLI-04، CS-6), ترك تقييم (CLI-06، CS-5), إنشاء حساب وتسجيل الدخول (CPT-01، CL-6), تسيير تقويم الحجوزات (MGR-01، CU-2), التحقق من المدخلات في البحث والحجز (CL-1 إلى CL-5، CL-20 إلى CL-23), الأداء (Core Web Vitals على 5 صفحات), الأمان التطبيقي (11 ملفًا حساسًا), الامتثال (سياسة الخصوصية، الإشعارات القانونية), المرونة (بدون خدمة عاملة), من البداية إلى النهاية حسب الدور (صفحتان متصلتان)

non testé : اختيار الغرفة (CLI-01), إنشاء الحجز والملخص (CLI-02، محجوب), دفع العربون 30% (CLI-03), إلغاء الحجز (CLI-05), التواصل مع الرياض (CLI-07، CS-4/CL-8/CL-9 غير قابلة للعب), حجب التواريخ (MGR-02), إدارة الغرف والأسعار (MGR-03), معالجة رسائل الاتصال (MGR-04), إنشاء حساب جديد وبريد التأكيد (CPT-01، RG-16), منع الحجز المزدوج على تواريخ متداخلة (RG-17), أمن البيانات (لا قاعدة بيانات مكتشفة), واجهة API (لا مواصفات OpenAPI), CLI-04 متابعة الحجوزات : cas conçus, non joués dans ce mode

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اختبر تطبيقًا آخر

7/7 صفحات

تقرير نموذجي

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

اختبر تطبيقي

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

Riad Dar Zitoun

riad-connect-hub.lovable.app

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

موافقة بشروط الموقع يعرض الغرف الخمس بأسعارها ويسمح بالبحث عن التوفر حسب التواريخ وعدد البالغين والأطفال، وقد نجحت كل حالات البحث والتحقق من المدخلات (CN-1، CS-1، CS-2، CS-3، CL-1 إلى CL-5). انظر القرار المعلّل

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

القرار

موافقة بشروطالموقع يعرض الغرف الخمس بأسعارها ويسمح بالبحث عن التوفر حسب التواريخ وعدد البالغين والأطفال، وقد نجحت كل حالات البحث والتحقق من المدخلات (CN-1، CS-1، CS-2، CS-3، CL-1 إلى CL-5). لكن المسار الذي يُدخل المال فعلاً (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%، الإلغاء) لم يُغطَّ بالكامل: CLI-01 وCLI-03 وCLI-05 غير مغطاة، وCLI-02 محجوب، وحالة التحقق من العربون مع رمز RIAD10 (CS-22) بقيت «à confirmer» بعد إعادة اللعب (I1: غير حاسم). لذلك لا يمكن إصدار GO، والموافقة مشروطة بإتمام اختبار مسار الحجز والدفع والإلغاء من البداية إلى النهاية.

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

أرقام أساسية

7صفحات مختبَرة
27حالات عمل منفَّذة21 ناجحة · 0 فاشلة · 0 متوقفة
17ملاحظات0 حرج · 2 مهم · 11 طفيف · 4 ملاحظة

يُصلَح أولًا

  1. #1مهمصفحة تسجيل الدخول قابلة للتأطير داخل موقع آخر
    حساب الحريف يعطي الولوج إلى الحجوزات وإلى معطيات شخصية؛ إمكانية تأطير صفحة الدخول داخل موقع آخر تفتح الباب لصفحة مزيّفة تسرق بيانات الولوج ثم الحجوزات.
  2. #2طفيفرؤوس أمان غائبة عن الموقع
  3. #3ملاحظةرأس عزل نافذة التصفح غائب
  4. #4مهمحقل بدون تسمية في نموذج الاتصال
    نموذج الاتصال هو القناة المباشرة لطلبات الزوار؛ حقل بدون تسمية يُربك قارئات الشاشة والملء التلقائي ويعني طلبات ضائعة أو ناقصة.
  5. #5طفيفلا شريط لموافقة الزوار على ملفات التتبع
    الموقع يجمع معطيات شخصية ويطلب دفع عربون: غياب الموافقة المسبقة على ملفات التتبع يعرّض المؤسسة للمساءلة ويجعل أي نشاط تتبع أو إعلان غير محمي قانونيا.

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

  1. إتمام اختبار مسار الحجز كاملا: اختيار الغرفة، إنشاء الحجز، دفع العربون، الحصول على رقم الحجز، ثم الإلغاء في الأجل المحدد.
  2. إعادة اختبار حساب العربون مع رمز التخفيض بنسبة 10%، وهي الحالة التي بقيت غير محسومة بعد إعادة اللعب.
  3. إصلاح رؤوس الأمان وموضع رأس منع التأطير على كل الصفحات، والتحقق من النتيجة بعد الإصلاح.
  4. ضغط الصورة الرئيسية وتقسيم الملف البرمجي، ثم إعادة قياس سرعة الصفحة الرئيسية على الهاتف في شبكة ضعيفة.

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

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

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

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

المفهوم

دار ضيافة (رياض) في الميدينة بمراكش تُدعى Riad Dar Zitoun، تضم خمس غرف حول فناء برتقال قرب جامع الكتبية. تتيح المنصة للمسافر البحث عن التوفر حسب التواريخ وعدد البالغين والأطفال ثم اختيار الغرفة والحجز، مع تقييمات وأسئلة شائعة واتصال.

العملاء المستهدفون: المسافرون والنزلاء الباحثون عن إقامة في رياض بمراكش، بما في ذلك العائلات الصغيرة.

سلسلة القيمة

  1. جذب الزائرVIS-01, VIS-02
  2. التحويل إلى حجزCLI-01, CLI-02
  3. الدفع والتأكيدCLI-03, CLI-04
  4. الاستقبال والإقامةCLI-05
  5. ما بعد الإقامة والولاءCLI-06, CLI-07
  6. التسيير والماليةMGR-01, MGR-02, MGR-03, MGR-04

نموذج العمل

شرائح العملاءمسافرون ونزلاء يبحثون عن إقامة في رياض بمراكش، عائلات صغيرة (غرف من شخصين إلى 4).
عرض القيمةرياض هادئ بخمس غرف حول فناء برتقال قرب الكتبية، بأسعار ليلية واضحة بالدرهم.
القنواتموقع ويب بالفرنسية مع مبدّل إلى الإنجليزية، صفحة اتصال، بريد وهاتف.
مصادر الإيراداتحجز الغرف بالليلة (750 إلى 1800 درهم)، عربون 30%، ضريبة إقامة 30 درهم/بالغ/ليلة.

التنظيم

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

  • riad-connect-hub.lovable.app
    • الفضاء العمومي (الموقع التعريفي)
      • زائر VIS ★
        • نزيل/مسافر CLI ★
    • فضاء النزيل (حجوزاتي)
    • فضاء المدير (لوحة التسيير) (مُعلن، غير مرئي)
      • مدير (المسؤول الإداري الوحيد) MGR ★

جدول الوظائف

الوظيفة (الملف)المهمةأهم المسؤولياتمعتمد في الاختبار
زائر VISاكتشاف الرياض والتحقق من التوفر قبل الحجز.
  • تصفح الغرف والأسعار
  • البحث حسب التواريخ والضيوف
  • التواصل مع الرياض
★ نعم
نزيل/مسافر CLIحجز الغرفة وإتمام العربون ومتابعة إقامته.
  • إنشاء الحجز
  • دفع العربون 30%
  • إدارة الحجز والتقييم
★ نعم
مدير (المسؤول الإداري الوحيد) MGRتسيير توفر الغرف والأسعار ومتابعة الحجوزات والرسائل.
  • إدارة التقويم والتوفر
  • إدارة الغرف والأسعار
  • معالجة رسائل الاتصال
★ نعم

المجالات

أساسي

  • الحجز والإقامة VIS-01, VIS-02, CLI-01, CLI-02, CLI-04, CLI-05
  • التواصل والتقييمات CLI-06, CLI-07

داعم

  • الدفع والمالية CLI-03
  • الحساب والمصادقة CPT-01
  • الإدارة والتسيير MGR-01, MGR-02, MGR-03, MGR-04

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

عملية كبرىالعمليةالملفالنتائجالتغطية
إدارة الحجز
أساسي · الحجز والإقامة
CLI-04 — متابعة الحجوزاتCLI✓ عرض الحجوزات, ✗ لا حجوزات مسجلةلم يُشغَّل (CS-6)
CLI-05 — إلغاء الحجزCLI✓ إلغاء مؤكد, ✗ رفض الإلغاء أقل من 48 ساعةغير مختبَر
جذب الزائر
أساسي · الحجز والإقامة
VIS-01 — تصفح الموقع والتعرف على الغرفVIS✓ عرض الغرف والأسعارمختبَر: مطابق (CS-3, CL-10)
VIS-02 — البحث عن التوفرVIS✓ عرض صفحة التوفر, ✗ تواريخ غير صحيحة أو ناقصة, ✗ عدد ضيوف خارج الحدودمختبَر: مطابق (CN-1, CS-1, CS-2, CL-1, CL-2, CL-3, CL-4, CL-5)
حجز غرفة
أساسي · الحجز والإقامة
CLI-01 — اختيار الغرفةCLI✓ الانتقال إلى الحجز, ✗ لا توفر على التواريخ المطلوبةغير مختبَر
CLI-02 — إنشاء الحجز والملخصCLI✓ ملخص صحيح مع العربون, ✗ رمز ترويجي غير صالح, ✗ تواريخ متداخلة مع حجز آخرمتوقف (CU-1)
التقييم والولاء
أساسي · التواصل والتقييمات
CLI-06 — ترك تقييمCLI✓ نشر التقييم, ✗ رفض لأن النزيل لم يقم سابقًامختبَر: مطابق (CS-5)
الدعم والتواصل
أساسي · التواصل والتقييمات
CLI-07 — التواصل مع الرياضVIS✓ إرسال الرسالة, ✗ حقول مطلوبة ناقصة, ✗ تجاوز الحد الأقصى للأحرفمختبَر: مطابق (CS-4, CL-7, CL-8, CL-9)
حجز غرفة
داعم · الدفع والمالية
CLI-03 — دفع العربون 30%CLI✓ تأكيد الدفع ورقم الحجز, ✗ فشل الدفع المحاكى, ✗ انتهاء صلاحية الحجزغير مختبَر
إدارة الحساب
داعم · الحساب والمصادقة
CPT-01 — إنشاء حساب وتسجيل الدخولCLI✓ دخول ناجح, ✗ بيانات اعتماد خاطئة, ✗ كلمة مرور أقل من 6 أحرفمختبَر: مطابق (CL-6)
تسيير الرياض
داعم · الإدارة والتسيير
MGR-01 — تسيير تقويم الحجوزاتMGR✓ عرض الحجز الجديد, ✗ حجز غير ظاهرمختبَر: مطابق (CU-2)
MGR-02 — حجب التواريخMGR✓ تواريخ محجوبة, ✗ تعارض مع حجز قائمغير مختبَر
MGR-03 — إدارة الغرف والأسعارMGR✓ سعر محدث, ✗ سعر غير صالحغير مختبَر
MGR-04 — معالجة رسائل الاتصالMGR✓ رسالة معالجة, ✗ رسالة غير ظاهرةغير مختبَر

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

العمليةقاعدة التسييرالمصدر
VIS-01 — تصفح الموقع والتعرف على الغرفRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينمقروءة في الموقع : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصمقروءة في الموقع : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-03 — سعر جناح الكتبية 1800 درهم في الليلة لأربعة أشخاصمقروءة في الموقع : « Suite Koutoubia 4 pers. Notre plus belle suite : salon privé, cheminée et vue sur les toits de la Médina. 1 800 MAD / nuit »
RG-04 — سعر غرفة النخيل 750 درهم في الليلة لشخصينمقروءة في الموقع : « Palmeraie 2 pers. Chambre douce et verdoyante, inspirée des jardins de la Palmeraie. 750 MAD / nuit »
RG-05 — سعر غرفة منارة 1000 درهم في الليلة لشخصينمقروءة في الموقع : « Menara 2 pers. Chambre élégante aux zelliges verts, ouverte sur la galerie. 1 000 MAD / nuit »
VIS-02 — البحث عن التوفرRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينمقروءة في الموقع : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصمقروءة في الموقع : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-06 — الحد الأدنى للبالغين 1 والأقصى 4للتأكيد
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3للتأكيد
CLI-01 — اختيار الغرفةRG-06 — الحد الأدنى للبالغين 1 والأقصى 4للتأكيد
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3للتأكيد
CLI-02 — إنشاء الحجز والملخصRG-06 — الحد الأدنى للبالغين 1 والأقصى 4للتأكيد
RG-07 — الحد الأدنى للأطفال 0 والأقصى 3للتأكيد
RG-08 — ضريبة الإقامة 30 درهمًا لكل بالغ في الليلةللتأكيد
RG-09 — رمز RIAD10 يمنح خصمًا 10% على الإقامة فقط دون ضريبة الإقامةللتأكيد
RG-10 — العربون 30% يُحسب على المجموع بعد الخصم مع احتساب الضريبةللتأكيد
CLI-03 — دفع العربون 30%RG-10 — العربون 30% يُحسب على المجموع بعد الخصم مع احتساب الضريبةللتأكيد
CLI-04 — متابعة الحجوزاتRG-11 — الإلغاء ممكن حتى 48 ساعة قبل الوصولمقروءة في الموقع : « Annulation possible jusqu'à 48 h avant l'arrivée. »
CLI-05 — إلغاء الحجزRG-11 — الإلغاء ممكن حتى 48 ساعة قبل الوصولمقروءة في الموقع : « Annulation possible jusqu'à 48 h avant l'arrivée. »
CLI-06 — ترك تقييمRG-12 — نشر التقييمات مقصور على النزلاء الذين أقاموا في الرياضمقروءة في الموقع : « Seuls les hôtes ayant séjourné au riad peuvent publier un avis. »
CLI-07 — التواصل مع الرياضRG-13 — حقل البريد الإلكتروني مطلوب في نموذج الاتصال بحد أقصى 255 حرفًاللتأكيد
RG-14 — حقل الرسالة مطلوب في نموذج الاتصال بحد أقصى 2000 حرفللتأكيد
CPT-01 — إنشاء حساب وتسجيل الدخولRG-15 — كلمة المرور يجب ألا تقل عن 6 أحرف عند تسجيل الدخولمقروءة في الموقع : « Mot de passe »
RG-16 — التسجيل بالبريد الإلكتروني وكلمة المرور مع بريد تأكيدللتأكيد
MGR-02 — حجب التواريخRG-06 — الحد الأدنى للبالغين 1 والأقصى 4للتأكيد
MGR-03 — إدارة الغرف والأسعارRG-01 — سعر غرفة أطلس 900 درهم في الليلة لشخصينمقروءة في الموقع : « Atlas 2 pers. Chambre intime aux tons ocre, vue sur le patio et ses orangers. 900 MAD / nuit »
RG-02 — سعر غرفة ماجوريل 1200 درهم في الليلة لثلاثة أشخاصمقروءة في الموقع : « Majorelle 3 pers. Chambre lumineuse au bleu Majorelle, idéale pour une petite famille. 1 200 MAD / nuit »
RG-03 — سعر جناح الكتبية 1800 درهم في الليلة لأربعة أشخاصمقروءة في الموقع : « Suite Koutoubia 4 pers. Notre plus belle suite : salon privé, cheminée et vue sur les toits de la Médina. 1 800 MAD / nuit »
RG-04 — سعر غرفة النخيل 750 درهم في الليلة لشخصينمقروءة في الموقع : « Palmeraie 2 pers. Chambre douce et verdoyante, inspirée des jardins de la Palmeraie. 750 MAD / nuit »
RG-05 — سعر غرفة منارة 1000 درهم في الليلة لشخصينمقروءة في الموقع : « Menara 2 pers. Chambre élégante aux zelliges verts, ouverte sur la galerie. 1 000 MAD / nuit »
MGR-04 — معالجة رسائل الاتصالRG-13 — حقل البريد الإلكتروني مطلوب في نموذج الاتصال بحد أقصى 255 حرفًاللتأكيد
RG-14 — حقل الرسالة مطلوب في نموذج الاتصال بحد أقصى 2000 حرفللتأكيد
—RG-17 — لا يمكن حجز الغرفة مرتين على تواريخ متداخلةللتأكيد
—RG-18 — لا حجز في الماضي والحد الأدنى ليلة واحدةللتأكيد
—RG-19 — المدير هو المسؤول الإداري الوحيدللتأكيد

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

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

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

المرجعقصة المستخدمالنتيجة المتوقعةالنتيجة المحصّلة والأدلةالتوصية
CN-1En tant que نزيل، je veux حجز غرفة أطلس لليلتين، afin de تأمين إقامتي في الرياض.
VIS-02 · RG-06 · RG-07
الانتقال إلى صفحة التوفر بعد البحث بتواريخ صحيحة وعدد بالغين 2.

مطابق

ردود الخادم

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

سلامة الصفحات المرتبطة: #1, #2, #3, #5, #6, #7, #8, #9, #10, #11

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-1En tant que نزيل، je veux البحث عن جناح الكتبية لأربعة بالغين، afin de حجز أكبر غرفة لعائلتي.
VIS-02 · RG-03 · RG-06
عرض جناح الكتبية ضمن نتائج التوفر للتواريخ المطلوبة.

مطابق

ردود الخادم

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

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-2En tant que زائر، je veux البحث مع طفلين، afin de حجز إقامة عائلية مناسبة.
VIS-02 · RG-07
قبول عدد الأطفال 2 ضمن الحد الأقصى والانتقال إلى صفحة التوفر.

مطابق

ردود الخادم

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

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-3En tant que زائر، je veux مقارنة أسعار الغرف الخمس، afin de اختيار الغرفة المناسبة لميزانيتي.
VIS-01 · RG-01 · RG-02 · RG-03 · RG-04 · RG-05
عرض الغرف الخمس بأسعارها المعلنة بالدرهم في الصفحة الرئيسية.

مطابق

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-4En tant que زائر، je veux إرسال رسالة إلى الرياض، afin de الاستفسار قبل الحجز.
CLI-07 · RG-13 · RG-14
قبول الرسالة بعد تعبئة الحقول المطلوبة وإرسالها دون خطأ.

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

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

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

رفع العائق (لم يُنفَّذ: عنصر غير موجود: input[type=text] — يُؤكَّد لاحقًا) ثم إعادة التنفيذ.
CS-5En tant que زائر، je veux قراءة شروط نشر التقييمات، afin de معرفة من يحق له التقييم.
CLI-06 · RG-12
عرض شرط النشر وعدم وجود تقييمات منشورة حاليًا.

مطابق

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-6En tant que نزيل، je veux عرض حجوزاتي، afin de متابعة حالة حجزي وإلغائه إن لزم.
CLI-04 · RG-11
عرض صفحة الحجوزات مع شرط الإلغاء 48 ساعة قبل الوصول.

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

النص المتوقع غائب: « Mes réservations » (الصفحة: « 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 »)

سلامة الصفحات المرتبطة: #1, #14

تأكيد النتيجة المتوقعة مع فريق العمل ثم إعادة التنفيذ.
CU-1En tant que نزيل مسجل، je veux حجز ماجوريل لليلتين مع رمز RIAD10، afin de دفع عربون محسوب على المجموع بعد الخصم.
قصة من العميل · CLI-02 · RG-09 · RG-10
الوصول إلى مسار حجز ماجوريل؛ التحقق من الخصم والعربون غير ممكن لغياب صفحة الدفع.

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

لم يُنفَّذ: عنصر غير موجود: text=Voir les disponibilités — يُؤكَّد لاحقًا

ردود الخادم

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

سلامة الصفحات المرتبطة: #1, #2, #3, #5, #6, #7, #8, #9, #10, #11

رفع العائق (لم يُنفَّذ: عنصر غير موجود: text=Voir les disponibilités — يُؤكَّد لاحقًا) ثم إعادة التنفيذ.
CU-2En tant que مدير، je veux إيجاد الحجز الجديد في لوحة التسيير، afin de تحضير وصول النزيل.
قصة من العميل · MGR-01 · RG-19
لا يمكن تنفيذ هذا المسار: لا توجد لوحة تسيير في الموقع.

مطابق

سلامة الصفحات المرتبطة: #1, #14

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-1En tant que زائر، je veux البحث دون تاريخ وصول، afin de vérifier أن الحقل مطلوب.
VIS-02 · RG-06
عدم الانتقال إلى صفحة التوفر لأن تاريخ الوصول مطلوب.

مطابق

ردود الخادم

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

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-2En tant que زائر، je veux إدخال مغادرة قبل الوصول، afin de vérifier رفض التواريخ غير المنطقية.
VIS-02 · RG-18
رفض البحث لأن تاريخ المغادرة قبل تاريخ الوصول.

مطابق

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-3En tant que زائر، je veux إدخال صفر بالغين، afin de vérifier الحد الأدنى للبالغين.
VIS-02 · RG-06
رفض القيمة 0 لأن الحد الأدنى للبالغين هو 1.

مطابق

ردود الخادم

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

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-4En tant que زائر، je veux إدخال خمسة بالغين، afin de vérifier الحد الأقصى للبالغين.
VIS-02 · RG-06
رفض القيمة 5 لأن الحد الأقصى للبالغين هو 4.

مطابق

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-5En tant que زائر، je veux إدخال أربعة أطفال، afin de vérifier الحد الأقصى للأطفال.
VIS-02 · RG-07
رفض القيمة 4 لأن الحد الأقصى للأطفال هو 3.

مطابق

سلامة الصفحات المرتبطة: #2, #3, #5, #6, #7, #8, #9, #10, #11, #12

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-6En tant que نزيل، je veux تسجيل الدخول بكلمة مرور خاطئة، afin de vérifier رفض بيانات الاعتماد الخاطئة.
CPT-01 · RG-15
رفض تسجيل الدخول والبقاء في صفحة Connexion.

مطابق

ردود الخادم

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

سلامة الصفحات المرتبطة: #1, #14

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-7En tant que زائر، je veux إرسال نموذج فارغ، afin de vérifier إلزامية الحقول.
CLI-07 · RG-13 · RG-14
عدم إرسال الرسالة لأن الاسم والبريد والرسالة مطلوبة.

مطابق

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-8En tant que زائر، je veux إدخال بريد غير صحيح، afin de vérifier رفض الصيغة الخاطئة.
CLI-07 · RG-13
رفض الإرسال لأن صيغة البريد الإلكتروني غير صحيحة.

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

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

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

رفع العائق (لم يُنفَّذ: عنصر غير موجود: input[type=text] — يُؤكَّد لاحقًا) ثم إعادة التنفيذ.
CL-9En tant que زائر، je veux إرسال رسالة بأحرف خاصة، afin de vérifier قبول المحتوى عند الحد الأقصى.
CLI-07 · RG-14
قبول الأحرف الخاصة والرموز دون خطأ في الإرسال.

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

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

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

رفع العائق (لم يُنفَّذ: عنصر غير موجود: input[type=text] — يُؤكَّد لاحقًا) ثم إعادة التنفيذ.
CL-10En tant que زائر، je veux قراءة الأسئلة الشائعة، afin de معرفة سياسة الدفع والإلغاء.
VIS-01 · RG-09 · RG-11
عرض عناوين الأسئلة فقط دون أجوبة، فلا يمكن التحقق من سياسة الإلغاء أو الرمز.

مطابق

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CN-2بصفتي نزيلاً مسجلاً، أريد حجز غرفة أطلس لليلتين مع رمز RIAD10، لأدفع عربوناً محسوباً على المجموع المخفّض.
الحجز والدفع الإلكتروني · رمز RIAD10 = خصم 10% على الإقامة فقط · ضريبة الإقامة لا تُخفَّض أبداً · العربون 30% يُحسب على المجموع المخفّض شامل الضريبة
ظهور تأكيد الحجز مع رقم الحجز والمبلغ 522 MAD بعد الدفع المحاكى.

مطابق

ردود الخادم

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

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-20بصفتي نزيلاً مسجلاً، أريد حجز جناح الكتبية لليلتين، لأتحقق من صحة حساب العربون والرصيد.
الحجز والدفع الإلكتروني · العربون 30% من المجموع شامل الضريبة
المبالغ معروضة صحيحة: 3720 إجمالي، 1116 عربون، 2604 رصيد.

مطابق

ردود الخادم

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

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-21بصفتي نزيلاً مسجلاً، أريد حجز غرفة النخيل لليلتين، لأتأكد من أن العربون الأدنى محسوب بدقة.
الحجز والدفع الإلكتروني · العربون 30% من المجموع شامل الضريبة
المبالغ معروضة صحيحة: 1620 إجمالي، 486 عربون، 1134 رصيد.

مطابق

ردود الخادم

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

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CS-22بصفتي نزيلاً مسجلاً، أريد حجز غرفة ماجوريل لليلتين مع رمز RIAD10، لأدفع عربوناً على المجموع المخفّض.
الحجز والدفع الإلكتروني · رمز RIAD10 = خصم 10% على الإقامة فقط · ضريبة الإقامة لا تُخفَّض أبداً
العربون بعد الخصم = 684 MAD والضريبة 120 MAD غير مخفّضة.

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

النص المتوقع غائب: « 684 MAD » (الصفحة: « Riad Dar Zitoun Accueil Disponibilités Avis FAQ Contact Mes réservations EN Déconnexion Majorelle Vos coordonnées Nom complet E-mail Téléphone Code promo Appliq »)

ردود الخادم

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

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

تأكيد النتيجة المتوقعة مع فريق العمل ثم إعادة التنفيذ.
CL-20بصفتي نزيلاً مسجلاً، أريد الدفع دون تعبئة بياناتي، لأرى إن كان النظام يمنع الحجز الناقص.
الحجز والدفع الإلكتروني · الاسم والبريد الإلكتروني مطلوبان
لا يتم تأكيد الحجز ويبقى المستخدم في صفحة الحجز.

مطابق

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

ردود الخادم

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

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-21بصفتي نزيلاً مسجلاً، أريد الدفع ببريد إلكتروني خاطئ، لأرى إن كان النظام يرفض الصيغة.
الحجز والدفع الإلكتروني · البريد الإلكتروني يجب أن يكون بصيغة صحيحة
رفض البريد غير الصالح وعدم تأكيد الحجز.

مطابق

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

ردود الخادم

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

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-22بصفتي نزيلاً مسجلاً، أريد تطبيق رمز خصم خاطئ، لأرى إن كان النظام يرفضه دون تغيير المبلغ.
الحجز والدفع الإلكتروني · رمز RIAD10 هو الرمز الصالح الوحيد
الرمز الخاطئ لا يغيّر المجموع ولا العربون.

مطابق

ردود الخادم

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

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

الإبقاء على هذه الحالة في اختبارات عدم التراجع.
CL-23بصفتي نزيلاً مسجلاً، أريد الدفع دون رقم بطاقة، لأرى إن كان النظام يمنع تأكيد الحجز.
الحجز والدفع الإلكتروني · رقم البطاقة مطلوب للدفع المحاكى
لا يتم تأكيد الحجز دون رقم بطاقة.

مطابق

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

ردود الخادم

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

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

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

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

تقرير اختبار موقع رياض دار زيتون (مراكش) — نتائج أولية

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

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

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

  1. سبب واحد ← إصلاح واحدرؤوس أمان غائبة عن إعداد الموقع

    السبب: سبب واحد: إعداد المضيف لا يرسل رؤوس الأمان، فلا سياسة أمان محتوى تمنع تأطير الصفحات، ولا سياسة أذونات تحدّ من صلاحيات المتصفح، ولا رأس يعزل النافذة المفتوحة، وبالتالي تبقى صفحة تسجيل الدخول قابلة للتأطير داخل موقع آخر.

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

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

  2. #1مهمصفحة تسجيل الدخول قابلة للتأطير داخل موقع آخر (Chromium (محرّك Chrome))

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

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

    الملاحظ: Encadrables : /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. #2طفيفرؤوس أمان غائبة عن الموقع (الحاسوب · 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. #3ملاحظةرأس عزل نافذة التصفح غائب (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. #4مهمحقل بدون تسمية في نموذج الاتصال (Chromium (محرّك Chrome))

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

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

    تفاصيل تقنية

    العنوان الأصلي: Accessibilité : champ-sans-libelle (label) (2 occurrence(s) sur 1 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[maxlength="100"] Form elements must have labels

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

  6. سبب واحد ← إصلاح واحدلا موافقة مسبقة على ملفات التتبع

    السبب: سبب واحد: لا شريط موافقة على الموقع، وفي الوقت نفسه تُودَع ملفات تتبع من طرف ثالث أثناء التصفح؛ فالموافقة غائبة أصلا والتتبع يعمل قبلها.

    إصلاح واحد: تركيب أداة موافقة واحدة: شريط واضح يقبل أو يرفض، وحجب ملفات التتبع غير الضرورية قبل الحصول على الموافقة، مع الاحتفاظ بأثر يثبت اختيار الزائر.

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

  7. #5طفيفلا شريط لموافقة الزوار على ملفات التتبع (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.

  8. #6طفيفملفات تتبع تُودَع قبل موافقة الزائر (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 ».

  9. سبب واحد ← إصلاح واحدصفحة رئيسية ثقيلة تُبطئ العرض على الهاتف

    السبب: سبب واحد متكرر: ثقل موارد الصفحة الرئيسية — صورة الواجهة تُحمَّل بوزن يقارب 461 كيلوبايت وهي معروضة بحجم أصغر، وملف برمجي واحد يتجاوز 500 كيلوبايت — مع غياب معالجة التحميل المتأخر والتخزين المؤقت. هذا السبب نفسه يفسّر بطء التحميل المقاس على الهاتف وارتفاع زمن ظهور العنصر الأكبر.

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

    الملاحظات : #7, #8, #9, #10, #11

  10. #7طفيفصورة الواجهة أثقل من حجم عرضها (Chromium (محرّك Chrome))

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

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

    تفاصيل تقنية

    العنوان الأصلي: 1 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

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

  11. #8طفيفتحميل بطيء جدا للصفحة الرئيسية على الهاتف (الهاتف · Chromium (محرّك Chrome))

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

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

    الملاحظ: / 6547 ms

    تفاصيل تقنية

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

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

  12. #9طفيفملف برمجي واحد يتجاوز 500 كيلوبايت (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).

  13. #10طفيفصورة تتجاوز 300 كيلوبايت (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.

  14. #11طفيفبطء غير مؤكد على الهاتف في شبكة ضعيفة (Chromium (محرّك Chrome))

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

    تفاصيل تقنية

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

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

    الملاحظ: LCP 4400 ms, chargement 4346 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.

  15. سبب واحد ← إصلاح واحدالصفحات القانونية غائبة ولا رابط إليها

    السبب: سبب واحد: لا صفحة لسياسة الخصوصية ولا صفحة للمعلومات القانونية، ولا رابط لهما من الصفحة الرئيسية.

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

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

  16. #12طفيفلا رابط إلى سياسة الخصوصية (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.

  17. #13طفيفلا صفحة للمعلومات القانونية (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.

الباقي

0حرج
2مهم
11طفيف
4ملاحظة
  • #14طفيفصفحة تسجيل الدخول مفتوحة للفهرسة (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).

  • #15ملاحظةلا ملف لجهة الاتصال الأمنية (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é.

  • #16ملاحظةترتيب عناوين غير متسلسل في صفحة الأسئلة الشائعة (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é.

  • #17ملاحظةست صفحات بدون عنوان مرجعي (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.

حسب الموضوع

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

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

  1. إتمام اختبار مسار الحجز كاملا: اختيار الغرفة، إنشاء الحجز، دفع العربون، الحصول على رقم الحجز، ثم الإلغاء في الأجل المحدد.
  2. إعادة اختبار حساب العربون مع رمز التخفيض بنسبة 10%، وهي الحالة التي بقيت غير محسومة بعد إعادة اللعب.
  3. إصلاح رؤوس الأمان وموضع رأس منع التأطير على كل الصفحات، والتحقق من النتيجة بعد الإصلاح.
  4. ضغط الصورة الرئيسية وتقسيم الملف البرمجي، ثم إعادة قياس سرعة الصفحة الرئيسية على الهاتف في شبكة ضعيفة.
  5. توفير مرجع بصري وفتح محاور أمان المعطيات والاختبارات الوحدوية واختبارات المكوّنات، وهي محاور بقيت غير مغطاة في هذه الدورة.

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

حدود التغطية

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

    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 : 7 page(s) (7 pages lues sur 7 visitées (mode complet)), contraste mesuré sur 14 texte(s) (clair, et sombre sur 7 page(s)), 280 tabulation(s) (119 é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 7 page(s), 0 PDF lié(s) non audité(s)

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

    Aucune reference approuvee : approuve un passage comme reference.

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

    2 pages, 33 actions relevées, 0 action jouée (lecture seule) — rôle « [email] »

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

    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 7 visitées (mode complet), 10 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

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

    19 cas conçus (1 nominal, 8 secondaires, 10 limites) ; joués : 19 (mode complet : CN-1, CS-1, CS-2, CS-3, CS-4, CS-5, CS-6, CU-1, CU-2, CL-1, CL-2, CL-3, CL-4, CL-5, CL-6, CL-7, CL-8, CL-9, CL-10) ; 14 réussis / 0 échecs / 0 bloqués / 4 non jouables ; 1 attendu(s) deviné(s) par le BA non vérifié(s) : à confirmer par le client (non déclarés) — CS-6 ; CS-4 non joué : élément introuvable : input[type=text] — à confirmer ; CU-1 non joué : élément introuvable : text=Voir les disponibilités — à confirmer ; CL-8 non joué : élément introuvable : input[type=text] — à confirmer ; CL-9 non joué : élément

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

    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) : 17 sélecteur(s) sur 7 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

مدد الاختبار
  • 6695 msplan du site (0 adresse(s) à visiter en plus)
  • 13525 mscréation des comptes de recette (1/1 créé(s))
  • 2201 msnavigation bureau p1 (chargement 569, réseau calme 1616, relevés 16)
  • 5979 msa11y bureau p1
  • 253 msfocus clavier bureau p1
  • 2204 mscapture bureau p1
  • 1154 msnavigation bureau p2 (chargement 486, réseau calme 655, relevés 13)
  • 604 msa11y bureau p2
  • 181 mscapture bureau p2
  • 1516 msnavigation bureau p3 (chargement 560, réseau calme 938, relevés 18)
  • 754 msa11y bureau p3
  • 127 mscapture bureau p3
  • 1104 msnavigation bureau p4 (chargement 422, réseau calme 667, relevés 15)
  • 661 msa11y bureau p4
  • 109 mscapture bureau p4
  • 1147 msnavigation bureau p5 (chargement 393, réseau calme 742, relevés 12)
  • 787 msa11y bureau p5
  • 117 mscapture bureau p5
  • 1113 msnavigation bureau p6 (chargement 416, réseau calme 683, relevés 14)
  • 745 msa11y bureau p6
  • 129 mscapture bureau p6
  • 2964 msconnexion avec le compte de test (client) (réussie)
  • 1342 msnavigation bureau p1 (chargement 434, réseau calme 887, relevés 21)
  • 631 msa11y bureau p1
  • 87 mscapture bureau p1
  • 1680 msnavigation bureau p2 (chargement 527, réseau calme 1135, relevés 18)
  • 778 msa11y bureau p2
  • 1787 mscapture bureau p2
  • 477 mssondes (robots.txt, pages inexistantes, paramètres, limites)
  • 91 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 2 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)
  • 8794 msrgpd (visite en navigateur neuf + capture)
  • 7317 msnavigation telephone p1 (chargement 6554, réseau calme 747, relevés 16)
  • 5754 msa11y telephone p1
  • 817 mscapture telephone p1
  • 1112 msnavigation telephone p2 (chargement 466, réseau calme 632, relevés 14)
  • 500 msa11y telephone p2
  • 55 mscapture telephone p2
  • 1302 msnavigation telephone p3 (chargement 395, réseau calme 891, relevés 16)
  • 550 msa11y telephone p3
  • 65 mscapture telephone p3

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

موافقة بشروطالموقع يعرض الغرف الخمس بأسعارها ويسمح بالبحث عن التوفر حسب التواريخ وعدد البالغين والأطفال، وقد نجحت كل حالات البحث والتحقق من المدخلات (CN-1، CS-1، CS-2، CS-3، CL-1 إلى CL-5). لكن المسار الذي يُدخل المال فعلاً (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%، الإلغاء) لم يُغطَّ بالكامل: CLI-01 وCLI-03 وCLI-05 غير مغطاة، وCLI-02 محجوب، وحالة التحقق من العربون مع رمز RIAD10 (CS-22) بقيت «à confirmer» بعد إعادة اللعب (I1: غير حاسم). لذلك لا يمكن إصدار GO، والموافقة مشروطة بإتمام اختبار مسار الحجز والدفع والإلغاء من البداية إلى النهاية.

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

  • 21 حالة مطابقة من 27 منفّذة؛ 0 غير مطابقة؛ 2 غير حاسمة؛ 4 متوقفة.
  • السلامة التقنية: 0 حرجة، 2 كبيرة، 15 صغيرة.

رأي الخبير

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

الحجج

  1. البحث عن التوفر والتحقق من المدخلات يعملان بشكل صحيح على الحالات المختبرة (تواريخ ناقصة أو معكوسة، صفر بالغين، تجاوز الحد الأقصى للبالغين والأطفال). (قوي)
    الأدلة : CN-1, CS-1, CS-2, CL-1, CL-2, CL-3, CL-4, CL-5
  2. عرض الغرف الخمس وأسعارها من الصفحة الرئيسية يعمل، ما يدعم وضوح العرض التجاري. (متوسط)
    الأدلة : CS-3, processus:VIS-01, https://riad-connect-hub.lovable.app/
  3. المسار الذي يُدخل المال (اختيار الغرفة، إنشاء الحجز، دفع العربون 30%) غير مُغطّى أو محجوب، فلا يمكن تأكيد سلامة حساب العربون والخصم على المسار الكامل. (قوي)
    الأدلة : processus:CLI-01, processus:CLI-02, processus:CLI-03, CU-1, I2, I7
  4. التحقق من مبلغ العربون مع رمز RIAD10 (CS-22) بقي «à confirmer» وإعادة اللعب (I1) كانت غير حاسمة، بينما نجحت حالات الحساب بدون رمز (CS-20، CS-21) وأُعيد لعبها بنجاح. (قوي)
    الأدلة : CS-22, I1, CS-20, I4, CS-21, I5
  5. الإلغاء حتى 48 ساعة قبل الوصول، وهو وعد مكتوب للعميل، لم يُختبر فعليًا لعدم وجود حجز قائم ولا زر إلغاء ظاهر. (قوي)
    الأدلة : processus:CLI-05, https://riad-connect-hub.lovable.app/my-
  6. صفحة «حجوزاتي» تعمل بعد تسجيل الدخول (CS-6 نجح في إعادتَي لعب)، ما يدعم متابعة الحجز من طرف النزيل. (متوسط)
    الأدلة : CS-6, I3, processus:CLI-04
  7. التحقق من المدخلات في صفحة الحجز يعمل على الحالات المختبرة (اسم وبريد فارغان، بريد غير صحيح، رمز خصم غير صحيح، بطاقة غائبة). (متوسط)
    الأدلة : CL-20, CL-21, CL-22, CL-23
  8. واجهات الإدارة (حجب التواريخ، إدارة الغرف والأسعار، معالجة رسائل الاتصال) غير موجودة في الموقع، فلا يمكن اختبارها من الخارج. (متوسط)
    الأدلة : processus:MGR-02, processus:MGR-03, processus:MGR-04
  9. نموذج الاتصال لم يُختبر فعليًا: CS-4 وCL-8 وCL-9 غير قابلة للعب (عنصر الإدخال غير موجود) وإعادة اللعب (I8) كانت غير حاسمة. (متوسط)
    الأدلة : CS-4, CL-8, CL-9, I8, processus:CLI-07
  10. لا توجد ثغرات أمنية مكتشفة في الملفات الحساسة المسبورة (11 ملفًا، 0 مكشوف)، وهذا لا يغطي أمن البيانات لعدم وجود قاعدة بيانات مكتشفة. (ضعيف)
    الأدلة : couverture:Securite applicative, couverture:Securite des donnees

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

  • خطأ محتمل في حساب العربون أو تطبيق رمز RIAD10 على المسار الكامل لم يُتحقق منه (CS-22 غير حاسم، I1).
  • عدم إمكانية تأكيد أن الإلغاء حتى 48 ساعة يعمل فعليًا (CLI-05 غير مغطى).
  • عدم إمكانية تأكيد أن الحجز يُنشئ رقم حجز ويُرسل تأكيدًا للنزيل (CLI-02 محجوب، I2).
  • عدم إمكانية تأكيد منع الحجز المزدوج على تواريخ متداخلة (RG-17 خارج نطاق الاختبار).
  • نموذج الاتصال قد يكون معطلاً أو غير قابل للاستخدام (CS-4، CL-8، CL-9 غير قابلة للعب).
  • غياب واجهات الإدارة يعني عدم إمكانية تأكيد تسيير التقويم وحجب التواريخ والأسعار من الخارج.
  • أمن البيانات غير مُختبر لعدم اكتشاف قاعدة بيانات.

الشروط

  • اختبار مسار الحجز الكامل من البداية إلى النهاية: اختيار الغرفة (CLI-01)، إنشاء الحجز والملخص (CLI-02)، دفع العربون 30% (CLI-03)، والحصول على رقم الحجز.
  • إعادة اختبار CS-22 (حساب العربون على غرفة ماجوريل مع رمز RIAD10) حتى نتيجة حاسمة، والتأكد من أن الخصم يُطبَّق على الإقامة فقط وأن العربون يُحسب على المجموع المخفّض شاملًا ضريبة الإقامة.
  • اختبار الإلغاء فعليًا على حجز قائم والتحقق من احترام شرط 48 ساعة قبل الوصول (CLI-05).
  • اختبار منع الحجز المزدوج على تواريخ متداخلة (RG-17).
  • إعادة اختبار نموذج الاتصال (CS-4، CL-8، CL-9) بعد إصلاح أو تحديد عنصر الإدخال، والتأكد من وصول الرسائل إلى المدير.
  • توفير واجهات الإدارة واختبار MGR-02 وMGR-03 وMGR-04 (حجب التواريخ، إدارة الغرف والأسعار، معالجة رسائل الاتصال).

نطاق الرأي

  • مختبَر : تصفح الموقع والتعرف على الغرف (VIS-01)، البحث عن التوفر (VIS-02)، متابعة الحجوزات (CLI-04، CS-6)، ترك تقييم (CLI-06، CS-5)، إنشاء حساب وتسجيل الدخول (CPT-01، CL-6)، تسيير تقويم الحجوزات (MGR-01، CU-2)، التحقق من المدخلات في البحث والحجز (CL-1 إلى CL-5، CL-20 إلى CL-23)، الأداء (Core Web Vitals على 5 صفحات)، الأمان التطبيقي (11 ملفًا حساسًا)، الامتثال (سياسة الخصوصية، الإشعارات القانونية)، المرونة (بدون خدمة عاملة)، من البداية إلى النهاية حسب الدور (صفحتان متصلتان)
  • غير مختبَر : اختيار الغرفة (CLI-01)، إنشاء الحجز والملخص (CLI-02، محجوب)، دفع العربون 30% (CLI-03)، إلغاء الحجز (CLI-05)، التواصل مع الرياض (CLI-07، CS-4/CL-8/CL-9 غير قابلة للعب)، حجب التواريخ (MGR-02)، إدارة الغرف والأسعار (MGR-03)، معالجة رسائل الاتصال (MGR-04)، إنشاء حساب جديد وبريد التأكيد (CPT-01، RG-16)، منع الحجز المزدوج على تواريخ متداخلة (RG-17)، أمن البيانات (لا قاعدة بيانات مكتشفة)، واجهة API (لا مواصفات OpenAPI)، CLI-04 متابعة الحجوزات : cas conçus, non joués dans ce mode

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

يثبت Avalyz ما رآه ولا يضمن الباقي: ما لم يُختبر غير مشمول. دون حساب اختبار لا تُستكشف الصفحات المتصلة؛ ومع حساب اختبار، تسجيل الدخول هو النموذج الوحيد المُرسل.

التقرير الكامل للحساب (المسارات، الأدلة، صيغة ISO 29119) مخصص للحسابات.

English · Français · العربية