# ๐Ÿงช Testing Guide - History Screen Crash Fix ## ๐Ÿ“‹ Pre-Test Checklist - [ ] Build project successfully - [ ] No lint errors - [ ] App dapat di-launch - [ ] Bisa login dengan NPM & Nama --- ## ๐Ÿงช Test Case 1: Normal Flow **Objective:** Verify history tampil dengan baik setelah submit absensi **Steps:** ``` 1. Launch app 2. Login dengan NPM: "12345678" dan Nama: "Test User" 3. Tunggu loading selesai (max 2 detik) 4. Klik tombol "Mulai Absensi" 5. Izinkan akses lokasi 6. Ambil foto 7. Isi mata kuliah 8. Klik "KIRIM ABSENSI" 9. Tunggu success message 10. Klik "Lihat Riwayat" ``` **Expected Result:** ``` โœ… History Screen terbuka โœ… Record absensi ditampilkan dengan sempurna โœ… Data nama, npm, status, waktu tampil benar โœ… Tidak ada crash ``` **Actual Result:** - [ ] Pass - [ ] Fail (Dokumentasikan error) --- ## ๐Ÿงช Test Case 2: Rapid Navigation (Edge Case) **Objective:** Verify app handle jika navigate ke history sebelum loading selesai **Steps:** ``` 1. Launch app 2. Login dengan NPM: "98765432" dan Nama: "Cepat" 3. LANGSUNG (jangan tunggu) klik Menu โ†’ History (Atau navigate ke history sebelum LaunchedEffect selesai) ``` **Expected Result:** ``` โœ… Tampil pesan: "NPM tidak ditemukan. Silakan login ulang." ATAU โœ… Loading state ditampilkan โœ… Tidak ada crash โœ… Bisa kembali ke menu ``` **Actual Result:** - [ ] Pass - [ ] Fail (Dokumentasikan error) --- ## ๐Ÿงช Test Case 3: Empty History **Objective:** Verify app handle jika belum ada record absensi **Steps:** ``` 1. Fresh app (clear app data) 2. Login dengan NPM & Nama 3. Jangan submit absensi apapun 4. Buka History ``` **Expected Result:** ``` โœ… Tampil pesan: "Belum ada riwayat kehadiran" โœ… Tidak ada crash โœ… UI tetap responsif ``` **Actual Result:** - [ ] Pass - [ ] Fail (Dokumentasikan error) --- ## ๐Ÿงช Test Case 4: Multiple Records **Objective:** Verify app handle multiple history records **Steps:** ``` 1. Login 2. Submit absensi 5 kali (dengan delay 5 detik antar submit) 3. Tunggu semua terkirim 4. Buka History ``` **Expected Result:** ``` โœ… Semua 5 records ditampilkan โœ… Diurutkan dari yang terbaru (DESC) โœ… Mata kuliah, status, waktu tampil benar โœ… Tidak ada crash โœ… LazyColumn scroll lancar ``` **Actual Result:** - [ ] Pass - [ ] Fail (Dokumentasikan error) --- ## ๐Ÿงช Test Case 5: Data Consistency **Objective:** Verify data di history sama dengan data yang di-submit **Steps:** ``` 1. Login sebagai "Andi Wijaya" (NPM: "2024001") 2. Ambil lokasi 3. Ambil foto 4. Isi mata kuliah: "Pemrograman Mobile" 5. Klik KIRIM 6. Buka History 7. Cek detail record pertama ``` **Expected Result:** ``` โœ… Nama: "Andi Wijaya" โœ… NPM: "2024001" โœ… Mata Kuliah: "Pemrograman Mobile" โœ… Lokasi: Valid (โœ“ icon) โœ… Status: "Diterima" atau "Pending" โœ… Waktu: Match dengan waktu submit ``` **Actual Result:** - [ ] Pass - [ ] Fail (Dokumentasikan error) --- ## ๐Ÿงช Test Case 6: Error State (Negative Test) **Objective:** Verify app handle database error gracefully **Steps:** ``` 1. (Dev only) Simulate database error di repository 2. Login 3. Buka History ``` **Expected Result:** ``` โœ… Tampil error message yang user-friendly โœ… Tidak ada crash โœ… Bisa navigate kembali ``` **Actual Result:** - [ ] Pass - [ ] Fail (Dokumentasikan error) --- ## ๐Ÿงช Test Case 7: Logout & Re-login **Objective:** Verify history clear setelah logout dan login dengan user berbeda **Steps:** ``` 1. Login sebagai "User A" (NPM: "111111") 2. Submit absensi 3. Buka History โ†’ verify data User A 4. Logout 5. Login sebagai "User B" (NPM: "222222") 6. Buka History (history kosong) 7. Submit absensi 8. Buka History โ†’ verify data User B saja ``` **Expected Result:** ``` โœ… User A: Lihat 1 record โœ… Logout berhasil โœ… User B: History kosong (tidak ada data User A) โœ… User B: Submit 1 record โœ… User B: Lihat 1 record baru โœ… Tidak ada crash ``` **Actual Result:** - [ ] Pass - [ ] Fail (Dokumentasikan error) --- ## ๐Ÿ“ Logging/Debug Info Jika test fail, dokumentasikan: 1. **Android logcat error:** ``` adb logcat | grep "System Akademik" ``` 2. **Screenshot error:** - Capture screen saat error 3. **Device info:** - Android version - Device model - RAM available 4. **Reproduction steps:** - List eksak langkah-langkah untuk reproduce --- ## โœ… Final Sign-off Setelah semua test pass: ``` Date: ___________ Tester: ___________ All Tests Passed: [ ] Yes [ ] No Notes: _____________________________________________________ ```