# User Acceptance Testing (UAT) Guide Comprehensive UAT scenarios for Portfolio Host application. ## Test Environment Setup ### Prerequisites - Test user accounts created - Test data prepared - Browser: Chrome, Firefox, Safari, Edge (latest versions) - Mobile device (iOS and Android) - Test API endpoint configured ### Test Execution - Date: [DATE] - Tester: [NAME] - Environment: Staging/Production - Duration: [TIME] --- ## 1. User Registration & Authentication ### Scenario 1.1: User Registration **Steps**: 1. Navigate to landing page 2. Click "Sign Up" button 3. Fill registration form: - Name: John Portfolio Creator - Email: john@example.com - Password: TestPass123! - Confirm Password: TestPass123! 4. Click "Create Account" **Expected Results**: - ✅ Form validates all fields - ✅ Password requirements displayed - ✅ Success message shown - ✅ Redirected to login or dashboard - ✅ Confirmation email sent (if configured) ### Scenario 1.2: User Login **Steps**: 1. Navigate to login page 2. Enter email: john@example.com 3. Enter password: TestPass123! 4. Click "Sign In" **Expected Results**: - ✅ Login successful - ✅ Redirected to dashboard - ✅ User name displayed in navbar - ✅ Session persisted (can refresh without re-login) ### Scenario 1.3: Logout **Steps**: 1. From dashboard, click logout button 2. Confirm logout **Expected Results**: - ✅ Session cleared - ✅ Redirected to landing page - ✅ Cannot access dashboard without re-login ### Scenario 1.4: Password Reset **Steps**: 1. Navigate to login page 2. Click "Forgot Password" 3. Enter email 4. Click reset link in email 5. Enter new password 6. Login with new password **Expected Results**: - ✅ Reset email sent - ✅ Link works and expires after time - ✅ New password accepted - ✅ Old password no longer works --- ## 2. Portfolio Management ### Scenario 2.1: Create Portfolio **Steps**: 1. Go to Dashboard 2. Click "Create New Portfolio" 3. Enter: - Name: My Portfolio - Domain: myportfolio.com 4. Click "Create" **Expected Results**: - ✅ Portfolio created - ✅ Added to portfolio list - ✅ Status shows "Pending Upload" - ✅ Created date displayed ### Scenario 2.2: Upload Portfolio Files **Steps**: 1. Select portfolio "My Portfolio" 2. Click "Upload ZIP" 3. Select portfolio.zip file (contains index.html + assets) 4. Wait for upload to complete **Expected Results**: - ✅ Upload progress shown - ✅ Status changes to "Deployed" - ✅ Portfolio accessible at domain - ✅ All assets load correctly ### Scenario 2.3: View Portfolio **Steps**: 1. From dashboard, click "View" button 2. Verify portfolio displays correctly **Expected Results**: - ✅ Portfolio opens in new tab - ✅ All pages load correctly - ✅ Links work properly - ✅ Images/assets display ### Scenario 2.4: Edit Portfolio Settings **Steps**: 1. Click "Edit" on portfolio 2. Change name to "My Updated Portfolio" 3. Save changes **Expected Results**: - ✅ Changes saved - ✅ Updated name displayed - ✅ Portfolio still accessible ### Scenario 2.5: Delete Portfolio **Steps**: 1. Click "Delete" on portfolio 2. Confirm deletion **Expected Results**: - ✅ Portfolio removed from list - ✅ Confirmation message shown - ✅ Portfolio no longer accessible - ✅ Domain becomes available for reuse --- ## 3. Mobile Responsiveness ### Scenario 3.1: Landing Page Mobile **Steps**: 1. Open landing page on mobile (375px width) 2. Verify all sections visible 3. Test navigation 4. Test CTA buttons **Expected Results**: - ✅ Hero section readable - ✅ Features display in single column - ✅ FAQ accordion works on mobile - ✅ Stats section responsive - ✅ Buttons have 44x44px touch targets - ✅ No horizontal scroll ### Scenario 3.2: Dashboard Mobile **Steps**: 1. Login on mobile 2. View portfolio list 3. Test view, edit, delete actions **Expected Results**: - ✅ List view used automatically on mobile - ✅ Buttons accessible on touch screen - ✅ Proper spacing between elements - ✅ No overlapping content ### Scenario 3.3: Mobile Menu **Steps**: 1. Open navigation on mobile 2. Click hamburger menu 3. Test navigation links **Expected Results**: - ✅ Menu toggles open/closed - ✅ All links visible in menu - ✅ Links work correctly - ✅ Menu closes after selection --- ## 4. Accessibility Testing ### Scenario 4.1: Keyboard Navigation **Steps**: 1. Use Tab key to navigate through all interactive elements 2. Verify focus indicator visible 3. Use Enter key on buttons 4. Use Escape to close modals **Expected Results**: - ✅ All buttons/links reachable via Tab - ✅ Focus indicator clearly visible - ✅ Logical tab order - ✅ Escape key closes dialogs ### Scenario 4.2: Screen Reader Testing **Steps**: 1. Use screen reader (NVDA, JAWS, VoiceOver) 2. Navigate through page 3. Verify all content announced **Expected Results**: - ✅ All headings announced - ✅ Form labels associated with inputs - ✅ Button purposes clear - ✅ Error messages announced - ✅ Status updates announced ### Scenario 4.3: Color Contrast **Steps**: 1. Use color contrast analyzer 2. Check text contrast ratios 3. Verify color not only indication **Expected Results**: - ✅ Text contrast 4.5:1 minimum - ✅ UI controls 3:1 minimum - ✅ Color combined with icons/text --- ## 5. Performance Testing ### Scenario 5.1: Page Load Speed **Steps**: 1. Open developer tools 2. Measure page load time 3. Check Lighthouse score **Expected Results**: - ✅ Page loads in < 2 seconds - ✅ Lighthouse score > 90 - ✅ Smooth animations ### Scenario 5.2: API Response Time **Steps**: 1. Check network tab in DevTools 2. Monitor API response times 3. Check database queries **Expected Results**: - ✅ API responses < 200ms - ✅ No slow queries - ✅ Proper caching implemented ### Scenario 5.3: Load Testing **Steps**: 1. Simulate 50 concurrent users 2. Monitor server response time 3. Check error rates **Expected Results**: - ✅ Response time < 500ms - ✅ No 500 errors - ✅ All users can login/access portfolios --- ## 6. Browser Compatibility ### Scenario 6.1: Chrome **Steps**: 1. Test all features in Chrome latest 2. Check rendering 3. Verify JavaScript works **Expected Results**: - ✅ All features work - ✅ No console errors - ✅ Renders correctly ### Scenario 6.2: Firefox **Steps**: 1. Test all features in Firefox latest 2. Check rendering 3. Verify JavaScript works **Expected Results**: - ✅ All features work - ✅ No console errors - ✅ Renders correctly ### Scenario 6.3: Safari **Steps**: 1. Test all features in Safari latest 2. Check rendering 3. Verify JavaScript works **Expected Results**: - ✅ All features work - ✅ No console errors - ✅ Renders correctly ### Scenario 6.4: Edge **Steps**: 1. Test all features in Edge latest 2. Check rendering 3. Verify JavaScript works **Expected Results**: - ✅ All features work - ✅ No console errors - ✅ Renders correctly --- ## 7. Security Testing ### Scenario 7.1: SQL Injection **Steps**: 1. Try SQL injection in login: `' OR '1'='1` 2. Verify handled safely **Expected Results**: - ✅ Input sanitized - ✅ No SQL error shown - ✅ Generic error message ### Scenario 7.2: XSS Prevention **Steps**: 1. Try to inject JavaScript in portfolio name 2. Verify content escaped **Expected Results**: - ✅ Script not executed - ✅ Content displayed as text - ✅ No console errors ### Scenario 7.3: CSRF Protection **Steps**: 1. Verify CSRF tokens present 2. Check token validation **Expected Results**: - ✅ CSRF tokens included in forms - ✅ Requests validated ### Scenario 7.4: SSL/HTTPS **Steps**: 1. Verify site uses HTTPS 2. Check certificate valid 3. Check no mixed content **Expected Results**: - ✅ Green lock icon - ✅ Certificate valid - ✅ No mixed content warnings --- ## 8. Data Validation ### Scenario 8.1: Email Validation **Steps**: 1. Try invalid emails: `test@`, `@test.com`, `test` 2. Verify validation works **Expected Results**: - ✅ Invalid emails rejected - ✅ Error message shown - ✅ Valid emails accepted ### Scenario 8.2: Password Validation **Steps**: 1. Try short password (< 6 chars) 2. Try valid password 3. Verify confirmation matching **Expected Results**: - ✅ Too short rejected - ✅ Valid password accepted - ✅ Mismatch detected ### Scenario 8.3: Domain Validation **Steps**: 1. Try invalid domain formats 2. Try valid domain **Expected Results**: - ✅ Invalid domains rejected - ✅ Valid domains accepted - ✅ Error messages clear --- ## 9. Error Handling ### Scenario 9.1: Network Errors **Steps**: 1. Disconnect network 2. Try to load page 3. Verify error handling **Expected Results**: - ✅ Error message shown - ✅ Can retry - ✅ No infinite loading ### Scenario 9.2: Server Errors **Steps**: 1. Trigger 500 error (if possible in test) 2. Verify error message **Expected Results**: - ✅ User-friendly error message - ✅ Can try again - ✅ No technical details exposed ### Scenario 9.3: Validation Errors **Steps**: 1. Submit form with invalid data 2. Verify error messages **Expected Results**: - ✅ Clear error messages - ✅ Fields highlighted - ✅ Helpful suggestions --- ## 10. Data Persistence ### Scenario 10.1: Session Persistence **Steps**: 1. Login to dashboard 2. Refresh page 3. Verify still logged in **Expected Results**: - ✅ Session maintained - ✅ User still logged in - ✅ Portfolio data loaded ### Scenario 10.2: Data Recovery **Steps**: 1. Create portfolio 2. Refresh page 3. Verify portfolio still exists **Expected Results**: - ✅ Data persisted - ✅ No data loss - ✅ Updated correctly --- ## Sign-Off - ✅ All test scenarios passed - ✅ No critical bugs found - ✅ No high-priority bugs blocking release - ✅ Application ready for production **Tester Signature**: _________________ **Date**: _________________ **Status**: ☐ Pass ☐ Fail --- **Last Updated**: 2025-10-17