The Chromium Chronicle #4: WPT के साथ अपने वेब प्लैटफ़ॉर्म की सुविधाओं का परीक्षण करें

एपिसोड 4: वॉटरलू में रॉबर्ट का गाया हुआ, ऑन (जुलाई 2019)
पिछले एपिसोड

अगर Blink पर काम किया जा रहा है, तो शायद आपको web_tests के बारे में जानकारी होगी. इसे पहले LayoutTests के नाम से जाना जाता था. web-platform-test (WPT) web_test/external/wpt में मौजूद होता है. डब्ल्यूपीटी, वेब पर दिखने वाली सुविधाओं की जांच करने का पसंदीदा तरीका है, क्योंकि इसे GitHub के ज़रिए दूसरे ब्राउज़र के साथ शेयर किया जाता है. इसमें दो मुख्य तरह के टेस्ट होते हैं: reftests और testharness.js टेस्ट.

रेफ़र टेस्ट दो पेजों के स्क्रीनशॉट लेते हैं और उनकी तुलना करते हैं. डिफ़ॉल्ट रूप से, load इवेंट के चालू होने के बाद स्क्रीनशॉट लिए जाते हैं. अगर <html> एलिमेंट में reftest-wait क्लास जोड़ी जाती है, तो क्लास को हटाने पर स्क्रीनशॉट लिया जाएगा. बंद किए गए टेस्ट का मतलब है, टेस्ट कवरेज को कम करना. फ़ॉन्ट से जुड़े गड़बड़ी के बारे में ध्यान रखें. अगर हो सके, तो 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, टेस्ट को नीचे दिए गए सर्वर-साइड रिप्लेसमेंट सपोर्ट के साथ, एचटीटीपीएस पर लोड करने के लिए कहता है:

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 पर "पाइप" खोजें.

डब्ल्यूपीटी उन व्यवहारों की भी जांच कर सकता है जिन्हें अभी तक खास जानकारी में शामिल नहीं किया गया है; सिर्फ़ टेस्ट का नाम .tentative रखें. अगर आपको Blink के इंटरनल एपीआई (जैसे, testRunner, internals) की ज़रूरत है, तो अपने टेस्ट web_tests/wpt_internal में रखें.

WPT में किए गए बदलाव अपने-आप GitHub पर एक्सपोर्ट हो जाते हैं. आपको अपने CL में, बॉट की टिप्पणियां दिखेंगी. दूसरे वेंडर के GitHub में किए गए बदलाव भी लगातार इंपोर्ट किए जाते हैं. नई गड़बड़ी इंपोर्ट होने पर, अपने-आप फ़ाइल हुए बग पाने के लिए, WPT की सबडायरेक्ट्री में OWNERS फ़ाइल बनाएं:

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

जानकारी पाने के दूसरे तरीके

  • क्या आप यह पता करना चाहते हैं कि दूसरे ब्राउज़र पर आपके टेस्ट कैसे चलते हैं और आपकी सुविधा कितनी इंटरऑपरेबल है? wpt.fyi का इस्तेमाल करें.
  • क्या आपको एपीआई, दिशा-निर्देशों, उदाहरणों, सलाह वगैरह से जुड़े और दस्तावेज़ चाहिए? web-platform-tests.org पर जाएं.