ক্রোমিয়াম ক্রনিকল #4: WPT এর সাথে আপনার ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্যগুলি পরীক্ষা করুন৷

পর্ব 4: ওয়াটারলুতে রবার্ট দ্বারা, ON (জুলাই, 2019)
আগের পর্বগুলো

আপনি যদি ব্লিঙ্কে কাজ করেন, আপনি ওয়েব_টেস্ট (পূর্বে লেআউট টেস্ট) সম্পর্কে জানতে পারেন। web-platform-tests (WPT) web_test/external/wpt এর ভিতরে থাকে। WPT হল ওয়েব-উন্মুক্ত বৈশিষ্ট্যগুলি পরীক্ষা করার পছন্দের উপায় কারণ এটি GitHub এর মাধ্যমে অন্যান্য ব্রাউজারগুলির সাথে ভাগ করা হয়৷ এটির দুটি প্রধান ধরণের পরীক্ষা রয়েছে: reftests এবং testharness.js পরীক্ষা।

রিফটেস্ট দুটি পৃষ্ঠার স্ক্রিনশট নেয় এবং তুলনা করে। ডিফল্টরূপে, load ইভেন্ট ফায়ার হওয়ার পরে স্ক্রিনশট নেওয়া হয়; আপনি যদি <html> এলিমেন্টে একটি reftest-wait ক্লাস যোগ করেন, ক্লাসটি সরানো হলে স্ক্রিনশট নেওয়া হবে। অক্ষম পরীক্ষা মানে পরীক্ষার কভারেজ হ্রাস করা। হরফ-সম্পর্কিত অস্বচ্ছতা সম্পর্কে সচেতন হোন; সম্ভব হলে 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 সেকেন্ড বিলম্ব করে। আরও জানতে web-platform-tests.org- এ "পাইপ" অনুসন্ধান করুন।

ডাব্লুপিটি এমন আচরণগুলিও পরীক্ষা করতে পারে যা এখনও স্পেসগুলিতে অন্তর্ভুক্ত নয়; পরীক্ষার নাম শুধু .tentative হিসাবে। আপনার যদি ব্লিঙ্ক অভ্যন্তরীণ API (যেমন 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 ব্যবহার করুন।
  • APIs, নির্দেশিকা, উদাহরণ, টিপস এবং আরও অনেক কিছুর উপর আরও ডকুমেন্টেশন খুঁজছেন? web-platform-tests.org এ যান।