testing
Catatan teknis seputar web development, DevOps, dan integrasi AI.
54 artikel
- 16.37testing
Fixture Dulu, Spec Kemudian: Satu Login Buat Semua Test
Satu fixture login dan satu fixture bukti ditulis sebelum spesifikasi pertama, lengkap dengan jebakan aria-label yang membuat getByLabel salah sasaran.
TL;DR: Gue nambahin Task 0 buat bikin fixture reusable sebelum nulis spec biar nggak refaktor belakangan. Daripada nambah data-testid, login ngambil dari komponen asli pakai getByLabel Email dan Kata sandi pakai exact true biar nggak ketuker tombol Tampilkan kata sandi. Jadinya cuma ada loginAsAdmin dan evidence di satu file, sengaja nggak pakai auth setup karena test admin saling ngerubah status server.
#playwright#e2e#testing - 15.43testing
Spec QA sudah jadi jam 9 pagi, lalu owner bilang: kurang lebar
Spesifikasi QA backfill lahir jam 9 pagi, lalu dilebarkan owner beberapa menit kemudian: kunci perilaku lama, ukur baseline, retest satu irisan penuh.
TL;DR: Awalnya gue kira cukup tambah unit test buat validator KotaPortal biar validasi aman. Ternyata owner minta ukur baseline dulu pake go test cover sama Vitest baru cek irisan full dari DB sampai halaman. Akhirnya spec jadi empat langkah: kunci perilaku lama, ukur baseline, retest vertical slice, dan lempar semua temuan ke Owner Decision List.
#testing#go#openapi - 22.27backend
Fixture email ditolak validator: domain uji yang lolos Pydantic
Gerbang sintaks email-validator menolak domain .test dan .local di fixture pytest; begini cara memilih domain uji yang lolos validasi Pydantic.
TL;DR: Fixture email pakai domain .test atau .local ternyata ditolak email-validator karena masuk daftar domain spesial yang diblokir di level sintaks, bukan gara-gara DNS. Makanya di Pydantic, [email protected] gagal padahal [email protected] aman. Solusinya gampang: ganti ke example.com atau aktifin test_environment=True kalau emang mau tetap pakai .test.
#python#pydantic#email-validator - 23.48frontend
Mengunci Intent Desain dengan Test, Bukan Dokumentasi
Mengunci intent desain bukan dengan dokumentasi tebal, tapi dengan unit test yang memaksa class Tailwind tetap sesuai aturan token.
TL;DR: Abis restyle komponen, desainnya rapi bentar terus balik berantakan lagi gara-gara ketimpa kode dari branch lain. Bikin dokumen setebel apapun ternyata nggak ngaruh, akhirnya gue kunci pola class-nya pake unit test 129 baris yang ngecek string HTML. Jadi kalau ada yang nggak sengaja balikin style lama kayak bg-white atau rounded-xl, test-nya langsung meledak dan ketahuan di CI.
#testing#vitest#tailwind - 22.46testing
Titik Buta Glob Git di Build Gate Token
Pola bintang dua di git ternyata melewatkan file komponen yang langsung di src; empat perintah repo tempaan membongkar titik buta build gate token.
TL;DR: Gue bikin gate buat ngeblok hex kayak #fff123 di Next.js, kirain pola rekursif udah nangkep semua file. Pas dites pakai repo tempaan, file yang langsung di src/ ternyata lolos dari git ls-files. Akhirnya di-fix pakai gabungan pola biar file direct sama nested ketangkep semua, plus nambah dua test regresi.
#git#glob#build-gate - 22.29testing
Hari Pertama Pasang Vitest, Langsung Ketahuan Dua Bug
Harness test pertama di frontend Next.js: 12/12 ijo tapi dua bug ketahuan pas nulisnya, satu nama klien dobel dan satu blind spot glob di build gate.
TL;DR: Awalnya repo Next.js jalan tanpa tes, pas pasang vitest dan nulis dua belas tes semua ijo. Tapi pas nulisnya malah ketahuan dua bug, ada nama klien dobel di beda grup industri dan gate validate-tokens yang kelewat file langsung di dalam src. Jadi intinya pasang tes jangan telat, justru pas nulis itulah bug kelihatan.
#vitest#testing#git - 19.54testing
Test yang Membaca Source Code-nya Sendiri
Vitest nggak bisa merender komponen di Vite 8? Jadikan file source sebagai data test: kunci invarian flag rating dengan toContain.
TL;DR: Test kartu di KotaPortal error karena Vite 8 udah pake rolldown jadi komponen React nggak bisa dirender di vitest. Akhirnya bikin tripwire yang baca file source sebagai teks buat mastiin rating_enabled !== false tetap ada di enam permukaan kartu. Cara ini jaga badge rating nggak bocor, sambil nunggu plugin React beneran kepasang buat test render.
#vitest#testing#react - 14.17backend
Test yang Hijau Siang, Merah Tiap Subuh
Test filter tanggal gagal tiap subuh jam 0-7 karena ada dua jam dalam satu test. Solusinya: ambil tanggal dari jam database, patok tengah hari.
TL;DR: Testnya kadang ijo kadang merah tiap subuh gara-gara Go pake jam WIB sedangkan database pake UTC. Selisih tujuh jam bikin hitungan kemarin jadi berantakan dan filternya nangkep data yang salah. Akhirnya dibenerin dengan ngambil tanggal langsung dari MySQL dan naruh data seed di tengah hari biar aman.
#go#mysql#testing - 13.16testing
Gate yang Dites dari Luar: Submit Tanpa Pilar Nggak Sampai Server
Nulis test e2e yang assertion-nya bukan isi halaman, tapi jumlah request yang keluar: form pendaftaran tanpa pilar harus diblokir di klien. Plus satu edge tan
TL;DR: Form daftar layanan wajib pilih pilar, kalau kosong harus keblok di browser bukan server, jadi test Playwright ngecek error muncul dan request gak kekirim sama sekali. Agak ribet karena harus login dev dulu, beresin wizard, isi semua field kecuali pilar baru submit. Sekalian ada fix filter tanggal biar data hari ini tetap muncul pas pilih rentang hari ini.
#playwright#testing#e2e