Test Cases: Event Attendance Reports

♻️ Reconciled 2026-07-01 — CSV-only confirmed correct; NO_SHOW handling updated (#397/#416). This report's export (GET /admin/events/:eventId/attendance, real handler getAttendanceReport) is correctly CSV-only — no xlsx here (unlike invoices/payments/treasury/event-registrations, which now support ?format=xlsx per #228). New: the export applies NO status filter, so NO_SHOW/CANCELLED/WAITLISTED rows are all present; the separate stats endpoint (GET /events/:eventId/attendance/stats) EXCLUDES NO_SHOW/WAITLISTED from its checked-in/total ratio. A consolidated reconciliation block (registered, checkedIn, walkIns, noShow, cancelled, stillPending, capacity, attendanceRate, eventEnded) is now returned — noShow only populates once the event has ended. Also note: all dates/timestamps in this export are raw UTC, not tenant-local. See TC-RPT-004 for full coverage.

Module: Reporting & Analytics - Event Attendance Reports

Priority: P3

Phase: 5

Backend Endpoint: GET /api/reporting/reports/events/attendance

Frontend Pages: AdminEventAttendanceReportPage, ExecutiveDashboardPage

Prerequisites

Test Data Reference


Test Cases

TC-RPT-003-001: View Event Attendance Report - Default

StepActionExpected Result
1Login as Admin User (ADMIN).Dashboard displayed.
2Navigate to Reports > Event Attendance.Attendance report page displayed.
3Verify report loads with recent events.Default event list shown.
4Verify summary statistics visible.Total events, total attendance, avg attendance rate.

TC-RPT-003-002: Select Single Event for Report

StepActionExpected Result
1Access Event Attendance Report page.Report displayed.
2Locate event selector/dropdown.Event list available.
3Select event: "Q4 General Assembly".Event selected.
4Verify event details load.Event name, date, location shown.
5Verify attendance metrics displayed.Registered, Checked-in, No-show counts.

TC-RPT-003-003: View Event Attendance Details

StepActionExpected Result
1Select event: "Annual Engineers Summit 2024".Event selected.
2Verify registration count.Total registrations displayed.
3Verify check-in count.Checked-in count displayed.
4Verify no-show count.No-show count = Registered - Checked-in.
5Verify attendance rate percentage.(Checked-in / Registered) * 100.

TC-RPT-003-004: View Attendee List

StepActionExpected Result
1Select specific event.Event selected.
2View attendee list section.List displayed.
3Verify columns: Name, Member ID, Status.Columns visible.
4Verify check-in timestamp column.Check-in time for attended.
5Verify no-show attendees marked.Status shows "No Show".

TC-RPT-003-005: Filter Events by Date Range - This Month

StepActionExpected Result
1Access Event Attendance Report.Report displayed.
2Locate date range filter.Date filter available.
3Select preset: "This Month".Filter applied.
4Verify only events in current month shown.Event dates within range.
5Verify summary updates accordingly.Totals reflect filtered events.

TC-RPT-003-006: Filter Events by Date Range - Last Quarter

StepActionExpected Result
1Access Event Attendance Report.Report displayed.
2Select preset: "Last Quarter".Filter applied.
3Verify events from last 3 months displayed.Event dates within range.
4Verify multiple events listed.At least 2-3 events if available.

TC-RPT-003-007: Filter Events by Date Range - Custom

StepActionExpected Result
1Access Event Attendance Report.Report displayed.
2Select "Custom" date range.Date pickers enabled.
3Enter start date: 2024-01-01.Start date set.
4Enter end date: 2024-06-30.End date set.
5Apply filter.Filter applied.
6Verify events fall within specified range.Only matching events shown.

TC-RPT-003-008: Filter Events by Date Range - Full Year

StepActionExpected Result
1Access Event Attendance Report.Report displayed.
2Select preset: "This Year" or enter Jan 1 - Dec 31.Filter applied.
3Verify all events for the year displayed.Complete year's events.
4Verify summary shows yearly totals.Accurate aggregate stats.

TC-RPT-003-009: Filter by Specific Event

StepActionExpected Result
1Access Event Attendance Report.Report displayed.
2Use event search or filter.Search field available.
3Search for "Summit".Results filtered.
4Verify only events with "Summit" in name shown.Matching events displayed.
5Select event from results.Detailed view for selected event.

TC-RPT-003-010: Filter by Event Type

StepActionExpected Result
1Access Event Attendance Report.Report displayed.
2Locate event type filter.Filter control available.
3Select type: "General Assembly".Filter applied.
4Verify only General Assembly events shown.Event type matches filter.
5Verify attendance metrics for type.Aggregate for filtered events.

TC-RPT-003-011: Check-In Statistics - Attendance Rate

StepActionExpected Result
1Select event with mixed attendance.Event selected.
2Verify attendance rate calculation.Rate = (Checked-in / Registered) * 100.
3Verify rate displayed as percentage.e.g., "88.2%" format.
4Verify visual indicator (if any).Progress bar or gauge.

TC-RPT-003-012: Check-In Statistics - No-Show Rate

StepActionExpected Result
1Select event with no-shows.Event selected.
2Verify no-show count displayed.Number of no-shows shown.
3Verify no-show rate calculation.Rate = (No-show / Registered) * 100.
4Verify rate displayed correctly.e.g., "11.8%" format.

TC-RPT-003-013: Check-In Statistics - Peak Check-In Time

StepActionExpected Result
1Select event with check-in timestamps.Event selected.
2View check-in statistics section.Stats displayed.
3Identify peak check-in time if available.Busiest check-in period shown.
4Verify time range displayed.e.g., "8:30 AM - 9:00 AM".

TC-RPT-003-014: Check-In Statistics - Early vs Late Arrivals

StepActionExpected Result
1Select event with varied check-in times.Event selected.
2View arrival distribution if available.Early, On-time, Late breakdown.
3Verify calculations based on event start time.Categories correctly assigned.

TC-RPT-003-015: Check-In Statistics - Aggregate by Event Type

StepActionExpected Result
1View attendance report with multiple event types.Report displayed.
2Compare attendance rates by type.Workshop vs Assembly rates.
3Identify best performing event type.Highest attendance rate.
4Identify event type with most no-shows.Lowest attendance rate.

TC-RPT-003-016: Export Attendance Report to CSV - Single Event

StepActionExpected Result
1Select specific event.Event details displayed.
2Locate "Export CSV" button.Button visible.
3Click "Export CSV".Download initiated.
4Verify file downloads.CSV file in downloads folder.
5Open CSV file.File opens correctly.
6Verify column headers.Event Name, Attendee Name, Check-in Status, Check-in Time.
7Verify row count matches attendee count.All attendees included.

TC-RPT-003-017: Export Attendance Report to CSV - Date Range

StepActionExpected Result
1Apply date range filter: Last Quarter.Filter applied.
2Click "Export CSV".Download initiated.
3Open CSV file.File opens correctly.
4Verify events from date range included.Multiple events in export.
5Verify each event's attendees listed.Complete attendee data.

TC-RPT-003-018: Export Attendance Report to CSV - Summary Only

StepActionExpected Result
1View attendance report summary.Summary displayed.
2Select "Export Summary" option if available.Export option chosen.
3Click export.Download initiated.
4Verify summary data in CSV.Event names, dates, attendance rates.
5Verify aggregate statistics.Total events, avg attendance.

TC-RPT-003-019: Export CSV - Filename Convention

StepActionExpected Result
1Export attendance report for single event.Download initiated.
2Check downloaded filename.Follows convention: event_attendance_EVENTID_YYYY-MM-DD.csv
3Export date range report.New download.
4Check filename includes date range.attendance_report_STARTDATE_ENDDATE.csv

TC-RPT-003-020: Export CSV - Large Attendance List

StepActionExpected Result
1Select event with 200+ registrations.Large event selected.
2Export to CSV.Download initiated.
3Verify export completes without timeout.Download successful.
4Verify all attendees included.Row count matches registration count.
5Verify no data truncation.All fields complete.

TC-RPT-003-021: Role-Based Access - ADMIN Full Access

StepActionExpected Result
1Login as ADMIN role.Login successful.
2Navigate to Event Attendance Report.Access granted.
3Verify all events accessible.All events in list.
4Verify all filters available.Date, Event, Type filters.
5Verify export functionality available.Export button works.

TC-RPT-003-022: Role-Based Access - EVENT_MANAGER Access

StepActionExpected Result
1Login as EVENT_MANAGER role.Login successful.
2Navigate to Event Attendance Report.Access granted.
3Verify full functionality available.All features work.
4Verify can view all event attendance.No restrictions on events.

TC-RPT-003-023: Role-Based Access - OFFICER Access

StepActionExpected Result
1Login as OFFICER role.Login successful.
2Navigate to Event Attendance Report.Access granted.
3Verify report functionality.Can view and filter.
4Verify export available.Can export CSV.

TC-RPT-003-024: Role-Based Access - MEMBERSHIP_MANAGER Access

StepActionExpected Result
1Login as MEMBERSHIP_MANAGER role.Login successful.
2Navigate to Event Attendance Report.Access granted.
3Verify report displays.Data visible.

TC-RPT-003-025: Role-Based Access - FINANCE_MANAGER Access

StepActionExpected Result
1Login as FINANCE_MANAGER role.Login successful.
2Navigate to Event Attendance Report.Access granted.
3Verify report displays.Data visible.

TC-RPT-003-026: Role-Based Access - MEMBER Denied

StepActionExpected Result
1Login as regular MEMBER.Login successful.
2Attempt to navigate to Event Attendance Report.Access denied.
3Verify 403 Forbidden or redirect.Not authorized message.
4Verify navigation menu hides report option.Menu item not visible.

TC-RPT-003-027: Report with No Events

StepActionExpected Result
1Access Event Attendance Report.Report displayed.
2Apply filter with no matching events.e.g., Date range with no events.
3Verify empty state displayed."No events found" message.
4Verify export button disabled.Cannot export empty data.
5Verify suggestion to adjust filters.Helpful message shown.

TC-RPT-003-028: Event with Zero Registrations

StepActionExpected Result
1Select event with no registrations.Event selected.
2Verify attendance metrics show zeros.0 registered, 0 checked-in.
3Verify attendance rate handled.0% or "N/A" displayed.
4Verify empty attendee list message."No registrations" message.

TC-RPT-003-029: Event with 100% Attendance

StepActionExpected Result
1Select event where all registered attended.Event selected.
2Verify attendance rate shows 100%."100%" displayed.
3Verify no-show count is zero.0 no-shows.
4Verify visual indicator reflects success.Green/positive indicator.

TC-RPT-003-030: Pagination - Large Attendee List

StepActionExpected Result
1Select event with many attendees.Event selected.
2View attendee list.List displayed.
3Verify pagination controls.Page numbers, next/prev.
4Navigate through pages.Different attendees on each page.
5Verify total count unchanged.Accurate total.

TC-RPT-003-031: Sort Attendees by Name

StepActionExpected Result
1View attendee list for event.List displayed.
2Click "Name" column header.Sort applied.
3Verify alphabetical sorting.A-Z order.
4Click again to reverse.Z-A order.

TC-RPT-003-032: Sort Attendees by Check-In Time

StepActionExpected Result
1View attendee list for event.List displayed.
2Click "Check-in Time" column.Sort applied.
3Verify earliest first.Chronological order.
4Click again for latest first.Reverse chronological.

TC-RPT-003-033: Filter Attendees by Check-In Status

StepActionExpected Result
1View attendee list for event.List displayed.
2Filter by status: "Checked In".Filter applied.
3Verify only checked-in attendees shown.No-shows hidden.
4Filter by status: "No Show".Filter changed.
5Verify only no-show attendees shown.Checked-in hidden.

TC-RPT-003-034: Real-Time Data - Recent Check-In Reflected

StepActionExpected Result
1View attendance for ongoing event.Current data shown.
2In another tab, check in an attendee.Check-in recorded.
3Refresh attendance report.Report updates.
4Verify new check-in reflected.Count increased, attendee shows checked-in.

TC-RPT-003-035: Compare Multiple Events

StepActionExpected Result
1Access event comparison view if available.Comparison mode.
2Select 3 events for comparison.Events selected.
3View side-by-side attendance rates.Rates displayed for each.
4Identify best and worst performing.Clear comparison.

API Test Cases

TC-RPT-003-API-001: GET /api/reporting/reports/events/attendance - Single Event

Request: GET /api/reporting/reports/events/attendance?eventId=EVT-2024-002

Auth: ADMIN token

Expected Response: 200 OK

{

"event": {

"id": "EVT-2024-002",

"name": "Annual Engineers Summit 2024",

"date": "2024-11-15",

"location": "Manila Convention Center"

},

"registrations": 85,

"checkedIn": 75,

"noShow": 10,

"attendanceRate": 88.2,

"attendees": [

{

"memberId": "MEM-2023-001",

"name": "Maria Cruz",

"checkedInAt": "2024-11-15T08:30:00Z",

"status": "CHECKED_IN"

},

{

"memberId": "MEM-2023-045",

"name": "Ana Reyes",

"checkedInAt": null,

"status": "NO_SHOW"

}

]

}

TC-RPT-003-API-002: GET /api/reporting/reports/events/attendance - Date Range

Request: GET /api/reporting/reports/events/attendance?startDate=2024-01-01&endDate=2024-06-30

Auth: EVENT_MANAGER token

Expected Response: 200 OK

{

"dateRange": {

"start": "2024-01-01",

"end": "2024-06-30"

},

"totalEvents": 5,

"aggregateStats": {

"totalRegistrations": 350,

"totalCheckedIn": 295,

"totalNoShow": 55,

"averageAttendanceRate": 84.3

},

"events": [

{

"id": "EVT-2024-001",

"name": "Q1 General Assembly",

"date": "2024-03-15",

"registrations": 120,

"checkedIn": 105,

"attendanceRate": 87.5

},

{

"id": "EVT-2024-003",

"name": "Technical Workshop",

"date": "2024-05-20",

"registrations": 45,

"checkedIn": 38,

"attendanceRate": 84.4

}

]

}

TC-RPT-003-API-003: GET /api/reporting/reports/events/attendance - All Events

Request: GET /api/reporting/reports/events/attendance

Auth: OFFICER token

Expected Response: 200 OK

{

"totalEvents": 12,

"aggregateStats": {

"totalRegistrations": 850,

"totalCheckedIn": 720,

"totalNoShow": 130,

"averageAttendanceRate": 84.7

},

"events": [...]

}

TC-RPT-003-API-004: GET /api/reporting/reports/events/attendance - Export CSV

Request: GET /api/reporting/reports/events/attendance?eventId=EVT-2024-002&format=csv

Auth: ADMIN token

Expected Response: 200 OK

Headers: Content-Type: text/csv, Content-Disposition: attachment; filename=event_attendance_EVT-2024-002.csv

Event Name,Event Date,Member ID,Attendee Name,Check-in Status,Check-in Time

"Annual Engineers Summit 2024","2024-11-15","MEM-2023-001","Maria Cruz","CHECKED_IN","2024-11-15 08:30:00"

"Annual Engineers Summit 2024","2024-11-15","MEM-2023-045","Ana Reyes","NO_SHOW",""

...

TC-RPT-003-API-005: GET /api/reporting/reports/events/attendance - Check-In Statistics

Request: GET /api/reporting/reports/events/attendance?eventId=EVT-2024-002&includeStats=true

Auth: ADMIN token

Expected Response: 200 OK

{

"event": {

"id": "EVT-2024-002",

"name": "Annual Engineers Summit 2024"

},

"registrations": 85,

"checkedIn": 75,

"noShow": 10,

"attendanceRate": 88.2,

"checkInStats": {

"peakTime": "08:30-09:00",

"earlyArrivals": 25,

"onTime": 45,

"lateArrivals": 5,

"averageCheckInTime": "08:42:00"

}

}

TC-RPT-003-API-006: GET /api/reporting/reports/events/attendance - Invalid Event ID

Request: GET /api/reporting/reports/events/attendance?eventId=INVALID-ID

Auth: ADMIN token

Expected Response: 404 Not Found

{

"error": "Not Found",

"message": "Event not found with ID: INVALID-ID"

}

TC-RPT-003-API-007: GET /api/reporting/reports/events/attendance - Unauthorized (MEMBER role)

Request: GET /api/reporting/reports/events/attendance

Auth: MEMBER token

Expected Response: 403 Forbidden

{

"error": "Forbidden",

"message": "Insufficient permissions to access this resource"

}

TC-RPT-003-API-008: GET /api/reporting/reports/events/attendance - No Auth

Request: GET /api/reporting/reports/events/attendance

Auth: None

Expected Response: 401 Unauthorized

{

"error": "Unauthorized",

"message": "Authentication required"

}

TC-RPT-003-API-009: GET /api/reporting/reports/events/attendance - Invalid Date Range

Request: GET /api/reporting/reports/events/attendance?startDate=2024-12-31&endDate=2024-01-01

Auth: ADMIN token

Expected Response: 400 Bad Request

{

"error": "Bad Request",

"message": "Start date must be before end date"

}

TC-RPT-003-API-010: GET /api/reporting/reports/events/attendance - Paginated Results

Request: GET /api/reporting/reports/events/attendance?eventId=EVT-2024-002&page=1&limit=20

Auth: ADMIN token

Expected Response: 200 OK

{

"event": {

"id": "EVT-2024-002",

"name": "Annual Engineers Summit 2024"

},

"pagination": {

"page": 1,

"limit": 20,

"totalItems": 85,

"totalPages": 5

},

"attendees": [

{...}

]

}


Summary Statistics

CategoryCount
UI Test Cases35
API Test Cases10
Total Test Cases45

Traceability

Test Case IDRequirementAPI Endpoint
TC-RPT-003-001 to 010Event Selection & FilteringGET /api/reporting/reports/events/attendance
TC-RPT-003-011 to 015Check-In StatisticsGET /api/reporting/reports/events/attendance?includeStats=true
TC-RPT-003-016 to 020CSV ExportGET /api/reporting/reports/events/attendance?format=csv
TC-RPT-003-021 to 026Role-Based AccessGET /api/reporting/reports/events/attendance
TC-RPT-003-027 to 035Edge Cases & UXGET /api/reporting/reports/events/attendance