Files
simrsx-fe/QUICK_START_TESTING.md

8.4 KiB

QUICK START - ENCOUNTER EDIT MODE TESTING

Pre-Test Checklist

  • You have valid encounter IDs to test with
  • Browser DevTools are ready (F12 or Cmd+Opt+I)
  • Network tab can be monitored
  • You have update permissions (RBAC configured)
  • API is running and accessible

Running TEST 1: Load Edit Page (5 min)

Setup

  1. Open browser DevTools → Console tab
  2. Navigate to: http://localhost:3000/outpatient/encounter/123/edit (replace 123 with valid ID)

Expected Flow

1. Page loads with spinner
2. Console shows: 📥 [EDIT MODE] Loading encounter detail: {id: 123}
3. After 1-2 seconds, data loads
4. Console shows: ✅ [EDIT MODE] Encounter detail loaded and form mapped successfully
5. Form fields auto-populate with encounter data

Verify

  • Patient name visible in form
  • Doctor/Specialist selected
  • Date in YYYY-MM-DD format
  • Payment type shown (jkn, spm, etc.)
  • If JKN payment: Card number and SEP number visible
  • No console errors ( should not appear)
  • No red validation error messages

Success Criteria

Form fully populated and no errors


Running TEST 2: Edit & Save (5 min)

Setup

  • Use same page from TEST 1 (form already populated)
  • Open Network tab and filter: encounter

Steps

  1. Change doctor to different one
  2. Click "Simpan" (Save) button
  3. Watch Network tab for PATCH request
  4. Watch Console for save logs

Expected Flow

1. Click save
2. Console shows: 💾 [EDIT MODE] Sending PATCH request: {id: 123, payload: {...}}
3. Network shows: PATCH /api/v1/encounter/123
4. After 1-2 seconds: Console shows: 📤 [SAVE] API Response: {success: true}
5. Console shows: ✅ [SAVE] Success - Redirecting to list page
6. Page navigates to list

Verify Network Tab

Click on the PATCH request and check:

  • URL: /api/v1/encounter/123 (correct ID)
  • Method: PATCH (not PUT or POST)
  • Headers: Content-Type: application/json
  • Payload (Request body):
    • appointment_doctor_code is string
    • registeredAt has ISO format with Z
    • paymentMethod_code matches payment type
  • Response: "success": true

Success Criteria

PATCH request sent and success toast shown


Running TEST 3: BPJS Conditional Fields (3 min)

Setup

  • Navigate to new edit page: /outpatient/encounter/456/edit
  • Form loads with SPM payment type
  • Card number field is hidden/empty

Steps

  1. Find the "Jenis Pembayaran" (Payment Type) dropdown
  2. Change from SPM to JKN
  3. Observe form changes

Expected Behavior

  • Card number field appears and required
  • SEP type field appears and required
  • SEP number field appears (if SEP type selected)
  • Try to save without card number
  • Validation error appears: "No. Kartu BPJS wajib diisi"

Fill Fields

  1. Enter BPJS card number (e.g., 0000123456789)
  2. Select SEP type
  3. Try to save again
  4. Now validation should pass

Success Criteria

Conditional fields work and validation enforces requirements


Running TEST 4: Error Handling (5 min)

Setup (Simulate Error)

  • Open DevTools
  • Go to Network tab
  • Find "Throttling" dropdown (set to "Slow 3G" or "Offline")

Scenario A: GET Failure

  1. Set network to Offline
  2. Navigate to edit page: /outpatient/encounter/789/edit
  3. Observe error handling

Expected Result

  • Error toast appears: "Gagal memuat data kunjungan"
  • Console shows: [EDIT MODE] Failed to load encounter
  • Page auto-redirects to list

Scenario B: PATCH Failure

  1. Load page normally (turn network back on)
  2. Set network to Offline
  3. Try to save changes
  4. Observe error handling

Expected Result

  • Error toast appears: "Gagal memperbarui kunjungan"
  • Console shows: [SAVE] Failed
  • Page stays on form (user can retry)
  • Turn network back on and retry save

Success Criteria

Error handling works correctly for both GET and PATCH


Running TEST 5: Data Types (3 min)

Verify in Browser Console

// 1. Check form object structure
// Go to any edit page, then in console:
window.__nuxt__ // If available

// 2. Check Network tab for PATCH payload
// Look at "Request body" for PATCH /api/v1/encounter/{id}

Manual Checks

Doctor ID Type:

  • Form shows: "Dr. John Doe" (human readable)
  • Network payload shows: "appointment_doctor_code": "5" (string)
  • Correct

Date Format:

  • Form shows: "2025-12-02" (YYYY-MM-DD)
  • Network payload shows: "registeredAt": "2025-12-02T10:30:00.000Z" (ISO)
  • Correct

Payment Type:

  • Form shows: "BPJS" (human readable)
  • Form value: "jkn" (code)
  • Network payload shows: "paymentMethod_code": "insurance" (API code)
  • Correct

Success Criteria

All type conversions transparent and correct


Console Log Reference

Good Logs (No Issues)

✅ [EDIT MODE] Encounter detail loaded and form mapped successfully
✅ [SAVE] Success - Redirecting to list page
📥 [EDIT MODE] Loading encounter detail: {id: 123}
📋 [EDIT MODE] Mapped encounter to form: {...}
💾 [EDIT MODE] Sending PATCH request: {id: 123, payload: {...}}
📤 [SAVE] API Response: {success: true}

Bad Logs (Issues Found)

❌ [EDIT MODE] Failed to load encounter: 'Encounter not found'
❌ [SAVE] Failed: 'Validation error: invalid doctor_id'
❌ [SAVE] Error saving encounter: Error: Failed to put encounter

Action: If you see , note the exact error and check troubleshooting guide


Common Issues During Testing

Problem Cause Solution
Form not populated API call failed Check Network tab, verify API is running
Save button disabled Validation fails Check form for required fields marked in red
PATCH shows 422 Invalid data type Check Network payload vs expected schema
Doctor list empty Specialist not selected Select specialist first
Date shows wrong format Conversion failed Check console for mapping logs

Quick Reference: Test URLs

Outpatient Tests

http://localhost:3000/outpatient/encounter/1/edit
http://localhost:3000/outpatient/encounter/2/edit
http://localhost:3000/outpatient/encounter/3/edit

Inpatient Tests

http://localhost:3000/inpatient/encounter/1/edit
http://localhost:3000/inpatient/encounter/2/edit

Emergency Tests

http://localhost:3000/emergency/encounter/1/edit
http://localhost:3000/emergency/encounter/2/edit

Testing Checklist Summary

TEST 1 - Load Edit Page

  • Form loads without errors
  • All fields populated
  • Console shows success logs
  • Time: 5 min

TEST 2 - Edit & Save

  • Edit values
  • PATCH request sent correctly
  • Success message shown
  • Navigates to list
  • Time: 5 min

TEST 3 - BPJS Fields

  • Conditional fields appear
  • Validation enforced
  • Save blocked without required fields
  • Time: 3 min

TEST 4 - Error Handling

  • GET errors handled correctly
  • PATCH errors handled correctly
  • User feedback appropriate
  • Time: 5 min

TEST 5 - Data Types

  • Doctor ID: string
  • Dates: ISO format with Z
  • Payment type: correct mapping
  • Time: 3 min

Total Time: ~21 minutes


Success Indicators

All Tests Pass When:

No in console logs
All form fields populate correctly
PATCH requests appear in Network tab
Success toasts show after save
Redirects work properly
Validation enforces requirements
Error messages are helpful
Data types match expectations


Report Issues

If you encounter issues:

  1. Take a screenshot of the error
  2. Copy console logs (search for patterns)
  3. Check Network tab for failed requests
  4. Note the encounter ID and feature type (outpatient/inpatient/emergency)
  5. Describe what you were doing when issue occurred

Next Steps After Testing

If all tests pass:

  1. Feature is ready for deployment
  2. Can proceed to detail/readonly pages
  3. Can implement additional features

If issues found:

  1. Document the issue with error logs
  2. Check troubleshooting in ENCOUNTER_EDIT_TEST.md
  3. Review data mapping in ENCOUNTER_API_REFERENCE.md
  4. Check handler implementation in encounter-entry.handler.ts

Good Luck with Testing! 🚀

For more details, refer to:

  • ENCOUNTER_EDIT_TEST.md - Full test guide with detailed steps
  • ENCOUNTER_API_REFERENCE.md - API and handler reference
  • IMPLEMENTATION_SUMMARY.md - Overall architecture overview