Episode 4: Robert in Waterloo, ON'dan (Temmuz 2019)
Önceki bölümler
Blink üzerinde çalışıyorsanız web_tests'i (eski adıyla LayoutTests) biliyor olabilirsiniz.
web-platform-tests (WPT), web_test/external/wpt
uygulamasının içindedir. GitHub üzerinden diğer tarayıcılarla paylaşıldığı için WPT, web'de gösterilen özellikleri test etmek için tercih edilen yöntemdir. İki temel test türü vardır: reftests ve testharness.js testleri.
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; <html>
öğesine bir reftest-wait
sınıfı eklerseniz sınıf kaldırıldığında ekran görüntüsü alınır.
Devre dışı bırakılan testler, test kapsamının azalması anlamına gelir. Yazı tipiyle ilgili pürüzlülüğe dikkat edin; mümkünse Ahem
yazı tipini kullanın.
testharness.js, oluşturma hariç her şeyi test etmeye yönelik bir JavaScript çerçevesidir. testharness.js testlerini yazarken zamanlamaya dikkat edin ve genel durumu temizlemeyi unutmayın.
Kesintili zaman aşımı ve olası sızıntı durumları:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Uzun zaman aşımı ve temizleme ile daha iyi bir test:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Web'de bulunmayan otomasyona ihtiyacınız varsa testdriver.js'yi kullanın.
test_driver.bless
sağlayıcısından kullanıcı hareketi alabilir, test_driver.action_sequence
ile karmaşık, güvenilir girişler oluşturabilir vb.
WPT, dosya adları aracılığıyla sunucu tarafında bazı yararlı özellikler de sağlar.
Çoklu global testler (.any.js
ve arkadaşları) aynı testleri farklı kapsamlarda (window
, worker
vb.) çalıştırır; .https.sub.html
, testin aşağıdaki gibi sunucu tarafı değiştirme desteğiyle HTTPS üzerinden yüklenmesini ister:
var anotherOrigin = "https://{{hosts[][www1]}}:{{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, yanıtın üst bilgilerine X-Key: val
ekler ve yanıt vermeden önce 1 saniye geciktirir. Daha fazlası için web-platform-tests.org adresinde "pipes" araması yapın.
WPT, henüz spesifikasyonlarda bulunmayan davranışları da test edebilir. Testin adını .tentative
olarak vermeniz yeterlidir. Blink dahili API'lerine (ör. testRunner
, internals
) ihtiyacınız varsa testlerinizi web_tests/wpt_internal
içine yerleştirin.
WPT'de yapılan değişiklikler otomatik olarak GitHub'a aktarılır. CL'nizde bir bot'tan gelen
yorumları görürsünüz. Diğer tedarikçi firmalardaki GitHub değişiklikleri de sürekli olarak içe aktarılır. Yeni hatalar içe aktarıldığında otomatik olarak gönderilen hataları almak için WPT'deki bir alt dizinde 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 özelliğinizin birlikte ne kadar birlikte çalışabildiğini öğrenmek mi istiyorsunuz? wpt.fyi kullanın.
- API'ler, yönergeler, örnekler, ipuçları ve daha fazlası hakkında daha fazla doküman mı arıyorsunuz? web-platform-tests.org adresini ziyaret edin.