Purpose: Guide for manually testing features that require multiple authenticated users simultaneously
Last Updated: January 13, 2025
Automated Test Coverage: 146/156 (93.6%)
Requires Manual Testing: 10 tests (5 multi-user + 3 accessibility + 1 infrastructure + 1 catalog)
| User | Password | Role | Status | |
|---|---|---|---|---|
| User A | ritikh2@illinois.edu | Test234! | Faculty | ✅ Verified |
| User B | jwillits@illinois.edu | TestFaculty123! | Faculty | ✅ Verified |
| Student | student@test.edu | TestStudent123! | Student | ✅ Verified |
For multi-user testing, you'll need to use either:
- Two different browsers (e.g., Chrome + Firefox)
- Incognito/Private windows in separate browser instances
- Browser profiles (recommended for Chrome/Edge)
Feature: Module Cloning with Collaborators Type: Functional Priority: Medium
-
Setup (User A - ritikh2@illinois.edu):
- Log in to https://bcs-web2.vercel.app
- Navigate to Faculty Dashboard → Modules
- Find or create a module with collaborators
- Note the module slug
-
Clone Module (Still as User A):
- Navigate to the module page
- Click "Clone" button in header
- Check "Clone collaborators" checkbox ✓
- Enter new title (e.g., "Cloned Module with Collaborators")
- Click "Clone Module"
-
Verify:
- Navigate to the cloned module's edit page
- Go to Collaborators section
- Verify original collaborators are present
- Verify User A is the author (not listed as collaborator)
- Verify module status is "draft"
- Verify visibility is "private"
- ✅ Collaborators are cloned to new module
- ✅ User A is the author of the clone (not a collaborator)
- ✅ Cloned module is private and draft
- ✅ Original module unchanged
Feature: Cross-User Module Cloning (Public) Type: Security Priority: High
-
Setup (User A - Browser 1):
- Log in as ritikh2@illinois.edu
- Navigate to a public published module you own
- Recommended:
/modules/neural-networks - Note the module slug and author name
-
Clone as Different User (User B - Browser 2):
- Log in as jwillits@illinois.edu
- Navigate to the same module:
/modules/neural-networks - Click "Clone" button in header
- Verify clone dialog appears
- Enter new title: "Cloned from Public Module"
- Click "Clone Module"
-
Verify Clone Ownership (Browser 2):
- Navigate to Faculty Dashboard → Modules
- Find the cloned module
- Click to edit
- Verify YOU (Jon Willits) are the author
- Verify original author (Ritik Hariani) is NOT listed as collaborator
-
Verify Original Unchanged (Browser 1):
- Refresh the original module
- Verify clone count incremented
- Verify module still owned by User A
- Verify no changes to collaborators
- ✅ User B can clone User A's public module
- ✅ User B becomes the author of the clone
- ✅ Original author NOT added as collaborator
- ✅ Clone is private draft owned by User B
- ✅ Original module's clone_count incremented
- ✅ Public modules are cloneable by any faculty user
- ✅ Clone ownership transfers to cloning user
- ✅ Original module permissions unchanged
Feature: Cross-User Module Cloning (Private) Type: Security Priority: High
-
Setup (User A - Browser 1):
- Log in as ritikh2@illinois.edu
- Create or find a PRIVATE module
- Ensure it's published (status: published, visibility: private)
- Note the module slug
-
Attempt to View as Different User (User B - Browser 2):
- Log in as jwillits@illinois.edu
- Try to navigate to the private module URL directly
- Example:
/modules/test-published-private-module
-
Expected Behavior:
- ❌ Module should NOT be accessible
- Should show 404 or "Module not found" error
- OR redirect to modules library
-
Verify Clone Button Not Present:
- If you somehow access the module (as collaborator)
- Clone button should work
- But if you're NOT a collaborator, you shouldn't see the module
- ❌ User B CANNOT access User A's private module
- ❌ User B CANNOT clone User A's private module
- ✅ Privacy controls working correctly
- ✅ Only collaborators can access private modules
- ✅ Private modules are NOT accessible to non-collaborators
- ✅ Private modules are NOT cloneable by non-collaborators
- ✅ Proper access control enforcement
Feature: Clone Relationship Tracking Type: Functional Priority: Low
-
Create Original (User A - Browser 1):
- Create a module as ritikh2@illinois.edu
- Note the module ID
-
Clone by User B (Browser 2):
- Log in as jwillits@illinois.edu
- Clone User A's public module
- Note the cloned module ID
-
Verify Lineage:
- Check database or module metadata
- Verify cloned module has
cloned_fromfield set to original module ID - Verify original module's
clone_countincremented
-
Re-clone by User A (Browser 1):
- User A clones User B's clone
- Verify new clone has
cloned_frompointing to User B's module - Verify lineage chain is preserved
- ✅ Each clone has
cloned_fromfield set - ✅ Original module tracks clone count
- ✅ Multiple-generation cloning works
- ✅ Lineage is preserved across users
Feature: Course-Specific Module Notes Type: Functional Priority: Medium
-
Setup (User A - Browser 1):
- Create a course with multiple modules
- Add custom notes to a module in the course
- Publish the course
-
Add User B as Collaborator (Browser 1):
- Add jwillits@illinois.edu as course collaborator
- Save changes
-
Verify Access (User B - Browser 2):
- Log in as jwillits@illinois.edu
- Navigate to Faculty Dashboard
- Find the shared course
- Edit the course
- Verify you can see User A's notes
- Add your own notes to a module
-
Verify Isolation:
- Notes should be course-specific
- Same module in different courses can have different notes
- Changes by User B visible to User A
- ✅ Course notes are shared among collaborators
- ✅ Notes are course-specific (not module-specific)
- ✅ All collaborators can edit notes
- ✅ Changes sync properly
Feature: Keyboard-Only Navigation Type: Accessibility Priority: High
-
Tab Through Interface:
- Start on homepage
- Use only
Tabkey to navigate - Verify focus indicators are visible
- Verify logical tab order
-
Test Interactive Elements:
Enterto activate links/buttonsSpaceto toggle checkboxesEscto close dialogs- Arrow keys for dropdowns
-
Test Forms:
- Tab through all form fields
- Verify labels are properly associated
- Verify error messages are accessible
- ✅ All interactive elements accessible via keyboard
- ✅ Focus indicators always visible
- ✅ Logical tab order throughout
- ✅ No keyboard traps
Feature: Screen Reader Compatibility Type: Accessibility Priority: High
-
Setup:
- Use NVDA (Windows) or VoiceOver (Mac)
- Navigate to https://bcs-web2.vercel.app
-
Test Landmarks:
- Verify page regions announced (navigation, main, footer)
- Verify headings hierarchy (H1 → H2 → H3)
- Verify skip links work
-
Test Forms:
- Verify field labels announced
- Verify error messages announced
- Verify required fields indicated
-
Test Interactive Elements:
- Verify button purposes clear
- Verify link destinations clear
- Verify image alt text meaningful
- ✅ All content accessible to screen readers
- ✅ Semantic HTML used correctly
- ✅ ARIA labels where appropriate
- ✅ Meaningful announcements
Feature: Cross-Browser Support Type: Compatibility Priority: Medium
-
Test in Each Browser:
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
-
Test Key Features:
- Homepage loads correctly
- Navigation works
- Forms submit properly
- Module viewer displays correctly
- Rich text editor functions
- Images load
- Styles render correctly
-
Test Responsive Design:
- Desktop (1920×1080)
- Tablet (768×1024)
- Mobile (375×667)
- ✅ Consistent appearance across browsers
- ✅ All features work in all browsers
- ✅ No console errors
- ✅ Responsive design works everywhere
Feature: Database Failure Handling Type: Error Handling Priority: Low
-
Setup:
- Access Supabase dashboard
- Temporarily pause the database
- OR revoke connection temporarily
-
Test Application Behavior:
- Try to load any page
- Verify graceful error message
- Verify no sensitive data exposed
- Verify user-friendly error page
-
Restore:
- Re-enable database connection
- Verify application recovers
- ✅ Graceful error handling
- ✅ User-friendly error message
- ✅ No stack traces exposed
- ✅ Application recovers after database restored
Recommendation: Test in staging environment only, not production.
Feature: Statistics Card Accuracy Type: Functional Priority: Low
-
Verify Module Count:
- Navigate to
/courses - Check "Total Modules" stat card
- Compare with database count
- Previously showed "NaN" - verify this is fixed
- Navigate to
-
Test Edge Cases:
- Create course with no modules
- Create course with 100+ modules
- Verify statistics update correctly
- Check statistics after deleting courses
- ✅ All statistics show valid numbers
- ✅ No "NaN" or undefined values
- ✅ Statistics update in real-time
- ✅ Edge cases handled correctly
Use this checklist when performing manual tests:
### Test: TEST-XXXX-XXX
- [ ] Prerequisites met
- [ ] Test environment: _______________
- [ ] Browsers used: _______________
- [ ] Date tested: _______________
- [ ] Tester: _______________
**Results:**
- [ ] Test passed
- [ ] Test failed
- [ ] Test blocked (reason: _______________)
**Issues Found:**
- Issue 1: _______________
- Issue 2: _______________
**Screenshots:**
- Screenshot 1: _______________
- Screenshot 2: _______________
**Notes:**
_______________# Get list of test users
SELECT email, role, email_verified FROM users WHERE email_verified = true;
# Check module visibility
SELECT id, title, visibility, status, author_id FROM modules WHERE slug = 'module-slug';
# Check clone count
SELECT id, title, clone_count, cloned_from FROM modules WHERE slug = 'module-slug';
# Check collaborators
SELECT * FROM collaborators WHERE module_id = 'module_id';If you encounter issues during manual testing:
- Check the main TESTING_CHECKLIST.md for test details
- Check database schema in prisma/schema.prisma
- Review API routes in src/app/api/
Mark tests as PASS when:
- All expected results verified
- No critical bugs found
- Behavior matches specifications
- Security controls working
Mark tests as FAIL when:
- Expected results not met
- Critical bugs discovered
- Security vulnerabilities found
Mark tests as BLOCKED when:
- Prerequisites not met
- Test environment unavailable
- Dependencies not working
Note: These manual tests complement the 146 automated tests already completed. Together they provide comprehensive test coverage of the BCS E-Learning Platform.