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 הוא framework של 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. אם דרוש לך ממשקי 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.