0%
المحدِّدات وآليات الانتظار

المحدِّدات وآليات الانتظار

تكاد تنشأ كل الاختبارات غير المستقرة من سباق بين التأكيد الذي تكتبه والمتصفح

10-15 دقيقة

المحدِّدات وآليات الانتظار

يفشل اختبار الدفع مرة واحدة من كل اثنتي عشرة مرة في التكامل المستمر. هو الاختبار نفسه دائمًا، وعند السطر نفسه دائمًا، ولا يفشل أبدًا على جهازك. تضيف await page.waitForTimeout(500) قبل التأكيد، فيصبح الاختبار أخضر ثلاثة أسابيع، ثم ينكسر من جديد في يوم يكون فيه الخادم مثقلًا بالعمل. ترفع المهلة إلى 2000 مللي ثانية، فيرتفع زمن تشغيل المجموعة من ست دقائق إلى إحدى عشرة دقيقة، وتبقى المشكلة قائمة وستعود.

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

محدِّدات تصمد أمام إعادة التصميم

المحدِّد (localisateur / locator) وصف لعنصر، يُعاد تقييمه عند كل استخدام. وإعادة التقييم هذه هي ما يتيح له الانتظار، وهي أيضًا ما يجعل اختياره حاسمًا.

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!