قسمت 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://{{hosts[][www1]}}:{{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 دیدن کنید.