اختبار تسجيل الدخول بدون كلمة مرور دون فوضى في صندوق الوارد

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

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

يجب عليك التعامل مع المصادقة بدون كلمة مرور كنظام كامل. ستحتاج إلى اختبار عميل JavaScript، والخلفية البرمجية (Node.js backend)، وتسليم البريد الإلكتروني، والجلسة. إذا تجاهلت صندوق الوارد، فقد تطلق عملية معطلة حتى لو نجحت اختبارات الـ API الخاصة بك.

تشمل الإخفاقات الشائعة ما يلي:

  • ترسل الخلفية البرمجية رابطين بعد إعادة المحاولة.
  • يشير البريد الإلكتروني إلى المضيف (host) الخاطئ.
  • يعمل الرابط القديم لفترة أطول مما ينبغي.
  • تقوم الواجهة الأمامية (frontend) بتحديد المستخدم كمسجل دخول قبل تعيين ملف تعريف الارتباط (cookie).

استخدم صندوق وارد معزولاً لكل عملية اختبار. هذا يمنع تسرب بيانات الاختبار إلى صناديق بريد الفريق. استخدم خدمات البريد الإلكتروني المؤقتة لبيئة الاختبار للحفاظ على استقلالية عمليات التشغيل.

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

الاختبار الجيد يتحقق من هذه الخطوات بالترتيب:

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

في جانب Node.js، قم بإرفاق معرف ارتباط (correlation ID) بسجلاتك (logs). استخدمه بدءاً من الطلب وصولاً إلى إرسال البريد الإلكتروني والجلسة النهائية. يساعدك هذا في العثور على الأخطاء عندما تكون رسائل البريد الإلكتروني بطيئة أو مكررة.

لا تستبدل جميع اختباراتك باختبارات البريد الإلكتروني. استخدم اختبارات الوحدة (unit tests) السريعة لمنطق الرموز (token logic) وقواعد الجلسة. استخدم مسار البريد الإلكتروني لإثبات أن تجربة المستخدم الحقيقية تعمل بشكل صحيح.

قائمة التحقق قبل الإطلاق:

  • طلب تسجيل دخول واحد ينشئ رابطاً نشطاً واحداً فقط.
  • أحدث بريد إلكتروني يسهل تحليله (parse) في بيئة الاختبار.
  • يعمل الرابط على المضيف الصحيح.
  • لا يمكن إعادة استخدام الرابط.
  • تسجيل الخروج وإعادة تسجيل الدخول ينشئ رمزاً (token) جديداً ونظيفاً.

المصدر: https://dev.to/ryanlee91/how-to-test-passwordless-login-emails-in-javascript-without-inbox-chaos-56d0