This document outlines the testing procedures for the GXQ Studio platform, including both existing and new features.
- Node.js 18+ installed
- Solana wallet with devnet SOL
- Web browser (Chrome/Firefox/Safari)
- RPC endpoint access
# Install dependencies
npm install
# Copy environment file
cp .env.example .env
# Edit .env with your configuration
# Required: SOLANA_RPC_URL, WALLET_PRIVATE_KEY
# Build
npm run build
# Test commands
npm start providers # List flash loan providers
npm start scan # Test arbitrage scanning
npm start airdrops # Check airdrops# Navigate to webapp
cd webapp
# Install dependencies
npm install
# Set environment variables
echo "NEXT_PUBLIC_RPC_URL=https://api.mainnet-beta.solana.com" > .env.local
# Run development server
npm run dev
# Open http://localhost:3000- Page loads successfully
- All feature cards display correctly
- Navigation links work
- Stats section displays
- Profitability section shows
- Input fields render
- Token selection works
- Quote fetching displays
- Swap button enabled with wallet
- Error handling for invalid inputs
- Flash loan providers display
- Settings controls work
- Scan button functions
- Opportunities list populates
- Execute button shows for each opportunity
- MEV protection status indicators
- Configuration panel loads
- DEX selection works
- Token monitoring starts
- Alerts display properly
- Auto-snipe toggle functions
- Token creation form renders
- 3D roulette animation works
- Airdrop configuration options
- Launch button functions
- Transaction feedback
- Wallet connection check
- Airdrop list displays
- Claim buttons work
- Status updates correctly
- Transaction confirmations
- Protocol cards display
- APY information shows
- Stake/unstake forms work
- Balance updates
- Transaction execution
- Address input field works
- Analysis button functions
- Risk assessment displays
- Activity summary shows
- Token holdings table
- Wallet type classification
- Page loads successfully
- Default providers display
- API rotation toggle works
- Rotation interval slider functions
- Add provider form validates input
- Provider type dropdown works
- Remove provider button functions
- Enable/disable toggle works
- Save locally button works
- Save on-chain button requires wallet
- Last saved timestamp displays
- Settings persist in localStorage
- Settings load on page refresh
Test Cases:
- Add new RPC provider
- Add Pyth feed provider
- Add DEX provider
- Toggle API rotation on/off
- Adjust rotation interval
- Save settings locally
- Connect wallet and save on-chain
- Verify transaction cost (0.000022 SOL)
- Reload page and check persistence
- Page loads successfully
- Bot status section displays
- Start/Stop bot button works (requires wallet)
- Uptime counter increments when running
- Profit tracking updates
- Trades executed counter
- Success rate displays
- Opportunity finder scanners listed
- DEX monitoring status shows
- Scan button triggers opportunity search
- Opportunities display with details
- Execute button works for opportunities
- Wallet scoring input field
- Score wallet button functions
- Scoring results display correctly
- Portfolio analysis button (requires wallet)
- Holdings table displays
- Total value calculation
- Timestamp shows
Test Cases:
- Connect wallet
- Start bot and verify status
- Check uptime counter
- Stop bot
- Scan for opportunities
- Execute an opportunity
- Score a wallet address
- Analyze portfolio
- Verify price data from Pyth
- Check transaction history integration
# Test in browser console on any page
import { getPythService } from '@/lib/pythPriceService';
const service = getPythService();
const price = await service.getPrice('SOL/USD');
console.log('SOL Price:', price);Test Cases:
- Service initializes correctly
- Fetches SOL/USD price
- Fetches multiple prices in batch
- Handles invalid symbols gracefully
- Returns proper data structure
# Test in browser console
import { loadSettings } from '@/lib/apiRotation';
const settings = loadSettings();
console.log('Loaded settings:', settings);Test Cases:
- Loads settings from localStorage
- Returns null when no settings exist
- Handles corrupted localStorage data
- Updates settings correctly
- Rotation interval works
- Wallet adapter loads correctly
- Multiple wallet types supported
- Connection/disconnection works
- No private key exposure in logs
- Proper transaction signing flow
- All transactions show before signing
- Transaction costs display correctly
- Slippage protection works
- Failed transactions handled gracefully
- Success confirmations display
- No API keys in frontend code
- RPC endpoints configurable
- Rate limiting considerations
- Error messages don't leak sensitive info
Test on multiple screen sizes:
- Desktop (1920x1080)
- Laptop (1366x768)
- Tablet (768x1024)
- Mobile (375x667)
Check:
- Navigation menu responsive
- All forms usable on mobile
- Tables scroll horizontally
- Buttons are touch-friendly
- Text is readable
- Consistent color scheme (purple, pink, blue gradients)
- Loading states display
- Error messages are clear
- Success feedback is visible
- Animations are smooth
- Tooltips are helpful
- Icons are meaningful
- Initial page load < 3s
- Navigation transitions smooth
- No memory leaks
- API calls are optimized
- Images are optimized
- Build size is reasonable
Document any issues found during testing:
-
Minor lint warnings (non-blocking):
- React Hook useEffect dependencies
- Unused imports in swap page
-
Backend build errors (pre-existing):
- Missing node_modules
- TypeScript lib configuration
-
Potential improvements:
- Add loading spinners for async operations
- Implement error boundaries
- Add retry logic for failed API calls
cd webapp
npm run buildExpected: No errors, all pages render
cd webapp
npm run lintExpected: 0 errors (warnings acceptable)
cd webapp
npx tsc --noEmitExpected: No type errors
// Run in browser console
const routes = [
'/',
'/swap',
'/arbitrage',
'/sniper',
'/launchpad',
'/airdrop',
'/staking',
'/wallet-analysis',
'/settings',
'/admin'
];
routes.forEach(route => {
console.log(`Testing ${route}...`);
window.location.href = route;
});// Run on any page
const wallet = window.solana;
if (wallet) {
await wallet.connect();
console.log('Connected:', wallet.publicKey.toString());
} else {
console.log('No wallet detected');
}// Check settings storage
const settings = localStorage.getItem('gxq-settings');
console.log('Settings:', JSON.parse(settings));- Ensure
webappis set as root directory - Add environment variables in Vercel
- Deploy and test all routes
- Check build logs for errors
- Test on production URL
Required for production:
NEXT_PUBLIC_RPC_URL: Solana RPC endpoint
Optional:
- Custom Pyth endpoints
- Custom DEX APIs
When reporting bugs, include:
- Browser and version
- Wallet type (if applicable)
- Steps to reproduce
- Expected vs actual behavior
- Console errors (if any)
- Screenshots
All features pass testing when:
- ✅ No build errors
- ✅ All pages load successfully
- ✅ Wallet connection works
- ✅ Transactions execute properly
- ✅ Settings persist correctly
- ✅ Admin panel functions as expected
- ✅ No console errors during normal use
- ✅ Responsive design works on all devices
- ✅ Performance is acceptable
Last Updated: 2025-12-16
Tested By: Development Team
Next Review: Before production deployment