UAT Checklist

Admin/Staff Acceptance Testing

Progress0 / 68 passed

Admin enters 4-digit PIN at the Kiosk → should redirect to Dashboard (or Event Service if event is live)

Expected: Redirected to correct page; name shown in menu

Staff enters PIN → should redirect to POS (or Event Service if event is live)

Expected: POS opens; admin-only pages locked

Invalid PIN entered

Expected: Error shown; no redirect

Session timeout after inactivity (default 60 min)

Expected: Logged out; redirected to Kiosk PIN screen

Navigate to Event Service on a day with a scheduled event

Expected: Event title, date, and check-in counts shown

Navigate to Event Service on a day with NO event

Expected: "No Event Today" empty state with link to POS

Check in a member from "Not Checked In" list

Expected: Moved to "Checked In"; count updates; toast confirms

Check in a guest via the guest dialog

Expected: Guest name appears in checked-in list; guest pass deducted if applicable

Tap a checked-in person → navigate to Sales

Expected: Sales page opens with that person selected as buyer

Navigate from Event Service → Sales → Corrections → Raffle → back to Event Service

Expected: All links work; no broken navigation

Low-keg indicator shows in summary bar when a tap is under 15%

Expected: ⚠ Low keg badge visible

Open Sales page with no person selected

Expected: "Start a Sale" prompt with "Select Person" button

Select a member from the person picker

Expected: Member name, photo, and token balance shown

Add a beer from tap list to cart

Expected: Item appears in cart with 1-token cost

Add a bottle for sale to cart

Expected: Item appears with correct token cost from settings

Checkout with sufficient tokens

Expected: Toast confirms; balance decreases; cart clears; keg volume deducted

Attempt checkout with insufficient tokens

Expected: Red warning "Need X more tokens"; checkout button disabled

Comp items from cart

Expected: Comp dialog opens; inventory deducted; no tokens charged

Empty cart → "Next Person" and "Event Service" quick actions visible

Expected: Buttons shown and functional

Change person with items in cart

Expected: Confirmation dialog warns about discarding cart

Buy tokens inline (cash / e-transfer)

Expected: Tokens added; balance updates; Sale + Transaction created

Member enters PIN and logs in

Expected: Drink menu shown; auto check-in to event if one exists

Browse available beers and liquors

Expected: Taps with keg info shown; stock percentages visible

Select drink → confirm pour

Expected: Pour processes; success screen shows new balance; auto-logout timer starts

Select a liquor with insufficient volume for a pour

Expected: Error toast: "Not enough [name] remaining"

Select a beer tap with no KegInstance

Expected: Error toast: "Tap X has no KegInstance. Ask staff."

Member with 0 tokens tries to pour

Expected: Pour blocked (buy tokens prompt or disabled)

Screensaver activates after idle timeout

Expected: Screensaver shows; tap to return to PIN screen

Open Corrections page and view today's drink transactions

Expected: Transactions listed with member, drink, time, bartender

Correct a drink pour (wrong member)

Expected: Tokens refunded to original; charged to correct member; audit log created

Correct a drink pour (cancelled / not poured)

Expected: Tokens refunded; keg volume restored; audit logged

Refund a sale (full refund)

Expected: Tokens removed; sale deleted; audit logged

Refund a sale (partial refund)

Expected: Proportional tokens removed; sale amount adjusted

Remove a comped drink

Expected: Comp record deleted; audit logged; warning about inventory not restored

View correction history

Expected: History dialog shows all corrections with summary stats

Already-corrected transaction shown dimmed with "Corrected" badge

Expected: Visual distinction clear

Open Reports page

Expected: Dashboard tab loads with customizable widgets

Search for a report by name

Expected: Filtered list shown; reports match query

Favorite/unfavorite a report

Expected: Star toggles; favorites persist across sessions

Apply date filter (7d, 30d, 90d, custom)

Expected: All charts and tables update to filtered range

Export a report to CSV

Expected: CSV downloads with correct columns and data

Open Event Profitability report

Expected: Events listed with revenue, expenses, net profit; "Tokens" column labeled as estimated

Open Shift Summary report

Expected: Shifts listed with hours, revenue, pours; expandable detail cards

Open Inventory Exceptions report

Expected: Critical/warning exceptions listed; integrity banner if critical issues

Open report with no data in selected range

Expected: Empty state shown (no crash)

Open Enhanced Low Stock report

Expected: Items sorted by stock %; depletion estimates with (est.) label

Select low-stock items and click "Create PO Draft"

Expected: PO Draft dialog opens with selected items pre-populated

Select a vendor

Expected: Vendor dropdown populated; auto-selects if all items share a supplier

Vendor mismatch (item linked to different supplier)

Expected: Amber warning banner shown listing mismatches

No vendors in system

Expected: "No active vendors" message; Create button disabled

Edit quantities/costs and create draft

Expected: PO created with status "draft"; toast confirms with PO number

Member logs in with PIN

Expected: Home dashboard shows: balance, next event, on-tap, recent activity

Tap "Activity" in bottom nav

Expected: Activity & History tab shows check-ins and raffle wins

Tap "View All" on recent activity

Expected: Navigates to Activity tab (not a dead link)

Browse Drinks tab

Expected: On-tap beers and liquor shelf shown

Browse Events tab

Expected: Upcoming events shown; RSVP button functional

More → Messages, Directory, Cigars, News, Raffles

Expected: All sub-views load without errors

Send tokens to another member

Expected: Transfer dialog works; balances update

Member with no recent activity

Expected: Recent activity section hidden; Activity tab shows empty state

Bottom nav renders and is tappable on mobile

Expected: All 5 tabs accessible; active indicator visible

No event scheduled today → Event Service page

Expected: "No Event Today" with link to POS

No vendors exist → Low Stock PO Draft

Expected: Warning text; Create button disabled

Report with no data in selected date range

Expected: Empty state or "No data" message (no crash)

Nearly empty keg (< 5%)

Expected: Critical badge on low-stock report; near-empty warning on exception report

Negative keg volume (data integrity issue)

Expected: Critical exception flagged; integrity banner shown

Transaction with null created_date in portal activity

Expected: No crash; graceful empty string for date

Member with no event check-ins or raffle wins → Portal Activity

Expected: "No activity yet" empty state

Double-tap checkout button

Expected: Only one checkout processed (lock guard active)