A comprehensive guide for manually testing SplitMySub functionality. This document provides step-by-step testing scenarios to ensure all features work correctly before deployment.
This document covers manual testing scenarios for all major user flows and edge cases in SplitMySub. Each scenario includes:
- Prerequisites: What needs to be set up before testing
- Test Steps: Detailed step-by-step instructions
- Expected Results: What should happen at each step
- Edge Cases: Alternative scenarios and error conditions
Prerequisites:
- Clean browser session (no existing cookies)
- Valid email address for testing
Test Steps:
- Navigate to the application homepage
- Click "Sign Up" or "Get Started"
- Enter email address:
test@example.com - Enter first name:
John - Enter last name:
Doe - Click "Create Account"
- Check email inbox for magic link
- Click the magic link in the email
- Verify redirect to dashboard
Expected Results:
- ✅ Registration form accepts valid input
- ✅ Success message appears: "Magic link sent to your email"
- ✅ Email received within 30 seconds
- ✅ Magic link redirects to dashboard
- ✅ User is automatically signed in
- ✅ Welcome message displayed
Edge Cases to Test:
- Invalid email format (
invalid-email) - Empty required fields
- Duplicate email registration
- Expired magic link (wait 30+ minutes)
- Already used magic link
Prerequisites:
- Existing user account
Test Steps:
- Navigate to login page
- Enter existing email address
- Click "Send Magic Link"
- Check email for magic link
- Click magic link
- Verify successful login
Expected Results:
- ✅ Magic link sent to existing user
- ✅ Successful login and redirect to dashboard
- ✅ User session persists across page refreshes
Edge Cases to Test:
- Non-existent email address
- Multiple magic link requests
- Magic link used after logout
Prerequisites:
- Logged in user
Test Steps:
- Click user menu/profile dropdown
- Click "Logout" or "Sign Out"
- Verify redirect to homepage
- Try to access protected page directly
Expected Results:
- ✅ User successfully logged out
- ✅ Redirect to homepage or login page
- ✅ Protected pages redirect to login
Prerequisites:
- Logged in user
Test Steps:
- Navigate to dashboard
- Click "Create Project" or "New Project"
- Fill out project form:
- Name: "Netflix Family Plan"
- Description: "Monthly Netflix subscription sharing"
- Cost: "15.99"
- Currency: "USD"
- Billing Cycle: "Monthly"
- Renewal Date: Select date 1 month from now
- Reminder Days: "3"
- Click "Create Project"
- Verify project creation success
Expected Results:
- ✅ Form accepts all valid inputs
- ✅ Project created successfully
- ✅ Redirect to project detail page
- ✅ Project appears in user's project list
- ✅ Correct cost calculation shown
- ✅ Unique project slug generated
Edge Cases to Test:
- Empty required fields
- Invalid cost amounts (negative, text)
- Invalid date selection (past date)
- Very long project names/descriptions
- Special characters in project name
- Different currencies (EUR, GBP, JPY)
Prerequisites:
- Logged in user who owns a project
Test Steps:
- Navigate to project detail page
- Click "Edit Project" or edit icon
- Modify project details:
- Change cost from "15.99" to "19.99"
- Update description
- Change reminder days to "5"
- Click "Save Changes"
- Verify updates are reflected
Expected Results:
- ✅ Edit form pre-populated with current values
- ✅ Changes saved successfully
- ✅ Updated values displayed on project page
- ✅ Cost per member recalculated if needed
Edge Cases to Test:
- Cancel editing without saving
- Invalid data during edit
- Editing project with existing payments
- Concurrent edits by multiple users
Prerequisites:
- Logged in user who owns a project with no payments
Test Steps:
- Navigate to project detail page
- Click "Delete Project" or delete icon
- Confirm deletion in modal/confirmation dialog
- Verify project is deleted
Expected Results:
- ✅ Confirmation dialog appears
- ✅ Project deleted after confirmation
- ✅ Redirect to dashboard or projects list
- ✅ Project no longer appears in user's projects
Edge Cases to Test:
- Cancel deletion
- Delete project with pending payments
- Delete project with confirmed payments
- Delete project with active members
Prerequisites:
- Logged in project owner
- Existing project
Test Steps:
- Navigate to project detail page
- Click "Invite Members" or "Add Member"
- Enter email address:
newmember@example.com - Select role (if applicable): "Member"
- Click "Send Invitation"
- Verify invitation sent confirmation
- Check that invitation appears in project member list
Expected Results:
- ✅ Invitation form accepts valid email
- ✅ Success message: "Invitation sent successfully"
- ✅ Email sent to invitee
- ✅ Invitation appears in project member list as "Pending"
- ✅ Cost per member updates to reflect new potential member
Edge Cases to Test:
- Invalid email format
- Duplicate invitation to same email
- Invite existing project member
- Invite project owner
- Multiple invitations to different emails
Prerequisites:
- Valid invitation email received
Test Steps:
- Open invitation email
- Click "Accept Invitation" link
- Fill out new user form:
- First Name: "Jane"
- Last Name: "Smith"
- Click "Accept & Join Project"
- Verify account creation and project membership
Expected Results:
- ✅ Invitation page loads with project details
- ✅ New user account created
- ✅ User automatically added to project
- ✅ Redirect to project page
- ✅ User can see project details and payment information
- ✅ Cost per member recalculated
Edge Cases to Test:
- Expired invitation link
- Already used invitation link
- Invalid invitation token
- Invitation for deleted project
Prerequisites:
- Existing user account
- Valid invitation email received
Test Steps:
- Open invitation email
- Click "Accept Invitation" link
- If not logged in, complete login process
- Confirm joining the project
- Verify project membership
Expected Results:
- ✅ Existing user recognized
- ✅ Simple confirmation to join project
- ✅ User added to project member list
- ✅ Access to project details and payments
Prerequisites:
- Project with invited or active members
Test Steps:
- As project owner, navigate to project members
- Click "Remove" next to a member
- Confirm removal
- Verify member is removed and cost recalculated
Expected Results:
- ✅ Member removed from project
- ✅ Cost per member recalculated
- ✅ Removed member loses access to project
- ✅ Notification sent to removed member
Prerequisites:
- Logged in project member
- Active billing cycle with amount due
Test Steps:
- Navigate to project page
- Click "Make Payment" or "Pay Now"
- Enter payment details:
- Amount: "5.33" (or calculated amount)
- Transaction ID: "TXN123456789"
- Payment Method: "Bank Transfer"
- Notes: "Paid via online banking"
- Upload payment evidence (receipt/screenshot)
- Click "Submit Payment"
- Verify payment submission
Expected Results:
- ✅ Payment form accepts all inputs
- ✅ File upload works correctly
- ✅ Payment submitted with "Pending" status
- ✅ Payment appears in member's payment history
- ✅ Project owner receives notification
- ✅ Billing cycle shows partial payment
Edge Cases to Test:
- Submit payment without evidence
- Upload invalid file types
- Submit incorrect payment amount
- Submit payment twice for same billing cycle
- Very large file uploads
- Submit payment after due date
Prerequisites:
- Logged in project owner
- Pending payment submission from member
Test Steps:
- Navigate to project page
- Click "Payment Confirmations" or notification
- Review payment details:
- Member name and amount
- Transaction ID and notes
- Payment evidence file
- Download and verify evidence
- Add confirmation notes: "Verified against bank statement"
- Click "Confirm Payment"
- Verify payment confirmation
Expected Results:
- ✅ Payment details clearly displayed
- ✅ Evidence file downloads correctly
- ✅ Confirmation notes saved
- ✅ Payment status changes to "Confirmed"
- ✅ Member receives confirmation notification
- ✅ Billing cycle payment status updates
Edge Cases to Test:
- Reject payment instead of confirming
- Confirm payment with missing evidence
- Confirm payment with incorrect amount
- Multiple payments pending confirmation
Prerequisites:
- Logged in project owner
- Pending payment submission from member
Test Steps:
- Navigate to payment confirmation page
- Review payment details
- Add rejection notes: "Amount doesn't match expected payment"
- Click "Reject Payment"
- Verify payment rejection
Expected Results:
- ✅ Payment status changes to "Rejected"
- ✅ Rejection notes saved
- ✅ Member receives rejection notification
- ✅ Member can resubmit corrected payment
- ✅ Billing cycle remains unpaid
Prerequisites:
- User with payment history (multiple payments)
Test Steps:
- Navigate to user dashboard or profile
- Click "Payment History"
- Review payment list:
- Filter by project
- Filter by status (pending, confirmed, rejected)
- Sort by date
- Click on individual payment for details
- Verify payment tracking information
Expected Results:
- ✅ All payments displayed correctly
- ✅ Filtering works properly
- ✅ Sorting functions correctly
- ✅ Payment details accessible
- ✅ Status indicators clear and accurate
Prerequisites:
- Project with renewal date approaching
Test Steps:
- Create project with renewal date tomorrow
- Wait for or trigger billing cycle creation
- Verify new billing cycle appears
- Check billing cycle details:
- Correct total amount
- Proper due date
- All members included
- Correct amount per member
Expected Results:
- ✅ Billing cycle created automatically
- ✅ Correct calculations for total and per-member amounts
- ✅ All active members included
- ✅ Proper due date set
- ✅ Members receive payment reminders
Edge Cases to Test:
- Project with no members
- Project with pending member invitations
- Project with recently removed members
- Multiple projects with same renewal date
Prerequisites:
- Billing cycle approaching due date
- Members with unpaid amounts
Test Steps:
- Set up project with reminder days = 3
- Create billing cycle due in 3 days
- Verify reminder emails sent
- Check reminder content and timing
- Test multiple reminder scenarios
Expected Results:
- ✅ Reminders sent at correct intervals
- ✅ Email content includes payment details
- ✅ Links to payment submission work
- ✅ No reminders sent to members who already paid
- ✅ Project owner receives payment status updates
Edge Cases to Test:
- Reminders for overdue payments
- Multiple unpaid billing cycles
- Reminders when payment submitted but not confirmed
- Disable/enable reminder preferences
Prerequisites:
- Billing cycle with all payments confirmed
Test Steps:
- Confirm all member payments for a billing cycle
- Verify billing cycle marked as "Paid"
- Check that next billing cycle is created
- Verify completion notifications sent
Expected Results:
- ✅ Billing cycle status changes to "Paid"
- ✅ Next billing cycle created automatically
- ✅ Completion notifications sent to all members
- ✅ Payment history updated correctly
Test Steps:
- Start form submission
- Disconnect internet during submission
- Reconnect and retry
- Test partial form completion with connection issues
Expected Results:
- ✅ Appropriate error messages displayed
- ✅ Form data preserved where possible
- ✅ Clear instructions for retry
- ✅ No data corruption
Test Steps:
- Upload very large files (>10MB)
- Upload files with special characters in names
- Upload unsupported file types
- Upload corrupted files
- Upload files with no extension
Expected Results:
- ✅ File size limits enforced
- ✅ File type validation works
- ✅ Clear error messages for invalid files
- ✅ Proper handling of edge cases
Test Steps:
- Create projects with different currencies:
- USD: $15.99
- EUR: €12.50
- GBP: £9.99
- JPY: ¥1500 (no decimals)
- Test cost splitting with odd amounts
- Verify currency formatting throughout app
Expected Results:
- ✅ All currencies display correctly
- ✅ Proper decimal handling for each currency
- ✅ Rounding handled appropriately
- ✅ Consistent currency display
Test Steps:
- Have multiple users perform actions simultaneously:
- Two users submitting payments
- Owner confirming payment while member submits another
- Multiple invitation acceptances
- Verify data integrity
Expected Results:
- ✅ No data corruption
- ✅ Proper conflict resolution
- ✅ Appropriate error handling
- ✅ Consistent state across users
Test Steps:
- Test on various mobile devices:
- iPhone (Safari)
- Android (Chrome)
- iPad (Safari)
- Test key user flows on mobile:
- Registration and login
- Project creation
- Payment submission
- File upload
Expected Results:
- ✅ All pages responsive and usable
- ✅ Touch interactions work properly
- ✅ Forms easy to complete on mobile
- ✅ File uploads work on mobile devices
- ✅ Navigation intuitive on small screens
Test Steps:
- Test on multiple browsers:
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Test critical user flows in each browser
Expected Results:
- ✅ Consistent functionality across browsers
- ✅ Proper styling and layout
- ✅ JavaScript features work correctly
- ✅ File uploads compatible
Test Steps:
- Test magic link security:
- Try using expired links
- Try using links multiple times
- Try accessing with invalid tokens
- Test session management:
- Session timeout
- Logout functionality
- Session persistence
Expected Results:
- ✅ Expired links rejected
- ✅ Used links cannot be reused
- ✅ Invalid tokens handled properly
- ✅ Sessions timeout appropriately
- ✅ Logout clears session completely
Test Steps:
- Test access controls:
- Try accessing other users' projects
- Try confirming payments for projects you don't own
- Try editing projects you're not owner of
- Test URL manipulation:
- Change project IDs in URLs
- Try accessing admin areas
Expected Results:
- ✅ Proper authorization checks enforced
- ✅ Unauthorized access blocked
- ✅ Appropriate error messages shown
- ✅ No sensitive data exposed
Test Steps:
- Try uploading malicious files:
- Executable files
- Scripts
- Files with malicious names
- Test file access controls:
- Try accessing other users' uploaded files
- Try direct file URL access
Expected Results:
- ✅ Malicious files rejected
- ✅ File access properly controlled
- ✅ No direct file access without authorization
- ✅ File names sanitized
Test Steps:
- Create projects with many members (10+)
- Generate multiple billing cycles
- Submit many payments
- Test page load times with large datasets
Expected Results:
- ✅ Pages load within 3 seconds
- ✅ Forms remain responsive
- ✅ Database queries efficient
- ✅ No timeout errors
Test Steps:
- Upload various file sizes:
- Small files (<100KB)
- Medium files (1-5MB)
- Large files (5-10MB)
- Test multiple concurrent uploads
- Test upload progress indicators
Expected Results:
- ✅ Upload progress shown
- ✅ Large files upload successfully
- ✅ Concurrent uploads handled properly
- ✅ Appropriate timeout limits
Authentication & Users:
- New user registration works
- Magic link login works
- User logout works
- Session management proper
- Password-less authentication secure
Project Management:
- Create project works
- Edit project works
- Delete project works
- Project permissions enforced
- Cost calculations correct
Member Management:
- Send invitations works
- Accept invitations works (new users)
- Accept invitations works (existing users)
- Remove members works
- Member permissions enforced
Payment Processing:
- Submit payments works
- File upload works
- Confirm payments works
- Reject payments works
- Payment history accurate
Billing Cycles:
- Automatic creation works
- Payment reminders sent
- Billing completion works
- Next cycle creation works
Security:
- Authorization checks enforced
- File access controlled
- Magic links secure
- Session security proper
Performance:
- Page load times acceptable
- File uploads efficient
- Database queries optimized
- Mobile performance good
Cross-Platform:
- Works on Chrome
- Works on Firefox
- Works on Safari
- Works on mobile devices
- Responsive design proper
Daily Checks:
- Magic link emails delivering
- Payment reminders sending
- File uploads working
- Database backups running
Weekly Checks:
- Performance metrics review
- Error logs review
- User feedback review
- Security monitoring review
- Problem: Magic links not received
- Check: Email delivery logs, spam folders, email configuration
- Solution: Verify email service configuration, check DNS records
- Problem: File uploads failing
- Check: File size limits, file type restrictions, storage space
- Solution: Adjust upload limits, clear storage space
- Problem: Slow page loads
- Check: Database query performance, file sizes, network connectivity
- Solution: Optimize queries, compress files, check hosting resources
- Problem: Layout broken on mobile
- Check: CSS media queries, viewport settings, touch interactions
- Solution: Update responsive styles, test on actual devices
This manual testing guide ensures comprehensive coverage of all SplitMySub functionality. Use this checklist before each release to verify that all features work correctly and provide a smooth user experience.