# Hasil pengujian Kultura — V4 — peta, logo bank, profil dan denim

## Hasil terkini

- PHP 8.3.33; Laravel 13.35.0; MariaDB 10.5.29; Chromium/Playwright lokal.
- **SQLite: 132 tes lulus / 808 assertion.**
- **MariaDB: 132 tes lulus / 808 assertion**, database tes terisolasi.
- PHP aplikasi/config/routes/migrasi/seeder/tests lolos lint; Blade berhasil dikompilasi; JS aplikasi lolos Node syntax check. Vendor tidak diedit.
- Upgrade dari SQL paket putih sebelumnya menggunakan migrate (bukan migrate:fresh): berhasil; 39 pesanan lama tetap ada, 28 produk, 112 foto galeri.

## Cakupan otomatis

95 tes regresi transaksi, stok, pembayaran privat, snapshot, idempotensi checkout, akses admin/pelanggan, auth/reset sesi, email best-effort, kebijakan, varian warna/ukuran dan tarif manual tetap lulus. Tambahan 22 tes mencakup:

- Haversine, pembulatan km, minimum, ambang gratis Rp499.999 versus Rp500.000, promo nonaktif, radius dan koordinat invalid.
- Kutipan wajib sebelum checkout; titik/aturan berubah membatalkan signature; konfirmasi alamat wajib; snapshot jarak/tarif/diskon; pesanan gratis; duplikasi token tidak membuat pesanan kedua.
- Alur tanpa JavaScript: review ongkir menyimpan input dan membuat pesanan dengan signature baru.
- OSRM HTTPS menggunakan respons HTTP simulasi: cache dipakai tanpa panggilan jaringan saat order; respons tidak wajar/API gagal/cache kedaluwarsa ditolak tanpa fallback diam-diam.
- Admin menyimpan aturan, customer ditolak, aturan invalid/routing belum ada ditolak.
- Lima foto tambahan diterima dan tersimpan; enam ditolak; 22 katalog mempunyai lima path foto berbeda; rerun seeder mempertahankan harga/stok dan galeri custom.

## Browser dan visual

- Diuji dengan preferensi OS dark: HTML tetap light, putih–biru.
- Desktop 1440 px / ponsel 390 px; pemeriksaan overflow beranda, katalog, produk, ongkir admin dan dashboard pada 320, 390, 768, 1024, 1440 px.
- Sidebar hover buka/tutup, konten tidak bergeser, pin dan reload, keyboard Tab/Escape, mobile backdrop/Escape/fokus/inert. Bug scope fungsi tombol pin ditemukan dan diperbaiki, diuji ulang tanpa pageerror.
- GPS perangkat melalui geolocation simulasi Chromium (bukan GPS perangkat fisik), pemilihan pin peta nyata OpenStreetMap, perubahan titik menghapus konfirmasi, quote Rp20.000 untuk 3,34 km, gratis untuk subtotal Rp636.000, radius invalid memblokir order. Tile OSM nyata berhasil dimuat.
- Checkout sampai pesanan dengan snapshot jarak; galeri lima thumbnail/lifestyle; preview lima file unggahan. Format visual baru diperiksa melalui screenshot individual: produk desktop/mobile, sidebar hover/mobile, admin ongkir/map, checkout desktop/mobile/map/free/error, pesanan, form upload dan beranda/promo.
- Setelah perbaikan: **0 pageerror JavaScript** pada skenario browser utama. Status invalid tidak lagi menampilkan tarif lama. Foto galeri menggunakan contain agar tidak terpotong.

## Paket dan batas

SQLite demo dan SQL terbaru dibuat ulang setelah QA, tanpa transaksi/sesi/log QA. Kelengkapan 140 foto, snapshot pembayaran privat dan kecocokan vendor dengan paket sebelumnya diperiksa. Lihat PACKAGE_INTEGRITY.txt untuk angka pemeriksaan dan integritas ZIP.

Tidak ada jaminan 100% bebas bug di semua hosting/perangkat. Routing jalan produksi belum diuji dengan endpoint milik pengguna; bawaan adalah GPS garis lurus, bukan jarak jalan. GPS fisik/izin browser pengguna, SMTP produksi, payment gateway, hosting publik dan beban concurrent produksi belum diuji. Peta pihak ketiga memerlukan internet dan tunduk kebijakan penyedia. Titik toko bawaan hanya demo Bandung. Foto AI/spesifikasi/stok adalah konsep demo yang harus dicocokkan dengan barang nyata. Vendor memerlukan PHP8.3+. Scheduler wajib untuk expiry otomatis. Jangan menimpa .env atau database toko aktif dengan demo.


## Pengujian tambahan V4

15 tes tambahan memeriksa foto profil privat (upload, penghapusan, akses akun/guest, MIME dan dimensi, hanya satu kontrol upload), logo bank (upload/reset, pembatasan admin, validasi gambar/warna), geocoding (filter Indonesia, cache, input tidak valid, kegagalan penyedia, cooldown global, hasil kosong), koordinat pelanggan tersembunyi, katalog 28 produk dengan lima foto/ukuran numerik dan pelestarian nama custom.

Browser lokal: pencarian nyata Jalan Dago Bandung mengembalikan lima hasil; hasil dipilih dan pin/ongkir diperbarui. Tujuh logo bank/QRIS tampil. Profil, pengaturan logo, pencarian titik admin, katalog dan detail denim diperiksa desktop/mobile; nol pageerror pada skenario V4. Beranda final diperiksa desktop1440/mobile390, tema putih-biru. Foto katalog celana memakai contain supaya tidak terpotong.

Upgrade SQL V3: migrasi V4 dan TrendCatalogSeeder berhasil, 28 produk dan seluruh39 pesanan lama dipertahankan. Demo baru dan ekspor MySQL di-seed ulang. Ekspor SQL diimpor ke database kosong dan snapshot QRIS diverifikasi. Paket lengkap diuji dari hasil ekstraksi terpisah.
