Episode 4: oleh Robert di Waterloo, ON (Juli, 2019)
Episode sebelumnya
Jika Anda mengerjakan Blink, Anda mungkin mengetahui web_tests (sebelumnya LayoutTests).
web-platform-tests (WPT) berada di dalam web_test/external/wpt
. WPT adalah
cara yang lebih disukai untuk menguji fitur yang terekspos web karena dibagikan dengan browser
lain melalui GitHub. Class ini memiliki dua jenis pengujian utama: pengujian reftests dan testharness.js.
reftests mengambil dan membandingkan screenshot dua halaman. Secara default, screenshot
diambil setelah peristiwa load
diaktifkan; jika Anda menambahkan class reftest-wait
ke elemen <html>
, screenshot akan diambil saat class dihapus.
Pengujian yang dinonaktifkan berarti mengurangi cakupan pengujian. Berhati-hatilah dengan kegagalan
terkait font; gunakan font Ahem
jika memungkinkan.
testharness.js adalah framework JavaScript untuk menguji apa pun kecuali rendering. Saat menulis pengujian testharness.js, perhatikan pengaturan waktu, dan ingatlah untuk membersihkan status global.
Waktu tunggu yang tidak stabil & potensi status bocor:
<script> promise_test(async t => { assert_equals(await slowLocalStorageTest(), "expected", "message"); localStorage.clear(); }); </script>
Pengujian yang lebih baik dengan waktu tunggu & pembersihan yang lama:
<meta name="timeout" content="long"> <script> promise_test(async t => { t.add_cleanup(() => localStorage.clear()); assert_equals(await slowLocalStorageTest(), "expected", "message"); }); </script>
Gunakan testdriver.js jika Anda memerlukan otomatisasi yang tidak tersedia di web.
Anda bisa mendapatkan gestur pengguna dari test_driver.bless
, menghasilkan input
yang kompleks dan tepercaya dengan test_driver.action_sequence
, dll.
WPT juga menyediakan beberapa fitur sisi server yang berguna melalui nama file.
Pengujian multi-global (.any.js
dan teman-temannya) menjalankan pengujian yang sama dalam cakupan
yang berbeda (window
, worker
, dll.); .https.sub.html
meminta pengujian untuk dimuat
melalui HTTPS dengan dukungan substitusi sisi server seperti di bawah ini:
var anotherOrigin = "https://{{hosts[][www1]}}:{{ports[https][0]}}/path/to/page.html";
Beberapa fitur juga dapat diaktifkan di string kueri.
baz.html?pipe=sub|header(X-Key,val)|trickle(d1)
mengaktifkan substitusi, menambahkan X-Key: val
ke header respons, dan menunda 1 detik sebelum merespons. Telusuri "pipes"
di web-platform-tests.org untuk informasi selengkapnya.
WPT juga dapat menguji perilaku yang belum disertakan dalam spesifikasi; cukup
beri nama pengujian sebagai .tentative
. Jika Anda memerlukan API internal Blink (misalnya testRunner
, internals
), jalankan pengujian di web_tests/wpt_internal
.
Perubahan yang dibuat pada WPT otomatis diekspor ke GitHub. Anda akan melihat
komentar dari bot di CL. Perubahan GitHub dari vendor lain juga
akan terus diimpor. Untuk menerima bug yang dilaporkan secara otomatis saat kegagalan baru
diimpor, buat file OWNERS
dalam subdirektori di WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Referensi Tambahan
- Ingin tahu cara pengujian Anda berjalan di browser lain, dan seberapa interoperabilitas fitur Anda? Gunakan wpt.fyi.
- Mencari dokumentasi selengkapnya tentang API, pedoman, contoh, tips, dan lainnya? Buka web-platform-tests.org.