# MODPACK VERSION CHECKER - TESTING GUIDE **Complete quality assurance procedures before launch** --- ## โš ๏ธ CRITICAL SAFETY RULE **DO NOT TEST ON LIVE FIREFROST NODES (TX1 Dallas or NC1 Charlotte)** **Why:** - One bad database query = panel lockup - Risk to 11 production servers - Potential data corruption **Solution:** - Use $5/month test VPS with fresh Pterodactyl install - Test on isolated environment - Only deploy to Firefrost after complete validation --- ## ๐Ÿงช TESTING ENVIRONMENT SETUP ### Test VPS Requirements **Minimum specs:** - 2GB RAM - 20GB SSD - Ubuntu 22.04 LTS - Fresh Pterodactyl Panel v1.11.x or v1.12.x - Blueprint Framework (latest) - PHP 8.1, 8.2, or 8.3 **Recommended providers:** - Vultr ($5/month) - Hetzner Cloud (โ‚ฌ4/month) - DigitalOcean ($6/month) ### Installation Steps 1. Deploy Ubuntu 22.04 VPS 2. Install Pterodactyl Panel (clean) 3. Install Blueprint Framework 4. Create 3-5 test servers with different modpacks 5. Upload sample modpack files (manifest.json, instance.json, modrinth.index.json) --- ## โœ… ESSENTIAL TEST CASES (Critical Priority) **All must pass before BuiltByBit launch** ### Test 1: Clean Installation **Objective:** Verify extension installs without errors **Steps:** 1. Upload `.blueprint` file to test panel 2. Run `blueprint -install modpackmonitor.blueprint` 3. Check for any error messages 4. Verify database variables created **Expected Result:** - โœ… Installation completes successfully - โœ… Success message displayed - โœ… No errors in logs - โœ… Database contains `MODPACK_PLATFORM` and `MODPACK_ID` variables **Pass Criteria:** - Zero errors during installation - Variables exist in `egg_variables` table - UI loads without breaking **If Fails:** - Check install.sh script syntax - Verify database credentials parsed correctly - Check MySQL permissions --- ### Test 2: CurseForge Detection **Objective:** Verify CurseForge modpack detection works **Steps:** 1. Create test server with CurseForge modpack 2. Upload `manifest.json` to server root 3. Load server page in panel 4. Check status badge **Expected Result:** - โœ… Platform detected as "curseforge" - โœ… Project ID extracted from manifest - โœ… Badge displays on server page - โœ… Egg Variables populated correctly **Sample manifest.json:** ```json { "minecraft": { "version": "1.20.1" }, "manifestType": "minecraftModpack", "manifestVersion": 1, "name": "Test Pack", "version": "1.0.0", "projectID": 123456 } ``` **Pass Criteria:** - Auto-detection works - Correct project ID stored - No manual configuration needed --- ### Test 3: Modrinth Detection **Objective:** Verify Modrinth modpack detection works **Steps:** 1. Create test server with Modrinth modpack 2. Upload `modrinth.index.json` to server root 3. Load server page 4. Check status badge **Expected Result:** - โœ… Platform detected as "modrinth" - โœ… Version ID extracted - โœ… Badge displays correctly - โœ… Works without API key **Sample modrinth.index.json:** ```json { "formatVersion": 1, "game": "minecraft", "versionId": "abc123xyz", "name": "Test Modrinth Pack" } ``` **Pass Criteria:** - Auto-detection works - No API key required - Instant functionality --- ### Test 4: FTB Detection **Objective:** Verify FTB modpack detection works **Steps:** 1. Create test server with FTB modpack 2. Upload `instance.json` to server root 3. Load server page 4. Check status badge **Expected Result:** - โœ… Platform detected as "ftb" - โœ… Modpack ID extracted - โœ… Professional tier feature works - โœ… No API key required **Sample instance.json:** ```json { "modpackId": 789, "versionId": 1234, "name": "FTB Test Pack" } ``` **Pass Criteria:** - Auto-detection works - Correct modpack ID stored - Works immediately --- ### Test 5: API Timeout Handling **Objective:** Verify graceful degradation when API is unreachable **Steps:** 1. Block internet access temporarily on test server 2. OR use invalid API endpoint in code 3. Load server page 4. Check error handling **Expected Result:** - โœ… Panel doesn't crash - โœ… Badge shows "API Offline" or similar - โœ… Yellow/gray color (not green/red) - โœ… User can still access panel **Pass Criteria:** - No white screen of death - Clear error message to user - Panel remains functional **If Fails:** - Add try/catch around all API calls - Implement timeout handling - Add default fallback values --- ### Test 6: Clean Uninstallation **Objective:** Verify extension removes cleanly without breaking panel **Steps:** 1. Run `blueprint -remove modpackmonitor` 2. Check database for leftover variables 3. Check UI for broken elements 4. Verify panel still functions **Expected Result:** - โœ… Database variables removed - โœ… UI restored to original state - โœ… No orphaned data in database - โœ… Panel functions normally **Pass Criteria:** - Complete cleanup - No broken UI elements - No database errors **If Fails:** - Check remove.sh script - Verify CASCADE foreign keys working - Manually clean database if needed --- ## ๐Ÿ”„ SECONDARY TEST CASES (High Priority) ### Test 7: Force Re-scan Button **Steps:** 1. Load server with detected modpack 2. Click "Force Re-scan" button 3. Verify re-detection occurs **Expected:** - Egg Variable resets to "auto" - Fresh detection runs - Cache updates with new result --- ### Test 8: Manual Override **Steps:** 1. Go to server Startup tab 2. Manually set MODPACK_PLATFORM to "curseforge" 3. Manually set MODPACK_ID to "123456" 4. Load server page **Expected:** - Manual values used (not auto-detected) - Badge shows manually configured platform - Wrench icon (๐Ÿ”ง) indicates manual config --- ### Test 9: API Key Configuration (CurseForge) **Steps:** 1. Access admin panel 2. Navigate to extension settings 3. Add CurseForge API key 4. Test CurseForge modpack server **Expected:** - API key saves correctly - CurseForge detection works - Multiple users can use same key --- ### Test 10: Multiple Servers Performance **Steps:** 1. Create 10 test servers with different modpacks 2. Load server list page 3. Check for performance issues 4. Monitor database query count **Expected:** - Page loads in <2 seconds - Database caching prevents redundant queries - No performance degradation --- ## ๐Ÿ› EDGE CASE TESTING ### Edge Case 1: No Manifest Files **Scenario:** Server has no modpack manifest files **Expected:** - Platform detected as "unknown" - Yellow badge: "Platform Unknown" - Manual override option available - No crashes --- ### Edge Case 2: Corrupted JSON **Scenario:** manifest.json is malformed/corrupted **Expected:** - JSON parse error caught - Yellow badge: "JSON Parse Error" - Helpful error message - Panel remains functional --- ### Edge Case 3: Multiple Platform Files **Scenario:** Server has both manifest.json AND modrinth.index.json **Expected:** - Detection priority followed (FTB > Modrinth > CurseForge) - Most recently modified file wins - Clear indication which was detected --- ### Edge Case 4: Custom Modpack (No Public ID) **Scenario:** Private/custom modpack with no public project ID **Expected:** - Auto-detection fails gracefully - Manual override works - User can link to public ID if desired - Or leave as "unknown" without issues --- ## ๐Ÿ“Š PERFORMANCE TESTING ### Load Test: 50 Servers **Objective:** Ensure extension scales to hosting company size **Steps:** 1. Create 50 test servers 2. Mix of CurseForge, Modrinth, FTB 3. Load server list page 4. Monitor response time and resource usage **Acceptable Performance:** - Page load: <3 seconds - Memory usage: No significant increase - Database queries: Cached (not 50 queries per page) --- ### Stress Test: API Rate Limiting **Objective:** Verify rate limit protection works **Steps:** 1. Configure cron job to check 100 servers simultaneously 2. Monitor API request rate 3. Check for rate limit errors **Expected:** - Randomized delays between requests (sleep function) - No rate limit blocks - Graceful handling if limits hit --- ## โœ… BETA TESTING PROGRAM ### Beta Tester Recruitment **Target:** 3-5 experienced Pterodactyl users **Source:** Pterodactyl Discord community **Duration:** 1 week **Incentive:** Free Professional tier license ### Beta Test Objectives **Primary goals:** 1. Identify bugs in real-world environments 2. Test edge cases (weird modpack configs) 3. Validate user experience 4. Gather feature requests for v2.0 ### Beta Tester Feedback Form **Questions:** 1. How easy was installation? (1-5 scale) 2. Did auto-detection work for your modpacks? (Yes/No) 3. Did you encounter any errors? (Describe) 4. How useful is this extension? (1-5 scale) 5. What features would you want added? (Open) 6. Would you recommend to others? (Yes/No) ### Beta Test Success Criteria **Required for launch:** - โœ… 3+ beta testers complete testing - โœ… No critical bugs reported - โœ… 4+ average "usefulness" rating - โœ… 80%+ "would recommend" rate --- ## ๐Ÿ“ PRE-LAUNCH FINAL CHECKLIST **Complete before clicking "Publish" on BuiltByBit:** ### Functionality Tests - [ ] Clean install on fresh Pterodactyl VPS - [ ] CurseForge detection works - [ ] Modrinth detection works - [ ] FTB detection works - [ ] API timeout handling (no crashes) - [ ] Clean uninstall (restores UI) - [ ] Force re-scan button functional - [ ] Manual override works - [ ] API key admin panel functional - [ ] Multiple servers perform well ### Code Quality - [ ] All PHP code follows PSR-12 standards - [ ] All React components use TypeScript - [ ] No console errors in browser - [ ] No PHP errors in logs - [ ] Database queries optimized ### Documentation - [ ] README.md complete - [ ] Installation guide written - [ ] Troubleshooting guide written - [ ] User documentation published - [ ] API documentation complete ### Beta Testing - [ ] 3-5 beta testers recruited - [ ] 1 week testing period complete - [ ] Feedback collected and addressed - [ ] Critical bugs fixed - [ ] Feature requests documented for v2.0 --- ## ๐Ÿšจ CRITICAL BUGS VS. MINOR BUGS ### CRITICAL (Block launch) - Panel crashes or becomes unusable - Database corruption - Data loss - Security vulnerabilities - Installation fails on supported versions ### MINOR (Launch with known issues) - Visual glitches (cosmetic) - Edge case detection failures - Slow performance on 100+ servers - Missing features (can be v2.0) **Document known minor issues in changelog** --- ## ๐Ÿ“Š POST-LAUNCH MONITORING ### Week 1 Monitoring **Monitor daily:** - BuiltByBit reviews/ratings - Discord support tickets - Error reports - Installation success rate **Respond to:** - All support tickets within 24 hours - All negative reviews with solutions - All bug reports immediately ### Month 1 Monitoring **Track:** - Total sales - Average rating - Support ticket volume - Common issues/questions **Actions:** - Create FAQ from common questions - Fix high-frequency bugs - Plan v1.1.0 update if needed --- ## ๐Ÿ”ง TROUBLESHOOTING COMMON ISSUES ### Issue: "Blueprint not found" **Cause:** User doesn't have Blueprint installed **Solution:** Add to FAQ, require Blueprint in listing **Prevention:** Big red warning on BuiltByBit page --- ### Issue: "Database variables not created" **Cause:** MySQL permissions issue **Solution:** Check user has CREATE/INSERT permissions **Prevention:** Add permission check to install.sh --- ### Issue: "API timeout" for all servers **Cause:** Firewall blocking outbound connections **Solution:** Document firewall requirements **Prevention:** Add connectivity check during install --- ### Issue: "Detection not working" **Cause:** Modpack files in non-standard location **Solution:** Manual override documentation **Prevention:** Support multiple file locations in v2.0 --- ## โœ… TESTING COMPLETION CRITERIA **This testing phase is COMPLETE when:** โœ… All 10 essential test cases pass โœ… All 4 edge cases handled gracefully โœ… Performance tests pass (50 servers <3 sec) โœ… Beta testing complete (3+ testers, positive feedback) โœ… No critical bugs remain โœ… Documentation complete โœ… Pre-launch checklist 100% complete --- **Fire + Frost + Foundation = Where Testing Ensures Quality** ๐Ÿ’™๐Ÿ”ฅโ„๏ธ **Testing guide created:** February 22, 2026 **Created by:** The Chronicler #21 **Purpose:** Ensure bug-free commercial launch