The Chromium Chronicle #4: اختبار ميزات النظام الأساسي للويب باستخدام WPT

الحلقة 4: من تأليف "روبرت في واترلو"، أونتاريو (تموز/يوليو 2019)
الحلقات السابقة

إذا كنت تستخدم Blink، ربما تعرف عن web_tests (المعروف سابقًا باسم LayoutTests). اختبارات النظام الأساسي للويب (WPT) موجودة في web_test/external/wpt. ويعد WPT وهي الطريقة المفضلة لاختبار الميزات التي تظهر على الويب عند مشاركتها مع المتصفحات عبر GitHub. وهي تتضمّن نوعَين رئيسيَين من الاختبارات، هما: reftests اختبار testharness.js.

تأخذ reftests لقطات شاشة لصفحتَين وتقارن بينهما. وبشكلٍ تلقائي، تُشير لقطات الشاشة يتم اتخاذها بعد تنشيط حدث load؛ إذا أضفت فئة reftest-wait إلى العنصر <html>، سيتم أخذ لقطة الشاشة عند إزالة الفئة. يؤدي إيقاف الاختبارات إلى انخفاض تغطية الاختبارات. كن على دراية بالخطوط تقشرة واستخدِم الخط Ahem متى أمكن.

testharness.js هو إطار عمل JavaScript لاختبار أي شيء باستثناء العرض. عند كتابة اختبارات testharness.js، انتبه إلى التوقيت، وتذكّر تنظيف البيانات في جميع أنحاء العالم

المهلة غير المستقرة الحالات المحتملة تسريب المعلومات:

الإجراءات غير المُوصى بها
<script>
promise_test(async t => {
  assert_equals(await slowLocalStorageTest(), "expected", "message");
  localStorage.clear();
});
</script>

اختبار أفضل مع مهلة طويلة تنظيف:

الإجراءات الموصى بها
<meta name="timeout" content="long">
<script>
promise_test(async t => {
  t.add_cleanup(() => localStorage.clear());
  assert_equals(await slowLocalStorageTest(), "expected", "message");
});
</script>

استخدِم testdriver.js إذا كنت بحاجة إلى التشغيل الآلي إذا لم تكن بحاجة إلى ذلك على الويب. يمكنك الحصول على إيماءة مستخدم من "test_driver.bless"، لإنشاء إيماءة معقدة الإدخالات الموثوق بها مع test_driver.action_sequence وما إلى ذلك

يوفر WPT أيضًا بعض الميزات المفيدة من جهة الخادم من خلال أسماء الملفات. تُجري الاختبارات المتعددة الأغراض (.any.js وأصدقائها) الاختبارات نفسها في النطاقات (window، worker، إلخ.) يطلب .https.sub.html تحميل الاختبار. عبر HTTPS مع دعم الاستبدال من جهة الخادم على النحو التالي:

var anotherOrigin = "https://&#123;&#123;hosts[][www1]}}:&#123;&#123;ports[https][0]}}/path/to/page.html";

يمكن أيضًا تفعيل بعض الميزات في سلاسل طلبات البحث. تفعِّل الدالة baz.html?pipe=sub|header(X-Key,val)|trickle(d1) الاستبدال وتضيف X-Key: val. إلى عناوين الرد، ويؤخر ثانية واحدة قبل الرد. البحث عن "الممرات" على web-platform-tests.org للاطّلاع على مزيد من المعلومات.

بإمكان WPT أيضًا اختبار السلوكيات التي لم يتم تضمينها في المواصفات بعد، باسم الاختبار باسم .tentative. إذا كنت بحاجة إلى واجهات برمجة تطبيقات داخلية في Blink (مثل testRunner، internals)، ضع اختباراتك في web_tests/wpt_internal.

يتم تلقائيًا تصدير التغييرات التي أُجريت على WPT إلى GitHub. سترى التعليقات الواردة من برنامج تتبُّع في قائمة الإحالات الناجحة (CL). تشمل التغييرات في GitHub من المورّدين الآخرين أيضًا يتم استيرادها باستمرار الحصول على الأخطاء التي تم الإبلاغ عنها تلقائيًا عند حدوث أخطاء جديدة قم بإنشاء ملف OWNERS في دليل فرعي في WPT:

# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org

موارد إضافية

  • معرفة كيفية إجراء اختباراتك على المتصفحات الأخرى ومدى توافقها مع البرامج الأخرى الميزة التي تستخدمها؟ استخدِم wpt.fyi.
  • هل تبحث عن المزيد من المستندات حول واجهات برمجة التطبيقات والإرشادات والأمثلة والنصائح وغير ذلك؟ انتقِل إلى web-platform-tests.org.