| No |
@@ -233,7 +233,7 @@ className: 'text-nowrap',
Pindah Penduduk
`;
return `
-
+
diff --git a/tests/Browser/MswSetup.php b/tests/Browser/MswSetup.php
index 010f29d0..e4161c7e 100644
--- a/tests/Browser/MswSetup.php
+++ b/tests/Browser/MswSetup.php
@@ -29,6 +29,12 @@ final class MswSetup
'/api/v1/statistik-web/get-list-coordinate' => 'coordinates.json',
'/api/v1/wilayah/penduduk' => 'penduduk.json',
'/api/v1/dasbor' => 'dasbor.json',
+ '/api/v1/penduduk' => 'data-penduduk.json',
+ '/api/v1/data/kesehatan' => 'data-kesehatan.json',
+ '/api/v1/pendidikan' => 'data-pendidikan.json',
+ '/api/v1/ketenagakerjaan' => 'data-ketenagakerjaan.json',
+ '/api/v1/bantuan' => 'data-bantuan.json',
+ '/api/v1/lembaga' => 'data-lembaga.json',
];
/**
diff --git a/tests/Browser/SmokeProfilKependudukanTest.php b/tests/Browser/SmokeProfilKependudukanTest.php
new file mode 100644
index 00000000..dbc48e67
--- /dev/null
+++ b/tests/Browser/SmokeProfilKependudukanTest.php
@@ -0,0 +1,273 @@
+user = SessionState::loginAdminUser();
+});
+
+afterEach(function () {
+ SessionState::clear();
+});
+
+// ===================== Submenu Penduduk =====================
+
+it('penduduk: displays page correctly', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/penduduk')
+ ->assertPathIs('/penduduk')
+ ->assertSee('Data Penduduk')
+ ->assertVisible('@btn-filter')
+ ->assertVisible('@btn-cetak')
+ ->assertVisible('@btn-excel')
+ ->assertVisible('@table-penduduk');
+
+ ScreenshotHelper::saveIfEnabled($page, 'penduduk-page');
+});
+
+it('penduduk: has at least one data row', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/penduduk')
+ ->assertPathIs('/penduduk');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const count = document.querySelectorAll('#penduduk tbody tr').length;
+ resolve(count > 0);
+ }, 5000);
+ })",
+ true
+ );
+});
+
+it('penduduk: displays Pilih Aksi dropdown', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/penduduk')
+ ->assertPathIs('/penduduk');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const exists = document.querySelector('[data-testid=\"dropdown-pilih-aksi\"]') !== null;
+ resolve(exists);
+ }, 5000);
+ })",
+ true
+ );
+});
+
+// ===================== Submenu Kesehatan =====================
+
+it('kesehatan: displays page correctly', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/kesehatan')
+ ->assertPathIs('/data-pokok/kesehatan')
+ ->assertSee('Data Kependudukan dan Statistik')
+ ->assertVisible('@statistik-golongan-darah')
+ ->assertVisible('@statistik-status-gizi')
+ ->assertVisible('@btn-cetak')
+ ->assertVisible('@btn-excel')
+ ->assertVisible('@table-kesehatan');
+
+ ScreenshotHelper::saveIfEnabled($page, 'kesehatan-page');
+});
+
+it('kesehatan: renders all charts', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/kesehatan')
+ ->assertPathIs('/data-pokok/kesehatan')
+ ->assertVisible('@chart-golongan-darah')
+ ->assertVisible('@chart-status-gizi');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const donut = document.querySelector('[data-testid=\"chart-golongan-darah\"]');
+ const bar = document.querySelector('[data-testid=\"chart-status-gizi\"]');
+ resolve(donut !== null && bar !== null);
+ }, 3000);
+ })",
+ true
+ );
+});
+
+it('kesehatan: has at least one data row', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/kesehatan')
+ ->assertPathIs('/data-pokok/kesehatan');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const count = document.querySelectorAll('#kesehatan tbody tr').length;
+ resolve(count > 0);
+ }, 5000);
+ })",
+ true
+ );
+});
+
+// ===================== Submenu Pendidikan =====================
+
+it('pendidikan: displays page correctly', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/pendidikan')
+ ->assertPathIs('/data-pokok/pendidikan')
+ ->assertSee('Data Pendidikan Penduduk dan DTKS')
+ ->assertVisible('@statistik-partisipasi-sekolah')
+ ->assertVisible('@statistik-ijazah-tertinggi')
+ ->assertVisible('@btn-cetak')
+ ->assertVisible('@btn-excel')
+ ->assertVisible('@table-pendidikan');
+
+ ScreenshotHelper::saveIfEnabled($page, 'pendidikan-page');
+});
+
+it('pendidikan: renders all charts', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/pendidikan')
+ ->assertPathIs('/data-pokok/pendidikan')
+ ->assertVisible('@chart-partisipasi-sekolah')
+ ->assertVisible('@chart-ijazah-tertinggi');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const donut = document.querySelector('[data-testid=\"chart-partisipasi-sekolah\"]');
+ const bar = document.querySelector('[data-testid=\"chart-ijazah-tertinggi\"]');
+ resolve(donut !== null && bar !== null);
+ }, 3000);
+ })",
+ true
+ );
+});
+
+it('pendidikan: has at least one data row', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/pendidikan')
+ ->assertPathIs('/data-pokok/pendidikan');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const count = document.querySelectorAll('#pendidikan tbody tr').length;
+ resolve(count > 0);
+ }, 5000);
+ })",
+ true
+ );
+});
+
+// ===================== Submenu Ketenagakerjaan =====================
+
+it('ketenagakerjaan: displays page correctly', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/ketenagakerjaan')
+ ->assertPathIs('/data-pokok/ketenagakerjaan')
+ ->assertSee('Data Pekerjaan dan Pelatihan')
+ ->assertVisible('@statistik-jumlah-penghasilan')
+ ->assertVisible('@statistik-pelatihan')
+ ->assertVisible('@btn-cetak')
+ ->assertVisible('@btn-excel')
+ ->assertVisible('@table-ketenagakerjaan');
+
+ ScreenshotHelper::saveIfEnabled($page, 'ketenagakerjaan-page');
+});
+
+it('ketenagakerjaan: renders all charts', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/ketenagakerjaan')
+ ->assertPathIs('/data-pokok/ketenagakerjaan')
+ ->assertVisible('@chart-jumlah-penghasilan')
+ ->assertVisible('@chart-pelatihan');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const bar = document.querySelector('[data-testid=\"chart-jumlah-penghasilan\"]');
+ const donut = document.querySelector('[data-testid=\"chart-pelatihan\"]');
+ resolve(bar !== null && donut !== null);
+ }, 3000);
+ })",
+ true
+ );
+});
+
+it('ketenagakerjaan: has at least one data row', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/data-pokok/ketenagakerjaan')
+ ->assertPathIs('/data-pokok/ketenagakerjaan');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const count = document.querySelectorAll('#ketenagakerjaan tbody tr').length;
+ resolve(count > 0);
+ }, 5000);
+ })",
+ true
+ );
+});
+
+// ===================== Submenu Penerima Bantuan =====================
+
+it('bantuan: displays page correctly', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/bantuan')
+ ->assertPathIs('/bantuan')
+ ->assertSee('Data Bantuan')
+ ->assertVisible('@btn-filter')
+ ->assertVisible('@btn-cetak')
+ ->assertVisible('@btn-excel')
+ ->assertVisible('@table-bantuan');
+
+ ScreenshotHelper::saveIfEnabled($page, 'bantuan-page');
+});
+
+it('bantuan: has at least one data row', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/bantuan')
+ ->assertPathIs('/bantuan');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const count = document.querySelectorAll('#bantuan tbody tr').length;
+ resolve(count > 0);
+ }, 5000);
+ })",
+ true
+ );
+});
+
+it('bantuan: displays Detail button', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/bantuan')
+ ->assertPathIs('/bantuan');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const exists = document.querySelector('[data-testid=\"btn-detail\"]') !== null;
+ resolve(exists);
+ }, 5000);
+ })",
+ true
+ );
+});
+
+// ===================== Submenu Kelembagaan =====================
+
+it('kelembagaan: displays page correctly', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/lembaga')
+ ->assertPathIs('/lembaga')
+ ->assertSee('Data Kelembagaan')
+ ->assertVisible('@btn-filter')
+ ->assertVisible('@btn-cetak')
+ ->assertVisible('@btn-excel')
+ ->assertVisible('@table-lembaga');
+
+ ScreenshotHelper::saveIfEnabled($page, 'lembaga-page');
+});
+
+it('kelembagaan: has at least one data row', function () {
+ $page = SessionState::loginAndNavigate($this->user, '/lembaga')
+ ->assertPathIs('/lembaga');
+
+ $page->assertScript(
+ "new Promise((resolve) => {
+ setTimeout(() => {
+ const count = document.querySelectorAll('#table-lembaga tbody tr').length;
+ resolve(count > 0);
+ }, 5000);
+ })",
+ true
+ );
+});
diff --git a/tests/Browser/fixtures/data-bantuan.json b/tests/Browser/fixtures/data-bantuan.json
new file mode 100644
index 00000000..206d44dd
--- /dev/null
+++ b/tests/Browser/fixtures/data-bantuan.json
@@ -0,0 +1,50 @@
+{
+ "data": [
+ {
+ "id": "1",
+ "attributes": {
+ "nama_desa": "Desa Ampenan Tua",
+ "nama": "BLT Dana Desa",
+ "asaldana": "APBN",
+ "jumlah_peserta": 150,
+ "sdate": "2024-01-01",
+ "edate": "2024-12-31",
+ "nama_sasaran": "Kepala Keluarga",
+ "status": 1
+ }
+ },
+ {
+ "id": "2",
+ "attributes": {
+ "nama_desa": "Desa Taman Sari",
+ "nama": "PKH",
+ "asaldana": "APBN",
+ "jumlah_peserta": 85,
+ "sdate": "2024-01-01",
+ "edate": "2024-12-31",
+ "nama_sasaran": "Ibu Hamil",
+ "status": 1
+ }
+ },
+ {
+ "id": "3",
+ "attributes": {
+ "nama_desa": "Desa Cakranegara",
+ "nama": "Bantuan Pangan",
+ "asaldana": "APBD",
+ "jumlah_peserta": 200,
+ "sdate": "2024-03-01",
+ "edate": "2024-09-30",
+ "nama_sasaran": "Keluarga Miskin",
+ "status": 0
+ }
+ }
+ ],
+ "meta": {
+ "pagination": {
+ "total": 3,
+ "current_page": 1,
+ "last_page": 1
+ }
+ }
+}
diff --git a/tests/Browser/fixtures/data-kesehatan.json b/tests/Browser/fixtures/data-kesehatan.json
new file mode 100644
index 00000000..151d5fa1
--- /dev/null
+++ b/tests/Browser/fixtures/data-kesehatan.json
@@ -0,0 +1,53 @@
+{
+ "data": [
+ {
+ "id": "1",
+ "attributes": {
+ "nama_desa": "Desa Ampenan Tua",
+ "nik": "5271010101900001",
+ "golongan_darah": "O",
+ "cacat": "Tidak Cacat",
+ "sakit_menahun": "Tidak Ada",
+ "kb": "IUD",
+ "hamil": "Tidak",
+ "asuransi": "BPJS Kesehatan",
+ "status_gizi": "Baik"
+ }
+ },
+ {
+ "id": "2",
+ "attributes": {
+ "nama_desa": "Desa Taman Sari",
+ "nik": "5271010102900002",
+ "golongan_darah": "A",
+ "cacat": "Tidak Cacat",
+ "sakit_menahun": "Diabetes",
+ "kb": "Suntik",
+ "hamil": "Tidak",
+ "asuransi": "PBI",
+ "status_gizi": "Cukup"
+ }
+ },
+ {
+ "id": "3",
+ "attributes": {
+ "nama_desa": "Desa Cakranegara",
+ "nik": "5271010103900003",
+ "golongan_darah": "B",
+ "cacat": "Tidak Cacat",
+ "sakit_menahun": "Tidak Ada",
+ "kb": "Tidak",
+ "hamil": "Tidak",
+ "asuransi": "Tidak Ada",
+ "status_gizi": "Baik"
+ }
+ }
+ ],
+ "meta": {
+ "pagination": {
+ "total": 3,
+ "current_page": 1,
+ "last_page": 1
+ }
+ }
+}
diff --git a/tests/Browser/fixtures/data-ketenagakerjaan.json b/tests/Browser/fixtures/data-ketenagakerjaan.json
new file mode 100644
index 00000000..b0ae9176
--- /dev/null
+++ b/tests/Browser/fixtures/data-ketenagakerjaan.json
@@ -0,0 +1,44 @@
+{
+ "data": [
+ {
+ "id": "1",
+ "attributes": {
+ "nama_desa": "Desa Ampenan Tua",
+ "nik": "5271010101900001",
+ "pekerjaan": "PNS",
+ "jabatan": "Staf",
+ "jumlah_penghasilan": 5000000,
+ "pelatihan": "Pelatihan Administrasi"
+ }
+ },
+ {
+ "id": "2",
+ "attributes": {
+ "nama_desa": "Desa Taman Sari",
+ "nik": "5271010102900002",
+ "pekerjaan": "Swasta",
+ "jabatan": "Supervisor",
+ "jumlah_penghasilan": 3500000,
+ "pelatihan": "Pelatihan Manajemen"
+ }
+ },
+ {
+ "id": "3",
+ "attributes": {
+ "nama_desa": "Desa Cakranegara",
+ "nik": "5271010103900003",
+ "pekerjaan": "Belum/Tidak Bekerja",
+ "jabatan": null,
+ "jumlah_penghasilan": 0,
+ "pelatihan": null
+ }
+ }
+ ],
+ "meta": {
+ "pagination": {
+ "total": 3,
+ "current_page": 1,
+ "last_page": 1
+ }
+ }
+}
diff --git a/tests/Browser/fixtures/data-lembaga.json b/tests/Browser/fixtures/data-lembaga.json
new file mode 100644
index 00000000..dd967762
--- /dev/null
+++ b/tests/Browser/fixtures/data-lembaga.json
@@ -0,0 +1,44 @@
+{
+ "data": [
+ {
+ "id": "1",
+ "attributes": {
+ "nama_desa": "Desa Ampenan Tua",
+ "kode": "LPM",
+ "nama": "Lembaga Pemberdayaan Masyarakat",
+ "nama_ketua": "H. Mahfud",
+ "kategori": "Lembaga Kemasyarakatan",
+ "anggota_count": 15
+ }
+ },
+ {
+ "id": "2",
+ "attributes": {
+ "nama_desa": "Desa Taman Sari",
+ "kode": "PKK",
+ "nama": "Pembinaan Kesejahteraan Keluarga",
+ "nama_ketua": "Ny. Sari",
+ "kategori": "Lembaga Kemasyarakatan",
+ "anggota_count": 25
+ }
+ },
+ {
+ "id": "3",
+ "attributes": {
+ "nama_desa": "Desa Cakranegara",
+ "kode": "KARANG",
+ "nama": "Karang Taruna",
+ "nama_ketua": "Rudi Hartono",
+ "kategori": "Lembaga Kepemudaan",
+ "anggota_count": 30
+ }
+ }
+ ],
+ "meta": {
+ "pagination": {
+ "total": 3,
+ "current_page": 1,
+ "last_page": 1
+ }
+ }
+}
diff --git a/tests/Browser/fixtures/data-pendidikan.json b/tests/Browser/fixtures/data-pendidikan.json
new file mode 100644
index 00000000..0c79cf60
--- /dev/null
+++ b/tests/Browser/fixtures/data-pendidikan.json
@@ -0,0 +1,50 @@
+{
+ "data": [
+ {
+ "id": "1",
+ "attributes": {
+ "nama_desa": "Desa Ampenan Tua",
+ "nik": "5271010101900001",
+ "pendidikan_kk_id": 3,
+ "pendidikan_sedang_id": 5,
+ "partisipasi_sekolah": "Tidak Bersekolah",
+ "pendidikan_tertinggi": "SLTA",
+ "kelas_tertinggi": 3,
+ "ijazah_tertinggi": "SLTA"
+ }
+ },
+ {
+ "id": "2",
+ "attributes": {
+ "nama_desa": "Desa Taman Sari",
+ "nik": "5271010102900002",
+ "pendidikan_kk_id": 5,
+ "pendidikan_sedang_id": null,
+ "partisipasi_sekolah": "Tidak Bersekolah",
+ "pendidikan_tertinggi": "S1",
+ "kelas_tertinggi": 4,
+ "ijazah_tertinggi": "S1"
+ }
+ },
+ {
+ "id": "3",
+ "attributes": {
+ "nama_desa": "Desa Cakranegara",
+ "nik": "5271010103900003",
+ "pendidikan_kk_id": 4,
+ "pendidikan_sedang_id": 6,
+ "partisipasi_sekolah": "Bersekolah",
+ "pendidikan_tertinggi": "D3",
+ "kelas_tertinggi": 6,
+ "ijazah_tertinggi": "D3"
+ }
+ }
+ ],
+ "meta": {
+ "pagination": {
+ "total": 3,
+ "current_page": 1,
+ "last_page": 1
+ }
+ }
+}
diff --git a/tests/Browser/fixtures/data-penduduk.json b/tests/Browser/fixtures/data-penduduk.json
new file mode 100644
index 00000000..608364c4
--- /dev/null
+++ b/tests/Browser/fixtures/data-penduduk.json
@@ -0,0 +1,122 @@
+{
+ "data": [
+ {
+ "id": "1",
+ "attributes": {
+ "nik": "5271010101900001",
+ "nama": "Ahmad Rizal",
+ "tag_id_card": "TAG001",
+ "nama_ayah": "Suparman",
+ "nama_ibu": "Siti Aminah",
+ "umur": 35,
+ "created_at": "2024-01-15T08:00:00.000000Z",
+ "status_dasar": 1,
+ "keluarga": {
+ "no_kk": "5271010101900001",
+ "alamat": "Jl. Merdeka No. 10"
+ },
+ "cluster_desa": {
+ "dusun": "Dusun Satu",
+ "rw": "001",
+ "rt": "001"
+ },
+ "pendidikan_k_k": {
+ "nama": "SLTA"
+ },
+ "pekerjaan": {
+ "nama": "PNS"
+ },
+ "status_kawin": {
+ "nama": "Kawin"
+ },
+ "log_penduduk": {
+ "tgl_peristiwa": "2024-01-15"
+ },
+ "rtm": {
+ "no_kk": "RTM001"
+ }
+ }
+ },
+ {
+ "id": "2",
+ "attributes": {
+ "nik": "5271010102900002",
+ "nama": "Siti Nurhaliza",
+ "tag_id_card": "TAG002",
+ "nama_ayah": "Mulyadi",
+ "nama_ibu": "Fatimah",
+ "umur": 28,
+ "created_at": "2024-02-20T10:30:00.000000Z",
+ "status_dasar": 1,
+ "keluarga": {
+ "no_kk": "5271010102900002",
+ "alamat": "Jl. Pahlawan No. 25"
+ },
+ "cluster_desa": {
+ "dusun": "Dusun Dua",
+ "rw": "001",
+ "rt": "002"
+ },
+ "pendidikan_k_k": {
+ "nama": "S1"
+ },
+ "pekerjaan": {
+ "nama": "Swasta"
+ },
+ "status_kawin": {
+ "nama": "Kawin"
+ },
+ "log_penduduk": {
+ "tgl_peristiwa": "2024-02-20"
+ },
+ "rtm": {
+ "no_kk": "RTM002"
+ }
+ }
+ },
+ {
+ "id": "3",
+ "attributes": {
+ "nik": "5271010103900003",
+ "nama": "Budi Santoso",
+ "tag_id_card": "TAG003",
+ "nama_ayah": "Hasan",
+ "nama_ibu": "Rohana",
+ "umur": 22,
+ "created_at": "2024-03-10T14:00:00.000000Z",
+ "status_dasar": 1,
+ "keluarga": {
+ "no_kk": "5271010103900003",
+ "alamat": "Jl. Sudirman No. 5"
+ },
+ "cluster_desa": {
+ "dusun": "Dusun Satu",
+ "rw": "002",
+ "rt": "001"
+ },
+ "pendidikan_k_k": {
+ "nama": "D3"
+ },
+ "pekerjaan": {
+ "nama": "Belum/Tidak Bekerja"
+ },
+ "status_kawin": {
+ "nama": "Belum Kawin"
+ },
+ "log_penduduk": {
+ "tgl_peristiwa": "2024-03-10"
+ },
+ "rtm": {
+ "no_kk": "RTM003"
+ }
+ }
+ }
+ ],
+ "meta": {
+ "pagination": {
+ "total": 3,
+ "current_page": 1,
+ "last_page": 1
+ }
+ }
+}