Skip to content

Feat: smoketest datapresisi#1064

Open
pandigresik wants to merge 51 commits into
rilis-devfrom
feat/smoketest-datapresisi
Open

Feat: smoketest datapresisi#1064
pandigresik wants to merge 51 commits into
rilis-devfrom
feat/smoketest-datapresisi

Conversation

@pandigresik

Copy link
Copy Markdown
Contributor

PR: Smoke Test Lengkap untuk Modul Data Presisi dan Data Pokok

Issue: #1062


Deskripsi Singkat

Menambahkan smoke test komprehensif menggunakan Pest untuk memastikan fungsionalitas inti seluruh modul Data Presisi dan Data Pokok berjalan dengan benar. PR ini mencakup pengujian halaman statistik (Pangan, Sandang, Papan, Seni Budaya, Pendidikan, Kesehatan, Jaminan Sosial, Aktivitas Keagamaan, Ketenagakerjaan, Adat), data presisi per kategori, data pokok (Agama, Infrastruktur, Jaminan Sosial, Papan, Pariwisata, Sandang), serta Laporan Pengisian dan Laporan Pengisian Per Desa.


Perubahan yang Dilakukan

1. Penambahan data-testid pada Blade Views (~38 file)

Menambahkan atribut data-testid pada elemen-elemen UI untuk memudahkan seleksi dalam browser testing:

Kategori Elemen data-testid
Filter Select tahun filter-tahun
Filter Select status presisi filter-status-kelengkapan
Filter Select kategori wisata filter-kategori-wisata
Tombol Print/Cetak btn-cetak / bt-cetak
Tombol Export Excel btn-export-excel / bt-excel
Tombol Toggle Grafik btn-toggle-grafik
Tombol Toggle Pie/Chart btn-toggle-pie
Tabel DataTable datatable-{nama} (mis. datatable-pangan, datatable-adat, datatable-statistik)
Chart Canvas Bar chart-bar / chart-transportasi
Chart Canvas Donut/Pie chart-donut / chart-sanitasi
Chart Pie khusus chart-pie-agama, chart-pie-adat, chart-pie-bantuan, chart-pie-mental, chart-pie-penanganan
Sidebar Daftar statistik daftar-statistik
Filter Filter status laporan filter-status

2. Perubahan Nama testId Konsisten (6 file yang sudah ada)

M standardisasi penamaan testId pada komponen yang sudah ada:

  • SmokePendudukTest.php: [data-testid="bt-toggle-filter"]@bt-toggle-filter (Blade component selector)
  • SmokeKesehatanTest.php: bt-cetakbtn-cetak, bt-excelbtn-export-excel
  • SmokeKetenagakerjaanTest.php: bt-cetakbtn-cetak, bt-excelbtn-export-excel
  • SmokePendidikanTest.php: bt-cetakbtn-cetak, bt-excelbtn-export-excel
  • SmokePenerimaBantuanTest.php: [data-testid="..."]@... (Blade component selector)
  • Selector DataTable diubah dari #pendidikan tbody tr ke [data-testid="datatable-pendidikan"] tbody tr

3. Penambahan Canvas Chart pada Halaman Presisi (5 file)

Beberapa halaman Data Presisi sebelumnya hanya memiliki 1 chart (bar). Ditambahkan canvas untuk chart kedua (donut/pie):

  • data_presisi/kesehatan/index.blade.php: Ditambah <div id="pie"><canvas id="donutChart">
  • data_presisi/ketenagakerjaan/index.blade.php: Ditambah <div id="pie"><canvas id="donutChart">
  • data_presisi/pendidikan/index.blade.php: Ditambah <div id="pie"><canvas id="donutChart">
  • data_presisi/seni_budaya/index.blade.php: Ditambah <div id="pie"><canvas id="donutChart">

4. Perbaikan Label Header pada Jaminan Sosial

  • data_pokok/jaminan_sosial/index.blade.php:
    • "Jenis Bantuan" → "Statistik Jenis Bantuan"
    • "Jenis Gangguan Mental" → "Statistik Jenis Gangguan Mental"
    • "Jenis Gangguan Mental" (kedua, yang salah) → "Statistik Jenis Penanganan"

5. Penambahan Fungsi randColorRGB() pada Layout

resources/views/layouts/index.blade.php: Menambah fungsi JavaScript randColorRGB() untuk generate warna random RGB, kemungkinan untuk kebutuhan chart/grafik.

6. File Test Baru (26 file smoke test)

File Test Halaman yang Diuji Jumlah Test
SmokeDataPresisiStatistikPanganTest.php /data-presisi/statistik/pangan 13
SmokeDataPresisiStatistikSandangTest.php /data-presisi/statistik/sandang 13
SmokeDataPresisiStatistikPapanTest.php /data-presisi/statistik/papan 13
SmokeDataPresisiStatistikSeniBudayaTest.php /data-presisi/statistik/senibudaya 13
SmokeDataPresisiStatistikPendidikanTest.php /data-presisi/statistik/pendidikan 13
SmokeDataPresisiStatistikKesehatanTest.php /data-presisi/statistik/kesehatan 13
SmokeDataPresisiStatistikJaminanSosialTest.php /data-presisi/statistik/jaminan-sosial 13
SmokeDataPresisiStatistikAktivitasKeagamaanTest.php /data-presisi/statistik/aktivitas-keagamaan 13
SmokeDataPresisiStatistikKetenagakerjaanTest.php /data-presisi/statistik/ketenagakerjaan 13
SmokeDataPresisiStatistikAdatTest.php /data-presisi/statistik/adat 13
SmokeDataPresisiPanganTest.php /data-presisi/pangan 10
SmokeDataPresisiAdatTest.php /data-presisi/adat 10
SmokeDataPresisiSeniBudayaTest.php /data-presisi/seni-budaya 10
SmokeDataPresisiKesehatanTest.php /data-presisi/kesehatan 7
SmokeDataPresisiPendidikanTest.php /data-presisi/pendidikan 7
SmokeDataPresisiKetenagakerjaanTest.php /data-presisi/ketenagakerjaan 7
SmokeDataPresisiLaporanPengisianTest.php /data-presisi/laporan 6
SmokeDataPresisiLaporanPengisianPerDesaTest.php /data-presisi/laporan/perdesa 5
SmokeDataPokokAgamaTest.php /data-pokok/agama 9
SmokeDataPokokInfrastrukturTest.php /data-pokok/infrastruktur 10
SmokeDataPokokJaminanSosialTest.php /data-pokok/jaminan-sosial 12
SmokeDataPokokPapanTest.php /satu-data/dtks/papan 7
SmokeDataPokokPariwisataTest.php /data-pokok/pariwisata 11
SmokeDataPokokSandangTest.php /data-pokok/sandang 7

7. Fixture Files Baru (30 file)

Data mock untuk MSW (Mock Service Worker) interceptor:

Fixtures Data Presisi RTM:

  • pangan.json, sandang.json, papan.json, adat.json, agama.json
  • seni-budaya.json, kesehatan-presisi.json, pendidikan-presisi.json
  • ketenagakerjaan-presisi.json, jaminan-sosial.json

Fixtures Kategori Statistik:

  • kategori-statistik-pangan.json, kategori-statistik-sandang.json, kategori-statistik-papan.json
  • kategori-statistik-seni-budaya.json, kategori-statistik-pendidikan.json
  • kategori-statistik-kesehatan.json, kategori-statistik-jaminan-sosial.json
  • kategori-statistik-agama.json, kategori-statistik-ketenagakerjaan.json, kategori-statistik-adat.json

Fixtures Statistik:

  • statistik-pangan.json, statistik-sandang.json, statistik-papan.json
  • statistik-seni-budaya.json, statistik-pendidikan.json
  • statistik-kesehatan.json, statistik-jaminan-sosial.json
  • statistik-agama.json, statistik-ketenagakerjaan.json, statistik-adat.json

Fixtures Lainnya:

  • infrastruktur.json, pariwisata.json, laporan.json, laporan-perdesa.json

8. Pembaruan MSW Setup (MswSetup.php)

Menambahkan 14 endpoint mapping statis dan 2 regex pattern ke interceptor MSW:

Endpoint Statis:

  • /api/v1/pariwisatapariwisata.json
  • /api/v1/infrastrukturinfrastruktur.json
  • /api/v1/data-presisi/pangan/rtmpangan.json
  • /api/v1/data-presisi/sandang/rtmsandang.json
  • /api/v1/data-presisi/papan/rtmpapan.json
  • /api/v1/data-presisi/seni-budaya/rtmseni-budaya.json
  • /api/v1/data-presisi/adat/rtmadat.json
  • /api/v1/data-presisi/agama/rtmagama.json
  • /api/v1/data-presisi/kesehatan/rtmkesehatan-presisi.json
  • /api/v1/data-presisi/pendidikan/rtmpendidikan-presisi.json
  • /api/v1/data-presisi/ketenagakerjaan/rtmketenagakerjaan-presisi.json
  • /api/v1/data-presisi/jaminan-sosial/rtmjaminan-sosial.json
  • /api/v1/data-presisi/laporanlaporan.json
  • /api/v1/data-presisi/laporan-perdesalaporan-perdesa.json

Regex Pattern:

  • #/api/v1/data-presisi/([\w-]+)/kategori-statistik#kategori-statistik-*.json
  • #/api/v1/data-presisi/([\w-]+)/statistik#statistik-*.json

9. Perubahan Fixture yang Sudah Ada

  • bantuan.json: status diubah dari string "Aktif" ke integer 1
  • kesehatan.json: nik diubah dari "5271010101010001" ke "0000000000000001"
  • ketenagakerjaan.json: nik diubah dari "5271010101010001" ke "0000000000000001"
  • pendidikan.json: nik diubah dari "5271010101010001" ke "0000000000000001"
  • penduduk-data.json: nik dan no_kk diubah ke format "0000000000000001"

Alasan Perubahan

  1. Kebutuhan Smoke Test Issue Buatkan Smoke test untuk menu data presisi #1062: Issue meminta smoke test komprehensif untuk seluruh modul Data Presisi dan terkait untuk memastikan fungsionalitas inti berjalan.

  2. Tidak Ada data-testid: Sebelumnya, elemen-elemen UI belum memiliki atribut data-testid yang konsisten, sehingga sulit diakses secara reliable oleh browser test.

  3. Chart Tidak Lengkap: Beberapa halaman Data Presisi hanya memiliki 1 chart (bar) padahal seharusnya memiliki 2 chart (bar + donut/pie) untuk visualisasi data yang lebih lengkap.

  4. Label Salah: Header "Jenis Gangguan Mental" muncul dua kali di halaman Jaminan Sosial, yang kedua seharusnya "Jenis Penanganan".

  5. Standarisasi Nama TestId: Nama testId yang tidak konsisten (bt-cetak vs btn-cetak, bt-excel vs btn-export-excel) perlu distandardisasi.


Dampak Perubahan

  • Tidak ada perubahan behavior aplikasi - Semua perubahan pada view bersifat penambahan atribut data-testid yang tidak mempengaruhi rendering atau fungsi.
  • Penambahan chart canvas pada halaman kesehatan, ketenagakerjaan, pendidikan, dan seni budaya presisi akan menampilkan chart donut/pie yang sebelumnya tidak ada.
  • Perbaikan label pada jaminan sosial memperbaiki UX dengan judul yang benar.
  • Test coverage meningkat signifikan dengan ~250+ test cases baru.

Cara Menjalankan Test

# Jalankan semua smoke test baru
php artisan pest --filter="SmokeDataPresisi"
php artisan pest --filter="SmokeDataPokok"

# Jalankan test spesifik
php artisan pest tests/Browser/SmokeDataPresisiStatistikPanganTest.php

Testing Checklist

Submenu Statistik (Pangan, Sandang, Papan, Seni Budaya, Pendidikan, Kesehatan, Jaminan Sosial, Aktivitas Keagamaan, Ketenagakerjaan, Adat)

  • Halaman terbuka
  • List kategori statistik tampil
  • Filter Tahun tampil
  • Tombol Excel tampil
  • Tombol grafik tampil
  • Tombol chart tampil
  • DataTable tampil
  • Akses salah kategori statistik (klik kategori)
  • Akses grafik dan berhasil di render
  • Akses Chart dan berhasil di render

Submenu Data Presisi (Pangan, Sandang, Papan, Kesehatan, Pendidikan, Ketenagakerjaan, Adat, Agama, Seni Budaya)

  • Halaman terbuka
  • Chart tampil dan berhasil di render
  • Filter Tahun tampil
  • Filter Status tampil
  • Tombol cetak tampil
  • Tombol excel tampil
  • DataTable tampil
  • Minimal 1 baris data tampil
  • Tombol Detail di data tampil
  • Tombol collapse di data tampil (where applicable)

Submenu Jaminan Sosial

  • Halaman terbuka
  • Statistik Jenis Bantuan tampil
  • Statistik Jenis Gangguan Mental tampil
  • Statistik Jenis Penanganan tampil
  • Semua Chart berhasil di render
  • Filter Tahun tampil
  • Filter Status tampil
  • Tombol cetak tampil
  • Tombol excel tampil
  • DataTable tampil
  • Minimal 1 baris data tampil
  • Tombol Detail di data tampil

Submenu Pariwisata

  • Halaman terbuka
  • Statistik Jumlah penginapan tampil
  • Statistik tingkat pemanfaatan tampil
  • Semua Chart berhasil di render
  • Filter Tahun tampil
  • Filter Kategori tampil
  • Tombol cetak tampil
  • Tombol excel tampil
  • DataTable tampil
  • Minimal 1 baris data tampil

Submenu Data Infrastruktur

  • Halaman terbuka
  • Statistik Kondisi transportasi tampil
  • Statistik Sanitasi tampil
  • Semua Chart berhasil di render
  • Filter Tahun tampil
  • Tombol cetak tampil
  • Tombol excel tampil
  • DataTable tampil
  • Minimal 1 baris data tampil

Submenu Laporan Pengisian

  • Halaman terbuka
  • Filter kategori tampil
  • Tombol cetak tampil
  • Tombol excel tampil
  • DataTable tampil
  • Minimal 1 baris data tampil

Submenu Laporan Pengisian Per Desa

  • Halaman terbuka
  • Tombol cetak tampil
  • Tombol excel tampil
  • DataTable tampil
  • Minimal 1 baris data tampil

Related Issue

#1062

php artisan test --testsuite=Browser

Screenshots

hasil_test_browser

- Upgrade composer deps melalui 3 fase (L10→L11→L12→L13)
- Bump 12 package ke major version baru (slug, datatables, CSP, image, dll)
- Migrasi Intervention Image v2→v3 (Image::make → read, resize → scale)
- Migrasi Spatie CSP v2→v3 (Policy → Preset, addDirective → add, config format)
- Tambah helper csp_nonce() (dihilangkan di CSP v3)
- Tambah CspExclusion middleware untuk route exclusion
- Publikasikan ulang config/image.php, config/jsvalidation.php
- Update CustomCSPPolicy → CustomCspPreset implement Preset interface
- Update CSP test untuk v3 API
- Catat temuan post-upgrade di UPGRADE_LARAVEL_13_PLAN.md
@pandigresik pandigresik requested a review from affandii06 June 17, 2026 05:09
@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 #1064

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