UAT — Domain SDM / HR (Sumber Daya Manusia)
User Acceptance Testing untuk modul kepegawaian Scola.
Mencakup data pegawai, penggajian, cuti, kehadiran staf, dokumen digital, dan riwayat jabatan.
Tanggal: 2026-03-26
SSOT Ref: docs/domains/hr/README.md
1. Scope & Roles
Roles Terlibat
| Role |
Akses Utama |
| Head Admin |
Full HR management (CRUD pegawai, payroll, cuti, dokumen, riwayat) |
| Admin Staff |
View pegawai, kelola dokumen |
| Principal |
HR overview dashboard, view summary |
| Teacher / Counselor |
View payslip pribadi, ajukan cuti, self-attendance |
| Foundation Chairman |
View payroll cost summary |
Fitur yang Diuji
- Database Pegawai (list + detail)
- Penggajian (payroll management + payslip personal)
- PPh 21 Auto-calculation
- BPJS Auto-deduction
- THR Auto-calculation
- Cuti & Izin (request + approval + policy)
- Kehadiran Staf (self-attendance + report)
- Dokumen Kepegawaian Digital
- Riwayat Jabatan / Kepegawaian
- Dapodik/SIMPATIKA Export
- Principal HR Overview
- Foundation Payroll Cost View
2. Test Scenarios
2.1 Database Pegawai
| # |
Scenario |
Role |
Steps |
Expected |
| PE-01 |
View daftar pegawai |
Head Admin |
Buka /hr/employee |
List pegawai tampil dengan nama, departemen, jabatan, status |
| PE-02 |
Tambah pegawai baru |
Head Admin |
Klik "Tambah" → isi form → Submit |
Pegawai baru tersimpan, muncul di list |
| PE-03 |
Edit data pegawai |
Head Admin |
Klik pegawai → Edit → Ubah data → Simpan |
Data terupdate |
| PE-04 |
View detail pegawai |
Head Admin |
Klik nama pegawai |
Detail lengkap: biodata, PTKP, BPJS, PKG, keluarga |
| PE-05 |
Filter pegawai |
Head Admin |
Filter berdasarkan departemen/status |
List terfilter sesuai kriteria |
2.2 Penggajian (Payroll)
| # |
Scenario |
Role |
Steps |
Expected |
| PY-01 |
Buat payslip pegawai |
Head Admin |
Buka /hr/payslip/create → pilih pegawai + periode → Compute |
Payslip ter-generate dengan komponen gaji lengkap |
| PY-02 |
Verify komponen gaji |
Head Admin |
Buka payslip → cek lines |
Gaji pokok, tunjangan, potongan BPJS, PPh21 tampil benar |
| PY-03 |
Batch payslip |
Head Admin |
Buka /hr/payslip-batch → pilih periode → Generate |
Semua payslip batch ter-generate |
| PY-04 |
View payslip pribadi |
Teacher |
Buka /hr/my-payslips |
List payslip milik sendiri (bukan pegawai lain) |
| PY-05 |
Detail payslip pribadi |
Teacher |
Klik payslip → view detail |
Komponen gaji, potongan, net salary tampil |
| PY-06 |
Payroll report |
Head Admin |
Buka payroll report → pilih periode |
Summary: total gross, deductions, net per departemen |
2.3 PPh 21 Auto-calculation
| # |
Scenario |
Role |
Steps |
Expected |
| TX-01 |
PPh 21 TK/0 |
Head Admin |
Compute payslip pegawai TK/0, gaji 10jt |
PTKP=54jt, PKP dihitung, tarif progresif 5% diterapkan |
| TX-02 |
PPh 21 K/2 |
Head Admin |
Compute payslip pegawai K/2, gaji 15jt |
PTKP=67.5jt, biaya jabatan max 500rb, PPh21 bulanan benar |
| TX-03 |
Biaya jabatan cap |
Head Admin |
Pegawai gaji >10jt |
Biaya jabatan = 500.000 (max cap) |
| TX-04 |
PKP negatif |
Head Admin |
Pegawai gaji rendah <4.5jt TK/0 |
PKP=0, PPh21=0 (tidak negatif) |
| TX-05 |
Bracket 15% |
Head Admin |
Pegawai PKP 100jt/tahun |
Layer 1: 60jt×5% + Layer 2: 40jt×15% |
2.4 BPJS Auto-deduction
| # |
Scenario |
Role |
Steps |
Expected |
| BJ-01 |
BPJS Kesehatan |
Head Admin |
Compute payslip, pegawai punya BPJS KES |
Potongan 1% employee, 4% company (max gaji 12jt) |
| BJ-02 |
BPJS JHT |
Head Admin |
Compute payslip |
JHT employee 2%, company 3.7% |
| BJ-03 |
BPJS JP |
Head Admin |
Compute payslip |
JP employee 1%, company 2% (max gaji 9.077.600) |
| BJ-04 |
BPJS JKK & JKM |
Head Admin |
Compute payslip |
JKK 0.24%, JKM 0.3% (company only, tidak di payslip) |
| BJ-05 |
Salary cap KES |
Head Admin |
Pegawai gaji 15jt |
BPJS KES dihitung atas dasar 12jt (cap) |
| BJ-06 |
Config management |
Head Admin |
Buka /hr/config/bpjs → update rates |
Rates tersimpan, payslip baru pakai rate terbaru |
2.5 THR Auto-calculation
| # |
Scenario |
Role |
Steps |
Expected |
| TH-01 |
THR full (≥12 bulan) |
Head Admin |
Set is_thr_payment=True, pegawai masa kerja >1th |
THR = 1 bulan gaji pokok + tunjangan tetap |
| TH-02 |
THR proporsional (<12 bulan) |
Head Admin |
Pegawai masa kerja 6 bulan |
THR = 6/12 × upah total |
| TH-03 |
THR prorate (resign) |
Head Admin |
Pegawai resign, final payslip |
THR prorate berdasarkan bulan kerja tahun berjalan |
| TH-04 |
THR not in period |
Head Admin |
Normal payslip (bukan periode THR) |
THR = 0 (rule tidak aktif) |
2.6 Cuti & Izin
| # |
Scenario |
Role |
Steps |
Expected |
| LV-01 |
Ajukan cuti tahunan |
Teacher |
Buka /hr/my-timeoff → ajukan cuti |
Request terkirim, status "Pending" |
| LV-02 |
Approve cuti |
Head Admin |
Buka /hr/leave/approvals → approve |
Status berubah "Approved", saldo berkurang |
| LV-03 |
Reject cuti |
Head Admin |
Reject request cuti |
Status "Rejected", saldo tidak berkurang |
| LV-04 |
Saldo cuti |
Teacher |
View saldo cuti pribadi |
Saldo akurat: sisa = total - terpakai |
| LV-05 |
Leave policy config |
Head Admin |
Buka /hr/leave/types → edit policy |
Jenis cuti, saldo awal, carry-over tersimpan |
| LV-06 |
Cuti melebihi saldo |
Teacher |
Ajukan cuti > saldo tersedia |
Sistem tolak / warning |
2.7 Kehadiran Staf
| # |
Scenario |
Role |
Steps |
Expected |
| AT-01 |
Self check-in |
Teacher |
Check-in via attendance page |
Waktu check-in terekam |
| AT-02 |
Self check-out |
Teacher |
Check-out via attendance page |
Waktu check-out terekam, durasi dihitung |
| AT-03 |
Attendance report |
Head Admin |
Buka /hr/attendance → filter periode |
Rekap kehadiran per pegawai tampil |
| AT-04 |
Late detection |
Head Admin |
Pegawai check-in terlambat |
Status "Late" muncul di report |
2.8 Dokumen Kepegawaian Digital
| # |
Scenario |
Role |
Steps |
Expected |
| DC-01 |
List dokumen |
Head Admin |
Buka /hr/documents |
Daftar dokumen pegawai dengan filter jenis & status |
| DC-02 |
Tambah dokumen |
Head Admin |
Klik "Tambah" → isi form → upload file → Simpan |
Dokumen tersimpan dengan attachment |
| DC-03 |
Filter by type |
Head Admin |
Pilih filter "SK Pengangkatan" |
Hanya dokumen SK Pengangkatan tampil |
| DC-04 |
Expiry warning |
Head Admin |
Dokumen dengan expiry <30 hari |
Tanggal kadaluarsa highlighted |
| DC-05 |
Cek file attachment |
Head Admin |
Klik dokumen yang ada file |
Icon file check hijau untuk yang ada attachment |
| DC-06 |
Access control |
Teacher |
Akses /hr/documents |
Hanya dokumen milik sendiri yang tampil |
| DC-07 |
Archive dokumen |
Head Admin |
Ubah status dokumen → "Diarsipkan" |
Status berubah, dokumen tetap ada tapi di-archive |
2.9 Riwayat Jabatan / Kepegawaian
| # |
Scenario |
Role |
Steps |
Expected |
| EH-01 |
List riwayat |
Head Admin |
Buka /hr/employment-history |
Timeline riwayat jabatan semua pegawai |
| EH-02 |
Tambah riwayat promosi |
Head Admin |
Tambah → Jenis "Kenaikan Pangkat" → isi detail |
Riwayat tersimpan, previous values auto-filled |
| EH-03 |
Tambah mutasi |
Head Admin |
Tambah → Jenis "Mutasi/Pindah Tugas" → isi departemen baru |
Riwayat tersimpan dengan dept sebelumnya |
| EH-04 |
Filter by change type |
Head Admin |
Filter "Kenaikan Pangkat" |
Hanya riwayat promosi tampil |
| EH-05 |
Search pegawai |
Head Admin |
Ketik nama pegawai |
Filter realtime berdasarkan nama |
| EH-06 |
Timeline icons |
Head Admin |
View timeline |
Icon berbeda per jenis perubahan (promosi=biru, mutasi=amber, dll) |
2.10 Dapodik/SIMPATIKA Export
| # |
Scenario |
Role |
Steps |
Expected |
| DP-01 |
Export data siswa |
Head Admin |
Buka Dapodik Export → tipe "Peserta Didik" → Export |
File Excel dengan format Dapodik (NISN, NIK, biodata) |
| DP-02 |
Export data GTK |
Head Admin |
Tipe "GTK" → Export |
File Excel GTK (NUPTK, NIP, sertifikasi) |
| DP-03 |
Export rombel |
Head Admin |
Tipe "Rombongan Belajar" → Export |
File Excel rombel (wali kelas, jumlah siswa) |
| DP-04 |
Skip incomplete data |
Head Admin |
Uncheck "Sertakan Data Tidak Lengkap" → Export |
Data tanpa NISN/NIP di-skip, statistik akurat |
2.11 Principal & Foundation Views
| # |
Scenario |
Role |
Steps |
Expected |
| PR-01 |
Principal HR overview |
Principal |
Buka HR dashboard |
Summary pegawai, attendance, leave stats |
| FD-01 |
Foundation payroll cost |
Foundation Chairman |
Buka payroll cost view |
Total cost per departemen, breakdown |
3. Security Test Cases
| # |
Scenario |
Expected |
| SEC-01 |
Teacher akses payroll management |
Denied (hanya view payslip pribadi) |
| SEC-02 |
Teacher akses payslip pegawai lain |
Denied (employee ID check) |
| SEC-03 |
Teacher akses document repo |
Hanya dokumen milik sendiri |
| SEC-04 |
Teacher akses employment history |
Hanya riwayat milik sendiri |
| SEC-05 |
Non-HR user create payslip |
Denied (access rights check) |
| SEC-06 |
Foundation lihat detail per pegawai |
Denied (hanya summary) |
| SEC-07 |
API tanpa auth |
403 / redirect login |
| # |
Scenario |
Expected |
| PERF-01 |
Load 500+ pegawai |
List render <2 detik |
| PERF-02 |
Generate batch payslip 100 pegawai |
Proses selesai <30 detik |
| PERF-03 |
Dapodik export 1000 siswa |
File generate <10 detik |
| PERF-04 |
Document repo dengan 1000+ dokumen |
Filtered load <2 detik |
5. Integration Test Cases
| # |
Scenario |
Expected |
| INT-01 |
Payslip → Accounting (journal entries) |
Payslip posted → journal entry terbuat otomatis |
| INT-02 |
BPJS config → Payslip computation |
Perubahan rate → payslip baru pakai rate terbaru |
| INT-03 |
Leave approval → Attendance |
Cuti approved → attendance auto-filled |
| INT-04 |
Employee document → Employment history |
SK linked antara document dan history record |
| INT-05 |
Golongan change → Meal rate auto |
Ubah golongan di kontrak → meal rate auto-adjust |
6. Regulatory Compliance Checklist
| # |
Regulasi |
Verifikasi |
| REG-01 |
UU HPP 2021 — PPh 21 |
5 bracket tarif progresif (5%, 15%, 25%, 30%, 35%) |
| REG-02 |
PMK 168/2023 — Biaya Jabatan |
5% max Rp 500.000/bulan |
| REG-03 |
PTKP 2024 |
TK/0=54jt, K/0=58.5jt, K/1=63jt, K/2=67.5jt, K/3=72jt |
| REG-04 |
BPJS Kesehatan |
Employee 1%, Company 4%, max gaji 12jt |
| REG-05 |
BPJS JHT |
Employee 2%, Company 3.7% |
| REG-06 |
BPJS JP |
Employee 1%, Company 2%, max gaji 9.077.600 |
| REG-07 |
BPJS JKK (sekolah) |
0.24% (risiko sangat rendah) |
| REG-08 |
BPJS JKM |
0.3% |
| REG-09 |
SE Menaker 6/2016 — THR |
≥12bln = 1 bulan upah, <12bln = proporsional |
| REG-10 |
Permendikbud — Beban Kerja Guru |
Min 24 jam/minggu tatap muka untuk TPG |
7. Test Data Requirements
Pegawai Test Data
- PNS Gol III/A, K/2, gaji 5jt → PPh 21 rendah
- Guru Tetap Swasta, TK/0, gaji 10jt → PPh 21 medium
- PPPK Gol IV/A, K/3, gaji 15jt → PPh 21 tinggi, BPJS cap
- Honorer, gaji 3jt → PPh 21 = 0 (di bawah PTKP)
- Guru baru (masa kerja 6 bulan) → THR proporsional
Dokumen Test Data
- SK Pengangkatan (no expiry)
- Sertifikat Pelatihan (expiry 1 tahun)
- Kontrak Kerja (expiry 30 hari — warning)
- Ijazah + Transkrip (with attachment)
8. Sign-off Checklist
Automation Baseline
tests/e2e/hr/payroll-crud.spec.ts — payroll CRUD smoke + payslip self-service
tests/e2e/critical/tier1_hr_workflow.spec.ts — dokumen kepegawaian, riwayat jabatan, dan cuti request → approval
tests/unit/services/hrDocument.service.spec.js
tests/unit/services/leaveApprovalPolicy.spec.js
tests/unit/services/principalHrOverview.service.spec.js
tests/unit/services/payroll.service.spec.js
tests/unit/services/foundation.service.spec.js
Automation di atas adalah baseline teknis. Sign-off produksi tetap membutuhkan verifikasi operasional oleh Head Admin, Principal, dan Foundation pada environment pra-produksi/produksi.
| # |
Item |
PIC |
Status |
| 1 |
Database pegawai CRUD |
Head Admin |
☐ |
| 2 |
Payroll computation (gaji + potongan) |
Head Admin |
☐ |
| 3 |
PPh 21 all brackets correct |
Head Admin |
☐ |
| 4 |
BPJS all programs correct |
Head Admin |
☐ |
| 5 |
THR auto-calculation |
Head Admin |
☐ |
| 6 |
Cuti workflow (request → approve) |
Teacher + Head Admin |
☐ |
| 7 |
Self-attendance check-in/out |
Teacher |
☐ |
| 8 |
Document repository CRUD |
Head Admin |
☐ |
| 9 |
Employment history tracking |
Head Admin |
☐ |
| 10 |
Dapodik export (siswa, GTK, rombel) |
Head Admin |
☐ |
| 11 |
Payslip self-service |
Teacher |
☐ |
| 12 |
Principal HR overview |
Principal |
☐ |
| 13 |
Foundation payroll cost |
Foundation |
☐ |
| 14 |
Security access control |
QA |
☐ |
| 15 |
Performance benchmarks |
QA |
☐ |
Approved by: __
Date: __