Activity PWA v21 — CiC UX Walkthrough Draft Submission Date Feature Generated: 2026-05-28 ====================================== You are testing the Activity PWA (v21) on a real live app. Open Chrome and follow each step exactly. Report findings in the format: ✅ OK / ⚠️ Unexpected / ❌ Failed — with a brief note per item. BASE URL: https://srv1111289.hstgr.cloud/activity/ ═══════════════════════════════════════════ PART A — PROMOTER FLOW (Rakesh, a field staff user) ═══════════════════════════════════════════ A1. Login via Hub - Navigate to: https://srv1111289.hstgr.cloud/hub/ - Login as Rakesh, PIN 6666 - Confirm the hub dashboard loads with Rakesh's name A2. Go to Activity PWA - Navigate to: https://srv1111289.hstgr.cloud/activity/ - Confirm the activity list loads without a fresh login prompt (it should auto-pick the hub session — NO PIN asked again) A3. Open an active campaign and start a response - Tap any campaign card (e.g. "Epson for Business") - Confirm you see the capture/response screen - Fill in at least one form field (e.g. Person Name: "Test CiC Person") A4. Save as Draft - Tap "Save as Draft" button - Confirm "Draft saved." toast appears - You are taken to the responses list - Find the new draft card: it should show "📝 Draft" badge and a date in the top-right corner → Note the date shown (should be today's date in IST) A5. Open the draft - Tap the draft card - Confirm the capture form opens with the previously entered data pre-filled - Confirm "✅ Submit Response" button is shown (not just "Submit Response") - Confirm "💾 Save as Draft" button is visible - Confirm "🗑️ Delete Draft" button is visible A6. Test the CANCEL path of the datetime picker - Tap "✅ Submit Response" - A "📅 Set Submission Date & Time" modal should appear (NOT a direct submit) → Confirm: modal title shows "Set Submission Date & Time" → Confirm: shows "Draft saved: [date/time] IST" below the title → Confirm: a datetime input is pre-filled with today's date and current time → Confirm: hint text shows the allowed range (draft datetime → now IST) - Tap "Cancel" - Confirm: modal closes, form is still open, nothing was submitted - Confirm: you can still tap the buttons on the form A7. Test future date rejection (client-side) - Tap "✅ Submit Response" again - In the datetime picker, change the time to +15 minutes in the future (manually type a time 15 min ahead of current time) - Tap "Confirm & Submit" - Confirm: an error toast says "Submission time cannot be in the future" - Confirm: modal stays open (not closed) A8. Test valid backdated submission - In the same modal, change date to YESTERDAY (27 May 2026) - Set a time (e.g. 10:00 AM) - Tap "Confirm & Submit" - Confirm: modal closes, spinner appears, then "Saved! X photo(s) uploaded." toast - You are taken to the responses list - The response card should now show yesterday's date (27 May) in the top-right → This confirms the backdated submitted_at was stored correctly ═══════════════════════════════════════════ PART B — DIRECT SUBMIT FLOW (no draft) ═══════════════════════════════════════════ B1. Start a fresh response (no draft) - Open the same campaign → tap "📝 Capture Response" - Fill in Person Name: "Direct Submit Test" - Tap "Submit Response" (the primary button, NOT Draft) - Confirm: NO datetime picker modal appears - Confirm: submission goes directly (spinner, then "Saved!" toast) - Confirm: response card shows today's date ═══════════════════════════════════════════ PART C — ADMIN AUDIT TRAIL (Harish / Pramod) ═══════════════════════════════════════════ C1. Logout and login as Harish - Navigate to /activity/ and tap logout (or clear session) - Navigate to /hub/ and login as harish, PIN 0000 (if 0000 doesn't work, try the current PIN) - Navigate back to /activity/ C2. Open the backdated response (the one submitted in A8) - Find the card showing "27 May" in the responses list - Tap it to open the presentation view C3. Verify the Audit Trail panel - Scroll to the bottom of the response - Confirm: an "AUDIT TRAIL" section is visible (admin-only) - Confirm: it shows TWO rows: 📝 Draft saved [date] [time] IST ✅ Submitted [date] [time] IST - Confirm: the Draft saved time is earlier than the Submitted time - Confirm: "Draft saved" shows TODAY's time (when you saved the draft in A4) - Confirm: "Submitted" shows 27 May 10:00 AM IST (the date you chose in A8) C4. Open the direct-submit response (from B1) - Tap the "Direct Submit Test" card - Scroll to the bottom - Confirm: NO "Audit Trail" section visible (direct submits have no draft_at — section should not appear) C5. Open any OLD response (before today, before v21) - Tap any response card with a date before today - Scroll to bottom - Confirm: NO "Audit Trail" section visible for old records C6. Verify audit trail NOT visible to a promoter - Logout, login back as Rakesh (PIN 6666) - Open the backdated response (the one from A8) - Scroll to bottom - Confirm: "Audit Trail" section is NOT visible to Rakesh ═══════════════════════════════════════════ PART D — UX QUALITY CHECKS ═══════════════════════════════════════════ D1. Datetime picker — mobile usability - On mobile viewport, open the draft submit picker - Can you scroll through months/days easily in the datetime-local input? - Does the keyboard appear or a native date picker appear? - Is the picker usable one-handed? D2. Hint text clarity - In the datetime picker, read the hint text below the input - Does "Allowed: 2026-05-28T12:22 → now (IST)" make sense to a field worker? - Note if the format feels technical (should ideally be "27 May 12:22 PM" style) → Flag this as ⚠️ if the format is confusing D3. Draft date on response card - In the response list, find a draft card - The top-right date should be the draft creation date - Confirm it matches what you expect (today's date/time area) ═══════════════════════════════════════════ REPORT FORMAT ═══════════════════════════════════════════ For each item A1–D3 report: [Item] ✅/⚠️/❌ — one-line note Example: A6 ✅ — Modal appeared, Cancel closed it, form intact D2 ⚠️ — Hint text "2026-05-28T12:22 → now (IST)" is technical, may confuse field staff List all ⚠️ and ❌ items separately at the end under "Issues Found".