testing
Catatan teknis seputar web development, DevOps, dan integrasi AI.
33 artikel
- 08.07testing
E2E Modul Admin: Menguji Guard Role dan Bidang Lewat UI
Tiga spec Playwright buat area admin: login via UI beneran, CRUD sampai hapus permanen dengan verifikasi API, dan guard role/bidang yang diuji di level server.
TL;DR: Gue kira redirect frontend buat blokir editor dari menu Pengguna, ternyata gampang dibobol kalau backend gak ikut ngejaga. Jadi tes e2e nya ngecek dua lapis, menu yang ngilang di UI dan server yang wajib ngasih 403 kalau dipaksa bikin user. Ada trik login pakai exact biar gak salah klik, isi Tiptap lewat ProseMirror, sama cek hapus data langsung via API.
#playwright#e2e#testing - 07.26testing
Ketika Tabel Migrasi Berbohong di Test Integrasi Bidang
Suite hijau padahal skema test DB basi: schema_migrations cuma catat file migrasi, volume Docker lama diam-diam bawa skema lama.
TL;DR: Test ijo semua tapi gue curiga kolom bidang belum kebawa di DB beneran. Ternyata volume MySQL lama masih kepake, migrate ngeliat versi 58 jadi skip padahal skema basi. Sekarang tiap test dibersihin total pake down --volumes biar migrasi jalan dari nol dan hasilnya beneran valid.
#go#mysql#testing - 05.04backend
Enforcement RBAC Bidang: Gerbang Middleware dan Filter IN
Enforcement scope bidang di Go: middleware di gerbang, filter IN di repository, dan subtest yang membaca seperti policy keamanan.
TL;DR: Gerbangnya dijaga middleware ResolveBidang yang nempelin scope bidang ke context abis JWT dicek, jadi handler tinggal baca aja. Di repo filternya pakai sqlx.In buat kategori dan IS NULL OR = buat announcements, route global sama CMS dipisah biar gampang diaudit. Repo sengaja fail-open kalau modul kosong, tapi tetap aman karena semua route admin wajib lewat gerbang dan dikunci subtest t.Run.
#go#mysql#security - 04.19testing
Test E2E yang Bisa Dipanggil Ulang Pakai Nama Modul
Lupa nama file spec tiap mau nge-test satu halaman? Resolver tipis plus ledger cakupan yang boleh jujur.
TL;DR: Daripada pusing cari file test peta manual, sekarang tinggal pakai run_page.sh buat ngejalanin modulnya langsung. Dia cuma nerjemahin nama jadi file spec Playwright, jadi simpel banget. Terus ada INDEX.md yang jujur nyatet modul mana udah ada test mana belum.
#testing#playwright#e2e - 04.14testing
Unit Testing yang Isinya Bukan Cuma Unit Test
Satu script per tier testing: vet, integration MySQL asli, smoke gate, sampai E2E Playwright.
TL;DR: Dulu push kode ribet harus ketik command panjang manual suka ada yang kelupaan pas buru-buru. Sekarang semua diringkas jadi empat script backend frontend e2e sama smoke yang otomatis berhenti kalau ada yang gagal. Ditambah ada panduan jelas di README kapan harus jalanin tes yang mana jadi nggak nebak-nebak lagi.
#testing#bash#go - 03.19testing
Kategori CRUD Sudah Jadi, Test-nya Nol
Fitur kategori bertingkat udah hidup tanpa satu pun test: env boot ternyata kontrak, dan edge constraint cuma bisa divalidasi lawan MySQL beneran.
TL;DR: Awalnya fitur kategori bertingkat udah jadi tapi belum ada test sama sekali jadi kelihatan hijau palsu. Terus gue benerin TestHealthEndpoint yang gagal boot karena env belum di-set pakai Setenv plus nambah tiga test integrasi buat cek constraint hapus parent/child di MySQL asli. Testnya dikunci tag integration dan harus jalan pakai -p 1 biar nggak rebutan database barengan.
#golang#testing#mysql - 23.38testing
Tes paritas tanpa validator bersama
Dua gerbang validasi tetap terpisah, tapi tabel uji parametrik mengikat keduanya pada kontrak accept/reject yang sama dan presedensi error yang sama.
TL;DR: Awalnya mau bikin validator bareng buat plane-init sama plane-doc-sync biar error-nya sama persis, tapi ternyata import silang pas runtime dilarang. Akhirnya parity-nya dibuktiin lewat tabel pytest parametrize yang ngelempar input jahat yang sama ke dua modul itu. Aturannya traversal error harus menang duluan daripada error bentuk file, jadi path aman dicek dulu baru isi filenya.
#python#testing#plane - 21.20tooling
Preflight sadar versi untuk membuka jalan konfigurasi v3
Preflight v3 perlu jalur validasi sendiri tanpa mengubah validator v2 yang dibekukan.
TL;DR: Preflight v2 sama v3 tuh dipisah biar nggak tabrakan, jadi script sync cuma buat v2 dan script pagesync khusus v3 plus Pages. Validator Pages yang dobel di dua skill dites bareng pake tabel kasus jahat biar hasilnya sama-sama nolak atau nerima. Buat sinkronisasi halaman sekarang ngandelin page id sama verifikasi abis retrieve, bukan marker HTML yang gampang hilang.
#plane#python#testing - 17.01tooling
Unit Test Hijau Semua, Tapi Konverter Tetap Rusak
Tiga bug pull-side lolos dari unit test tiap sisi yang hijau semua; cuma property test round-trip yang menangkap kontrak dua sisi yang tak sinkron.
TL;DR: Gw kira bug-nya cuma satu fungsi pas round-trip markdown ancur padahal unit test ijo semua, ternyata kontrak push dan pull beda. Masalahnya ada tiga, bold nge-wrap link ditolak parser, token code span bocor karena regex cuma jalan sekali, sama baris quote doang di-drop. Jadi unit test ijo nggak jamin aman, cuma tes lintas komponen yang bongkar kontrak nggak sinkron.
#plane#python#markdown