End-to-End Test Scripts
ABC Contacts Module — E2E Test Scripts
Complete test flows covering company & individual CRUD, portal authentication, data management, and quality audits. 28+ test cases across 10 flows.
Overview
E2E-1 CRUD 0/4
E2E-2 Portal Auth 0/3
E2E-3 Company Mgmt 0/3
E2E-4 Individuals 0/3
E2E-5 Codes 0/3
E2E-6 Designations 0/2
E2E-7 Config 0/3
E2E-8 Audits 0/3
E2E-9 Search 0/2
E2E-10 Edge Cases 0/2
ABC Contacts — E2E Test Flows
10 comprehensive end-to-end test flows covering the complete Contacts module lifecycle: from company and individual creation through portal management, data quality audits, and access control. Each flow represents a real-world business scenario you can execute start to finish.
E2E-1: Happy Path (Company & Individual CRUD)
Complete CRUD operations: create company → create individual → associate to company → edit records. The golden path for core contact management.
4 Test Cases
Admin
~35 min
E2E-2: Portal Authentication & Invitation
Enable portal, invite users, set passwords, verify access levels (MPA, Regular, Limited). Tests authentication and permission boundaries.
3 Test Cases
Portal Admin
~30 min
E2E-3: Portal Company Profile Management
MPA edits company info, manages addresses, uploads logo, edits narrative. Tests data management and file handling.
3 Test Cases
Portal MPA
~25 min
E2E-4: Portal Individual Management
Browse individuals, add/edit records, manage personal information. Tests portal CRUD and self-service restrictions.
3 Test Cases
Portal User
~20 min
E2E-5: Portal Trade Codes & Market Info
Add CSI/NAICS codes, manage directory codes, edit market segments. Tests code management and percentage validation.
3 Test Cases
Data Admin
~30 min
E2E-6: Portal Business Designations
Add and remove national/local business designations. Tests modal-driven data entry and deletion.
2 Test Cases
MPA
~15 min
E2E-7: Contact Types & Lookup Tables
Manage contact types, CRUD lookup table values, test approval workflow. Tests configuration and governance.
3 Test Cases
Admin
~25 min
E2E-8: Data Quality Audits
Run company & individual audits, test duplicate detection, missing data. Tests audit engine and result actions.
3 Test Cases
QA Admin
~30 min
E2E-9: Search, Reporting & Export
Global search with filters, run reports, export to Excel. Tests discovery and data extraction.
2 Test Cases
Admin
~20 min
E2E-10: Negative & Edge Cases
Delete restrictions, permission boundaries, validation errors. Tests guardrails and access control.
2 Test Cases
Security
~20 min
E2E-1: Happy Path (Company & Individual CRUD)
Complete CRUD operations for company and individual records. This is the golden path every tester should execute first to validate core functionality.
ADMIN
BREAD
CORE
CRITICAL PRIORITY
E2E-1 Happy Path > TC-1.1
Easy
10 min
Preconditions
- User has Admin or Chapter Staff Level 2+ permission
- Contacts module is accessible
- Navigate to Contacts > Companies > Add Company
✓
Navigate to Contacts Admin. Click "Add Company". Enter required fields: Company Name: "Acme Corporation", Type: "Member Company".
Expected: Form displays all required field indicators. Name and Type fields accept input.
✓
Fill address fields: Street: "123 Business Ave", City: "Chicago", State: "IL", ZIP: "60601". Click "Save".
Expected: Company record created and saved successfully. Record appears in Companies list.
✓
Navigate back to Browse Companies. Verify new company "Acme Corporation" appears in list. Click to view full record.
Expected: Company record accessible with all saved data: address, type, and metadata intact.
Bug Risk Areas
Required fields not validated on save (name, type)
Company name containing special characters rejected
Address data not persisting after save
Newly created company not appearing in browse list
Related JIRA
ABC-768
ABC-841
E2E-1 Happy Path > TC-1.2
Easy
8 min
Preconditions
- Multiple company records exist (from TC-1.1 and prior)
- Navigate to Contacts > Browse Companies
✓
Access Browse Companies page. Verify companies display in list/grid with: Name, Type, City, Status columns.
Expected: Companies list visible with all required columns. Sortable headers available.
✓
Enter search term "Acme" in search box. Click "Search" or press Enter. Verify results filtered.
Expected: Results show only companies with "Acme" in name. Count reduced from full list.
✓
Use filters: Type filter set to "Member Company". Verify results update instantly or after "Apply".
Expected: Results filtered by type. Non-matching companies hidden. Filter badge shown as active.
Bug Risk Areas
Search not returning exact matches or partial matches inconsistent
Type filter not filtering results correctly
Deleted companies still appearing in browse list
Search performance degrading with large datasets
E2E-1 Happy Path > TC-1.3
Medium
12 min
Preconditions
- Company "Acme Corporation" exists from TC-1.1
- Navigate to Contacts > Individuals > Add Individual
✓
Click "Add Individual". Enter: First Name: "John", Last Name: "Smith", Email: "john.smith@acme.com".
Expected: Individual form displayed. Name and email fields required. No validation errors on valid input.
✓
Select Company Association. Click lookup or dropdown. Search for "Acme Corporation". Select from results.
Expected: Company lookup modal opens. Search returns "Acme Corporation". Selection populates company field.
✓
Enter additional fields: Phone: "312-555-0100", Title: "Chief Financial Officer". Click "Save".
Expected: Individual created and linked to company. Record appears in Individuals list with company association displayed.
Bug Risk Areas
Company association not saving or losing link on page reload
Email validation not preventing invalid formats
Company lookup returning deleted or inactive companies
Individual created but not appearing in company's individual list
Related JIRA
ABC-772
ABC-3397
E2E-1 Happy Path > TC-1.4
Medium
10 min
Preconditions
- Company and individual records created from TC-1.1 and TC-1.3
- Navigate to company record > Edit
✓
Open company "Acme Corporation". Click "Edit". Modify address: City changed to "New York", ZIP to "10001". Click "Save".
Expected: Company record updated. Address changes persist. Last Modified timestamp updated.
✓
Navigate to individual "John Smith". Click "Edit". Change title to "VP of Finance". Add phone extension: "x5000". Save.
Expected: Individual record updated. Title and phone extension changes persist. Company association remains intact.
✓
Verify changes by navigating away and returning to each record. Refresh page and confirm data persists.
Expected: All changes saved permanently. No loss of data on page reload or navigation.
Bug Risk Areas
Edit form not loading current values
Changes not saving or saving only partial fields
Company association lost when editing individual
Concurrent edit conflicts not handled (last-write-wins or collision detection missing)
Related JIRA
ABC-3393
ABC-3436
E2E-2: Portal Authentication & Invitation Flow
Tests portal access: enable portal, send invitations, set passwords, verify authentication and permission levels (MPA, Regular, Limited).
PORTAL
AUTH
SECURITY
CRITICAL PRIORITY
E2E-2 Portal Auth > TC-2.1
Easy
10 min
Preconditions
- Company "Acme Corporation" exists
- Individual "John Smith" exists and associated with company
- Navigate to company > Portal settings
✓
Open company record. Go to Portal Settings or Portal tab. Toggle "Enable Portal Access" to ON.
Expected: Portal toggle switches on. Portal-related options become available (invite users, manage access).
✓
Select individual "John Smith" from company individuals list. Assign portal role: "Member Portal Administrator (MPA)". Click "Send Invitation".
Expected: Invitation queued. Modal or confirmation shows invitation will be sent to john.smith@acme.com.
✓
Check email inbox for "john.smith@acme.com". Verify invitation email received with: subject containing "Portal Invitation", body with activation link.
Expected: Invitation email arrives within 5 minutes. Email contains valid, unique activation link with expiration clearly stated.
Bug Risk Areas
Portal toggle not persisting or toggle disabling unexpectedly
Invitation not queued or email not sent
Email address not populated correctly from individual record
Invitation link invalid or expired immediately
Related JIRA
ABC-3473
ABC-3562
E2E-2 Portal Auth > TC-2.2
Medium
10 min
Preconditions
- Invitation email received for john.smith@acme.com from TC-2.1
- Access email and retrieve activation link
✓
Click activation link in invitation email. Verify redirected to Set Password page. Page displays: Email field pre-filled with "john.smith@acme.com".
Expected: Set Password page loads. Email shown as read-only. Password fields displayed (new password, confirm password).
✓
Enter password: "SecurePass123!" (meets requirements: 8+ chars, mixed case, numbers, symbols). Confirm password. Click "Set Password".
Expected: Password set successfully. User redirected to portal login page or dashboard.
✓
Log in with email: "john.smith@acme.com", password: "SecurePass123!". Verify portal dashboard loads and displays company name "Acme Corporation".
Expected: Login successful. Portal dashboard shows company context. User is authenticated.
Bug Risk Areas
Activation link expired or invalid
Password validation not enforcing requirements
Password not being set on server (login fails after setting)
Dashboard not loading or company context not shown
Related JIRA
ABC-3563
ABC-3570
E2E-2 Portal Auth > TC-2.3
Medium
12 min
Preconditions
- Three individual users created with different roles: MPA, Regular, Limited
- All users have completed password setup and can login
✓
Log in as "MPA" (Member Portal Admin). Verify Dashboard shows: Company Profile edit, Individuals management, Trade Codes sections available. All "Edit" buttons enabled.
Expected: MPA sees full administrative interface. All company data management features accessible.
✓
Log out. Log in as "Regular" portal user. Verify: Company Profile read-only, Can edit own individual info only, Cannot access other users' records.
Expected: Regular user sees limited interface. Can view company info but cannot edit. Own profile editable.
✓
Log out. Log in as "Limited" portal user. Verify: Dashboard shows only personal information section. Cannot access company profile, individuals list, or trade codes.
Expected: Limited user sees minimal interface. Access restricted to self-service only.
Bug Risk Areas
Permission levels not enforced (lower permission user sees restricted data)
Edit buttons not disabled for read-only users
User can directly access restricted URLs by typing them
Session/permission cache not invalidated when user role changes
E2E-3: Portal Company Profile Management
MPA edits company information, manages addresses, uploads logos, and edits narrative in portal.
PORTAL
COMPANY
DATA MGMT
E2E-3 Company Mgmt > TC-3.1
Easy
8 min
Preconditions
- MPA user logged in to portal for "Acme Corporation"
- Navigate to Company Profile or General Information section
✓
Open Company Profile section. Verify current data displays: Name, Type, Established Date, Industry, Website, Phone, Email.
Expected: Company profile loads with all saved data displayed correctly.
✓
Click "Edit". Modify: Website to "www.acmecorp.com", Phone to "312-555-1000", Industry to "Manufacturing". Click "Save".
Expected: Changes saved successfully. Form closes and profile view updated with new values.
✓
Navigate away from profile and return. Verify saved changes persist and are displayed correctly.
Expected: All edits retained after navigation and page reload.
Bug Risk Areas
Edit form not pre-populating with current values
Changes not saving or only saving partial fields
Website URL validation rejecting valid formats
Portal user unable to edit despite MPA role
E2E-3 Company Mgmt > TC-3.2
Medium
10 min
Preconditions
- MPA logged in to portal
- Navigate to Addresses section
✓
Open Addresses section. Verify existing address displayed with type (e.g., "Headquarters"). Click "Add Address".
Expected: Address form opens. Type dropdown, street, city, state, ZIP fields available.
✓
Enter new address: Type "Billing", Street "456 Finance Way", City "Chicago", State "IL", ZIP "60602". Click "Save".
Expected: Billing address added to list. Both headquarters and billing addresses now visible.
✓
Select new Billing address. Click "Set as Primary" checkbox or button. Verify primary flag moves to billing address.
Expected: Primary address flag moved. Only one address marked as primary at a time.
✓
Select headquarters address. Click "Delete". Confirm deletion. Verify address removed from list.
Expected: Address deleted successfully. List updated. Primary address remains (billing).
Bug Risk Areas
Add address button not working or form not appearing
Primary flag not moving when set to different address
Deleted address still appearing in list or in lookups
Address type dropdown missing or not validating
Related JIRA
ABC-3619
ABC-3621
E2E-3 Company Mgmt > TC-3.3
Medium
12 min
Preconditions
- MPA logged in to portal
- Navigate to Company Details or About section
- Logo image file ready (JPG or PNG, max 2MB recommended)
✓
Open Company Narrative or Description field. Click "Edit". Enter narrative: "Acme Corporation is a leading manufacturer of industrial components since 1995. We serve 500+ clients globally." (Total: ~120 chars).
Expected: Narrative text accepted. Character counter shows characters remaining if limit enforced (e.g., 500 max).
✓
Test character limit: Attempt to enter 1000+ character narrative. Verify character limit enforced (if applicable) and message displayed: "Maximum 500 characters allowed".
Expected: Input truncated or rejected if limit enforced. Clear feedback provided to user.
✓
Click "Upload Logo" button. Select image file (e.g., acme-logo.png). Verify file upload progress shows. After upload, logo preview displayed.
Expected: Logo file accepted. Preview shows thumbnail of uploaded image. Upload status confirmed.
✓
Click "Save" for narrative and logo. Navigate away and return to company profile. Verify narrative text and logo persist and display correctly.
Expected: Narrative and logo saved permanently. Displayed correctly on reload. Logo renders without distortion.
Bug Risk Areas
Character limit not enforced or validated
Logo upload failing or file not persisting
Logo displaying distorted or not rendering
Narrative changes not saving despite clicking save
Related JIRA
ABC-3641
ABC-3642
E2E-4: Portal Individual Management
Browse individuals at company, add and edit individuals, manage personal information with role-based restrictions.
PORTAL
INDIVIDUALS
SELF-SERVICE
E2E-4 Individuals > TC-4.1
Easy
8 min
Preconditions
- MPA logged in to portal
- Multiple individuals associated with company (at least 3)
- Navigate to Individuals or Team section
✓
Open Individuals section. Verify list displays all company individuals with: First Name, Last Name, Email, Title, Status columns.
Expected: Individuals list visible with all key fields displayed.
✓
Search for individual "John Smith" using search box. Verify results filtered to matching individuals. Clear search and all appear again.
Expected: Search returns only matching individuals. Clear search restores full list.
✓
Apply filter by Title: "Chief Financial Officer". Verify list shows only individuals with that title.
Expected: Type/Title filter works correctly. Matching individuals displayed. Non-matching hidden.
Bug Risk Areas
Individuals from other companies appearing in list
Search not returning partial matches
Filter not applying correctly
Deleted individuals still appearing in browse
E2E-4 Individuals > TC-4.2
Medium
12 min
Preconditions
- MPA logged in to portal
- Navigate to Individuals section > Add Individual
✓
Click "Add Individual". Fill form: First Name "Sarah", Last Name "Johnson", Email "sarah.johnson@acme.com", Title "VP of Operations".
Expected: Individual form displayed with editable fields. Required fields marked. No validation errors on valid input.
✓
Add phone: "312-555-0101", Department: "Operations". Toggle "Portal Access" ON. Set role to "Regular". Click "Save".
Expected: Individual created with portal access enabled. Record appears in individuals list.
✓
Click individual "Sarah Johnson" to open. Click "Edit". Change Title to "Senior Director, Operations". Save.
Expected: Individual edited successfully. Changes persist. Title updated in list view.
Bug Risk Areas
Add individual button not working or form not appearing
Email validation accepting invalid formats
Portal access toggle not persisting
Edit form not pre-loading current values
Related JIRA
ABC-3664
ABC-3669
E2E-4 Individuals > TC-4.3
Easy
10 min
Preconditions
- Regular portal user logged in (not MPA, not Limited)
- Navigate to My Profile or My Information section
✓
Open My Profile section. Verify user's information displayed: First Name, Last Name, Email, Phone, Title, Department.
Expected: Personal profile loads with current information.
✓
Click "Edit". Verify restricted fields are read-only or hidden: Company, Type (if applicable). Allow editing of: Phone, Department, Title.
Expected: Edit form shows only self-service fields. Company and system fields locked.
✓
Edit phone: "312-555-9999". Change department to "Strategic Initiatives". Click "Save". Verify changes persist.
Expected: Editable fields updated. Restricted fields remain unchanged. Changes persist after navigation and reload.
Bug Risk Areas
Restricted fields appearing as editable to Regular users
Changes to own profile allowing unauthorized field modification
User able to edit other individuals' information via direct URL
Email field not properly locked (user able to change company association)
Related JIRA
ABC-3703
ABC-3707
E2E-5: Portal Trade Codes & Market Info
Add CSI and NAICS codes, manage member directory codes, edit market segments and classifications with percentage validation.
PORTAL
TRADES
DATA MGMT
E2E-5 Codes > TC-5.1
Medium
12 min
Preconditions
- MPA logged in to portal
- Navigate to Trade Codes or Industry Classification section
- CSI and NAICS code reference data available
✓
Open Trade Codes section. Click "Add CSI Code". Modal opens with code browser. Search for "Mechanical". Select code "23 10 00" (Mechanical).
Expected: Code modal displays searchable list. Selection adds code to company record. Modal closes and code appears in CSI Codes list.
✓
Verify code added: "23 10 00 - Mechanical" displayed. Checkbox for "Directory Flag" available. Toggle ON to include in member directory.
Expected: CSI code added with directory flag option. Flag can be toggled on/off for directory visibility.
✓
Click "Add NAICS Code". Search for "325412" (Pharmaceutical Preparation Manufacturing). Select and verify added to list with directory flag option.
Expected: NAICS code added alongside CSI code. Both codes visible in unified list. Directory flags independent.
✓
Verify maximum code limit. If max is 5, add 6th code. System should prevent or warn: "Maximum 5 codes allowed".
Expected: Code addition limit enforced. Clear message if limit reached. Cannot exceed max.
Bug Risk Areas
Code lookup modal not appearing or search not working
Selected code not being added to company record
Directory flag not persisting when toggled
Maximum code limit not enforced
Related JIRA
ABC-3714
ABC-3787
E2E-5 Codes > TC-5.2
Easy
8 min
Preconditions
- Codes added from TC-5.1
- Navigate to Member Directory Codes section
✓
View Member Directory Codes with flags set in TC-5.1. Verify codes marked with directory flag appear in this section.
Expected: Only codes with directory flag=true displayed. Clean list of directory codes.
✓
Toggle directory flag OFF on one code. Verify code disappears from Member Directory Codes list. Go back to Trade Codes section, verify flag is unchecked.
Expected: Flag toggle removes code from directory. Changes bidirectional between sections.
✓
Select code in directory list. Click "Delete". Confirm deletion. Verify code removed from both Member Directory Codes and Trade Codes sections.
Expected: Code deleted completely. Removed from all listings. Cannot be retrieved.
Bug Risk Areas
Codes with directory flag=false appearing in member directory list
Directory flag toggle not syncing between sections
Deleted codes still appearing in any listing
Changes not persisting after page reload
E2E-5 Codes > TC-5.3
Medium
15 min
Preconditions
- MPA logged in
- Navigate to Market Segments or Business Classifications section
- Segment reference data available (e.g., Segment A, B, C)
✓
Open Market Segments section. Click "Add Segment". Select segment "Commercial", percentage "60%". Click Add.
Expected: Segment added with percentage. Display shows "Commercial - 60%".
✓
Add second segment "Industrial", percentage "40%". Verify both segments displayed. Check total: 60% + 40% = 100%.
Expected: Both segments visible. Percentage total calculated and validated.
✓
Edit first segment to "70%". Attempt save. System should prevent: "Total must equal 100%. Current total: 110%".
Expected: Save blocked with clear error. Validation prevents invalid totals. Percentages remain unchanged.
✓
Correct percentage to "50%" (total now 90%). Add new segment "Government", "10%". Total = 100%. Click Save.
Expected: Valid percentage configuration saved. All three segments displayed with correct percentages.
Bug Risk Areas
Percentage validation not enforcing 100% total
Decimal percentages not handled (e.g., 33.33%)
Segment edit not pre-populating current values
Segments not persisting after page reload
E2E-6: Portal Business Designations
Add and remove national and local business designations through modal-driven interface.
PORTAL
DESIGNATIONS
DATA MGMT
E2E-6 Designations > TC-6.1
Easy
10 min
Preconditions
- MPA logged in to portal
- Navigate to Business Designations section
- National and local designation reference data available
✓
Open Business Designations section. Click "Add National Designation". Modal opens with searchable list of national designations.
Expected: Modal appears with designation browser. Search box functional.
✓
Search for "Certified" designation. Select "ISO 9001 Certified". Verify added to National Designations list and displays with badge or icon.
Expected: Designation added successfully. List updates to show new designation.
✓
Click "Add Local Designation". Select local designation "Chicago Better Business Bureau Member". Verify added to Local Designations list.
Expected: Local designation added. Both national and local designations displayed in separate lists or sections.
Bug Risk Areas
Modal not opening or search not working
Selected designation not being added
National and local designations mixed or not separated
Designations not persisting after reload
E2E-6 Designations > TC-6.2
Easy
8 min
Preconditions
- Designations from TC-6.1 exist (at least 2)
- Navigate to Business Designations section
✓
Locate national designation "ISO 9001 Certified" in list. Click "Delete" or X button. Confirm deletion.
Expected: Designation removed from list. Confirmation dialog may appear.
✓
Verify designation no longer appears in National Designations. Local designation still present. Navigate away and return to confirm deletion persistent.
Expected: Deleted designation permanently removed. Other designations intact.
Bug Risk Areas
Delete button not appearing or not working
Deleted designation still appearing in list
Deletion affecting wrong designation
Deletion not persisting after reload
E2E-7: Contact Types & Lookup Tables
Manage contact types, CRUD lookup table values, test approval workflow for national lookups.
ADMIN
CONFIG
LOOKUP TABLES
E2E-7 Config > TC-7.1
Medium
12 min
Preconditions
- Admin user logged in
- Navigate to Contacts Admin > Configuration > Contact Types
✓
View Contact Types list. Verify existing types displayed (e.g., Phone, Email, Fax, Mobile). Click "Add Contact Type".
Expected: Contact Types list visible. Add button opens form for new type.
✓
Enter new contact type: Name "Preferred Office", Description "Primary work location contact". Click "Save".
Expected: Contact type created and added to list.
✓
Select type "Preferred Office". Click "Edit". Change description to "Main office contact information". Save changes.
Expected: Contact type updated. Changes reflected in list immediately.
Bug Risk Areas
Add button not working or form not appearing
Duplicate contact type names allowed
Edit form not pre-loading current values
Changes not persisting
E2E-7 Config > TC-7.2
Medium
15 min
Preconditions
- Admin user logged in
- Navigate to Contacts Admin > Configuration > Lookup Tables
✓
Select lookup table type: "Company Status". View table of values. Click "Add Value".
Expected: Lookup table displayed with existing values. Add button opens entry form.
✓
Enter new value: "Prospect", Description "Prospective member company". Set sort order "10". Click "Save".
Expected: Lookup value added to table and displays in correct sort order.
✓
Select value "Prospect". Click "Edit". Change description to "Potential member considering membership". Save.
Expected: Lookup value updated. Description changes reflected.
✓
Click "Delete" on the value. Confirm deletion. Verify value removed from table completely.
Expected: Lookup value deleted. Cannot be selected in dropdowns. Removed from all places it was used.
Bug Risk Areas
Duplicate lookup values allowed
Sort order not respected in display
Delete not working or value still appearing after deletion
Deleted lookup value still appearing in company status dropdowns
E2E-7 Config > TC-7.3
Medium
12 min
Preconditions
- Chapter admin and national admin users available
- Navigate to lookup table management for national-approved table (if applicable)
✓
As chapter admin, add new lookup value to national-controlled table (if national approval required). Enter value: "New Member Type". Click "Submit for Approval".
Expected: Value submitted with status "Pending National Approval". Cannot be used until approved.
✓
As national admin, navigate to Pending Approvals. Verify submitted value appears with approval options: Approve, Reject, Request Changes.
Expected: Pending value visible to national admin. Options to approve or reject available.
✓
Click "Approve". Add approval comment: "Looks good". Confirm.
Expected: Value approved. Status changed to "Active". Available for use in all chapters.
Bug Risk Areas
Pending approval values appearing as available before approval
Approval status not updating after action
Rejected values not being handled correctly
Approval notifications not being sent
E2E-8: Data Quality Audits
Run company and individual audits, test duplicate detection, missing data audits, and result actions.
ADMIN
AUDITS
DATA QUALITY
E2E-8 Audits > TC-8.1
Medium
12 min
Preconditions
- Admin user logged in
- Navigate to Contacts Admin > Data Quality > Run Audits
- Multiple companies exist with varying data completeness
✓
Open Data Quality Audits. Select audit type: "Company Completeness". Choose criteria: Check for missing address, missing phone, missing email. Click "Run Audit".
Expected: Audit runs and displays results. Progress indicator shown during execution.
✓
Verify audit results displayed: List of companies with missing data. Each item shows Company Name, Missing Field(s), Last Modified date. Results accurate compared to actual data.
Expected: Results accurate. Companies with missing data correctly identified. No false positives.
✓
Export results to CSV. Download and verify file contains all audit results with headers matching displayed columns.
Expected: CSV file downloadable and contains correct data. File format valid.
Bug Risk Areas
Audit not running or hanging indefinitely
False positives (companies flagged as missing data when data exists)
False negatives (companies with missing data not flagged)
Export not including all results or corrupted file
E2E-8 Audits > TC-8.2
Medium
12 min
Preconditions
- Admin user logged in
- Multiple individuals exist with varying email formats and data completeness
- Some duplicate or similar names exist (intentionally seeded for testing)
✓
Run audit: "Individual Email Validation". Audit validates email format and flags invalid entries.
Expected: Results show individuals with invalid or malformed email addresses. Examples: missing @, invalid domain.
✓
Run audit: "Individual Duplicate Detection". Audit identifies likely duplicates based on name similarity and company.
Expected: Results show potential duplicates with confidence score. Examples: "John Smith, Acme Corp" matches "Jon Smith, Acme Corp".
✓
Run audit: "Missing Required Fields". Identifies individuals missing mandatory fields (e.g., Title, Phone).
Expected: Results accurate. Individuals with incomplete required fields identified. Includes which fields are missing.
Bug Risk Areas
Email validation not catching invalid formats
Duplicate detection missing obvious duplicates
False positive duplicates reported
Required field audit not respecting configurable field requirements
E2E-8 Audits > TC-8.3
Medium
12 min
Preconditions
- Audit results available with at least one fixable issue (e.g., missing email)
- Navigate to audit results
✓
Select result item (e.g., company missing email). Click "View Record" or icon. Company detail page opens in same tab or new tab.
Expected: Navigation to problematic record. User can edit and fix issue immediately.
✓
Add/fix missing email: "acme.contact@acme.com". Click "Save". Return to audit results.
Expected: Record updated and saved. User can return to audit results without losing data.
✓
In audit results, select same record. Click "Mark as Fixed" or "Dismiss". Verify result removed from list or marked with status "Fixed".
Expected: Result status updated. Fixed items disappear or appear as resolved. Next audit run excludes fixed items.
Bug Risk Areas
View Record link not working or opening wrong record
Changes to record not persisting
Mark as Fixed not working or result still appearing after fix
Re-running audit after fix still showing issue (cache not invalidated)
E2E-9: Search, Reporting & Export
Global search with filters, run reports, export to Excel with data accuracy validation.
ADMIN
REPORTING
EXPORT
E2E-9 Search > TC-9.1
Easy
10 min
Preconditions
- Admin user logged in
- Multiple companies and individuals exist with diverse attributes
- Navigate to Contacts > Global Search or Browse
✓
Open Global Search. Enter search term "Acme". Results display both companies and individuals matching name.
Expected: Search returns results from both companies and individuals. Results categorized by type.
✓
Apply advanced filters: Company Type "Member Company", State "IL", Status "Active". Verify results filtered to matching criteria.
Expected: Filters applied and results updated. Only companies matching all filter criteria displayed.
✓
Clear filters. Search for individual "John". Apply filter: Company "Acme Corporation". Verify only individuals named John at Acme appear.
Expected: Cross-entity filtering works. Search combined with filters accurate.
Bug Risk Areas
Search not returning all matching records
Filters not applying or showing incorrect results
Deleted records appearing in search results
Search performance degrading with large datasets
E2E-9 Search > TC-9.2
Medium
12 min
Preconditions
- Search results with 10+ companies available
- Navigate to Reports section or use browse results
✓
Run report: "Company Master List". Select columns to include: Company Name, Type, City, State, Phone, Email, Website. Click "Generate Report".
Expected: Report generated showing selected columns. All companies included unless filtered.
✓
Click "Export to Excel". Select file format "XLSX". File downloads. Open in Excel and verify: data integrity, correct column headers, proper formatting.
Expected: Excel file generated and downloadable. File opens correctly in Excel. All data accurately exported.
✓
Verify data accuracy: Sample 5 companies in Excel. Cross-check each against system records for name, phone, email matches.
Expected: Exported data matches system data exactly. No truncation or corruption.
Bug Risk Areas
Report not generating or timing out
Exported data truncated or corrupted
Excel formatting broken (merged cells, formulas replaced with values)
Special characters in data not exporting correctly (encoding issues)
E2E-10: Negative & Edge Cases
Delete restrictions, permission boundaries, validation errors. Tests guardrails and access control.
CROSS-CUT
VALIDATION
CRITICAL
E2E-10 Edge Cases > TC-10.1
Medium
12 min
Preconditions
- Admin user logged in
- Company with associated individuals exists
- Company with historical transaction records exists
✓
Open company "Acme Corporation" with 3+ associated individuals. Click "Delete Company". System should prevent or warn: "Cannot delete company with associated individuals. Remove or reassign first."
Expected: Delete blocked with clear explanation. User can see count of dependent individuals.
✓
Open individual with historical activity records (event registrations, invoice references). Click "Delete Individual". Verify system prevents deletion: "Cannot delete individual with historical records."
Expected: Delete blocked to protect referential integrity. Message explains why deletion not allowed.
✓
Create company with no individuals or history. Click "Delete Company". Verify deletion allowed after confirmation.
Expected: Company with no dependencies deleted successfully. Record no longer appears in browse list.
Bug Risk Areas
Delete allowed when should be restricted (orphaning records)
Error message not explaining why deletion prevented
Soft delete not implemented (orphaned records left behind)
Dependency count not accurate (claiming 0 individuals when some exist)
E2E-10 Edge Cases > TC-10.2
Medium
10 min
Preconditions
- Limited portal user logged in (not MPA)
- Admin and MPA users available for comparison
✓
As Limited user, navigate to Company Profile. Verify all fields read-only. No Edit button visible. Attempt direct URL access to /api/company/[id]/edit. System should deny access with 403 or redirect.
Expected: UI hides edit functions. API denies unauthorized access. No workarounds to bypass permission.
✓
As Limited user, attempt to view Trade Codes section. Should not appear in navigation. Attempt direct URL. System denies with 403 or "Access Denied" message.
Expected: Trade Codes section completely hidden and inaccessible to Limited users.
✓
Disable portal access for individual. User attempts login. System should deny with message: "Portal access disabled for your account. Contact administrator."
Expected: Disabled users cannot login. Clear feedback provided. No residual session access.
Bug Risk Areas
Limited user able to access MPA-only sections
Edit buttons appearing but failing silently (poor UX)
API not enforcing permission checks (authorization bypass)
Disabled users still able to login via cached session