Chromium Chronicle #4: ویژگی های پلتفرم وب خود را با WPT آزمایش کنید

قسمت 4: توسط رابرت در واترلو، ON (ژوئیه، 2019)
قسمت های قبلی

اگر روی Blink کار می کنید، ممکن است از web_tests (که قبلا LayoutTests نامیده می شد) بدانید. web-platform-tests (WPT) در داخل web_test/external/wpt زندگی می کند. WPT روش ترجیحی برای آزمایش ویژگی های تحت وب است زیرا از طریق GitHub با سایر مرورگرها به اشتراک گذاشته می شود. این دو نوع تست اصلی دارد: reftests و testharness.js .

مجدداً اسکرین شات های دو صفحه را می گیرد و مقایسه می کند. به طور پیش‌فرض، تصاویر پس از اجرای رویداد load گرفته می‌شوند. اگر یک کلاس reftest-wait را به عنصر <html> اضافه کنید، با حذف کلاس، اسکرین شات گرفته خواهد شد. تست های غیرفعال به معنای کاهش پوشش آزمون است. از پوسته پوسته شدن مربوط به فونت آگاه باشید. در صورت امکان از فونت Ahem استفاده کنید.

testharness.js یک چارچوب جاوا اسکریپت برای آزمایش هر چیزی به جز رندر است. هنگام نوشتن تست‌های 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 به سرصفحه های پاسخ اضافه می کند و 1 ثانیه قبل از پاسخ دادن به تاخیر می افتد. برای اطلاعات بیشتر، "pipes" را در web-platform-tests.org جستجو کنید.

WPT همچنین می‌تواند رفتارهایی را آزمایش کند که هنوز در مشخصات گنجانده نشده‌اند. فقط آزمون را به صورت .tentative نامگذاری کنید. اگر به APIهای داخلی 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 استفاده کنید.
  • به دنبال مستندات بیشتر در مورد API ها، دستورالعمل ها، مثال ها، نکات و موارد دیگر هستید؟ از web-platform-tests.org دیدن کنید.