Skip to content

feat: smoke Test dengan Pest Browser di Dashboard#1586

Open
habibie11 wants to merge 2 commits into
rilis-devfrom
dev-1583
Open

feat: smoke Test dengan Pest Browser di Dashboard#1586
habibie11 wants to merge 2 commits into
rilis-devfrom
dev-1583

Conversation

@habibie11

@habibie11 habibie11 commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

issue #1583

Pull Request: Tambah Smoke Test Dashboard (Mode Database Gabungan) & Session Restoration

🎯 Deskripsi

Pull request ini menambahkan sekumpulan smoke test menggunakan Pest Browser Testing (Playwright) untuk memverifikasi fungsionalitas inti halaman Dashboard ketika aplikasi berjalan dalam Mode Database Gabungan (sinkronisasi_database_gabungan = '1').
Selain itu, PR ini memperkenalkan mekanisme Session Restoration untuk mem-bypass form login dan secara signifikan mempercepat eksekusi test secara berulang.

🛠️ Perubahan yang Dilakukan

  1. Blade Template (resources/views/dashboard/index.blade.php)

    • Menambahkan atribut data-testid pada elemen-elemen kunci (4 kartu dashboard, tab, dan container chart) untuk memastikan pengujian lebih stabil dan tidak bergantung pada perubahan teks atau class CSS.
  2. Routes (routes/web.php)

    • Menambahkan route quick login /_pest/login/{userId} yang hanya aktif saat environment testing. Route ini digunakan untuk bypass proses autentikasi pada saat pengujian.
  3. Session State Management (tests/Browser/SessionState.php) & Konfigurasi

    • Baru: Menambahkan class helper SessionState yang melakukan pengambilan session cookie dari quick login route secara internal dan menyimpannya secara lokal di .session_state.json.
    • Helper ini memungkinkan Playwright menyuntikkan cookie langsung ke request header pada setiap test, sehingga kita mem-bypass proses loading rute login berulang-ulang di Amphp server.
    • Modifikasi: Mengubah SESSION_DRIVER di phpunit.xml dari array menjadi file agar session state persisten dan dikenali baik oleh test runner PHP maupun oleh server Amphp internal Pest.
  4. Smoke Test Baru (tests/Browser/SmokeLoginTest.php & SmokeDashboardGabunganTest.php)

    • Baru: Mengimplementasikan pengujian halaman login (SmokeLoginTest.php) termasuk verifikasi kesuksesan session restoration.
    • Mengimplementasikan 8 test cases komprehensif pada SmokeDashboardGabunganTest.php. Seluruh rute visit menggunakan SessionState::loginAndNavigate() untuk kecepatan maksimal.
    • Memanfaatkan Http::fake() untuk melakukan mock terhadap 4 endpoint API (DesaService, PendudukService, KeluargaService, BantuanService).
    • Menambahkan polling (menggunakan wait dan assertScript Promise) untuk memastikan elemen SVG (Highcharts) pada tab User Agent berhasil dirender.
  5. Lain-lain

    • Memperbarui .gitignore untuk mengabaikan artefak tests/Browser/.session_state.json.

✅ Test Cases yang Diimplementasikan

  • Halaman login dapat dirender, menerima kredensial valid maupun invalid dengan benar.
  • Session restoration terbukti berfungsi untuk melakukan bypass login pada pengujian akses berikutnya.
  • Halaman dashboard berhasil dibuka tanpa error.
  • Kartu Desa, Penduduk, Keluarga, dan Program Bantuan tampil dengan data dari API ter-mock.
  • Tab "Top 10 Halaman Terpopuler" dapat diklik dan dirender dengan baik.
  • Tab "User Agent" dapat diklik.
  • Chart "User Agent" (Highcharts SVG) berhasil dirender setelah pergantian tab.

📸 Cara Menjalankan Test

Jalankan perintah berikut di terminal:

php artisan test --group=smoke

Atau menggunakan Pest secara langsung:

php vendor/bin/pest tests/Browser/SmokeDashboardGabunganTest.php

Catatan untuk Reviewer:
Mekanisme session restoration memotong durasi login berulang. Rangkaian tes secara keseluruhan mampu berjalan dalam kisaran 35-40 detik dan konsisten lulus (passed) pada environment lokal dengan penggunaan sumber daya yang lebih hemat.
image

@github-actions

Copy link
Copy Markdown

🔄 AI PR Review sedang antri di server...

Proses review akan segera dimulai di background — hasil akan muncul sebagai komentar setelah selesai.
Powered by CrewAI · PR #1586

@habibie11 habibie11 requested a review from affandii06 June 17, 2026 03:29
@habibie11 habibie11 changed the title feat: smoke Test dengan Pest Browser untuk Dashboard feat: smoke Test dengan Pest Browser di Dashboard Jun 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant