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

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

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

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

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 में भी बदलाव लगातार इंपोर्ट किया जाता है. नई गड़बड़ियां मिलने पर, गड़बड़ी के अपने-आप दर्ज होने की सूचना पाने के लिए इंपोर्ट किए जाने के बाद, 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 पर जाएं.