Episode 4: oleh Robert in Waterloo, ON (Juli, 2019)
Episode sebelumnya
Jika mengerjakan Blink, Anda mungkin mengetahui tentang web_tests (sebelumnya LayoutTests).
pengujian platform web (WPT) ada di dalam web_test/external/wpt
. WPT adalah
cara yang lebih disukai untuk menguji fitur yang terekspos web karena dibagikan ke
browser melalui GitHub. Pengujian ini memiliki dua jenis pengujian utama: reftests dan
testharness.js.
reftests mengambil dan membandingkan screenshot dari 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 cakupan pengujian berkurang. Perhatikan font
kerapuhan; gunakan font Ahem
jika memungkinkan.
testharness.js adalah framework JavaScript untuk menguji apa pun kecuali rendering. Saat menulis pengujian testharness.js, perhatikan waktu, dan ingatlah untuk membersihkan status global.
Waktu tunggu 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 yang lama & pembersihan:
<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 jika tidak tersedia di web.
Anda dapat memperoleh gestur pengguna dari test_driver.bless
, membuat tugas kompleks,
input 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 temannya) menjalankan pengujian yang sama dalam
cakupan (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)
memungkinkan substitusi, menambahkan X-Key: val
ke header respons, dan menunda 1 detik sebelum merespons. Telusuri "pipes"
di web-platform-tests.org untuk mengetahui informasi selengkapnya.
WPT juga dapat menguji perilaku yang belum disertakan dalam spesifikasi; hanya
beri nama pengujian sebagai .tentative
. Jika Anda memerlukan API internal Blink (mis.
testRunner
, internals
), lakukan pengujian di web_tests/wpt_internal
.
Perubahan yang dilakukan pada WPT akan otomatis diekspor ke GitHub. Anda akan melihat
komentar dari bot di CL Anda. Perubahan GitHub dari vendor lain juga
diimpor secara terus-menerus. Untuk menerima bug yang diajukan secara otomatis saat terjadi kegagalan baru
diimpor, buat file OWNERS
di subdirektori di WPT:
# TEAM: your-team@chromium.org
# COMPONENT: Blink>YourComponent
# WPT-NOTIFY: true
emails-here-will-be-cc@chromium.org
Referensi Tambahan
- Ingin mengetahui bagaimana pengujian Anda berjalan di browser lain dan bagaimana interoperabilitasnya fitur Anda? Gunakan wpt.fyi.
- Mencari dokumentasi lain tentang API, panduan, contoh, tips, dan lainnya? Buka web-platform-tests.org.