- Browser: Chrome/Firefox (Latest)
- MetaMask: Installed and configured
- Local Server: Running on
http://localhost:3000 - Clear localStorage before starting:
localStorage.clear()
Steps:
- Open homepage
- Check navigation bar
Expected: Navigation shows "TruthChain" logo, Home, Verify, Explore, Creator, Admin links
Steps:
- Click "Connect Wallet" button
- Approve MetaMask connection
Expected: Button changes to show wallet address (truncated)
Steps:
- Click each navigation link (Home, Verify, Explore, Creator, Admin)
Expected: Each page loads with correct cosmos background and content
Steps:
- Navigate to Verify, Creator, Explore pages
- Scroll down
Expected: Cosmos background is fixed (parallax effect)
Steps:
- Resize browser to mobile width (375px)
- Check all pages
Expected: Content adapts to mobile view, navigation collapses
Steps:
- Connect wallet
- Go to Creator Portal
- Enter: Name="John Doe", Organization="News Corp", Password="test123"
- Click Register
Expected: Success message, status shows "Awaiting verification"
Steps:
- Register with username "John Doe"
- Disconnect wallet, connect different wallet
- Try to register again with "John Doe"
Expected: Error: "This username is already taken"
Steps:
- Register with a wallet
- Logout
- Try to register again with same wallet
Expected: Error: "Wallet already registered to [username]"
Steps:
- Leave Name field empty
- Click Register
Expected: Error: "Please fill in all fields"
Steps:
- Register as "John Doe" with password "test123"
- Logout
- Click "Already registered? Login"
- Enter username and password
- Click Login
Expected: Success, dashboard loads showing profile
Steps:
- Enter correct username, wrong password
- Click Login
Expected: Error: "Invalid password"
Steps:
- Enter username that doesn't exist
- Click Login
Expected: Error: "No account found"
Steps:
- Click "Forgot Password?"
- Enter username "John Doe"
- Enter new password "newpass123"
- Click Reset
Expected: Success message, can login with new password
Steps:
- Login as creator
- Click Logout button
Expected: Returns to login screen, session cleared
Steps:
- Login as creator
- Refresh page
Expected: Still shows login screen (requires re-login for security)
Steps:
- Navigate to
/admin - Check page loads
Expected: Admin dashboard visible with pending creators list
Steps:
- Register 3 creators
- Go to Admin page
Expected: All 3 creators show in "Pending" tab with status "pending"
Steps:
- Register creator "John Doe"
- Go to Admin page
- Click "Approve" on John Doe
- Check Inbox notification
Expected:
- Status changes to "approved"
- Security key generated (12-char alphanumeric)
- Creator receives inbox message with security key
Steps:
- Register creator "Jane Smith"
- Go to Admin, click "Reject"
Expected: Status changes to "rejected", no security key
Steps:
- Approve a creator
- Check the security key format
Expected: Key is 12 characters, alphanumeric (e.g., "a1b2c3d4e5f6")
Steps:
- Creator publishes content
- Admin views content in "All Content" tab
Expected: Content shows with creator name, title, hash, timestamp
Steps:
- Admin clicks "Block" on a content item
- Check Explore page
Expected: Content marked as blocked, hidden from Explore
Steps:
- Block a content item
- Click "Unblock"
Expected: Content visible again in Explore
Steps:
- Register but don't get admin approval
- Try to upload content
Expected: Error: "You must be a verified creator to upload content"
Steps:
- Get approved by admin
- Check inbox for security key
- Go to Upload tab
- Enter security key
- Click Unlock
Expected: Upload form becomes accessible
Steps:
- Unlock upload
- Fill: Title="Breaking News", Description="Important update", Content="Full article text", Type="news", Origin Proof="https://source.com/article"
- Click Upload
Expected:
- Verification animation shows 4 steps
- Success message appears
- Switches to "My Content" tab
- Content appears in list
Steps:
- Leave Title empty
- Click Upload
Expected: Error: "Please fill in all required fields"
Steps:
- Fill all fields except Origin Proof
- Click Upload
Expected: Error: "Origin Proof is required to verify authenticity"
Steps:
- Upload content with text "Hello World"
- Check generated hash
Expected: Hash starts with "0x" and is consistent for same content
Steps:
- Upload 3 different articles
- Go to "My Content" tab
Expected: All 3 articles listed with title, hash, timestamp, version
Steps:
- Upload content
- Click "Edit" button
- Modify title to "Updated Title"
- Click Upload
Expected:
- Version increments to v2
- New hash generated
- Old version saved in history
- Success: "Content Updated Successfully!"
Steps:
- Upload content
- Click "Delete"
- Confirm deletion
Expected: Content removed from "My Content" and Explore
Steps:
- Upload content (v1)
- Edit content (v2)
- Edit again (v3)
- Check history
Expected: History shows v1, v2 with timestamps and hashes
Steps:
- Upload 5 different content items from different creators
- Go to Explore page
Expected: All 5 items visible + 5 mock items = 10 total
Steps:
- In search box, type "Climate"
- Press Enter
Expected: Only "Breaking: Major Climate Agreement Reached" shows
Steps:
- Search for "Global News Network"
Expected: Shows all content by that creator
Steps:
- Search for "0x1234abc567def890"
Expected: Shows content from that wallet
Steps:
- Select "news" from filter dropdown
Expected: Only news articles displayed
Steps:
- Search "Tech"
- Filter by "report"
Expected: Only "Tech Innovation Report 2025" shows
Steps:
- Click on any content card
Expected: Modal opens showing full content, description, hash, creator info, timestamp
Steps:
- Open content details
- Click X button or outside modal
Expected: Modal closes, returns to Explore grid
Steps:
- Select "Hash" method
- Enter:
0xabcd1234efgh5678 - Click Verify
Expected:
- Blue shield icon
- Status: "Authentic Content"
- Shows: Title, Creator, Timestamp, Version
Steps:
- Enter random hash:
0x9999999999999999 - Click Verify
Expected:
- Red X icon
- Status: "Unverified / No Record"
Steps:
- Select "Text" method
- Upload content with text "Hello World"
- Copy the generated hash
- Go to Verify, select "Text"
- Paste "Hello World"
- Click Verify
Expected: Status: "Authentic Content" (hash matches)
Steps:
- Select "Text" method
- Paste text: "This is fake news"
- In "Verify against specific Hash" field, enter:
0xabcd1234efgh5678 - Click Verify
Expected:
- Yellow alert icon
- Status: "Content Edited / Tampered"
- Shows both computed hash and registered hash
Steps:
- Select "File" method
- Click upload area
- Select an image file
- Click Verify
Expected:
- File name displays
- Hash computed from file binary
- Shows verification result
Steps:
- Upload a file
- In reference hash field, enter a different hash
- Click Verify
Expected: Status: "Content Edited / Tampered"
Steps:
- Select "Creator" method
- Enter:
0x1234abc567def890 - Click Verify
Expected: Redirects to /profile/0x1234abc567def890
Steps:
- Select "Creator"
- Enter: "invalid-address"
- Click Verify
Expected: Error: "Please enter a valid Creator ID (starting with 0x)"
Steps:
- Verify tampered content
- Check result display
Expected:
- "Computed Hash" shows in white
- "Registered Hash" shows in yellow/blue
- Both hashes visible side-by-side
Steps:
- Verify hash:
0xyyyy7890zzzz1234
Expected:
- Shows v2 (Current) in blue pill
- Shows v1 in gray pill
Steps:
- Select "Hash"
- Leave field empty
- Click Verify
Expected: Error: "Please enter a Content Hash"
Steps:
- Select "Text"
- Leave textarea empty
- Click Verify
Expected: Error: "Please enter text to verify"
Steps:
- Upload content
- Refresh page
- Check "My Content"
Expected: Content still visible
Steps:
- Register as creator
- Close browser
- Reopen, connect same wallet
Expected: Shows login screen (requires re-login)
Steps:
- Admin approves creator
- Refresh admin page
Expected: Creator still shows as "approved"
Steps:
- Receive security key in inbox
- Refresh page
Expected: Message still in inbox
Steps:
- Unlock upload with security key
- Refresh page
Expected: Upload still unlocked (no need to re-enter key)
Steps:
- Register with Wallet A
- Switch to Wallet B in MetaMask
- Try to access creator dashboard
Expected: Shows registration screen for Wallet B
Steps:
- Upload content with 10,000 characters
Expected: Uploads successfully, hash generated correctly
Steps:
- Upload content with emojis, symbols: "Test π @#$%"
Expected: Handles correctly, hash generated
Steps:
- Edit content, don't save
- Open in another tab, edit and save
- Save first tab
Expected: Latest edit wins, version increments correctly
Steps:
- Disconnect MetaMask
- Try to upload content
Expected: Shows "Connect Wallet" message
Steps:
- Upload 5 articles
- Check profile stats
Expected: "Total Uploads" shows 5
Steps:
- Upload 10 articles
- Check reputation
Expected: Score increases (formula: min(5.0, uploads * 0.1 + 3.0))
Steps:
- Upload content on different days
- Go to Analytics tab
Expected: Line chart shows upload trends over time
Steps:
- Register β Admin approves β Receive key β Unlock upload β Upload content β View in Explore β Verify hash
Expected: All steps work seamlessly
Steps:
- Upload β Edit β Verify old hash (should show v1) β Verify new hash (should show v2)
Expected: Version history tracked correctly
Steps:
- Register 3 creators
- Each uploads 2 articles
- Check Explore page
Expected: 6 articles from 3 different creators visible
Steps:
- Creator uploads content β Admin blocks it β Check Explore (hidden) β Admin unblocks β Check Explore (visible)
Expected: Content visibility controlled by admin
Steps:
- Upload content in Creator Portal
- Check same content in Explore
- Verify hash in Verify page
- Check in Admin panel
Expected: Same data (title, hash, creator) across all pages
Total Test Cases: 71
- β Navigation & UI: 5 tests
- β Authentication: 10 tests
- β Admin Workflow: 8 tests
- β Content Upload: 10 tests
- β Content Discovery: 8 tests
- β Verification: 12 tests
- β Data Persistence: 5 tests
- β Edge Cases: 5 tests
- β Analytics: 3 tests
- β Integration: 5 tests
- Critical Path (P0): TC-067, TC-071 (End-to-end flows)
- High Priority (P1): TC-006-015, TC-024-033 (Core features)
- Medium Priority (P2): TC-034-053 (Feature validation)
- Low Priority (P3): TC-059-066 (Edge cases)
- All core functionality should work
- Data should persist across page refreshes
- All pages should be interlinked correctly
- Verification should match uploaded content
- Admin controls should affect content visibility