Situs Statis Ini Nggak Punya Test Suite — Ini Kenapa Saya Belum Khawatir

CLAUDE.md di repo ini bilang terang-terangan: “no test suite currently exists.” Ini keputusan sadar, bukan utang teknis yang kelupaan — meski saya ngaku, kalau ditanya setahun lalu waktu masih di Laravel, saya bakal jawab beda.
Kenapa risikonya kecil di sini
Situs ini nggak punya logic bisnis yang kompleks — nggak ada pembayaran, nggak ada auth, nggak ada state yang berubah di runtime selain toggle tema yang nyimpen preferensi di localStorage. Semua konten statis, di-generate sekali pas build. Kelas bug yang paling mungkin muncul itu type error di frontmatter (lupa field, salah tipe) atau broken link, bukan bug logic yang butuh unit test buat ke-detect. Bandingin sama app Laravel lama saya yang punya admin panel dan generation pipeline — di sana test itu wajib, karena ada state yang berubah dan alur yang bisa salah dengan cara yang nggak kelihatan cuma dari baca kode.
Yang saya andalkan sebagai gantinya
npx astro check buat validasi TypeScript di semua file .astro, ditambah schema Zod di content.config.ts yang bakal nge-gagalin build kalau ada blog post atau portfolio item yang frontmatter-nya nggak sesuai skema. Ini bukan teori doang — beberapa minggu lalu saya nulis post baru dan lupa nutup tanda kutip di field tags, dan build langsung gagal di CI dengan pesan error yang nunjuk persis ke baris yang salah. Nggak ada test yang saya tulis buat nangkep itu; schema Zod-nya yang otomatis ngelakuin kerjaan itu. Efeknya sama kayak test — kegagalan ketahuan sebelum deploy — tapi effort buat maintain-nya jauh lebih kecil karena saya nggak nulis assertion satu-satu.
Kapan saya bakal beneran nambah test
Kalau situs ini suatu saat nambah logic interaktif yang nontrivial — search di client-side yang beneran filter data, form submission ke endpoint, atau apapun yang state-nya nggak cuma “render markdown jadi HTML”. Sampai saat itu, cost buat maintain test suite (nulis, jalanin di CI, benerin pas flaky, update pas refactor) lebih gede daripada risiko yang dia cegah. Saya juga cukup jujur soal ini: alasan saya belum nambah test bukan murni kalkulasi risiko yang rapi, tapi juga karena buat proyek seukuran ini, effort itu kerasa nggak sepadan dibanding kerjaan lain yang lebih ngefek.
Ada satu celah yang saya sadar tapi belum saya tutup: nggak ada apapun yang ngecek broken link internal antar post secara otomatis. Saya pernah nemu satu link ke portfolio item yang slug-nya udah berubah, dan itu nggak ketahuan sampai saya klik manual pas baca ulang post lama. Bukan bug yang parah, tapi ini kelas masalah yang sebenernya bisa ketangkep otomatis kalau saya nambahin link checker sederhana di CI — belum saya lakuin, tapi masuk daftar yang mungkin saya beresin kalau jumlah post-nya makin banyak.
Nggak semua proyek butuh level testing yang sama. Buat static site satu orang kayak ini, type-checking dan schema validation udah nutup sebagian besar celah yang penting. Kalau proyeknya beda — ada pembayaran, ada auth, ada banyak orang commit ke repo yang sama — kalkulasinya bakal beda total, dan saya nggak bakal ngomong hal yang sama.