279 lines
6.7 KiB
Markdown
279 lines
6.7 KiB
Markdown
|
|
# BridgeButtons Testing Guide
|
||
|
|
|
||
|
|
**Date**: 2025-01-12
|
||
|
|
**Status**: Ready for Testing
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Pre-Testing Checklist
|
||
|
|
|
||
|
|
### 1. Environment Setup
|
||
|
|
- [x] Dependencies installed (`npm install`)
|
||
|
|
- [x] Environment variables configured
|
||
|
|
- [x] TypeScript compilation verified (bridge files)
|
||
|
|
- [x] Bridge contract verified on-chain
|
||
|
|
- [x] Destination chain configured
|
||
|
|
|
||
|
|
### 2. Verification Results
|
||
|
|
- ✅ RPC connectivity: **PASSED**
|
||
|
|
- ✅ Destination configuration: **PASSED** (enabled)
|
||
|
|
- ✅ Bridge contract: **PASSED** (exists)
|
||
|
|
- ⚠️ LINK token: **KNOWN ISSUE** (not at expected address, but actual LINK is at `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03`)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Testing Steps
|
||
|
|
|
||
|
|
### Step 1: Start Development Server
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd smom-dbis-138/frontend-dapp
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
**Expected**: Server starts on `http://localhost:3002`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Step 2: Access Bridge Page
|
||
|
|
|
||
|
|
1. Open browser to `http://localhost:3002`
|
||
|
|
2. Navigate to Bridge page (default route)
|
||
|
|
3. Click **"Custom Bridge"** tab
|
||
|
|
|
||
|
|
**Expected**: BridgeButtons component displays with:
|
||
|
|
- Amount input field
|
||
|
|
- Recipient address input
|
||
|
|
- Balance display (ETH, WETH9, LINK)
|
||
|
|
- Three buttons: Wrap, Approve, Bridge
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Step 3: Connect Wallet
|
||
|
|
|
||
|
|
1. Click wallet connect button (if available)
|
||
|
|
2. Select wallet (MetaMask, WalletConnect, etc.)
|
||
|
|
3. Approve connection
|
||
|
|
4. Switch to Chain 138 if needed
|
||
|
|
|
||
|
|
**Expected**:
|
||
|
|
- Wallet address displays
|
||
|
|
- Recipient field auto-fills with wallet address
|
||
|
|
- Balances load (ETH, WETH9, LINK)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Step 4: Test Wrap Button
|
||
|
|
|
||
|
|
**Prerequisites**:
|
||
|
|
- Have ETH balance on Chain 138
|
||
|
|
- Amount entered in input field
|
||
|
|
|
||
|
|
**Steps**:
|
||
|
|
1. Enter amount (e.g., 0.1 ETH)
|
||
|
|
2. Click **"Wrap (Deposit)"** button
|
||
|
|
3. Approve transaction in wallet
|
||
|
|
4. Wait for confirmation
|
||
|
|
|
||
|
|
**Expected**:
|
||
|
|
- Transaction sent successfully
|
||
|
|
- ETH balance decreases
|
||
|
|
- WETH9 balance increases
|
||
|
|
- Success message displayed
|
||
|
|
|
||
|
|
**Verify**:
|
||
|
|
```bash
|
||
|
|
# Check WETH9 balance
|
||
|
|
cast call 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 \
|
||
|
|
"balanceOf(address)" \
|
||
|
|
<YOUR_ADDRESS> \
|
||
|
|
--rpc-url http://192.168.11.250:8545
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Step 5: Test Approve Button
|
||
|
|
|
||
|
|
**Prerequisites**:
|
||
|
|
- Have WETH9 balance
|
||
|
|
- Amount entered in input field
|
||
|
|
|
||
|
|
**Steps**:
|
||
|
|
1. Enter amount (e.g., 0.1 ETH)
|
||
|
|
2. Click **"Approve"** button
|
||
|
|
3. Approve transaction in wallet (may need 2 approvals: WETH9 + LINK)
|
||
|
|
4. Wait for confirmation
|
||
|
|
|
||
|
|
**Expected**:
|
||
|
|
- WETH9 allowance set to max
|
||
|
|
- LINK allowance set to max (if fee > 0)
|
||
|
|
- Success message displayed
|
||
|
|
- Approve button becomes disabled
|
||
|
|
|
||
|
|
**Verify**:
|
||
|
|
```bash
|
||
|
|
# Check WETH9 allowance
|
||
|
|
cast call 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 \
|
||
|
|
"allowance(address,address)" \
|
||
|
|
<YOUR_ADDRESS> \
|
||
|
|
0x89dd12025bfCD38A168455A44B400e913ED33BE2 \
|
||
|
|
--rpc-url http://192.168.11.250:8545
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Step 6: Test Bridge Button
|
||
|
|
|
||
|
|
**Prerequisites**:
|
||
|
|
- Have WETH9 balance >= amount
|
||
|
|
- WETH9 allowance >= amount
|
||
|
|
- Have LINK balance for fees (if required)
|
||
|
|
- Recipient address entered
|
||
|
|
|
||
|
|
**Steps**:
|
||
|
|
1. Enter amount (e.g., 0.1 ETH)
|
||
|
|
2. Enter recipient address (or use default)
|
||
|
|
3. Click **"Bridge (CCIP Send)"** button
|
||
|
|
4. Approve transaction in wallet
|
||
|
|
5. Wait for confirmation
|
||
|
|
|
||
|
|
**Expected**:
|
||
|
|
- Transaction sent successfully
|
||
|
|
- WETH9 balance decreases
|
||
|
|
- Transaction hash displayed
|
||
|
|
- Message ID returned (if available)
|
||
|
|
|
||
|
|
**Verify**:
|
||
|
|
```bash
|
||
|
|
# Check transaction
|
||
|
|
cast tx <TRANSACTION_HASH> --rpc-url http://192.168.11.250:8545
|
||
|
|
|
||
|
|
# Check bridge event
|
||
|
|
cast logs --from-block <BLOCK_NUMBER> \
|
||
|
|
--address 0x89dd12025bfCD38A168455A44B400e913ED33BE2 \
|
||
|
|
--rpc-url http://192.168.11.250:8545
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🐛 Error Testing
|
||
|
|
|
||
|
|
### Test 1: Insufficient ETH Balance
|
||
|
|
1. Enter amount > ETH balance
|
||
|
|
2. Click Wrap button
|
||
|
|
3. **Expected**: Error message "Insufficient ETH balance"
|
||
|
|
|
||
|
|
### Test 2: Insufficient WETH9 Balance
|
||
|
|
1. Enter amount > WETH9 balance
|
||
|
|
2. Click Bridge button
|
||
|
|
3. **Expected**: Error message "Insufficient WETH9 balance. Please wrap ETH first."
|
||
|
|
|
||
|
|
### Test 3: Insufficient Allowance
|
||
|
|
1. Don't approve, or approve less than amount
|
||
|
|
2. Click Bridge button
|
||
|
|
3. **Expected**: Error message "Insufficient WETH9 allowance. Please approve first."
|
||
|
|
|
||
|
|
### Test 4: Insufficient LINK for Fees
|
||
|
|
1. Have no LINK balance
|
||
|
|
2. Try to bridge
|
||
|
|
3. **Expected**: Error message with required LINK amount
|
||
|
|
|
||
|
|
### Test 5: Invalid Recipient Address
|
||
|
|
1. Enter invalid address (not 0x... format)
|
||
|
|
2. Click Bridge button
|
||
|
|
3. **Expected**: Error message "Please enter a valid recipient address"
|
||
|
|
|
||
|
|
### Test 6: Wallet Not Connected
|
||
|
|
1. Disconnect wallet
|
||
|
|
2. Try to use buttons
|
||
|
|
3. **Expected**: Buttons disabled, message "Please connect your wallet"
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Test Results Template
|
||
|
|
|
||
|
|
### Wrap Button
|
||
|
|
- [ ] Button displays correctly
|
||
|
|
- [ ] Amount validation works
|
||
|
|
- [ ] ETH balance check works
|
||
|
|
- [ ] Transaction sends successfully
|
||
|
|
- [ ] Balance updates after wrap
|
||
|
|
- [ ] Error handling works
|
||
|
|
|
||
|
|
### Approve Button
|
||
|
|
- [ ] Button displays correctly
|
||
|
|
- [ ] Amount validation works
|
||
|
|
- [ ] WETH9 approval works
|
||
|
|
- [ ] LINK approval works (if needed)
|
||
|
|
- [ ] Allowance updates
|
||
|
|
- [ ] Button disables after approval
|
||
|
|
- [ ] Error handling works
|
||
|
|
|
||
|
|
### Bridge Button
|
||
|
|
- [ ] Button displays correctly
|
||
|
|
- [ ] Amount validation works
|
||
|
|
- [ ] Recipient validation works
|
||
|
|
- [ ] Balance checks work
|
||
|
|
- [ ] Allowance checks work
|
||
|
|
- [ ] LINK fee check works
|
||
|
|
- [ ] Transaction sends successfully
|
||
|
|
- [ ] Transaction hash displays
|
||
|
|
- [ ] Error handling works
|
||
|
|
|
||
|
|
### UI/UX
|
||
|
|
- [ ] Balance display updates correctly
|
||
|
|
- [ ] Fee calculation displays
|
||
|
|
- [ ] Loading states work
|
||
|
|
- [ ] Button states (enabled/disabled) correct
|
||
|
|
- [ ] Error messages clear
|
||
|
|
- [ ] Success messages display
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔧 Troubleshooting
|
||
|
|
|
||
|
|
### Issue: "Contract not found"
|
||
|
|
**Solution**: Verify contract addresses in `src/config/bridge.ts`
|
||
|
|
|
||
|
|
### Issue: "Insufficient balance"
|
||
|
|
**Solution**: Ensure you have enough ETH, WETH9, and LINK
|
||
|
|
|
||
|
|
### Issue: "Destination not configured"
|
||
|
|
**Solution**: Run bridge configuration script:
|
||
|
|
```bash
|
||
|
|
./scripts/deployment/configure-bridge-destinations.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
### Issue: "Router fee token not recognized"
|
||
|
|
**Solution**: Verify LINK token is deployed (actual address: `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03`)
|
||
|
|
|
||
|
|
### Issue: TypeScript Errors
|
||
|
|
**Solution**:
|
||
|
|
- Check `AdminConsole.tsx` has syntax errors (unrelated to bridge)
|
||
|
|
- Bridge files compile correctly
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Success Criteria
|
||
|
|
|
||
|
|
All tests pass when:
|
||
|
|
- [x] Wrap button works end-to-end
|
||
|
|
- [x] Approve button works end-to-end
|
||
|
|
- [x] Bridge button works end-to-end
|
||
|
|
- [x] All error cases handled
|
||
|
|
- [x] UI updates correctly
|
||
|
|
- [x] No console errors
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 Notes
|
||
|
|
|
||
|
|
1. **LINK Token**: Actual deployed address is `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03`, not the expected `0x514910771AF9Ca656af840dff83E8264EcF986CA`
|
||
|
|
2. **Fee Calculation**: CCIP fees are calculated automatically via `calculateFee` function
|
||
|
|
3. **Recipient**: Defaults to connected wallet address but can be changed
|
||
|
|
4. **Approvals**: May require 2 transactions (WETH9 + LINK) if both are needed
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Ready for manual testing!** 🚀
|