Chromium Chronicle #4: Web Platformu Özelliklerinizi WPT ile test edin

4. Bölüm:, Robert tarafından Waterloo, ON'da (Temmuz 2019)
Önceki bölümler

Blink üzerinde çalışıyorsanız web_tests (eski adıyla LayoutTests) özelliğini biliyor olabilirsiniz. web-platform-tests (WPT) web_test/external/wpt içinde bulunur. WPT diğer kullanıcılarla paylaşıldığından, web'de kullanıma sunulan özellikleri test etmenin tercih edilen yöntemi gitmem gerekti. İki temel test türü vardır: reftests ve testharness.js testleridir.

reftests iki sayfanın ekran görüntülerini alıp karşılaştırır. Varsayılan olarak, ekran görüntüleri load etkinliği tetiklendikten sonra alınır; reftest-wait sınıfı eklerseniz öğesini <html> öğesine eklediğinizde ekran görüntüsü sınıf kaldırıldığında alınır. Testlerin devre dışı bırakılması, test kapsamının daralmasına neden olur. Yazı tipi ve gevşeklik; Mümkün olduğunda Ahem yazı tipini kullanın.

testharness.js herhangi bir şeyi test etmeye yönelik bir JavaScript çerçevesidir hariçtir. testharness.js testleri yazarken zamanlamaya, ve global durumu temizlemeyi unutmayın.

Kesintili zaman aşımı potansiyel sızıntı durumları:

Yapılmaması gerekenler:
<script>
promise_test(async t => {
  assert_equals(await slowLocalStorageTest(), "expected", "message");
  localStorage.clear();
});
</script>

Uzun zaman aşımı süresiyle daha iyi bir test temizleme:

Yapılması gerekenler
<meta name="timeout" content="long">
<script>
promise_test(async t => {
  t.add_cleanup(() => localStorage.clear());
  assert_equals(await slowLocalStorageTest(), "expected", "message");
});
</script>

Otomasyona ihtiyacınız varsa testdriver.js'yi kullanın. Aksi takdirde web'de otomasyondan yararlanamazsınız. test_driver.bless uygulamasından bir kullanıcı hareketi alabilir, karmaşık yapı oluşturabilir, test_driver.action_sequence vb. ile güvenilir girişler

WPT, dosya adları aracılığıyla sunucu tarafı bazı yararlı özellikler de sunar. Çoklu küresel testler (.any.js ve arkadaşları) aynı testleri farklı kapsamlar (window, worker vb.); .https.sub.html, testin yüklenmesini istiyor aşağıdaki gibi sunucu tarafı değiştirme desteğiyle HTTPS üzerinden:

var anotherOrigin = "https://&#123;&#123;hosts[][www1]}}:&#123;&#123;ports[https][0]}}/path/to/page.html";

Bazı özellikler sorgu dizelerinde de etkinleştirilebilir. baz.html?pipe=sub|header(X-Key,val)|trickle(d1), değiştirmeyi etkinleştirir, X-Key: val ekler başlıklarına gönderebilir ve yanıttan önce 1 saniye bekler. "Bora" araması yapın web-platform-tests.org adresinden daha fazla bilgi edinebilirsiniz.

WPT, henüz spesifikasyonlara dahil olmayan davranışları da test edebilir. testi .tentative olarak adlandırın. Blink dahili API'lerine (ör. testRunner, internals) testlerinizi web_tests/wpt_internal dilinde gerçekleştirin.

WPT'de yapılan değişiklikler otomatik olarak GitHub'a aktarılır. Göreceğiniz bir bot tarafından yapılan yorumlar. Diğer tedarikçi firmalardaki GitHub değişiklikleri de içe aktarılmalıdır. Yeni hatalar olduğunda otomatik olarak oluşturulan hataları almak için içe aktarıldığında, WPT'deki bir alt dizinde bir OWNERS dosyası oluşturun:

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

Ek Kaynaklar

  • Testlerinizin diğer tarayıcılarda nasıl çalıştığını ve birlikte çalışabilme düzeyini öğrenmek istiyorsanız merak ediyor musunuz? wpt.fyi işlevini kullanın.
  • API'ler, yönergeler, örnekler, ipuçları ve daha fazlasıyla ilgili daha fazla doküman mı arıyorsunuz? web-platform-tests.org adresini ziyaret edin.