ABC Events Module — E2E Test Scripts

Step-by-step test scripts tracing realistic event management workflows.

Events Module Quality Assurance
Progress: 0%
0 Pass 0 Fail 0 Skip
Select a Test Flow (8 total)

E2E-1: Event Creation Happy Path

Tests the full event creation workflow with required and optional fields, locations, and event copying.

BREAD Events Locations CRITICAL PRIORITY
TC-1.1 Create Event with Required + Optional FieldsAUTO

Preconditions

  • Logged in as Chapter Staff with Level 2+ and Events Permission
  • At least one location should exist in the system
  1. Navigate to Events module and click "Add Event"
    Expected: Event Details form opens with tabs (Details, Functions, Tickets, Registrations, Sponsors, Invoices, Communications)
  2. Fill REQUIRED fields: Event Name, Start Date. Verify Event Status defaults to "Active"
    Expected: All three fields populated correctly. Status = Active by default.
  3. Fill OPTIONAL fields: End Date (defaults to Start Date if blank), Start Time / End Time, Staff Contact, Classification / Sub-Classification, Chapter Region
    Expected: All fields accept values. End Date can be left blank (defaults to Start Date). Time fields are optional.
  4. Fill Details tab: Speaker/Instructor, Room Number, Max Registrants, Memo — General Event, Memo on Confirmation, Memo on Invoice
  5. Fill Event Description (WYSIWYG editor) with formatting and check it renders on landing page
    Expected: Editor accepts HTML, columns, tables, links, images. Description preview visible on landing page.
  6. Enable Registration checkbox. Set Registration Start Date/Time and Registration End Date/Time
    Expected: Registration dates control portal availability. Chapter staff can always register members regardless of these dates.
  7. Set Requested Invoice Due Date. Toggle Allow Invoice Requests checkbox
    Expected: Due date applies to "Request Invoice" registrations. Setting defaults to chapter-level setting.
  8. Save the event by clicking "Save" button
    Expected: Event created successfully. Redirects to View Event screen with all data persisted.

Key Validations

  • Event Name is required and cannot be empty
  • Start Date is required and must be valid date
  • Event Status defaults to Active and cannot be null
  • End Date defaults to Start Date if not explicitly set
  • All optional fields can accept values without validation errors
  • WYSIWYG editor preserves formatting and HTML
  • Registration dates control portal registration availability only

Bug Risk Areas

  • Required field validation not triggering (Event Name, Start Date missing)
  • Event Status not defaulting to Active
  • End Date not defaulting to Start Date
  • Registration dates blocking chapter staff from registering (should not block)
  • WYSIWYG editor stripping HTML or formatting
  • Data not persisting after save
TC-1.2 Add Location (New, Existing, Virtual)AUTO

Preconditions

  • At least one existing location in the system
  • A test company record (member or prospect) for company location
  1. Create a new event and on Event Details tab, select "Create New Location"
    Expected: Location creation form opens (inline or modal). Fields: Location Name, Main Phone, Status, Address, Contact, Directions, Notes.
  2. Fill a standard physical location with Address, Phone, Directions
    Expected: Location saved and attached to event. Directions appear on Event Confirmation communications.
  3. Create a second event and select "Use Existing Location" from the dropdown
    Expected: Dropdown shows all active locations. Only active locations (Status = Active) appear in selection list.
  4. Create a company location by selecting an existing member/prospect company
    Expected: Contact info auto-populates from company's individual records. Contact checkbox allows selection of which individual's info to use.
  5. Create a virtual event location. Verify ability to add a virtual link/URL
    Expected: Virtual location type available. Link field present and included on Event Confirmation.
  6. Verify inactive locations do NOT appear in the location selection dropdown
    Expected: Only Status = "Active" locations shown. Inactive locations hidden from selection.

Key Validations

  • New locations can be created during event creation
  • Existing active locations appear in dropdown
  • Inactive locations do not appear in dropdown
  • Company locations auto-populate contact info
  • Virtual locations support URL/link field
  • Location info persists on event record

Bug Risk Areas

  • Inactive locations appearing in dropdown
  • Company location not auto-populating contact info
  • Virtual location URL not saving or not appearing on confirmations
  • Location changes not persisting
TC-1.3 Copy Event With and Without RegistrantsHYBRID

Preconditions

  • An event with functions, tickets, and at least 2-3 registrations (some with payments)
  • A past event that has already occurred
  1. Navigate to existing event. Click "Copy Event" button (upper right)
    Expected: Copy modal opens. Options: Copy Registrants (yes/no), Set New Start Date/Time, Set New End Date/Time, Per-Function date adjustments.
  2. Copy with Registrants = NO. Set new date 3 months later. Verify functions adjust automatically
    Expected: New event created with all event info, functions, tickets, custom fields. NO registrations copied. Function dates calculated: new_function_date = old_function_date + (new_event_date - old_event_date).
  3. Copy with Registrants = YES. Set new date. Verify registrations are duplicated with new date
    Expected: All registrations copied with same ticket selections, attendee info, and payment status (as historical record).
  4. Verify copy works for past events (events that have already occurred)
    Expected: Past events can be copied regardless of whether they occurred. Useful for recurring annual events.
  5. Verify copied event has unique name and all pricing, functions, and tickets match the original
    Expected: All data (including custom fields) copied. Event can be immediately registered for without additional setup needed.

Key Validations

  • Copy function available on View Event screen
  • Registrants option works correctly (yes/no)
  • Function dates automatically calculated when event dates change
  • All event info, functions, tickets, custom fields copied
  • Past events can be copied
  • Copied registrations have same structure as original

Bug Risk Areas

  • Copy button not appearing on View Event screen
  • Function dates not adjusting when event date changes
  • Registrants not copying when option selected
  • Custom fields not copying
  • Past events throwing error on copy
  • Copied event not having unique name (duplicate conflict)

E2E-2: Functions & Tickets Setup

Tests the complete setup of event functions with multiple locations, all three ticket types, custom fields, and availability rules.

Functions Tickets Custom Fields CRITICAL PRIORITY
TC-2.1 Add Functions with Custom Dates and LocationsAUTO

Preconditions

  • An event with Event Location already set
  • At least 2 locations available (event location + one other)
  1. On Event Details, navigate to Functions tab. Click "Add Function"
    Expected: Function form opens with fields: Function Name, Start Date/Time, End Date/Time, Location, Speaker.
  2. Fill Function Name, verify Start/End Date/Time default to Event date/time, but can be overridden
    Expected: Defaults populate from event. All fields editable independently. Functions can have different dates/times than parent event.
  3. Select Location — verify it defaults to Event Location but can be changed to a different location
    Expected: Dropdown shows all available locations. Default = event location. Can select a different location.
  4. Enter Speaker/Instructor name (text field, no default)
    Expected: Speaker field is optional, accepts any text.
  5. Save the function and verify it appears in the Functions tab table with correct columns: Function Name, Function Type, Start Date/Time, End Date/Time, Location, Speaker
    Expected: Function persists. Table displays all columns correctly. Function can be edited or deleted.
  6. Add multiple functions with different dates and locations. Verify all display correctly
    Expected: Multiple functions can coexist. Each with independent dates and locations.

Key Validations

  • Functions tab accessible from Event Details
  • Start/End Date/Time default to event values but are independently editable
  • Location defaults to event location but can be changed
  • Functions can have different dates than parent event
  • Multiple functions can be added to single event
  • All function data persists after save

Bug Risk Areas

  • Start/End date not defaulting to event date
  • Location not defaulting to event location
  • Function date changes affecting other functions
  • Functions not displaying in tab after save
  • Cannot change location from event location
TC-2.2 Create All Three Ticket Types (Single, Table/Team, Sponsor)AUTO

Preconditions

  • Event with at least 2 functions already created
  1. Navigate to Tickets tab. Click "Add Ticket". Select Ticket Type = "Single Ticket"
    Expected: Single ticket form opens. Fields: Ticket Name, Description, Max Available, Access/Availability, Member/Non-Member/Other Pricing, Tax %, Related Functions, Include $0 on Invoice.
  2. Fill single ticket: Name "Gala Dinner", different pricing for Members ($150), Non-Members ($200), Other ($175). Set Max Available = 100
    Expected: All pricing options accept numeric values. Max Available is optional (blank = unlimited).
  3. Relate single ticket to one or more functions. Verify checklist shows Function Name, Start Date/Time, End Date/Time
    Expected: Functions optional to relate. Ticket can stand alone or be tied to multiple functions.
  4. Add a second ticket, select Ticket Type = "Table/Team Ticket"
    Expected: Table/Team form opens. Includes additional field: "Attendees Per Table/Team" (numeric input).
  5. Fill table ticket: Name "Golf Tournament - Team of 4", Pricing Members $600, Non-Members $750. Set Attendees Per Table/Team = 4. Set Max Available = 25 (25 teams × 4 = 100 spots)
    Expected: Table ticket form accepts all values. Attendees per table is numeric (controls how many attendees per registration).
  6. Add a third ticket, select Ticket Type = "Sponsor Ticket"
    Expected: Sponsor form opens. Includes "Included Items" section (select which tickets to bundle).
  7. Fill sponsor ticket: Name "Platinum Sponsor", Pricing $5000. Add Included Items: 2× "Gala Dinner" + 1× "Golf Tournament - Team of 4"
    Expected: Can select existing tickets with quantity. Included items will be counted against their max availability.
  8. Verify all three tickets appear in Tickets tab table with columns: Ticket Type, Ticket Name, Description, Member Pricing, Non-Member Pricing, Other Pricing, Function(s), Include $0 on Invoice
    Expected: All three tickets display correctly. Actions: Add, Edit, Custom Fields, Copy, Delete available per ticket.

Key Validations

  • All three ticket types available (Single, Table/Team, Sponsor)
  • Pricing fields accept numeric values for members, non-members, other
  • Max Available is optional (blank = unlimited)
  • Functions can be related or left blank (optional)
  • Table/Team tickets have attendees-per-table field
  • Sponsor tickets support included items with quantities
  • All tickets persist and display in table
  • Included items on sponsor tickets decrement from max availability

Bug Risk Areas

  • Ticket type not changing form fields (Table/Team not showing attendees field)
  • Pricing not accepting decimal values or proper formatting
  • Max Available = blank not handling as unlimited
  • Included items not decrementing from max availability
  • Sponsor ticket not allowing included items selection
  • Tickets not persisting after save
TC-2.3 Set Up Custom Fields for Tickets (Text & Selection)AUTO

Preconditions

  • Event with at least two tickets already created (e.g., Gala Dinner and Golf Tournament)
  1. On Tickets tab, select the "Gala Dinner" ticket. Click "Custom Fields" action
    Expected: Custom Fields manager opens. Shows table with actions: Add, Edit, Manage Attendees, Delete, Export.
  2. Click "Add Custom Field". Create a TEXT field named "Dietary Preferences" with "Add to Registration" checkbox CHECKED
    Expected: Field appears during portal registration for attendees to enter text (e.g., "Vegan", "Gluten-free").
  3. Create a SELECTION field named "Wine Pairing" with options: "Red", "White", "Both", "None". Check "Add to Registration"
    Expected: During registration, attendee selects one option from dropdown/radio.
  4. Create a TEXT field named "Allergy Information" with "Add to Registration" UNCHECKED
    Expected: Field does not appear during registration. Information must be gathered manually by chapter staff in Chapter Site.
  5. Now add a custom field to the "Golf Tournament" ticket. Create "Golf Handicap" (TEXT) with "Add to Registration" CHECKED
    Expected: Separate custom field. Does not appear on Gala ticket, only Golf ticket.
  6. Verify that editing a custom field AFTER registrations exist shows warning: "Are you sure you want to edit a custom field that already has registrations?"
    Expected: Warning indicates data discrepancy risk. Can still proceed with edit.
  7. Verify custom field can be deleted only if no registrations exist for the ticket
    Expected: If no registrations, delete succeeds. If registrations exist, delete blocked.

Key Validations

  • Custom fields can be TEXT or SELECTION type
  • "Add to Registration" checkbox controls visibility during portal registration
  • Fields with checkbox CHECKED appear in Step 3 of portal registration
  • Fields with checkbox UNCHECKED can be managed manually by staff only
  • Different tickets have independent custom field sets
  • Selection fields support multiple options
  • Editing field after registrations exist shows warning
  • Fields can only be deleted if no registrations exist

Bug Risk Areas

  • Custom fields appearing in portal registration when "Add to Registration" is unchecked
  • Selection field options not accepting multiple items
  • Custom fields from one ticket appearing on another ticket
  • Field deletion allowed even with existing registrations
  • Edit warning not appearing when editing field with registrations
  • Custom field data not persisting during registration
TC-2.4 Ticket Max Available & Access/Availability SettingsAUTO

Preconditions

  • Event with at least one ticket configured
  • Test accounts: one member company, one non-member company, one staff account
  1. Edit a ticket. Set Max Available = 3. On portal browse, verify ticket shows "Available Spots: 3" and quantity can go up to 3
    Expected: Ticket display shows remaining available spots. Attendee can select quantity up to available max.
  2. Register 3 attendees for the ticket via chapter site (fills it up). Go back to portal. Verify ticket no longer displays (disappeared from browse/selection)
    Expected: When Max Available reached, ticket hidden from portal registration view. Still visible to chapter staff for manual registration.
  3. Edit a ticket and set Access/Availability = "Members Only"
    Expected: Ticket only appears for logged-in members during portal registration. Non-members cannot see or select.
  4. Create a second ticket with Access/Availability = "Non-Members Only". Log in as non-member. Verify they can see non-member ticket but NOT the members-only ticket
    Expected: Access controls enforced during portal registration. Different tickets visible based on member status.
  5. Create a third ticket with Access/Availability = "Staff Only". Verify it does NOT appear on portal, only in chapter site registration
    Expected: Staff-only tickets not visible to members or non-members during portal registration. Available only through chapter staff manual registration.
  6. For a table/team ticket with Attendees Per Table = 4 and Max Available = 5, verify portal shows "20 Spots" (5 tables × 4 attendees) remaining
    Expected: Availability calculation: Max Available × Attendees Per Table = total spots shown on portal.

Key Validations

  • Ticket disappears from portal when Max Available reached
  • Max Available = blank shows "Unlimited" on portal
  • Access/Availability = "Members Only" hides from non-members
  • Access/Availability = "Non-Members Only" hides from members
  • Access/Availability = "Staff Only" hides from all portal users
  • Table/team ticket spots calculated as Max Available × Attendees Per Table
  • Portal does not show sold-out tickets in registration view

Bug Risk Areas

  • Sold-out ticket still appearing on portal
  • Access controls not enforced (members seeing non-member tickets)
  • Max Available not counting down correctly after registrations
  • Table/team spot calculation off (using Max instead of Max × Attendees)
  • Portal allowing registration when ticket sold out

E2E-3: Chapter Site Registration Flow

Tests manual registration from the Chapter Site, including individual/company creation and auto-update rules.

Chapter Site Registration Prospect Creation Auto-Update Rules CRITICAL PRIORITY
TC-3.1 Add Registration from Chapter Site (Individual, Ticket, Payment)AUTO

Preconditions

  • Event with tickets already created
  • Test company with existing individuals (for type-ahead selection)
  • Logged in as Chapter Staff with Level 2+ and Events Permission
  1. Navigate to Event → Registrations tab. Click "Add Registration"
    Expected: Registration form opens with sections: Registrant Info, Ticket Selection, Payment Information.
  2. Check "Keep Company" checkbox. Type-ahead search for Individual from existing company. Select one
    Expected: Checkbox available for efficiency. Type-ahead populates Informal Name, Email, Phone, Mobile, Title from individual record.
  3. Select a Ticket. Verify Description, Price, Tax auto-fill based on ticket
    Expected: Ticket selection triggers auto-population. Quantity defaults to 1 but can be increased.
  4. Set Payment Information: Payee Type (default = Company), Payee Company, Payee Individual. Leave payment blank initially
    Expected: Payee Type defaults to Company (99.9% use case). Can override to Individual. Payment Status defaults to Open.
  5. Save registration. Verify it appears in Registrations tab with all details
    Expected: Registration creates with status = Open. Payment status = Open. Appears in table with Company, Individual, Registration Date, Status, Ticket, Price, Total.
  6. Go back and edit the same registration. Add payment: select Payment Type = "Check", set Reg Paid Date. Save
    Expected: Payment Status updates to Paid. Paid Date and Paid Type recorded. Registration Status can be updated separately.
  7. Try adding a registration for a company with a quantity > 1. Verify multiple attendees can be entered or marked as "reserved attendee"
    Expected: If quantity > 1, system allows entering attendee info for each or leaving blank (defaults to "reserved attendee").

Key Validations

  • Add Registration action available on Registrations tab
  • Individual type-ahead auto-populates contact info
  • Ticket selection auto-fills description and pricing
  • Payee Type defaults to Company
  • Payment Type options available (Credit Card, Check, Cash, and system integration)
  • Registration creates with status = Open by default
  • Multiple registrations can be added for same event
  • Reserved Attendee placeholder available when attendee not specified

Bug Risk Areas

  • Individual type-ahead not auto-populating contact fields
  • Ticket selection not updating price/description
  • Registration not saving or appearing in tab
  • Payment information not being recorded
  • Payee Type defaulting to Individual instead of Company
  • Quantity > 1 not allowing multiple attendee entry
TC-3.2 Add New Individual + New Company During RegistrationAUTO

Preconditions

  • Event with tickets already created
  1. Add a new registration. In Company field, start typing a company name that does NOT exist. Look for "Add new" option
    Expected: Type-ahead suggests "Add New Company" option when no match found.
  2. Click "Add New Company". Fill modal: Company Name, Phone Number, Email Address. Submit
    Expected: Company created as PROSPECT (Prospect Level = Hot, Company Status = Active, Prospect Source Type = "Event Web Registration", Code = "Event"). Company appears in form and registration can proceed.
  3. Now select the newly created company. In Individual field, start typing an individual name that doesn't exist. Select "Add New Individual"
    Expected: "Add New Individual" option appears when no match. Opens modal with fields: First Name, Last Name, Company, Title, Email Address.
  4. Fill "Add New Individual" modal. Company should pre-fill with the selected company. Set Title. Submit
    Expected: Individual created and associated with the company. Individual appears in form. Registration proceeds with new individual.
  5. Complete and save the registration. Go to Company record and verify the individual appears in their record. Check that individual has the title and company you entered
    Expected: Individual record created with correct company association and title. Accessible from company's Individuals list.
  6. Go to Company record for the newly created prospect company. Verify it shows Prospect Level = "Hot", Status = "Active", Prospect Source Type = "Event Web Registration"
    Expected: Prospect company has correct defaults. Staff can follow up and convert to full member.

Key Validations

  • "Add New Company" option appears in type-ahead when no match
  • New company modal accepts Company Name, Phone, Email
  • New company created as PROSPECT with correct defaults (Prospect Level, Status, Source Type)
  • "Add New Individual" option appears in type-ahead
  • New individual modal pre-fills company field
  • Individual created and associated with company
  • New records immediately usable in current registration
  • Prospect Source Type = "Event Web Registration" (Code = "Event")

Bug Risk Areas

  • "Add New" options not appearing in type-ahead
  • New company not being created as prospect (created as full member)
  • New company not having correct Prospect defaults
  • New individual not associating with selected company
  • Individual created but not appearing in company record
  • Prospect Source Type not being set to "Event Web Registration"
TC-3.3 Auto-Update Rules (Email, Phone, Title)HYBRID

Preconditions

  • Event with tickets
  • Existing individual in the system with email and title on file
  1. Add a registration. Select an existing individual via type-ahead. During registration, change their Email to a new value and save
    Expected: New email automatically updates the individual's record in the system. Next time individual is viewed, shows new email.
  2. Add another registration for the same individual. Change their Phone/Mobile to a new value and save
    Expected: New phone/mobile auto-updates individual record.
  3. Add another registration. Change the individual's Title to a new value and save
    Expected: Title auto-updates in individual record.
  4. Verify that changes made during registration do NOT affect the existing registration's stored data (registration should preserve original values entered)
    Expected: Registration record keeps values entered at registration time. Individual master record updated separately.

Key Validations

  • Email changes during registration auto-update individual record
  • Phone/Mobile changes during registration auto-update individual record
  • Title changes during registration auto-update individual record
  • Individual master record updates do not affect existing registrations
  • Auto-update only occurs when individual selected via type-ahead

Bug Risk Areas

  • Email/Phone/Title not auto-updating individual record
  • Auto-update affecting historical registration data
  • Auto-update not triggering for all contact fields
  • Individual not appearing updated in next registration form
TC-3.4 Registration Delete RulesAUTO

Preconditions

  • Event with multiple registrations
  • Some registrations with Payment Status = Open
  • Some registrations with Payment Status = Paid
  1. On Registrations tab, click the "Delete" action on a registration with Payment Status = Open
    Expected: Delete confirmation appears. Deletion succeeds. Registration removed from tab.
  2. Try to delete a registration with Payment Status = Paid
    Expected: System blocks deletion. Error message: "Cannot delete registration with Paid payment status".
  3. To delete a paid registration, first change Payment Status back to Open (if possible per system rules). Then delete
    Expected: After status changed to Open, deletion succeeds.
  4. Verify delete button only appears for registrations eligible for deletion (Payment Status = Open)
    Expected: Delete action unavailable (grayed out or not shown) for Paid registrations in the tab.

Key Validations

  • Registration can only be deleted if Payment Status = Open
  • Delete confirmation required
  • Delete button not available for Paid registrations
  • Deleted registration removed from Registrations tab immediately
  • System prevents deletion with error message for ineligible registrations

Bug Risk Areas

  • Paid registration being deleted without confirmation
  • Delete button appearing for Paid registrations
  • Registration still visible after deletion
  • Error message not appearing when delete blocked
  • Deletion not checking Payment Status correctly

E2E-4: Portal Registration Flow (CRITICAL)

Tests the complete portal registration experience for logged-in and non-logged-in users, including browsing, ticket selection, attendee info, and step-by-step workflow.

Portal Registration Event Browsing Ticket Availability Attendee Management CRITICAL PRIORITY
TC-4.1 Public Browse Events (Views, Filters, Search)HYBRID

Preconditions

  • Portal enabled at chapter level
  • Multiple events created with varied classifications and locations (current, upcoming, and past)
  • At least 3 classifications with upcoming events
  • Public URL accessible without login
  1. Navigate to public events portal URL. System lands on Browse Events. Verify three view options available: List, Grid, Calendar
    Expected: All three view buttons visible and accessible. Default view matches chapter setting (or List if not configured).
  2. In List View, verify event columns: Name, Description, Date, Time, Location
    Expected: List displays all current/upcoming events with clear layout. Only events with registration enabled and current/upcoming dates shown.
  3. Click "Grid View" tab. Verify events display as cards with Name, Description, Date, Time, Location
    Expected: Grid displays same events as list but in card format. Cards are visually distinct and clickable.
  4. Click "Calendar View" tab. Verify full month calendar displays with click-to-access for events
    Expected: Calendar shows month view with navigation. Events indicated on dates. Click event to view details.
  5. Test Search functionality: Type event name or keyword from event description. Verify results filter in real-time
    Expected: Search filters across event names and descriptions. Results update immediately. Matches highlighted or prominently shown.
  6. Test Location filter: Drop down location options. Select a location. Verify only events at that location display
    Expected: Location dropdown populated from event locations. Filtering works across all view types. Selected location persists if user switches views.
  7. Test Classification filter: Drop down shows only classifications with upcoming events. Select one. Verify filtering
    Expected: Classification dropdown shows ONLY classifications that have upcoming events (not all possible classifications). Filtering works and persists across view changes.
  8. Verify past events are NOT displayed. List only current and upcoming events (start date >= today)
    Expected: Past events completely hidden from browse screens across all views and filters.

Key Validations

  • Three view options available: List, Grid, Calendar
  • Only current and upcoming events displayed
  • Search works across event names and descriptions
  • Location filter populated from event locations
  • Classification filter shows only classifications with upcoming events
  • Filters work consistently across all view types
  • Past events never displayed in browse
  • Default view matches chapter setting

Bug Risk Areas

  • View buttons not switching properly
  • Past events appearing in browse
  • Search not filtering correctly
  • Classification filter showing all classifications instead of only those with upcoming events
  • Location filter missing or incomplete
  • Filters not persisting across view changes
  • Events without registration enabled still appearing
TC-4.2 Portal Registration Steps 1-3 (Contact, Tickets, Attendees)HYBRID

Preconditions

  • Event with multiple ticket types and custom fields
  • Event with sponsor tickets that include other tickets
  • Test cases for both logged-in member and non-member users
  • Registration enabled and within registration date/time window
  1. [LOGGED-IN USER] Click "Register" on event. Step 1 opens with Contact Information. Verify fields are auto-populated from logged-in user (Email, First Name, Last Name, Company) and are editable
    Expected: Fields pre-fill from account but NOT saved to DB when edited. User can modify for this registration only.
  2. [NON-LOGGED-IN USER] Click "Register" on event. Step 1 opens with Email Address field and Search button. Type email and search
    Expected: Email search finds matching contacts. Auto-populates remaining fields if found. If not found, prompts login or account creation.
  3. [NON-LOGGED-IN] Select "Create new account". Provide email and password. Verify email verification required
    Expected: Account creation modal shown. Email verification step enforced. Cannot proceed to Step 2 until email verified. No guest checkout allowed.
  4. Proceed to Step 2: Select Ticket Options. Verify each ticket displays: Name, Description, Price, Included Attendees, Available Spots, Quantity selector
    Expected: All ticket info visible. Available Spots calculated as: Max Available - Purchased. If no max, shows "Unlimited".
  5. Select a regular ticket. Increase quantity to 2. Verify price and attendee count updates
    Expected: Quantity selector works. Line subtotal updates immediately. Attendee count increases.
  6. Select a sponsor ticket with included items. Verify included attendees display and count against availability of included ticket types
    Expected: Sponsor ticket shows included items (e.g., 2 golf tickets x 2 attendees = 4 included). These decrement availability of golf ticket option.
  7. Proceed to Step 3: Registration Information. Verify summary table at top: Ticket, Price, Quantity, Attendees, Subtotal (expandable for included items), Total row
    Expected: Summary clearly shows what's being purchased. Included items expandable to show detail. Total accurate.
  8. Scroll to Attendee Information section. For first attendee of each ticket, verify ALL fields required (First Name, Last Name, Email, Company) and auto-populated with registrant info but editable
    Expected: First attendee marked as required. Pre-filled with Step 1 info. Can be edited without affecting registrant's account.
  9. For additional attendees (if quantity > 1), verify fields are optional. Leave blank and proceed
    Expected: Additional attendee info optional. If not entered, defaults to "reserved attendee" (editable later by staff or registrant until registration closes).
  10. Scroll to custom fields section (if ticket has custom fields). Verify fields appear organized by ticket type
    Expected: Custom fields displayed for selected tickets. Required/optional status clear. Appear after attendee info.

Key Validations

  • Logged-in user: fields auto-populated but editable and not saved to DB
  • Non-logged-in user: email search and authentication required
  • New account requires email verification
  • No guest checkout option
  • Step 2: all ticket info displays correctly
  • Available Spots calculated: Max Available - Purchased
  • Sponsor tickets decrement included ticket availability
  • Step 3: summary table with all details and total
  • First attendee required, pre-populated, editable
  • Additional attendees optional, defaults to "reserved attendee"
  • Custom fields appear and organized by ticket

Bug Risk Areas

  • Step 1 info saved to DB when it should only apply to registration
  • Email verification not required for new accounts
  • Guest checkout allowed (should not be)
  • Available Spots calculation incorrect
  • Sponsor included items not decrementing parent ticket availability
  • First attendee not pre-filled
  • First attendee not marked as required
  • Reserved attendee placeholder not appearing
  • Custom fields not appearing or in wrong position
TC-4.3 Step 4 — Pay Now (Credit Card, ACH)HYBRID

Preconditions

  • Complete registration through Step 3
  • Chapter has Authorize.net or specified payment gateway configured
  • Paid event (not $0)
  1. At Step 4: Complete Registration, verify summary displays all ticket details and total amount due
    Expected: Registration summary shows Ticket, Price, Quantity, Attendees, Included Items, Total for each item and grand total.
  2. Click "Pay Now" button. Verify payment form appears with Credit Card and ACH options
    Expected: Payment method selection visible. Options match chapter gateway (typically Authorize.net). Bypasses shopping cart (immediate payment for current registration only).
  3. Select Credit Card. Enter test card number, expiry, CVV. Verify payment processes
    Expected: Payment gateway processes card. Transaction completes. Success page displays. Registration marked as Paid.
  4. Attempt payment with ACH option (if available). Verify form accepts routing number, account number, and processes
    Expected: ACH form collects banking info. Transaction processes. Registration marked as Paid.
  5. After successful payment, verify Event Registration Confirmation email is triggered (or Payment Confirmation if system rules require separate email)
    Expected: Confirmation email sent to registrant with event details, registration confirmation number, attendee list.

Key Validations

  • Step 4 summary displays all registration details and total
  • Pay Now button available and functional
  • Credit Card and ACH payment options available
  • Payment gateway matches chapter configuration
  • Registration status updates to Paid after successful payment
  • Payment bypasses shopping cart (immediate, not added to cart)
  • Confirmation email triggered after payment

Bug Risk Areas

  • Payment options not appearing
  • Payment method selection not matching chapter gateway
  • ACH option missing or broken
  • Payment not processing despite valid payment method
  • Registration status not updating to Paid
  • Confirmation email not triggered
  • Payment being added to cart instead of processing immediately
TC-4.4 Step 4 — Add to Cart (Multi-Event, Capacity Fills)AUTO

Preconditions

  • Complete registration through Step 3
  • Multiple events available for cart registration
  • Events with limited Max Available (to test capacity fill during checkout)
  1. At Step 4: Complete Registration, click "Add to Cart". Verify item added to cart
    Expected: Registration added to cart without creating a registration record yet. Cart shows item with Ticket Name, Price, Included Items, Quantity, Subtotal.
  2. Continue browsing. Register for a different event. Click "Add to Cart" again
    Expected: Multiple events can be added to same cart. Cart now shows 2 items from different events. Can proceed to checkout with all items.
  3. Review cart. Verify cart items do NOT create registrations yet. Go back to event portal and manually add a registration for the same ticket via Chapter Site (simulating another user registering)
    Expected: Registrations can be added externally without affecting items in cart. Cart items remain pending until checkout.
  4. Proceed to cart checkout. If ticket has limited Max Available and capacity was filled by other registrations, verify checkout fails with error message
    Expected: Checkout validates availability. If ticket sold out, displays: "Ticket [name] no longer available. Capacity filled."
  5. If checkout succeeds, user proceeds to payment (same CC/ACH options as Pay Now). Complete payment
    Expected: All cart items create registrations. Invoices generated if applicable. Confirmation email sent. Cart cleared.

Key Validations

  • Add to Cart button available at Step 4
  • Items added to cart without creating registrations
  • Multiple events can be added to same cart
  • Cart displays all items with details
  • Checkout validates ticket availability
  • Checkout fails if capacity filled while items in cart
  • Successful checkout creates all registrations and invoices
  • Confirmation emails sent after checkout

Bug Risk Areas

  • Add to Cart button not appearing
  • Registrations created before checkout (should be pending)
  • Multiple events not adding to same cart
  • Checkout not validating availability
  • Checkout succeeding when ticket is sold out
  • Invoices not generating after cart checkout
  • Confirmation emails not triggered
  • Cart not clearing after checkout
TC-4.5 Step 4 — Request Invoice (Unpaid Registration)AUTO

Preconditions

  • Complete registration through Step 3
  • Event has "Allow Invoice Requests" = True (chapter or event level)
  • Paid event (non-$0)
  1. At Step 4: Complete Registration, click "Request Invoice". Verify registration completes and unpaid invoice auto-generated
    Expected: Registration created with Payment Status = Unpaid. Invoice generated with status = Unpaid. Due date set from Event Details "Requested Invoice Due Date" field.
  2. Go to Portal → My Events. Verify registration visible in user's list
    Expected: Registration appears in My Events with status showing as Unpaid or Invoiced.
  3. Go to Chapter Site → Event → Invoices tab. Verify invoice appears with Status = Unpaid, user's name, amount, due date
    Expected: Invoice visible in chapter's Invoices tab. Shows all invoice details. Due date matches event setting.
  4. Go to Chapter Site → Browse Event Invoices (module level). Filter by Event and Status = Unpaid. Verify invoice appears
    Expected: Invoice searchable and filterable at module level. Shows company, registrant, event, amount, due date, and status.

Key Validations

  • Request Invoice button available when allowed by event settings
  • Registration created with status = Unpaid
  • Unpaid invoice auto-generated
  • Invoice due date matches Event Details "Requested Invoice Due Date"
  • Registration visible in Portal → My Events
  • Invoice visible in Chapter Site → Event → Invoices tab
  • Invoice visible in Chapter Site → Browse Event Invoices (module level)
  • Invoice filterable by status and event

Bug Risk Areas

  • Request Invoice button not appearing even when allowed
  • Invoice not auto-generated
  • Invoice status not set to Unpaid
  • Invoice due date incorrect or missing
  • Registration not visible in Portal My Events
  • Invoice not appearing in chapter's invoice lists
  • Invoice filters not working correctly
  • Registration status not showing as Unpaid

E2E-5: Sponsor Registration Flow (HIGH)

Tests sponsor ticket creation, portal sponsor registration, included items management, and deletion rules.

Sponsor Registration Included Items Company Sponsorships HIGH PRIORITY
TC-5.1 Add Sponsor in Chapter SiteHYBRID

Preconditions

  • Event with sponsor ticket type created
  • Sponsor ticket has included items configured
  • Existing company (member or prospect)
  • Logged in as Chapter Staff with Level 2+ and Events Permission
  1. Navigate to Event → Sponsors tab. Click "Add Sponsor"
    Expected: Sponsor form opens with sections: Company (required), Individual (optional), Sponsor Logo, Ticket, Payment Information.
  2. Type-ahead search for Company (required field). Select existing company
    Expected: Company field auto-populated from type-ahead. Field marked as required. Cannot proceed without company.
  3. Optionally select an Individual associated with company. Verify contact info auto-populates (Email, Phone, Mobile, Title)
    Expected: Individual field optional. Type-ahead populated from company's individuals. Contact fields auto-fill if individual selected.
  4. In Sponsor Logo section, verify two options: Upload new logo OR select existing logo from company. Upload a new image
    Expected: Logo upload works. Or dropdown shows existing logos on company record. Selected/uploaded logo visible in form.
  5. Select Sponsor Ticket. Verify Description, Price, Tax, Quantity auto-fill. Quantity defaults to 1
    Expected: Sponsor ticket selected. All pricing auto-populated from ticket master. Quantity editable.
  6. Set Payment Information: Payee Type, Payee Company, Payment Status, Payment Type, Paid Date (if paying now). Save sponsor record
    Expected: Payment info captured. Status defaults to Open unless payment provided. Sponsor appears in Sponsors tab with all details.

Key Validations

  • Add Sponsor action available on Sponsors tab
  • Company field required and searchable
  • Individual field optional
  • Logo upload and existing logo selection both available
  • Sponsor ticket selection auto-fills pricing
  • Payment information captured
  • Sponsor created with correct status (Open by default)

Bug Risk Areas

  • Company field not required or not enforced
  • Individual auto-populate not working
  • Logo upload failing or not saving
  • Sponsor ticket pricing not auto-filling
  • Payment information not being saved
  • Sponsor not appearing in tab after save
TC-5.2 Portal Sponsor Registration (Step 3, Included Tickets, $0 Attendees)HYBRID

Preconditions

  • Event with sponsor ticket containing included items (e.g., sponsor ticket with 3 golf tickets, 2 dinner tickets)
  • Portal registration enabled and within date window
  • Logged in or non-member account created
  1. Browse event in portal. Select sponsor ticket. Proceed through Step 1-2. At Step 3: Registration Information, verify "Sponsor" section appears ABOVE attendee sections
    Expected: Sponsor info section prominent. Fields for company (required), individual (optional), logo upload/selection, and all sponsor-specific fields.
  2. In Sponsor section, verify ALL fields required EXCEPT Additional Information: Company, Individual name (if individual selected), Email, Phone, Title, Sponsor Logo
    Expected: Required fields clearly marked. Cannot proceed to Step 4 without completing sponsor info (except Additional Info).
  3. Verify included tickets from sponsorship display below sponsor section with attendee info fields. For example, "2x Golf Ticket" and "3x Dinner Ticket" show attendee rows
    Expected: Included ticket attendees appear as separate sections. Can be left blank (defaults to reserved attendee) or filled. Not requiring attendee info for included items.
  4. Verify included tickets are decremented from remaining available count in ticket summary. If sponsor includes 2 golf tickets and there are 10 golf tickets available, verify remaining shows 8
    Expected: Sponsor included items correctly reduce availability calculation for other registrants.
  5. Complete sponsorship registration and proceed to payment (Pay Now or Request Invoice). After completion, go to Chapter Site → Registrations tab. Verify individual attendees from sponsorship appear as $0 registrations (marked as from sponsorship)
    Expected: Each included ticket attendee creates a $0 registration record. Clearly marked as associated with sponsor. Traceable to sponsor record.

Key Validations

  • Sponsor section appears in Step 3
  • Sponsor section positioned above attendee sections
  • All sponsor fields required except Additional Information
  • Included ticket attendees appear as separate sections
  • Included attendees marked as optional (not required)
  • Sponsor included tickets decrement availability
  • Included ticket attendees create $0 registrations in chapter site
  • $0 registrations marked as from sponsorship

Bug Risk Areas

  • Sponsor section not appearing in Step 3
  • Sponsor section appearing in wrong position (should be above attendee sections)
  • Sponsor info not requiring all necessary fields
  • Included ticket attendees not appearing
  • Sponsor included items not decrementing availability
  • Included attendees creating paid registrations instead of $0
  • $0 registrations not marked as from sponsorship
TC-5.3 Sponsor Delete RulesAUTO

Preconditions

  • Event with multiple sponsors
  • Some sponsors with open status, no invoice, no individual registrations
  • Some sponsors with status = Paid or with invoice
  • Some sponsors with individual attendees registered
  1. Go to Event → Sponsors tab. Identify a sponsor with: Status = Open AND No Invoice AND No Individual registered as attendee. Click "Delete"
    Expected: Delete confirmation appears. Deletion succeeds. Sponsor removed from list.
  2. Try to delete a sponsor with Status = Paid (even if no invoice). Verify deletion is blocked
    Expected: System blocks deletion. Error message: "Cannot delete sponsor with Paid status" or similar.
  3. Try to delete a sponsor with Status = Open but with an attached Invoice. Verify deletion is blocked
    Expected: System blocks deletion. Error message: "Cannot delete sponsor with invoice".
  4. Try to delete a sponsor with Status = Open, No Invoice, BUT with an individual attendee registered from the included items. Verify deletion is blocked
    Expected: System blocks deletion. Error message: "Cannot delete sponsor with registered attendees".
  5. Verify delete action/button only appears for eligible sponsors (Open status, no invoice, no registered attendees). For ineligible sponsors, button is grayed out or missing
    Expected: Delete option unavailable for sponsors that don't meet all three criteria.

Key Validations

  • Sponsor can only be deleted if ALL three conditions met: Status = Open, No Invoice, No Registered Attendee
  • Delete confirmation required
  • Delete button not available for ineligible sponsors
  • Appropriate error messages block deletion
  • Sponsor removed immediately after successful deletion

Bug Risk Areas

  • Sponsor being deleted without confirmation
  • Delete button appearing for ineligible sponsors
  • Paid sponsor being deleted without blocking
  • Sponsor with invoice being deleted
  • Sponsor with registered attendees being deleted
  • Error messages not appearing when delete blocked

E2E-6: Payments & Invoices (CRITICAL)

Tests invoice generation rules, payment tracking, registration updates after payment, and invoice browsing/filtering.

Payment Processing Invoice Management Payment Tracking CRITICAL PRIORITY
TC-6.1 Invoice Generation Rules ($0, Paid, Unpaid)AUTO

Preconditions

  • Multiple events: free event ($0), paid event, event with included $0 items
  • Portal registrations and chapter site manual registrations
  • Some registrations with "Request Invoice", some with "Pay Now"
  1. Register for a FREE event (Total = $0) in portal. Click "Request Invoice". Verify invoice auto-generates even though amount is $0
    Expected: $0 invoice created for reporting consistency. Shows event name, registrant, $0 amount, status = Unpaid (or as configured).
  2. Complete a portal registration and pay via "Pay Now". Verify Paid Invoice auto-generates with status = Paid, payment date, payment method recorded
    Expected: After successful payment, system creates invoice marked as Paid. All payment details captured (date, method, amount, transaction ID if applicable).
  3. Click "Request Invoice" in portal registration. Verify Unpaid Invoice auto-generates with status = Unpaid, due date from Event Details setting
    Expected: Unpaid invoice created. Due date calculated from "Requested Invoice Due Date" field on event. Payment status = Unpaid.
  4. In Chapter Site, manually add a registration with payment via Check. Set Payment Status = Paid. Verify invoice generates with status = Paid
    Expected: Invoice created at time of registration save. Status = Paid. Payment method = Check. Payment date recorded.

Key Validations

  • $0 invoices created for free events (for reporting)
  • Paid invoices generated after successful payment
  • Unpaid invoices generated when "Request Invoice" used
  • Invoice due date matches event "Requested Invoice Due Date"
  • Payment method recorded on invoice
  • Payment date recorded on invoice
  • Invoice status reflects payment status

Bug Risk Areas

  • $0 invoices not generated for free events
  • Invoices not generating after Pay Now
  • Invoices not generating for Request Invoice
  • Invoice status incorrect (Paid showing as Unpaid, etc.)
  • Due date not calculated or missing
  • Payment method or date not recorded on invoice
TC-6.2 Browse Event Invoices (Module & Event Level, Filters, Bulk Actions)HYBRID

Preconditions

  • Multiple events with paid and unpaid invoices
  • Invoices from members and non-members
  • Multiple companies in the system
  • Logged in as Chapter Staff Level 3 (admin) and Level 1-2 (view-only)
  1. Navigate to Events module → "Browse Event Invoices" (module-level). Verify table displays columns: Invoice #, Invoice Date, Company Name, Event Name, Event Start Date, Registrant Name, Invoice Amount, Payment Status, Payment Date, Payment Method, Due Date
    Expected: Module-level view shows all invoices across events with event identification columns.
  2. On specific Event → Invoices tab, verify table displays same columns EXCEPT Event Name and Event Start Date (since event context is implied)
    Expected: Event-level invoice view more compact, still showing all invoice details minus event columns.
  3. Test filters on Browse Event Invoices (module level). Apply filters: Member/Non-Member (checkbox or dropdown). Verify results filter correctly
    Expected: Filtering by Member shows only invoices from member companies. Non-Member shows only prospect/non-member registrants.
  4. Apply Company filter (type-ahead or dropdown). Select a company. Verify invoices from that company only
    Expected: Company filter narrows results to selected company's invoices.
  5. Apply Event filter (module level only). Select event. Verify invoices from that event only
    Expected: Event filter works at module level. Event-level view already filtered by event.
  6. Apply Status filter: Unpaid, Paid, All. Verify correct invoices display
    Expected: Status filtering works. Can select one or multiple statuses.
  7. Apply Payment Date Range filter. Select date range. Verify invoices paid within date range display
    Expected: Date range picker filters invoices by Payment Date. Can leave blank to ignore filter.
  8. [LEVEL 3 ONLY] Select unpaid invoices via checkboxes. Click "Send Unpaid Invoice Email" bulk action. Verify emails triggered to selected registrants
    Expected: Bulk action available to Level 3. Select multiple invoices. Send email option available. Emails sent to registrant contact info.
  9. [LEVEL 1-2 USERS] Verify "Send Unpaid Invoice Email" bulk action is NOT available (view-only permissions)
    Expected: Level 1-2 users can view and filter invoices but cannot perform actions like Send Email.

Key Validations

  • Module-level Browse Event Invoices shows all columns including Event Name and Start Date
  • Event-level Invoices tab shows same columns minus Event columns
  • Member/Non-Member filter works
  • Company filter works
  • Event filter works (module level)
  • Status filter works
  • Payment Date Range filter works
  • Send Unpaid Invoice Email bulk action available to Level 3
  • Send Unpaid Invoice Email NOT available to Level 1-2
  • Permissions enforce view-only for Level 1-2

Bug Risk Areas

  • Module-level view missing Event Name/Start Date columns
  • Event-level view showing Event columns (should not)
  • Filters not working or persisting
  • Member/Non-Member classification incorrect
  • Send Email bulk action appearing for Level 1-2
  • Send Email not triggering or emails not sending
  • Level 1-2 able to modify/delete invoices
TC-6.3 Registration Updates After PaymentAUTO

Preconditions

  • Open registration with status = Open, unpaid
  • Payment processed via any method (Pay Now, cart checkout, manual payment in chapter site)
  1. Complete a portal registration with "Pay Now". Payment succeeds. Go to Chapter Site → Event → Registrations tab. Find the registration. Verify Registration Status updated appropriately
    Expected: Registration Status reflects payment (e.g., "Confirmed" or status matching business rule).
  2. Verify Payee field updated to company/individual who made payment
    Expected: Payee field populated with correct payment source.
  3. Verify Payment Date field updated to date of payment
    Expected: Payment Date shows transaction date.
  4. Verify Payment Type field updated (Credit Card, Check, Cash, ACH, etc.)
    Expected: Payment Type shows method used for payment.
  5. Edit registration to manually record payment later (e.g., check received later). Verify all four fields update correctly
    Expected: Manual payment entry updates all fields as expected.

Key Validations

  • Registration Status updated after payment
  • Payee field updated correctly
  • Payment Date updated to transaction date
  • Payment Type updated to method used
  • Updates occur for portal payments (Pay Now, cart)
  • Updates occur for manual chapter site payments
  • All fields update consistently

Bug Risk Areas

  • Registration Status not updating after payment
  • Payee field not populated
  • Payment Date not recorded
  • Payment Type not recorded
  • Updates not occurring for some payment methods
  • Stale/incorrect data persisting in registration
TC-6.4 Chapter Site Payment During Registration (CC, Check, Cash)AUTO

Preconditions

  • Logged in as Chapter Staff with Events Permission
  • Event with tickets created
  1. Add a new registration in Chapter Site. At Payment Information section, select Payment Type "Credit Card". Enter card details (or test card). Save registration
    Expected: Credit card payment option available. Card details accepted. Registration saved with Payment Status = Paid and Payment Type = Credit Card.
  2. Add another registration. Select Payment Type "Check". Optionally enter check number. Save
    Expected: Check option available. Registration saved with Payment Status = Paid (or Open if check not yet collected, per system rules). Payment Type = Check.
  3. Add another registration. Select Payment Type "Cash". Save
    Expected: Cash option available. Registration saved with Payment Status = Paid. Payment Type = Cash.
  4. For each payment type, verify Reg Paid Date field is populated with current date (or can be set to past/future date)
    Expected: Payment date recorded. Can default to today or be manually set.
  5. Verify invoice generates for each registration with correct payment details
    Expected: Invoice created with payment method and date recorded.

Key Validations

  • Credit Card payment option available in chapter site
  • Check payment option available
  • Cash payment option available
  • Payment Type recorded correctly
  • Reg Paid Date populated
  • Registration Status updated to Paid
  • Invoice generates with payment details

Bug Risk Areas

  • Payment options not appearing
  • Credit card validation failing
  • Check/Cash payment not saving
  • Reg Paid Date not populated
  • Registration Status not updating to Paid
  • Invoice not generating
  • Payment details not appearing on invoice

E2E-7: Coupons & Discounts (HIGH)

Tests coupon code creation, portal application, validation, and manual discount functionality.

Coupon Codes Discount Management Pricing HIGH PRIORITY
TC-7.1 Create Coupon Codes (Scopes, Usage, Expiration)AUTO

Preconditions

  • Logged in as Chapter Staff Level 2+ with Events Permission
  • Multiple events with tickets created
  1. Navigate to Events module → "Event Coupon Codes". Click "Add Coupon Code"
    Expected: Coupon code form opens with fields: Coupon Code, Discount Type, Discount Value, Event Scope, Max Usage, One-Time Use, Expiration Date, Status.
  2. Enter Coupon Code: Alphanumeric unique identifier. Verify format allows letters, numbers, dashes, underscores
    Expected: Code field accepts alphanumeric input. Uniqueness validated per chapter. Cannot duplicate existing code.
  3. Select Discount Type: Percentage. Enter 15. Verify preview shows "15% off"
    Expected: Percentage discount type available. Value input accepts numeric. Preview or description shows discount application.
  4. Change to Discount Type: Fixed Dollar Amount. Enter 25. Verify preview shows "$25 off"
    Expected: Fixed Dollar discount available. Accepts numeric value. Preview shows dollar amount discount.
  5. Set Event Scope to "All Events". Save coupon. Verify coupon can be used for any chapter event
    Expected: "All Events" scope allows coupon usage across all chapter events.
  6. Create another coupon with Event Scope = "Selected Events". Multi-select 2 specific events. Save. Verify coupon applies only to selected events
    Expected: "Selected Events" scope allows multi-select. Coupon restricted to chosen events.
  7. Create another coupon with Event Scope = "Selected Event Tickets". Select 1 event, then multi-select 2 specific ticket types from that event. Save
    Expected: "Selected Event Tickets" scope requires event selection first, then allows ticket multi-select. Coupon restricted to chosen tickets only.
  8. Create coupon with Max Usage Count = 5. Save. Test application 5 times. Verify 6th attempt fails with usage-exceeded error
    Expected: Max Usage limit enforced. Numeric field accepts usage count. After limit reached, coupon no longer applies.
  9. Create coupon with Max Usage blank (unlimited). Apply multiple times. Verify no usage limit enforced
    Expected: Blank Max Usage = unlimited applications. Coupon remains valid indefinitely (until expiration if set).
  10. Create coupon with "One-Time Use per User" checkbox enabled. Apply coupon to registration. Try applying same coupon in a different registration for same user. Verify fails
    Expected: One-time use per user enforced. Same user cannot apply coupon to multiple registrations.
  11. Create coupon with Expiration Date = today + 30 days. Set Status = Active. Verify coupon works. Fast-forward time (if possible in test env) or manually set system date past expiration. Verify Status auto-transitions to "Expired"
    Expected: Expiration date respected. Status auto-updates to Expired when date passed. Expired coupons no longer apply.
  12. Create coupon with Status = "Inactive". Try applying it in portal registration. Verify fails with error message
    Expected: Inactive coupons cannot be applied. Error message: "Coupon is inactive".

Key Validations

  • Coupon Code field accepts alphanumeric input
  • Coupon Code unique per chapter
  • Discount Type options: Percentage, Fixed Dollar Amount
  • Event Scope options: All Events, Selected Events, Selected Event Tickets
  • Max Usage Count numeric field (blank = unlimited)
  • One-Time Use per User checkbox enforced
  • Expiration Date optional and respected
  • Status auto-transitions to Expired when date passes
  • Status Active/Inactive enforced
  • Coupon creates and saves successfully

Bug Risk Areas

  • Coupon Code validation not enforcing uniqueness
  • Discount Type not calculating correctly
  • Event Scope multi-select not working
  • Max Usage not enforced
  • One-Time Use not enforced
  • Expiration Date not auto-updating status
  • Inactive Status not preventing application
  • Coupon not saving or appearing in list
TC-7.2 Portal Coupon Application (Validation, Real-Time, Removal)HYBRID

Preconditions

  • Portal registration through Step 3, ready for checkout (Step 4)
  • Valid coupon codes created with various scopes
  • Test user logged in (member or non-member after authentication)
  1. At Step 4: Complete Registration, locate Coupon Code text input with "Apply" button. Type a valid coupon code. Click Apply
    Expected: Text input and Apply button visible. Real-time validation occurs. Success message appears: "Coupon applied. $XX discount."
  2. After successful application, verify price display updates: Original Price, Discount Amount, Final Price all visible
    Expected: Price breakdown shows: Original $100, Discount -$15 (15%), Final $85. Total price updates immediately.
  3. Try applying an invalid coupon code (does not exist). Verify error message appears immediately
    Expected: Error message: "Coupon code not found" or "Invalid coupon code". Real-time validation, not requiring full form submission.
  4. Try applying an expired coupon code. Verify error message appears
    Expected: Error message: "Coupon has expired" or similar. Real-time validation.
  5. Try applying a coupon with Max Usage exceeded. Verify error message
    Expected: Error message: "Coupon usage limit exceeded" or similar.
  6. Apply valid coupon. Before checkout, click "Remove Coupon" (if available). Verify coupon removed and price reverts to original
    Expected: Remove option available before checkout. Price returns to original. Coupon cleared from form.
  7. [NON-MEMBER USER] Try applying coupon code while not logged in. Verify non-members must be logged in (error message or redirect to login)
    Expected: Non-member users cannot apply coupons without authentication. Must login/create account first.

Key Validations

  • Coupon text input and Apply button visible at Step 4
  • Real-time validation on coupon entry
  • Valid coupon applies immediately
  • Price display shows: Original, Discount, Final
  • Total price updates immediately
  • Invalid coupon: error message
  • Expired coupon: error message
  • Usage exceeded: error message
  • Remove coupon option available before checkout
  • Price reverts to original when coupon removed
  • Non-members must be logged in to apply coupons

Bug Risk Areas

  • Coupon input not appearing
  • Apply button not functional
  • Validation not real-time (requires form submission)
  • Valid coupon not applying
  • Price not updating after coupon applied
  • Invalid codes still applying
  • Expired codes still working
  • Remove option not appearing
  • Price not reverting when coupon removed
  • Non-member restriction not enforced
TC-7.3 Manual Discount in Chapter Site (Percentage, Fixed Dollar)AUTO

Preconditions

  • Chapter Staff with Events Permission, adding/editing registrations
  • Event with paid tickets
  1. Add a registration in Chapter Site. At Ticket section, after selecting ticket, look for Discount section. Click to expand
    Expected: Discount section appears with Discount Type selection, Discount Value input, Discount Reason/Notes field.
  2. Select Discount Type = Percentage. Enter 10. Verify price calculates: Original $100 → 10% discount → Final $90
    Expected: Percentage discount calculated correctly. Price auto-updates in real-time.
  3. Change to Discount Type = Fixed Dollar Amount. Enter 25. Verify price calculates: Original $100 → $25 discount → Final $75
    Expected: Fixed Dollar discount applied. Price updates immediately.
  4. Enter optional Discount Reason/Notes: "Early Bird", "Loyalty", etc. Save registration
    Expected: Reason/Notes field accepts text. Saved with registration for staff reference.
  5. Go to Registrations tab. Find the registration. Verify original ticket price preserved in underlying data (not replaced by discounted price). Check registration details/invoice for pricing breakdown
    Expected: Original ticket price visible for reporting. Discount amount recorded separately. Final price = Original - Discount.
  6. Edit same registration. Verify staff user tracked who applied discount. Notes/audit trail shows who made change and when
    Expected: Discount application attributed to logged-in staff user. Timestamp recorded. Change history available.

Key Validations

  • Discount section visible in Add/Edit Registration
  • Discount Type options: Percentage, Fixed Dollar
  • Percentage discount calculation correct
  • Fixed Dollar discount calculation correct
  • Price updates in real-time as discount changes
  • Discount Reason/Notes field accepts text
  • Original ticket price preserved in data
  • Discount amount recorded separately
  • Staff user tracked on discount application
  • Timestamp recorded for discount change

Bug Risk Areas

  • Discount section not appearing
  • Discount Type options missing
  • Percentage calculation incorrect
  • Fixed Dollar calculation incorrect
  • Price not updating when discount changed
  • Original price being overwritten (not preserved)
  • Discount not saved with registration
  • Staff user not tracked
  • Reason/Notes not saved

E2E-8: Edge Cases & Negative Tests (HIGH)

Tests delete cascades, capacity fills, date boundaries, attendee management, and system constraints.

Delete Rules Capacity Management Edge Cases HIGH PRIORITY
TC-8.1 Delete Rules Cascade (Events, Functions, Tickets, Custom Fields, Registrations)AUTO

Preconditions

  • Event with functions, tickets, custom fields, and registrations at various payment statuses
  • Sponsors with various statuses and invoice states
  • Logged in as Chapter Staff Level 2+
  1. Try to delete an Event that has registrations. Verify deletion is blocked with error: "Cannot delete event with registrations"
    Expected: Delete button not available. Or deletion blocked with clear error message.
  2. Try to delete a Function that has registrations. Verify deletion blocked
    Expected: Delete button unavailable or error message: "Cannot delete function with registrations".
  3. Try to delete a Ticket that has registrations. Verify deletion blocked
    Expected: Delete button unavailable or error message: "Cannot delete ticket with registrations".
  4. Try to delete a Custom Field that has data in registrations. Verify deletion blocked
    Expected: Delete button unavailable or error message: "Cannot delete custom field with registration data".
  5. Delete a registration with Payment Status = Open. Verify deletion succeeds
    Expected: Delete button available. Deletion confirmation. Registration removed.
  6. Try to delete a registration with Payment Status = Paid. Verify deletion blocked
    Expected: Delete button unavailable or error message: "Cannot delete paid registration".
  7. Delete a Sponsor with Status = Open, No Invoice, No Registered Attendees. Verify deletion succeeds
    Expected: All three conditions met = eligible for deletion. Deletion succeeds.
  8. Try to delete an Event with no registrations. Verify deletion succeeds
    Expected: Delete button available. Deletion succeeds. Event removed from system.

Key Validations

  • Event cannot be deleted if has registrations
  • Function cannot be deleted if has registrations
  • Ticket cannot be deleted if has registrations
  • Custom Field cannot be deleted if has registration data
  • Registration can be deleted if Payment Status = Open
  • Registration cannot be deleted if Payment Status = Paid
  • Sponsor can be deleted if Status = Open, No Invoice, No Registered Attendees
  • Event with no registrations can be deleted
  • Delete buttons unavailable for ineligible records
  • Error messages explain deletion blocks

Bug Risk Areas

  • Event with registrations being deleted
  • Function with registrations being deleted
  • Ticket with registrations being deleted
  • Custom Field with data being deleted
  • Paid registration being deleted
  • Delete buttons appearing when they shouldn't
  • Error messages not appearing or unclear
  • Cascade deletes happening unexpectedly
TC-8.2 Max Available — Ticket Sold Out, Available Spots, Sponsor Included ItemsAUTO

Preconditions

  • Event with tickets that have Max Available = 5 (finite capacity)
  • Event with sponsor ticket that includes 2 golf tickets
  • Golf ticket has Max Available = 10
  1. In portal, select ticket with Max Available = 5. Verify Available Spots displayed as 5 (Max - Purchased)
    Expected: Available Spots = 5 initially. Displayed to user clearly.
  2. Via Chapter Site, add 5 registrations for the same ticket. In portal, refresh and verify Available Spots = 0. Then verify ticket no longer appears in portal
    Expected: Available Spots updates to 0. Ticket removed from portal browse/registration. Capacity reached message shown if user tries to access directly.
  3. Portal registration: select sponsor ticket (includes 2 golf tickets). Verify golf ticket availability decrements. Golf showed 10 available, now shows 8 (10 - 2 included from sponsor)
    Expected: Sponsor included items correctly reduce parent ticket availability. Calculation: 10 - 2 = 8 available for non-sponsor registrations.
  4. In portal, add 2 items to cart (for different events). Go to cart. Simulate another user registering for one of the cart's tickets and filling capacity. Return to cart and try to checkout. Verify checkout fails with error for the now-unavailable ticket
    Expected: Checkout validates ticket availability at time of purchase. If sold out, transaction fails: "Ticket [name] no longer available."

Key Validations

  • Available Spots calculated correctly: Max Available - Purchased
  • Available Spots displayed to user
  • Sold-out tickets disappear from portal
  • Sponsor included tickets decrement parent ticket availability
  • Cart items validated at checkout
  • Checkout fails if ticket sold out during cart session
  • Error message clear and actionable

Bug Risk Areas

  • Available Spots calculation incorrect
  • Sold-out tickets still showing in portal
  • Sponsor included items not decrementing availability
  • Checkout not validating availability
  • Checkout succeeding when ticket sold out
  • Error messages missing or unclear
  • Capacity fills between cart add and checkout not caught
TC-8.3 Registration Date Boundaries (Before Start, After End, Chapter Site Override)AUTO

Preconditions

  • Event with Registration Start Date = Today + 5 days, Registration End Date = Today + 30 days
  • Portal enabled for event
  1. Go to portal before Registration Start Date. Find event in browse. Click event details. Verify "Register" button is NOT available (hidden or disabled)
    Expected: Register button hidden or grayed out. Message: "Registration opens on [date]".
  2. Advance time to within Registration Start/End window. Click "Register". Verify portal registration flow works
    Expected: Register button available. Registration flow accessible.
  3. Advance time past Registration End Date. Try to click "Register" or access registration directly via URL. Verify registration is blocked in portal
    Expected: Register button hidden or grayed out. Message: "Registration closed" or similar. Direct URL access also blocked.
  4. [CHAPTER SITE] While portal registration is closed (before start or after end), go to Event → Registrations tab and click "Add Registration". Verify Chapter Staff CAN add registrations regardless of registration date/time restrictions
    Expected: Registration date/time rules apply to portal ONLY. Chapter Staff can add registrations anytime, ignoring portal availability windows.
  5. Verify note or messaging in Chapter Site indicates staff override capability (e.g., "Registration closed in portal but staff can still add")
    Expected: Clear indication that chapter site operation is not subject to portal date restrictions.

Key Validations

  • Register button unavailable before Registration Start Date
  • Register button available during Registration Start-End window
  • Register button unavailable after Registration End Date
  • Portal registration blocked outside date window
  • Chapter Site registration available anytime (staff override)
  • Messaging clear about availability windows
  • Date boundaries respected consistently

Bug Risk Areas

  • Register button available when it shouldn't be
  • Register button unavailable when it should be
  • Date boundaries not enforced
  • Chapter Staff unable to add registrations outside window
  • Messaging missing or confusing
  • Direct URL access allowing registration outside window
  • Date/time comparison logic incorrect (off-by-one, timezone issues)
TC-8.4 Attendee Management (Reserved Attendee, Portal Edit, Level 3 Required, Until Close)HYBRID

Preconditions

  • Portal registration completed with some attendees left blank (reserved attendee placeholders)
  • Portal registration completed within registration window
  • Test users with Level 3 portal permission and without
  1. Register for event with quantity 2, leaving second attendee blank. Verify registration shows "Reserved Attendee" placeholder for second attendee
    Expected: Second attendee slot shows "Reserved Attendee" (editable, placeholder text).
  2. Go to Portal → My Events. Find registered event. Click "Manage Attendee Info". Verify interface appears for editing attendee data
    Expected: Manage Attendee Info section accessible from event details. Shows all attendees (including reserved placeholders) editable.
  3. As registrant, edit "Reserved Attendee" placeholder. Enter attendee name, email, etc. Save. Verify data persisted
    Expected: Registrant can update attendee info. Changes saved and visible to chapter staff.
  4. [LEVEL 3 PORTAL PERMISSION] Log in as user with Level 3. Go to "Manage Attendee Info". Verify full edit access to all attendee fields
    Expected: Level 3 portal users can fully manage attendee info. No restrictions.
  5. [LEVEL 1-2 PORTAL PERMISSION] Log in as user with Level 1-2 (no Level 3). Attempt to access "Manage Attendee Info". Verify access denied or feature unavailable
    Expected: Only Level 3 portal users can manage attendee info. Level 1-2 cannot.
  6. Try to manage attendee info AFTER Registration End Date/Time has passed. Verify "Manage Attendee Info" is no longer available (or button hidden)
    Expected: Attendee info management only available until registration closes. After closure, read-only or unavailable.
  7. Mark an attendee as "Not Attending" (if feature available). Verify all custom field data for that attendee is excluded/cleared from reporting
    Expected: "Not Attending" status removes attendee from registration. Custom field data not calculated in reports or counts.

Key Validations

  • Reserved Attendee placeholder shown when attendee info not entered
  • Manage Attendee Info accessible from My Events
  • Registrant can edit attendee info (before close)
  • Level 3 portal permission required for staff edit access
  • Level 1-2 portal users cannot manage attendee info
  • Manage Attendee Info unavailable after registration closes
  • Not Attending status excludes custom field data
  • Changes persisted and visible to chapter staff

Bug Risk Areas

  • Reserved Attendee placeholder not appearing
  • Manage Attendee Info not accessible
  • Registrant unable to edit attendee info
  • Changes not persisting
  • Level 3 permission not enforced
  • Level 1-2 able to manage attendee info
  • Manage Attendee Info available after registration closes
  • Not Attending status not excluding custom field data
  • Custom field data still appearing for "Not Attending" attendees

✎ Submit Feedback

Report incorrect info or suggest improvements

✓ Feedback Submitted

Saved to the review queue for project lead approval.