BLOXoffice Testing Guide

Comprehensive testing procedures for all platform features

Priority 1-3: Coming Soon Page & Authentication

Test 1: Unauthenticated Access

  1. Open incognito browser → Navigate to BLOXoffice.net
  2. Expected: Coming Soon page loads (NOT Sign In page)
  3. Verify email signup form works
  4. Check Database → WaitlistEntry for new record

Test 2: Maintenance Mode Toggle

  1. As Admin: Set user's is_app_in_maintenance_mode = false
  2. User visits site → Should see Browse page
  3. Set back to true → User sees Coming Soon
  4. Admin always bypasses (sees Browse)

Test 3: Bypass Token

  1. Visit: BLOXoffice.net?access=algorand2025
  2. Expected: Browse page loads without authentication
  3. Remove token → Redirects to Coming Soon
Priority 4-6: Movie Upload & NFT Minting

Test 4: Movie Submission

  1. As Filmmaker: Go to Upload page
  2. Fill all required fields (Title, Description, Genre, Duration)
  3. Upload artwork (at least 1 image)
  4. Provide YouTube/Vimeo URL for full movie
  5. Submit → Check MovieSubmission entity created
  6. Admin should receive email notification

Test 5: Admin Review & Approval

  1. Admin: Navigate to AdminReviewSubmissions
  2. Find pending submission
  3. Review all tabs (artwork, video, documents)
  4. Approve → Set ready_for_minting = true
  5. Verify movie appears in RequestMinting page

Test 6: NFT Minting

  1. Admin: Go to MintingPortal
  2. Select approved movie
  3. Configure ticket classes (ForeverVision, One-Time, Platform Rental)
  4. Set quantities and prices
  5. Mint → Verify TicketAsset records created
  6. Check Algorand Testnet Explorer for asset IDs
Priority 7-9: Marketplace & Payment Flows

Test 7: Movie Purchase

  1. Browse → Find movie → Click "Get Ticket"
  2. Choose ticket type (ForeverVision/One-Time)
  3. Select payment method (Stripe/BLOX/ALGO/USDC)
  4. Complete payment
  5. Verify: Transaction record created
  6. Verify: MovieNFT record created with owner_email
  7. Check My Collection → NFT appears

Test 8: NFT Listing (Sale/Rent)

  1. My Collection → Find ForeverVision NFT you own
  2. Toggle "List for Rent" ON
  3. Set rental price (e.g., $2.99)
  4. Save → NFT appears in RentalMarketplace
  5. Toggle "List for Sale" ON
  6. Set sale price → NFT appears in Marketplace "For Sale" tab

Test 9: Rental Flow

  1. As different user: Go to RentalMarketplace
  2. Find rental listing → Click "Rent Now"
  3. Complete payment
  4. Verify: RentalTransaction created
  5. Verify: TemporaryAccess created (expires in 24hrs)
  6. Watch movie
  7. After 24hrs: NFT auto-returns to owner

Test 10: Transaction History

  1. Navigate to TransactionHistory page
  2. Verify all your transactions appear
  3. Test filters (type, date range)
  4. Test search functionality
  5. Export CSV → Verify file downloads
Priority 10: Analytics & Insights Dashboards

Test 11: Filmmaker Analytics

  1. As Filmmaker: Dashboard → Select your movie
  2. Click "Analytics" → FilmmakerAnalytics page loads
  3. Verify Overview tab shows: Views, Watch Time, Revenue, Completion Rate
  4. Check Web3 Metrics tab: NFT supply, burn rate, floor price, holders
  5. Check Audience tab: Demographics, device breakdown, locations
  6. Check Revenue tab: Revenue sources, purchase/rental breakdown
  7. Test "Recalculate" button → Analytics update
  8. Test "Export CSV" → File downloads
  9. Verify AI Insights appear (growth trends, opportunities)

Test 12: Viewer Dashboard

  1. As any user: Navigate to ViewerDashboard (My Dashboard)
  2. Verify stats cards: Movies Watched, Watch Time, Portfolio Value, BLOX Balance
  3. Check Achievements section → Verify locked/unlocked states
  4. Check Progress bars show correct percentages
  5. Check Quests section → Verify active quests with rewards
  6. Check NFT Portfolio grid → Shows your owned NFTs
  7. Check Recommendations → AI-suggested movies appear

Test 13: Platform Stats (Public)

  1. Log out (or use incognito)
  2. Navigate to PlatformStats page
  3. Verify page loads WITHOUT authentication
  4. Check key metrics: Total Movies, NFTs Minted, Total Revenue, Active Collectors
  5. Check User Growth chart (last 12 months)
  6. Check Revenue Growth chart
  7. Check Top 10 Movies by Revenue list
  8. Verify blockchain verification link works

Test 14: Live Activity Feed

  1. Open FilmmakerAnalytics or PlatformStats
  2. Locate Live Activity Feed component
  3. Verify "Live" badge pulses
  4. Check recent activity appears (views, purchases, rentals, burns)
  5. Wait 30 seconds → Verify auto-refresh
  6. Perform an action (watch movie, purchase) → Should appear in feed within 30s
Blockchain Verification Tests

Test 15: On-Chain Verification

  1. My Collection → Click any NFT → Click "View on Blockchain"
  2. Verify: Opens Algorand Testnet Explorer
  3. Verify: Asset ID matches TicketAsset record
  4. Check asset details: Total supply, creator address
  5. Check transaction history for this asset

Test 16: Wallet Connection

  1. Profile → Wallet Connection section
  2. If no wallet: Follow WalletOnboarding guide
  3. Download Pera Wallet → Create account
  4. Copy your Algorand address (58 characters)
  5. Paste in Profile → Save
  6. Verify: algorand_address saved to User record
  7. Try to claim NFTs (if any pending)
Admin-Only Tests

Test 17: NFT Distribution

  1. Admin: Go to AdminDistributeNFTs
  2. Select a minted movie
  3. Add stakeholders (filmmaker, investors, cast/crew)
  4. Specify email, percentage, quantity for each
  5. Submit → Verify PendingNFTClaim records created
  6. As stakeholder: Go to Profile → See "Pending NFT Claims"
  7. Click "Claim NFTs" → Verify transfer completes

Test 18: Admin Clawback/Freeze

  1. Admin: Go to AdminDashboard → Admin Tools
  2. Test Freeze Asset → Select NFT → Freeze
  3. Verify: User cannot transfer/sell frozen NFT
  4. Test Unfreeze → NFT becomes transferable again
  5. Test Clawback (fraud scenario) → NFT returned to platform
  6. Check ClawbackLog entity for audit trail

Test 19: Stripe Webhook

  1. Complete a Stripe payment
  2. Check Stripe Dashboard → Webhooks section
  3. Verify webhook fired successfully
  4. Check Transaction entity → Record created with stripe_payment_intent_id
  5. Check MovieNFT entity → NFT transferred to buyer
  6. If webhook failed: Check error logs
Performance & Edge Case Testing

Test 20: Expired Rental Auto-Return

  1. Rent an NFT for 24 hours
  2. Wait 24 hours (or manually trigger checkAndReturnExpiredRentals)
  3. Verify: NFT returned to owner automatically
  4. Verify: is_currently_rented set to false
  5. Owner can now rent it out again

Test 21: Collectible System

  1. Purchase a One-Time ticket
  2. Watch the movie
  3. After viewing: Click "Burn Ticket & Claim Collectible"
  4. Verify: Collectible assigned based on rarity strategy
  5. Check CollectibleAssignment entity
  6. Verify: is_burnt = true, collectible_image_url populated
  7. Go to CollectiblesGallery → See your collectible

Test 22: Dynamic Pricing

  1. Admin: Enable dynamic pricing for a movie
  2. Simulate high demand (many views, purchases)
  3. Run calculateDynamicPrice function
  4. Verify: Price increases based on demand
  5. Check MarketDemand entity for demand_score

Test 23: Error Handling

  1. Try to purchase without wallet connected → Expect error message
  2. Try to rent your own NFT → Should be blocked
  3. Try to claim NFTs twice → Should prevent duplicate claims
  4. Submit invalid Algorand address → Validation error
  5. Upload oversized file → Graceful error
Complete Testing Checklist
Coming Soon page redirects work correctly
Movie upload flow completes successfully
NFT minting creates valid Algorand assets
Stripe payments process correctly
Marketplace listings appear properly
Rental flow works end-to-end
Transaction history logs all activity
Filmmaker analytics shows accurate data
Viewer dashboard displays correctly
Platform stats page is publicly accessible
Live activity feed updates in real-time
Blockchain verification links work
Wallet connection saves correctly
NFT claims process successfully
Expired rentals auto-return

Testing Best Practices:

  • Always test in incognito/private mode for clean state
  • Use Algorand Testnet (never mainnet for testing)
  • Keep test wallet addresses documented
  • Use Stripe test mode (test credit cards only)
  • Clear browser cache between major tests
  • Document any bugs found with screenshots
  • Verify blockchain transactions on explorer