تقدم الساعة، وليس وقت التشغيل الاختباري.
اختبر انتهاء الصلاحية من جانب المتصفح مع التحكم في الوقت، مع الحفاظ على وقت الخادم والانتظار الحقيقي خارج نطاق المطالبة.

طبعة مترجمة. تظل المعرفات الفنية في شكلها الأصلي.

يظهر تذكير بعد فترة خمول طويلة. الاختبار ينتظر طوال الفترة. وهذا يجعل تشغيل المجموعة مكلفًا، لذا يقوم شخص ما بتقليل التأخير في إنشاء خاص. الآن لم يعد الاختبار يمارس نفس قاعدة التوقيت. يوفر وقت المتصفح الذي يتم التحكم فيه مسارًا آخر، بشرط تسمية النتيجة بأمانة.
يستخدم هذا الدليل وثائق الساعة Playwright للتحقق من تذكير محلي صغير. إن صورتها عبارة عن عد تنازلي مخترع، وليست جلسة إنتاج أو معيار أداء. نحن نتحكم في الوقت من جانب المتصفح لممارسة السلوك المحدد. نحن لا ندعي أن تقديم تلك الساعة يؤدي إلى تغيير خادم بعيد، أو انتهاء صلاحية رمز مميز حقيقي، أو إعادة إنشاء كل شرط جدولة.
##فصل ساعة الحائط عن المؤقت
يمكن للتطبيق قراءة التاريخ الحالي أو جدولة المهلة أو التحديث على فترات زمنية. وترتبط هذه الآليات ببعضها البعض، لكن الاختبار يحتاج إلى معرفة أي منها يحرك السلوك. إن تسمية التاريخ التي تشير إلى الغد ورد الاتصال الذي يتم تشغيله خلال ستين ثانية هما عقدان مختلفان.
يصف دليل الساعة الخاص بـ Playwright التحكم في واجهات برمجة تطبيقات الوقت، بما في ذلك التاريخ والمؤقتات. تعمل طريقة الوقت الثابت الخاصة بها على تغيير الوقت المُبلغ عنه دون تقديم الموقتات. يوفر تثبيت الساعة إعدادًا أوسع يمكن التحكم فيه. اختر الطريقة من القاعدة الفعلية للتطبيق، وليس من أي مثال يسهل لصقه.
بالنسبة للعرض التوضيحي الخاص بنا، تقوم الصفحة بجدولة تذكير من خلال setTimeout. قم بتثبيت الساعة التي يتم التحكم فيها قبل بدء تشغيل رمز توقيت الصفحة. ثم انتقل عبر جدول رد الاتصال بشكل متعمد:
await page.clock.install();
await page.setContent(`
<p role="status">Waiting</p>
<script>
setTimeout(() => {
document.querySelector('[role=status]').textContent = 'Reminder ready';
}, 60000);
</script>
`);
await page.clock.runFor(60000);
await expect(page.getByRole('status')).toHaveText('Reminder ready');يستخدم المقتطف أداة تثبيت HTML محلية وتوقع Playwright مستورد. إنه مثال على الآلية، وليس ميزة تذكير كاملة. يجب أن يتحقق الاختبار أيضًا مما يمكن للشخص فعله بعد ظهور التذكير وما يحدث عندما يرفضه. لا يمكن للوقت المتقدم أن يوفر قرارات المنتج تلك.
اختر كيفية عمل عمليات الاسترجاعات الفائتة
يميز دليل الساعة التقدم عبر الموقتات عن وقت القفز. اقرأ هذا التمييز قبل استبدال الانتظار الطويل. قد يتصرف النظام الذي يتم تحديثه مرة واحدة في الثانية بشكل مختلف إذا تم تشغيل كل رد اتصال مجدول مقابل قفزة تحاكي تنبيه المتصفح بعد التوقف المؤقت.
استخدم runFor عندما يتطلب السيناريو المحدد التقدم من خلال عمليات الاسترجاعات المجدولة. فكر في fastForward لسيناريو مختلف يكون فيه سلوك التوقيت المفقود مهمًا، مع اتباع الدلالات الموثقة. لا تعامل العمليتين على أنهما قابلتين للتبادل لمجرد أن كليهما تصلان إلى وقت لاحق. يجب أن يوضح اسم الاختبار الموقف الذي يمثله.
احتفظ بحالة صغيرة للحدود قبل التذكير مباشرة وأخرى للنقطة التي يجب أن تظهر فيها. بالنسبة لمؤقت التكرار، أضف قاعدة التكرار فقط إذا وعدتك الميزة بذلك. يمكن أن يؤدي التأكيد النهائي الوحيد إلى تفويت تذكير مبكر أو عدة إشعارات مكررة.
وقت المتصفح ليس ساعة الخادم
قد تنتهي صلاحية الجلسة الحقيقية وفقًا لسياسة الخادم. إن تحريك ساعة المتصفح لا يغير هذه السياسة. يمكن أن يشير العد التنازلي لواجهة المستخدم إلى انتهاء الصلاحية بينما لا يزال الخادم يقبل الطلب، أو يمكن للخادم رفضه قبل إشعارات واجهة المستخدم. هذه قطع مختلفة من الأدلة لاختبارها بشكل منفصل.
بالنسبة لميزة تمت المصادقة عليها، حدد ما إذا كان مصدر الحقيقة هو استجابة الخادم أو الطابع الزمني لانتهاء الصلاحية أو المؤقت المحلي. استخدم مدخلات التدريج المعتمدة والهويات الخاضعة للرقابة. لا تقم مطلقًا بتغيير جلسة الحساب المباشر أو ساعة نظام الجهاز لمجرد التحقق من التوقيت التوضيحي بشكل مناسب.
المنطقة الزمنية واللغة المحلية هي حدود أخرى. لا يتحقق اختبار المؤقت تلقائيًا من صحة الموعد النهائي للتقويم حول تغييرات التوقيت الصيفي أو التاريخ المعروض في كل لغة. قم بإضافة تلك الحالات من المتطلبات الحقيقية بدلاً من توسيع معنى نتيجة خضراء واحدة.
اترك عقدًا زمنيًا مفيدًا للمراجعين
قم بتسجيل مصدر الوقت والآلية المثبتة والحالة الأولية والعملية المتقدمة والحدود المتوقعة. تتيح هذه الملاحظة القصيرة لأحد أعضاء الفريق فهم سبب عدم سكون الاختبار لمدة دقيقة وما هو السلوك الذي لا يزال يحميه. إذا فشل الاختبار لاحقًا، فافحص ما إذا كان التطبيق قد نقل التوقيت إلى طبقة أخرى قبل زيادة فترات الانتظار العشوائية.
يصف AnyTest الوكلاء الذين يستكشفون أحد التطبيقات وينشئون اختبارات شاملة للمراجعة البشرية. استخدم عقد التوقيت لمراجعة أي رحلة انتهاء مقترحة. لا يؤكد هذا الدليل على ميزة التحكم في الساعة AnyTest أو تكامل العداء. تكون الاختبارات الأسرع مفيدة عندما يحتفظ الاختصار بالسؤال، وليس عندما يستبدل بساعة مختلفة بصمت.
الأسئلة الشائعة
هل ينتهي وقت المتصفح أثناء جلسة الخادم؟
لا. لا تتحكم ساعة المتصفح في ساعة الخادم البعيد أو سياسة الجلسة الخاصة به.
هل يمكن استبدال runFor و fastForward؟
لا. حدد سلوك رد الاتصال الموثق الخاص بهم لسيناريو التوقيت المحدد.