qa: test pass 2026-03-13 #55

Closed
opened 2026-03-13 02:38:45 +00:00 by PlasticDigits · 5 comments
PlasticDigits commented 2026-03-13 02:38:45 +00:00 (Migrated from gitlab.com)

QA Test Pass

Build / Commit Tested

Date of Test Pass

Tester


How to Use This Checklist

Mark every item with one of:

Mark Meaning
✅ PASS Tested and working as expected
❌ FAIL Tested and broken — file a bug issue and link it
⏭️ SKIP Not tested this pass — state reason (e.g. "no iOS device", "wallet not installed")

Example:

- ✅ PASS — MetaMask (extension): connect/disconnect/switch chain
- ❌ FAIL — Rabby: connect hangs on BSC (#87)
- ⏭️ SKIP — Coinbase Wallet: not installed on test machine

At the end of each section, record totals. At the end of the report, record grand totals.


1. Navigation & Layout

# Test Case Result Notes
1.1 Header logo renders (theme-aware, light + dark)
1.2 Nav links visible: Bridge, History, Verify, Settings
1.3 Nav links route to correct pages
1.4 Active nav link highlighted correctly
1.5 Footer displays version and git SHA
1.6 Footer theme toggle switches Dark ↔ Light
1.7 Theme persists across page reload
1.8 Mobile nav layout renders correctly (hamburger / responsive)
1.9 Catch-all route redirects unknown paths to /

Section totals: __ PASS / __ FAIL / __ SKIP


2. Wallet Connection — EVM

# Test Case Result Notes
2.1 EVM Connect Wallet button opens wallet modal
2.2 MetaMask (extension): connect / disconnect / switch chain
2.3 MetaMask (mobile): connect via in-app browser
2.4 Rabby (extension): connect / disconnect
2.5 Coinbase Wallet: connect / disconnect
2.6 WalletConnect: QR code flow connect / disconnect
2.7 In-app browser warning shown for WalletConnect
2.8 Connected state: address, gas balance, Disconnect button
2.9 Wallet modal: "No wallets detected" empty state
2.10 Wallet modal: error display on connection failure
2.11 Wallet auto-reconnects on page reload (if previously connected)

Section totals: __ PASS / __ FAIL / __ SKIP


3. Wallet Connection — Terra

# Test Case Result Notes
3.1 Terra Wallet button opens wallet modal
3.2 Station (extension): connect / disconnect
3.3 Station (mobile): connect via WalletConnect
3.4 Keplr: connect / disconnect
3.5 Leap: connect / disconnect
3.6 Cosmostation: connect / disconnect
3.7 LuncDash: connect via WalletConnect
3.8 GalaxyStation: connect via WalletConnect
3.9 In-app browser warning shown for mobile wallets
3.10 Connected state: LUNC balance, address, Disconnect button
3.11 "Connecting..." state renders while connecting
3.12 Retry / Cancel for WalletConnect pairing
3.13 Wallet modal: error display on connection failure

Section totals: __ PASS / __ FAIL / __ SKIP


4. Transfer Page (/) — Form & Validation

# Test Case Result Notes
4.1 Source chain selector renders with correct chains
4.2 Source chain shows wallet balance and bridge max
4.3 Rate limit countdown displays when applicable
4.4 Amount input accepts valid numeric values
4.5 MAX button fills maximum bridgeable amount
4.6 Token dropdown lists registered tokens
4.7 Swap direction button toggles source ↔ dest
4.8 Destination chain selector renders correctly
4.9 Recipient input auto-fills from connected wallet
4.10 Recipient input accepts manual address entry
4.11 Validation: rejects amount below minimum
4.12 Validation: rejects amount above maximum
4.13 Validation: rejects invalid EVM address format
4.14 Validation: rejects invalid Terra address format
4.15 Validation: route misconfigured shows amber banner
4.16 Fee breakdown: bridge fee percentage shown
4.17 Fee breakdown: estimated time shown (~5 min)
4.18 Fee breakdown: "You will receive" amount + token symbol
4.19 Fee breakdown: token explorer link works
4.20 Submit button shows "Connect wallet" when disconnected
4.21 Submit button contextual labels (Loading / Bridge from Terra / Bridge from EVM)
4.22 Inline error banner displays on errors with Dismiss
4.23 Transaction submitted: green success banner

Section totals: __ PASS / __ FAIL / __ SKIP


5. Transfer Page (/) — Active & Recent Transfers

# Test Case Result Notes
5.1 Active transfer card displays in-progress transfer
5.2 Recent transfers section shows last 5 transfers
5.3 Recent transfers status refreshes correctly
5.4 Recent transfer links navigate to status page

Section totals: __ PASS / __ FAIL / __ SKIP


6. Bridge Transfer Flows — EVM → Terra

# Test Case Result Notes
6.1 Full lifecycle: form → approve → deposit → pending → complete
6.2 Token approval prompt in wallet (first time)
6.3 Deposit transaction signed in wallet
6.4 "Processing" / loading state during approve + deposit
6.5 Transfer recorded in history after deposit
6.6 Redirect to status page after submission
6.7 Error: user rejects wallet signing
6.8 Error: insufficient balance
6.9 Error: disconnect wallet mid-transfer

Section totals: __ PASS / __ FAIL / __ SKIP


7. Bridge Transfer Flows — Terra → EVM

# Test Case Result Notes
7.1 Full lifecycle: form → sign → deposit → pending → complete
7.2 Transaction signed in Terra wallet
7.3 "Processing" / loading state during deposit
7.4 Transfer recorded in history after deposit
7.5 Redirect to status page after submission
7.6 Error: user rejects wallet signing
7.7 Error: insufficient LUNC for gas
7.8 Error: disconnect wallet mid-transfer

Section totals: __ PASS / __ FAIL / __ SKIP


8. Transfer Status Page (/transfer/:xchainHashId)

# Test Case Result Notes
8.1 Step indicator: Deposit → Submit Hash → Approval → Complete
8.2 Step statuses render correctly (DONE / ACTIVE / FAILED / UP NEXT)
8.3 Transfer details: XChain Hash ID, direction, amount, source/dest TX
8.4 Copy XChain Hash ID button works
8.5 Auto-submit withdrawal fires when both wallets connected
8.6 Manual withdrawal link to Verify page works
8.7 Retry nonce resolution (Terra→EVM)
8.8 Retry hash submission after failure
8.9 Fix transfer: wrong chain submitted flow
8.10 Retry detection button works
8.11 "Back to Bridge" link navigates to /
8.12 "View History" link navigates to /history
8.13 "Verify Hash" link navigates to /verify
8.14 Error state: transfer not found
8.15 Error state: nonce resolution failed
8.16 Error state: hash submission failed (diagnostics shown)
8.17 Error state: hash submitted on wrong chain
8.18 Error state: hash not found on destination
8.19 Rate limit: permanently blocked message
8.20 Rate limit: temporarily blocked with countdown
8.21 Cancel window active: countdown timer
8.22 Lifecycle polling updates status in real-time
8.23 Sound plays on transfer completion

Section totals: __ PASS / __ FAIL / __ SKIP


9. History Page (/history)

# Test Case Result Notes
9.1 Past transfers list renders from localStorage
9.2 Each transfer shows: amount, token, lifecycle badge, status
9.3 Each transfer shows: source → dest chain
9.4 Each transfer shows: timestamp
9.5 "View Status" link navigates to status page
9.6 "Submit Hash" link shown when needed
9.7 Explorer link opens correct block explorer
9.8 Empty state: illustration and "No transactions yet" message

Section totals: __ PASS / __ FAIL / __ SKIP


10. Hash Verification Page (/verify)

# Test Case Result Notes
10.1 Hash search bar accepts input
10.2 Verify button triggers search
10.3 URL ?hash= parameter pre-fills and auto-searches
10.4 Chain query status: progress shown across chains
10.5 Source hash card displays correctly
10.6 Destination hash card displays correctly
10.7 Hash fields table shows all comparison fields
10.8 Match indicator: correct match shown
10.9 Match indicator: mismatch / fraud alert shown
10.10 Status badge renders correctly per state
10.11 Cancel info displays when applicable
10.12 Submit Hash button: submit on EVM when not yet submitted
10.13 Submit Hash button: submit on Terra when not yet submitted
10.14 Invalid hash: validation error shown (aria-invalid)
10.15 Recent verifications: last 5 from localStorage
10.16 Recent verification click navigates to ?hash=

Section totals: __ PASS / __ FAIL / __ SKIP


11. Hash Monitor Section (/verify)

# Test Case Result Notes
11.1 Monitor table renders transfer hashes
11.2 Filter: All
11.3 Filter: Verified
11.4 Filter: Pending
11.5 Filter: Canceled
11.6 Filter: Fraudulent
11.7 Filter: Unknown
11.8 Filter counts update correctly
11.9 Pagination: First / Prev / Next / Last
11.10 Fraudulent / canceled warning banner
11.11 Row click navigates to ?hash=<id>

Section totals: __ PASS / __ FAIL / __ SKIP


12. Settings Page — Chains Tab (/settings)

# Test Case Result Notes
12.1 Chains tab is accessible and active by default
12.2 Chain card per chain: name, chain ID, type
12.3 Chain card shows RPC / LCD URLs
12.4 Chain card shows explorer link
12.5 Tabs: keyboard navigation and aria roles work

Section totals: __ PASS / __ FAIL / __ SKIP


13. Settings Page — Tokens Tab (/settings)

# Test Case Result Notes
13.1 Tokens tab renders token list
13.2 Token card: symbol, verification status
13.3 Verify button per token works
13.4 "Verify All" button works
13.5 Loading state during verification
13.6 Error state on verification failure

Section totals: __ PASS / __ FAIL / __ SKIP


14. Settings Page — Bridge Config Tab (/settings)

# Test Case Result Notes
14.1 Bridge Config tab renders chain config cards
14.2 Chain config card: Cl8y chain ID, network chain ID
14.3 Chain config card: cancel window, fee, fee collector, admin
14.4 Expandable sections: Operators, Cancelers, Tokens
14.5 Token row: min/max, withdraw rate limit, destinations
14.6 Withdraw rate limit countdown displays correctly

Section totals: __ PASS / __ FAIL / __ SKIP


15. Settings Page — Faucet Tab (/settings)

# Test Case Result Notes
15.1 Faucet tab renders test token list (Test A, Test B, Test Dec)
15.2 Per-chain balance display
15.3 EVM faucet: chain switch prompt when on wrong chain
15.4 EVM faucet: claim button works
15.5 EVM faucet: cooldown timer after claim
15.6 Terra faucet: claim button works
15.7 Terra faucet: cooldown timer after claim
15.8 Terra faucet: "No LUNC for gas" warning when applicable

Section totals: __ PASS / __ FAIL / __ SKIP


16. Responsive / Mobile

# Test Case Result Notes
16.1 Small screens (< 375px): layout renders without breakage
16.2 Medium screens (375–768px): layout adapts correctly
16.3 Tablet screens (768–1024px): layout adapts correctly
16.4 Desktop (> 1024px): full layout renders
16.5 Mobile navigation usability (tap targets, spacing)
16.6 Wallet modal usability on mobile
16.7 Transfer form mobile usability (inputs, dropdowns)
16.8 No horizontal scroll on any page
16.9 Touch targets ≥ 44px on interactive elements
16.10 Chain/token selects usable on mobile
16.11 Hash verification page usable on mobile
16.12 Settings tabs usable on mobile

Section totals: __ PASS / __ FAIL / __ SKIP


17. Accessibility

# Test Case Result Notes
17.1 Focus styles visible on all interactive elements
17.2 Modals: role="dialog", aria-modal, focus trap
17.3 Tabs: role="tablist" / role="tab" / aria-selected
17.4 Comboboxes: role="combobox", aria-expanded, aria-haspopup
17.5 Status indicators: role="status", aria-label
17.6 Buttons have accessible labels (no icon-only without aria-label)
17.7 Decorative elements use aria-hidden
17.8 Keyboard-only navigation through all interactive flows

Section totals: __ PASS / __ FAIL / __ SKIP


18. Error & Edge Cases

# Test Case Result Notes
18.1 Disconnect EVM wallet mid-transfer: graceful error
18.2 Disconnect Terra wallet mid-transfer: graceful error
18.3 Reject signing in wallet: error shown, form recoverable
18.4 Invalid inputs: form prevents submission
18.5 Network switch during transfer: handled gracefully
18.6 Refresh page during transfer: state preserved
18.7 Slow / failed RPC: timeout or error shown
18.8 localStorage cleared: app handles missing data gracefully
18.9 Multiple tabs open: no state conflicts

Section totals: __ PASS / __ FAIL / __ SKIP


Devices Tested

Device OS / Browser Wallets Tested

Bugs Found

Issue # Title Severity Section

Grand Totals

Result Count
✅ PASS
❌ FAIL
⏭️ SKIP
Total test cases

Additional Notes

## QA Test Pass ### Build / Commit Tested - <!-- commit SHA or deployment URL --> ### Date of Test Pass - <!-- YYYY-MM-DD --> ### Tester - <!-- @username --> --- ## How to Use This Checklist Mark every item with one of: | Mark | Meaning | |------|---------| | ✅ **PASS** | Tested and working as expected | | ❌ **FAIL** | Tested and broken — file a bug issue and link it | | ⏭️ **SKIP** | Not tested this pass — state reason (e.g. "no iOS device", "wallet not installed") | Example: ``` - ✅ PASS — MetaMask (extension): connect/disconnect/switch chain - ❌ FAIL — Rabby: connect hangs on BSC (#87) - ⏭️ SKIP — Coinbase Wallet: not installed on test machine ``` At the end of each section, record totals. At the end of the report, record grand totals. --- ## 1. Navigation & Layout | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 1.1 | Header logo renders (theme-aware, light + dark) | | | | 1.2 | Nav links visible: Bridge, History, Verify, Settings | | | | 1.3 | Nav links route to correct pages | | | | 1.4 | Active nav link highlighted correctly | | | | 1.5 | Footer displays version and git SHA | | | | 1.6 | Footer theme toggle switches Dark ↔ Light | | | | 1.7 | Theme persists across page reload | | | | 1.8 | Mobile nav layout renders correctly (hamburger / responsive) | | | | 1.9 | Catch-all route redirects unknown paths to `/` | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 2. Wallet Connection — EVM | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 2.1 | EVM Connect Wallet button opens wallet modal | | | | 2.2 | MetaMask (extension): connect / disconnect / switch chain | | | | 2.3 | MetaMask (mobile): connect via in-app browser | | | | 2.4 | Rabby (extension): connect / disconnect | | | | 2.5 | Coinbase Wallet: connect / disconnect | | | | 2.6 | WalletConnect: QR code flow connect / disconnect | | | | 2.7 | In-app browser warning shown for WalletConnect | | | | 2.8 | Connected state: address, gas balance, Disconnect button | | | | 2.9 | Wallet modal: "No wallets detected" empty state | | | | 2.10 | Wallet modal: error display on connection failure | | | | 2.11 | Wallet auto-reconnects on page reload (if previously connected) | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 3. Wallet Connection — Terra | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 3.1 | Terra Wallet button opens wallet modal | | | | 3.2 | Station (extension): connect / disconnect | | | | 3.3 | Station (mobile): connect via WalletConnect | | | | 3.4 | Keplr: connect / disconnect | | | | 3.5 | Leap: connect / disconnect | | | | 3.6 | Cosmostation: connect / disconnect | | | | 3.7 | LuncDash: connect via WalletConnect | | | | 3.8 | GalaxyStation: connect via WalletConnect | | | | 3.9 | In-app browser warning shown for mobile wallets | | | | 3.10 | Connected state: LUNC balance, address, Disconnect button | | | | 3.11 | "Connecting..." state renders while connecting | | | | 3.12 | Retry / Cancel for WalletConnect pairing | | | | 3.13 | Wallet modal: error display on connection failure | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 4. Transfer Page (`/`) — Form & Validation | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 4.1 | Source chain selector renders with correct chains | | | | 4.2 | Source chain shows wallet balance and bridge max | | | | 4.3 | Rate limit countdown displays when applicable | | | | 4.4 | Amount input accepts valid numeric values | | | | 4.5 | MAX button fills maximum bridgeable amount | | | | 4.6 | Token dropdown lists registered tokens | | | | 4.7 | Swap direction button toggles source ↔ dest | | | | 4.8 | Destination chain selector renders correctly | | | | 4.9 | Recipient input auto-fills from connected wallet | | | | 4.10 | Recipient input accepts manual address entry | | | | 4.11 | Validation: rejects amount below minimum | | | | 4.12 | Validation: rejects amount above maximum | | | | 4.13 | Validation: rejects invalid EVM address format | | | | 4.14 | Validation: rejects invalid Terra address format | | | | 4.15 | Validation: route misconfigured shows amber banner | | | | 4.16 | Fee breakdown: bridge fee percentage shown | | | | 4.17 | Fee breakdown: estimated time shown (~5 min) | | | | 4.18 | Fee breakdown: "You will receive" amount + token symbol | | | | 4.19 | Fee breakdown: token explorer link works | | | | 4.20 | Submit button shows "Connect wallet" when disconnected | | | | 4.21 | Submit button contextual labels (Loading / Bridge from Terra / Bridge from EVM) | | | | 4.22 | Inline error banner displays on errors with Dismiss | | | | 4.23 | Transaction submitted: green success banner | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 5. Transfer Page (`/`) — Active & Recent Transfers | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 5.1 | Active transfer card displays in-progress transfer | | | | 5.2 | Recent transfers section shows last 5 transfers | | | | 5.3 | Recent transfers status refreshes correctly | | | | 5.4 | Recent transfer links navigate to status page | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 6. Bridge Transfer Flows — EVM → Terra | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 6.1 | Full lifecycle: form → approve → deposit → pending → complete | | | | 6.2 | Token approval prompt in wallet (first time) | | | | 6.3 | Deposit transaction signed in wallet | | | | 6.4 | "Processing" / loading state during approve + deposit | | | | 6.5 | Transfer recorded in history after deposit | | | | 6.6 | Redirect to status page after submission | | | | 6.7 | Error: user rejects wallet signing | | | | 6.8 | Error: insufficient balance | | | | 6.9 | Error: disconnect wallet mid-transfer | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 7. Bridge Transfer Flows — Terra → EVM | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 7.1 | Full lifecycle: form → sign → deposit → pending → complete | | | | 7.2 | Transaction signed in Terra wallet | | | | 7.3 | "Processing" / loading state during deposit | | | | 7.4 | Transfer recorded in history after deposit | | | | 7.5 | Redirect to status page after submission | | | | 7.6 | Error: user rejects wallet signing | | | | 7.7 | Error: insufficient LUNC for gas | | | | 7.8 | Error: disconnect wallet mid-transfer | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 8. Transfer Status Page (`/transfer/:xchainHashId`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 8.1 | Step indicator: Deposit → Submit Hash → Approval → Complete | | | | 8.2 | Step statuses render correctly (DONE / ACTIVE / FAILED / UP NEXT) | | | | 8.3 | Transfer details: XChain Hash ID, direction, amount, source/dest TX | | | | 8.4 | Copy XChain Hash ID button works | | | | 8.5 | Auto-submit withdrawal fires when both wallets connected | | | | 8.6 | Manual withdrawal link to Verify page works | | | | 8.7 | Retry nonce resolution (Terra→EVM) | | | | 8.8 | Retry hash submission after failure | | | | 8.9 | Fix transfer: wrong chain submitted flow | | | | 8.10 | Retry detection button works | | | | 8.11 | "Back to Bridge" link navigates to `/` | | | | 8.12 | "View History" link navigates to `/history` | | | | 8.13 | "Verify Hash" link navigates to `/verify` | | | | 8.14 | Error state: transfer not found | | | | 8.15 | Error state: nonce resolution failed | | | | 8.16 | Error state: hash submission failed (diagnostics shown) | | | | 8.17 | Error state: hash submitted on wrong chain | | | | 8.18 | Error state: hash not found on destination | | | | 8.19 | Rate limit: permanently blocked message | | | | 8.20 | Rate limit: temporarily blocked with countdown | | | | 8.21 | Cancel window active: countdown timer | | | | 8.22 | Lifecycle polling updates status in real-time | | | | 8.23 | Sound plays on transfer completion | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 9. History Page (`/history`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 9.1 | Past transfers list renders from localStorage | | | | 9.2 | Each transfer shows: amount, token, lifecycle badge, status | | | | 9.3 | Each transfer shows: source → dest chain | | | | 9.4 | Each transfer shows: timestamp | | | | 9.5 | "View Status" link navigates to status page | | | | 9.6 | "Submit Hash" link shown when needed | | | | 9.7 | Explorer link opens correct block explorer | | | | 9.8 | Empty state: illustration and "No transactions yet" message | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 10. Hash Verification Page (`/verify`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 10.1 | Hash search bar accepts input | | | | 10.2 | Verify button triggers search | | | | 10.3 | URL `?hash=` parameter pre-fills and auto-searches | | | | 10.4 | Chain query status: progress shown across chains | | | | 10.5 | Source hash card displays correctly | | | | 10.6 | Destination hash card displays correctly | | | | 10.7 | Hash fields table shows all comparison fields | | | | 10.8 | Match indicator: correct match shown | | | | 10.9 | Match indicator: mismatch / fraud alert shown | | | | 10.10 | Status badge renders correctly per state | | | | 10.11 | Cancel info displays when applicable | | | | 10.12 | Submit Hash button: submit on EVM when not yet submitted | | | | 10.13 | Submit Hash button: submit on Terra when not yet submitted | | | | 10.14 | Invalid hash: validation error shown (`aria-invalid`) | | | | 10.15 | Recent verifications: last 5 from localStorage | | | | 10.16 | Recent verification click navigates to `?hash=` | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 11. Hash Monitor Section (`/verify`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 11.1 | Monitor table renders transfer hashes | | | | 11.2 | Filter: All | | | | 11.3 | Filter: Verified | | | | 11.4 | Filter: Pending | | | | 11.5 | Filter: Canceled | | | | 11.6 | Filter: Fraudulent | | | | 11.7 | Filter: Unknown | | | | 11.8 | Filter counts update correctly | | | | 11.9 | Pagination: First / Prev / Next / Last | | | | 11.10 | Fraudulent / canceled warning banner | | | | 11.11 | Row click navigates to `?hash=<id>` | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 12. Settings Page — Chains Tab (`/settings`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 12.1 | Chains tab is accessible and active by default | | | | 12.2 | Chain card per chain: name, chain ID, type | | | | 12.3 | Chain card shows RPC / LCD URLs | | | | 12.4 | Chain card shows explorer link | | | | 12.5 | Tabs: keyboard navigation and `aria` roles work | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 13. Settings Page — Tokens Tab (`/settings`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 13.1 | Tokens tab renders token list | | | | 13.2 | Token card: symbol, verification status | | | | 13.3 | Verify button per token works | | | | 13.4 | "Verify All" button works | | | | 13.5 | Loading state during verification | | | | 13.6 | Error state on verification failure | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 14. Settings Page — Bridge Config Tab (`/settings`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 14.1 | Bridge Config tab renders chain config cards | | | | 14.2 | Chain config card: Cl8y chain ID, network chain ID | | | | 14.3 | Chain config card: cancel window, fee, fee collector, admin | | | | 14.4 | Expandable sections: Operators, Cancelers, Tokens | | | | 14.5 | Token row: min/max, withdraw rate limit, destinations | | | | 14.6 | Withdraw rate limit countdown displays correctly | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 15. Settings Page — Faucet Tab (`/settings`) | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 15.1 | Faucet tab renders test token list (Test A, Test B, Test Dec) | | | | 15.2 | Per-chain balance display | | | | 15.3 | EVM faucet: chain switch prompt when on wrong chain | | | | 15.4 | EVM faucet: claim button works | | | | 15.5 | EVM faucet: cooldown timer after claim | | | | 15.6 | Terra faucet: claim button works | | | | 15.7 | Terra faucet: cooldown timer after claim | | | | 15.8 | Terra faucet: "No LUNC for gas" warning when applicable | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 16. Responsive / Mobile | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 16.1 | Small screens (< 375px): layout renders without breakage | | | | 16.2 | Medium screens (375–768px): layout adapts correctly | | | | 16.3 | Tablet screens (768–1024px): layout adapts correctly | | | | 16.4 | Desktop (> 1024px): full layout renders | | | | 16.5 | Mobile navigation usability (tap targets, spacing) | | | | 16.6 | Wallet modal usability on mobile | | | | 16.7 | Transfer form mobile usability (inputs, dropdowns) | | | | 16.8 | No horizontal scroll on any page | | | | 16.9 | Touch targets ≥ 44px on interactive elements | | | | 16.10 | Chain/token selects usable on mobile | | | | 16.11 | Hash verification page usable on mobile | | | | 16.12 | Settings tabs usable on mobile | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 17. Accessibility | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 17.1 | Focus styles visible on all interactive elements | | | | 17.2 | Modals: `role="dialog"`, `aria-modal`, focus trap | | | | 17.3 | Tabs: `role="tablist"` / `role="tab"` / `aria-selected` | | | | 17.4 | Comboboxes: `role="combobox"`, `aria-expanded`, `aria-haspopup` | | | | 17.5 | Status indicators: `role="status"`, `aria-label` | | | | 17.6 | Buttons have accessible labels (no icon-only without `aria-label`) | | | | 17.7 | Decorative elements use `aria-hidden` | | | | 17.8 | Keyboard-only navigation through all interactive flows | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## 18. Error & Edge Cases | # | Test Case | Result | Notes | |---|-----------|--------|-------| | 18.1 | Disconnect EVM wallet mid-transfer: graceful error | | | | 18.2 | Disconnect Terra wallet mid-transfer: graceful error | | | | 18.3 | Reject signing in wallet: error shown, form recoverable | | | | 18.4 | Invalid inputs: form prevents submission | | | | 18.5 | Network switch during transfer: handled gracefully | | | | 18.6 | Refresh page during transfer: state preserved | | | | 18.7 | Slow / failed RPC: timeout or error shown | | | | 18.8 | localStorage cleared: app handles missing data gracefully | | | | 18.9 | Multiple tabs open: no state conflicts | | | **Section totals:** __ PASS / __ FAIL / __ SKIP --- ## Devices Tested | Device | OS / Browser | Wallets Tested | |--------|-------------|----------------| | <!-- e.g. MacBook Pro 14" --> | <!-- e.g. macOS 15 / Chrome 130 --> | <!-- e.g. MetaMask, Station --> | | | | | | | | | | | | | --- ## Bugs Found | Issue # | Title | Severity | Section | |---------|-------|----------|---------| | <!-- e.g. #87 --> | <!-- e.g. Rabby connect hangs on BSC --> | <!-- Critical/High/Medium/Low --> | <!-- e.g. 2. EVM Wallets --> | | | | | | --- ## Grand Totals | Result | Count | |--------|-------| | ✅ PASS | | | ❌ FAIL | | | ⏭️ SKIP | | | **Total test cases** | | --- ## Additional Notes -
PlasticDigits commented 2026-03-13 02:38:46 +00:00 (Migrated from gitlab.com)

assigned to @Brouie

assigned to @Brouie
Brouie commented 2026-03-13 04:17:47 +00:00 (Migrated from gitlab.com)

CL8Y Bridge — QA Test Pass 2026-03-13

Build / Commit Tested

Date of Test Pass

  • 2026-03-13

Tester

  • @Brouie

1. Navigation & Layout

# Test Case Result Notes
1.1 Header logo renders (theme-aware, light + dark) ✅ PASS Logo switches with theme
1.2 Nav links visible: Bridge, History, Verify, Settings ✅ PASS All 4 visible
1.3 Nav links route to correct pages ✅ PASS All routes correct
1.4 Active nav link highlighted correctly ✅ PASS Current page highlighted
1.5 Footer displays version and git SHA ✅ PASS Version and SHA shown
1.6 Footer theme toggle switches Dark ↔ Light ✅ PASS Instant toggle
1.7 Theme persists across page reload ✅ PASS Persists via localStorage
1.8 Mobile nav layout renders correctly ✅ PASS Responsive layout works
1.9 Catch-all route redirects unknown paths to / ✅ PASS /fakepage redirects to /

Section totals: 9 PASS / 0 FAIL / 0 SKIP


2. Wallet Connection — EVM

# Test Case Result Notes
2.1 EVM Connect Wallet button opens wallet modal ✅ PASS Modal opens with wallet options
2.2 MetaMask (extension): connect / disconnect / switch chain ✅ PASS All operations work
2.3 MetaMask (mobile): connect via in-app browser ✅ PASS Tested on Android
2.4 Rabby (extension): connect / disconnect ✅ PASS Works
2.5 Coinbase Wallet: connect / disconnect ✅ PASS Works
2.6 WalletConnect: QR code flow connect / disconnect ✅ PASS QR flow tested with MetaMask mobile
2.7 In-app browser warning shown for WalletConnect ✅ PASS Warning displayed
2.8 Connected state: address, gas balance, Disconnect button ✅ PASS All elements shown
2.9 Wallet modal: "No wallets detected" empty state ✅ PASS Works
2.10 Wallet modal: error display on connection failure ✅ PASS Error shown on failure
2.11 Wallet auto-reconnects on page reload ✅ PASS Auto-reconnects

Section totals: 11 PASS / 0 FAIL / 0 SKIP


3. Wallet Connection — Terra

# Test Case Result Notes
3.1 Terra Wallet button opens wallet modal ✅ PASS Modal opens
3.2 Station (extension): connect / disconnect ⏭️ SKIP Station not installed
3.3 Station (mobile): connect via WalletConnect ⏭️ SKIP Station not installed
3.4 Keplr: connect / disconnect ✅ PASS Works
3.5 Leap: connect / disconnect ❌ FAIL Clicking Leap produces no response — no popup, no error. Filed #56
3.6 Cosmostation: connect / disconnect ⏭️ SKIP Cosmostation not installed
3.7 LuncDash: connect via WalletConnect ✅ PASS WalletConnect session established
3.8 GalaxyStation: connect via WalletConnect ⏭️ SKIP Galaxy Station not tested
3.9 In-app browser warning shown for mobile wallets ✅ PASS Warning shown
3.10 Connected state: LUNC balance, address, Disconnect button ✅ PASS All elements displayed
3.11 "Connecting..." state renders while connecting ✅ PASS Loading state shown
3.12 Retry / Cancel for WalletConnect pairing ✅ PASS Retry/Cancel available
3.13 Wallet modal: error display on connection failure ⏭️ SKIP Not triggered

Section totals: 7 PASS / 1 FAIL / 5 SKIP


4. Transfer Page ( / ) — Form & Validation

# Test Case Result Notes
4.1 Source chain selector renders with correct chains ✅ PASS BSC, opBNB, Terra Classic
4.2 Source chain shows wallet balance and bridge max ✅ PASS Balance and max displayed
4.3 Rate limit countdown displays when applicable ✅ PASS Countdown shows when used > 0
4.4 Amount input accepts valid numeric values ✅ PASS Valid numbers accepted
4.5 MAX button fills maximum bridgeable amount ✅ PASS Fills max amount
4.6 Token dropdown lists registered tokens ✅ PASS TESTA, TESTB available
4.7 Swap direction button toggles source ↔ dest ✅ PASS Direction toggles
4.8 Destination chain selector renders correctly ✅ PASS All chains available
4.9 Recipient input auto-fills from connected wallet ✅ PASS Auto-fills address
4.10 Recipient input accepts manual address entry ✅ PASS Manual entry works
4.11 Validation: rejects amount below minimum ✅ PASS Minimum enforced
4.12 Validation: rejects amount above maximum ✅ PASS Maximum enforced
4.13 Validation: rejects invalid EVM address format ✅ PASS Invalid format rejected
4.14 Validation: rejects invalid Terra address format ✅ PASS Invalid format rejected
4.15 Validation: route misconfigured shows amber banner ✅ PASS Amber banner shown
4.16 Fee breakdown: bridge fee percentage shown ✅ PASS 0.5% shown
4.17 Fee breakdown: estimated time shown (~5 min) ✅ PASS ~5 minutes shown
4.18 Fee breakdown: "You will receive" amount + token symbol ✅ PASS Amount and symbol shown
4.19 Fee breakdown: token explorer link works ✅ PASS Link works
4.20 Submit button shows "Connect wallet" when disconnected ✅ PASS Correct label
4.21 Submit button contextual labels ✅ PASS Bridge from EVM / Bridge from Terra
4.22 Inline error banner displays on errors with Dismiss ✅ PASS Error banner with dismiss
4.23 Transaction submitted: green success banner ✅ PASS Green success shown

Section totals: 23 PASS / 0 FAIL / 0 SKIP


5. Transfer Page ( / ) — Active & Recent Transfers

# Test Case Result Notes
5.1 Active transfer card displays in-progress transfer ✅ PASS Active card shown
5.2 Recent transfers section shows last 5 transfers ✅ PASS Recent transfers listed
5.3 Recent transfers status refreshes correctly ✅ PASS Status updates
5.4 Recent transfer links navigate to status page ✅ PASS Links work

Section totals: 4 PASS / 0 FAIL / 0 SKIP


6. Bridge Transfer Flows — EVM → Terra

# Test Case Result Notes
6.1 Full lifecycle: form → approve → deposit → pending → complete ✅ PASS BSC→Terra completed successfully
6.2 Token approval prompt in wallet (first time) ✅ PASS Approval prompted
6.3 Deposit transaction signed in wallet ✅ PASS Signed and broadcast
6.4 "Processing" / loading state during approve + deposit ✅ PASS Loading shown
6.5 Transfer recorded in history after deposit ✅ PASS Appears in history
6.6 Redirect to status page after submission ✅ PASS Redirected
6.7 Error: user rejects wallet signing ✅ PASS Error shown, form recoverable
6.8 Error: insufficient balance ✅ PASS Error displayed
6.9 Error: disconnect wallet mid-transfer ✅ PASS Transfer continues on-chain, status page still tracks

Section totals: 9 PASS / 0 FAIL / 0 SKIP


7. Bridge Transfer Flows — Terra → EVM

# Test Case Result Notes
7.1 Full lifecycle: form → sign → deposit → pending → complete ✅ PASS Terra→BSC and Terra→opBNB both completed
7.2 Transaction signed in Terra wallet ✅ PASS Signed in Keplr
7.3 "Processing" / loading state during deposit ✅ PASS Loading shown
7.4 Transfer recorded in history after deposit ✅ PASS Appears in history
7.5 Redirect to status page after submission ✅ PASS Redirected
7.6 Error: user rejects wallet signing ✅ PASS Error shown
7.7 Error: insufficient LUNC for gas ✅ PASS LUNC balance check implemented (#54 fixed)
7.8 Error: disconnect wallet mid-transfer ✅ PASS Transfer continues

Section totals: 8 PASS / 0 FAIL / 0 SKIP


8. Transfer Status Page ( /transfer/:xchainHashId )

# Test Case Result Notes
8.1 Step indicator: Deposit → Submit Hash → Approval → Complete ✅ PASS All 4 steps shown
8.2 Step statuses render correctly (DONE / ACTIVE / FAILED / UP NEXT) ✅ PASS Correct statuses
8.3 Transfer details: XChain Hash ID, direction, amount, source/dest TX ✅ PASS All details shown
8.4 Copy XChain Hash ID button works ✅ PASS Copies to clipboard
8.5 Auto-submit withdrawal fires when both wallets connected ✅ PASS Auto-submits
8.6 Manual withdrawal link to Verify page works ✅ PASS Link works
8.7 Retry nonce resolution (Terra→EVM) ✅ PASS Works
8.8 Retry hash submission after failure ✅ PASS Retry works
8.9 Fix transfer: wrong chain submitted flow ⏭️ SKIP Cannot reproduce — would need intentional wrong-chain submit
8.10 Retry detection button works ✅ PASS Works
8.11 "Back to Bridge" link navigates to / ✅ PASS Navigates correctly
8.12 "View History" link navigates to /history ✅ PASS Navigates correctly
8.13 "Verify Hash" link navigates to /verify ✅ PASS Navigates correctly
8.14 Error state: transfer not found ✅ PASS Shows error for fake hash
8.15 Error state: nonce resolution failed ⏭️ SKIP Cannot reproduce
8.16 Error state: hash submission failed (diagnostics shown) ⏭️ SKIP Cannot reproduce
8.17 Error state: hash submitted on wrong chain ⏭️ SKIP Cannot reproduce
8.18 Error state: hash not found on destination ⏭️ SKIP Cannot reproduce
8.19 Rate limit: permanently blocked message ⏭️ SKIP Would need to exceed max bridge amount
8.20 Rate limit: temporarily blocked with countdown ✅ PASS Countdown shown when rate limit active
8.21 Cancel window active: countdown timer ✅ PASS Cancel window countdown works (3:52 remaining observed)
8.22 Lifecycle polling updates status in real-time ✅ PASS Status updates in real-time
8.23 Sound plays on transfer completion ✅ PASS Sound plays

Section totals: 17 PASS / 0 FAIL / 6 SKIP


9. History Page ( /history )

# Test Case Result Notes
9.1 Past transfers list renders from localStorage ✅ PASS All past transfers listed
9.2 Each transfer shows: amount, token, lifecycle badge, status ✅ PASS All info displayed
9.3 Each transfer shows: source → dest chain ✅ PASS Chain direction shown
9.4 Each transfer shows: timestamp ✅ PASS Timestamps present
9.5 "View Status" link navigates to status page ✅ PASS Links work
9.6 "Submit Hash" link shown when needed ✅ PASS Shown when applicable
9.7 Explorer link opens correct block explorer ✅ PASS Opens correct explorer
9.8 Empty state: illustration and "No transactions yet" message ✅ PASS Works

Section totals: 8 PASS / 0 FAIL / 0 SKIP


10. Hash Verification Page ( /verify )

# Test Case Result Notes
10.1 Hash search bar accepts input ✅ PASS Accepts hash input
10.2 Verify button triggers search ✅ PASS Search triggers
10.3 URL ?hash= parameter pre-fills and auto-searches ✅ PASS Auto-searches
10.4 Chain query status: progress shown across chains ✅ PASS Progress shown per chain
10.5 Source hash card displays correctly ✅ PASS Card displays
10.6 Destination hash card displays correctly ✅ PASS Card displays
10.7 Hash fields table shows all comparison fields ✅ PASS All fields shown
10.8 Match indicator: correct match shown ✅ PASS Match confirmed
10.9 Match indicator: mismatch / fraud alert shown ✅ PASS Works
10.10 Status badge renders correctly per state ✅ PASS Correct badges
10.11 Cancel info displays when applicable ✅ PASS Shown when applicable
10.12 Submit Hash button: submit on EVM when not yet submitted ✅ PASS Works
10.13 Submit Hash button: submit on Terra when not yet submitted ✅ PASS Works
10.14 Invalid hash: validation error shown (aria-invalid) ✅ PASS Validation error shown
10.15 Recent verifications: last 5 from localStorage ✅ PASS Recent list shown
10.16 Recent verification click navigates to ?hash= ✅ PASS Navigation works

Section totals: 16 PASS / 0 FAIL / 0 SKIP


11. Hash Monitor Section ( /verify )

# Test Case Result Notes
11.1 Monitor table renders transfer hashes ✅ PASS Hashes listed
11.2 Filter: All ✅ PASS Shows all
11.3 Filter: Verified ✅ PASS Filters correctly
11.4 Filter: Pending ✅ PASS Filters correctly
11.5 Filter: Canceled ✅ PASS Filters correctly
11.6 Filter: Fraudulent ✅ PASS Filters correctly
11.7 Filter: Unknown ✅ PASS Filters correctly
11.8 Filter counts update correctly ✅ PASS Counts accurate
11.9 Pagination: First / Prev / Next / Last ✅ PASS Pagination works
11.10 Fraudulent / canceled warning banner ✅ PASS Banner shown
11.11 Row click navigates to ?hash=<id> ✅ PASS Navigation works

Section totals: 11 PASS / 0 FAIL / 0 SKIP


12. Settings Page — Chains Tab ( /settings )

# Test Case Result Notes
12.1 Chains tab is accessible and active by default ✅ PASS Active by default
12.2 Chain card per chain: name, chain ID, type ✅ PASS All info shown
12.3 Chain card shows RPC / LCD URLs ✅ PASS URLs displayed
12.4 Chain card shows explorer link ✅ PASS Explorer links work
12.5 Tabs: keyboard navigation and aria roles work ✅ PASS Keyboard nav works

Section totals: 5 PASS / 0 FAIL / 0 SKIP


13. Settings Page — Tokens Tab ( /settings )

# Test Case Result Notes
13.1 Tokens tab renders token list ✅ PASS Test A, Test B, Test Dec, LUNC listed
13.2 Token card: symbol, verification status ✅ PASS Status shown per token
13.3 Verify button per token works ✅ PASS Verification runs
13.4 "Verify All" button works ✅ PASS All tokens verified
13.5 Loading state during verification ✅ PASS Loading shown
13.6 Error state on verification failure ✅ PASS LUNC shows 4 failures (expected — native token, not CW20)

Section totals: 6 PASS / 0 FAIL / 0 SKIP


14. Settings Page — Bridge Config Tab ( /settings )

# Test Case Result Notes
14.1 Bridge Config tab renders chain config cards ✅ PASS Cards rendered
14.2 Chain config card: Cl8y chain ID, network chain ID ✅ PASS IDs shown
14.3 Chain config card: cancel window, fee, fee collector, admin ✅ PASS All fields shown
14.4 Expandable sections: Operators, Cancelers, Tokens ✅ PASS Expandable sections work
14.5 Token row: min/max, withdraw rate limit, destinations ✅ PASS All info displayed
14.6 Withdraw rate limit countdown displays correctly ✅ PASS Countdown shown when applicable

Section totals: 6 PASS / 0 FAIL / 0 SKIP


15. Settings Page — Faucet Tab ( /settings )

# Test Case Result Notes
15.1 Faucet tab renders test token list (Test A, Test B, Test Dec) ✅ PASS All 3 test tokens listed
15.2 Per-chain balance display ✅ PASS Balances per chain shown
15.3 EVM faucet: chain switch prompt when on wrong chain ✅ PASS Prompt shown
15.4 EVM faucet: claim button works ✅ PASS Claim succeeds
15.5 EVM faucet: cooldown timer after claim ✅ PASS Cooldown shown
15.6 Terra faucet: claim button works ✅ PASS Claim succeeds
15.7 Terra faucet: cooldown timer after claim ✅ PASS Cooldown shown
15.8 Terra faucet: "No LUNC for gas" warning when applicable ✅ PASS Warning shown

Section totals: 8 PASS / 0 FAIL / 0 SKIP


16. Responsive / Mobile

# Test Case Result Notes
16.1 Small screens (< 375px): layout renders without breakage ✅ PASS No breakage
16.2 Medium screens (375–768px): layout adapts correctly ✅ PASS Adapts correctly
16.3 Tablet screens (768–1024px): layout adapts correctly ✅ PASS Adapts correctly
16.4 Desktop (> 1024px): full layout renders ✅ PASS Full layout
16.5 Mobile navigation usability (tap targets, spacing) ✅ PASS Usable
16.6 Wallet modal usability on mobile ✅ PASS Modal fits screen
16.7 Transfer form mobile usability (inputs, dropdowns) ✅ PASS Form usable
16.8 No horizontal scroll on any page ✅ PASS No horizontal scroll
16.9 Touch targets ≥ 44px on interactive elements ✅ PASS Targets adequate
16.10 Chain/token selects usable on mobile ✅ PASS Selects work
16.11 Hash verification page usable on mobile ✅ PASS Usable
16.12 Settings tabs usable on mobile ✅ PASS Tabs work

Section totals: 12 PASS / 0 FAIL / 0 SKIP


17. Accessibility

# Test Case Result Notes
17.1 Focus styles visible on all interactive elements ✅ PASS Focus styles visible
17.2 Modals: role="dialog", aria-modal, focus trap ✅ PASS Aria attributes present
17.3 Tabs: role="tablist" / role="tab" / aria-selected ✅ PASS Correct roles
17.4 Comboboxes: role="combobox", aria-expanded, aria-haspopup ✅ PASS Correct attributes
17.5 Status indicators: role="status", aria-label ✅ PASS Status roles present
17.6 Buttons have accessible labels ✅ PASS Labels present
17.7 Decorative elements use aria-hidden ✅ PASS Aria-hidden applied
17.8 Keyboard-only navigation through all interactive flows ✅ PASS Tab navigation works

Section totals: 8 PASS / 0 FAIL / 0 SKIP


18. Error & Edge Cases

# Test Case Result Notes
18.1 Disconnect EVM wallet mid-transfer: graceful error ✅ PASS Transfer continues on-chain, status page tracks
18.2 Disconnect Terra wallet mid-transfer: graceful error ✅ PASS Transfer continues
18.3 Reject signing in wallet: error shown, form recoverable ✅ PASS Error shown, form recoverable
18.4 Invalid inputs: form prevents submission ✅ PASS Validation prevents submission
18.5 Network switch during transfer: handled gracefully ✅ PASS Handled
18.6 Refresh page during transfer: state preserved ✅ PASS Status preserved from localStorage
18.7 Slow / failed RPC: timeout or error shown ✅ PASS Error shown
18.8 localStorage cleared: app handles missing data gracefully ✅ PASS Handles gracefully
18.9 Multiple tabs open: no state conflicts ✅ PASS No conflicts

Section totals: 9 PASS / 0 FAIL / 0 SKIP


Devices Tested

Device OS / Browser Wallets Tested
Desktop PC Windows / Chrome (latest) MetaMask, Rabby, Coinbase, Keplr, Leap, LuncDash
Android Phone Android / MetaMask in-app browser MetaMask (WalletConnect QR), LuncDash

Bugs Found

Issue # Title Severity Section
#56 Leap wallet connection does nothing — no popup or error Medium 3. Wallet Connection Terra

Grand Totals

Result Count
✅ PASS 177
❌ FAIL 1
⏭️ SKIP 11
Total test cases 189

Additional Notes

  • LUNC token verification shows 4 failures on Settings → Tokens tab — this is expected behavior as LUNC is a native token (uluna), not a CW20 contract, so cross-chain destination mappings are not configured for it.
  • All 3 test tokens (Test A, Test B, Test Dec) verify successfully across all chains.
  • Bridge #44 (countdown timer N/A) and #47 (pending hash recheck) verified and closed during this session.
  • #52 (wallet disconnect button) and #46 (hash monitor scroll) also verified and closed.
  • Transfer tested during QA: BSC→Terra (hash: 0x17eac47d...) — completed successfully including disconnect-both-wallets-mid-transfer edge case.
  • Rate limit countdown correctly shows N/A when destination chain has used = 0 (no active rate limit window) and shows countdown when used > 0. Confirmed with on-chain data.
# CL8Y Bridge — QA Test Pass 2026-03-13 ### Build / Commit Tested * b216b88 (main) — v0.1.59+ ### Date of Test Pass * 2026-03-13 ### Tester * @Brouie --- ## 1. Navigation & Layout | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 1.1 | Header logo renders (theme-aware, light + dark) | ✅ PASS | Logo switches with theme | | 1.2 | Nav links visible: Bridge, History, Verify, Settings | ✅ PASS | All 4 visible | | 1.3 | Nav links route to correct pages | ✅ PASS | All routes correct | | 1.4 | Active nav link highlighted correctly | ✅ PASS | Current page highlighted | | 1.5 | Footer displays version and git SHA | ✅ PASS | Version and SHA shown | | 1.6 | Footer theme toggle switches Dark ↔ Light | ✅ PASS | Instant toggle | | 1.7 | Theme persists across page reload | ✅ PASS | Persists via localStorage | | 1.8 | Mobile nav layout renders correctly | ✅ PASS | Responsive layout works | | 1.9 | Catch-all route redirects unknown paths to / | ✅ PASS | /fakepage redirects to / | Section totals: 9 PASS / 0 FAIL / 0 SKIP --- ## 2. Wallet Connection — EVM | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 2.1 | EVM Connect Wallet button opens wallet modal | ✅ PASS | Modal opens with wallet options | | 2.2 | MetaMask (extension): connect / disconnect / switch chain | ✅ PASS | All operations work | | 2.3 | MetaMask (mobile): connect via in-app browser | ✅ PASS | Tested on Android | | 2.4 | Rabby (extension): connect / disconnect | ✅ PASS | Works | | 2.5 | Coinbase Wallet: connect / disconnect | ✅ PASS | Works | | 2.6 | WalletConnect: QR code flow connect / disconnect | ✅ PASS | QR flow tested with MetaMask mobile | | 2.7 | In-app browser warning shown for WalletConnect | ✅ PASS | Warning displayed | | 2.8 | Connected state: address, gas balance, Disconnect button | ✅ PASS | All elements shown | | 2.9 | Wallet modal: "No wallets detected" empty state | ✅ PASS | Works | | 2.10 | Wallet modal: error display on connection failure | ✅ PASS | Error shown on failure | | 2.11 | Wallet auto-reconnects on page reload | ✅ PASS | Auto-reconnects | Section totals: 11 PASS / 0 FAIL / 0 SKIP --- ## 3. Wallet Connection — Terra | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 3.1 | Terra Wallet button opens wallet modal | ✅ PASS | Modal opens | | 3.2 | Station (extension): connect / disconnect | ⏭️ SKIP | Station not installed | | 3.3 | Station (mobile): connect via WalletConnect | ⏭️ SKIP | Station not installed | | 3.4 | Keplr: connect / disconnect | ✅ PASS | Works | | 3.5 | Leap: connect / disconnect | ❌ FAIL | Clicking Leap produces no response — no popup, no error. Filed #56 | | 3.6 | Cosmostation: connect / disconnect | ⏭️ SKIP | Cosmostation not installed | | 3.7 | LuncDash: connect via WalletConnect | ✅ PASS | WalletConnect session established | | 3.8 | GalaxyStation: connect via WalletConnect | ⏭️ SKIP | Galaxy Station not tested | | 3.9 | In-app browser warning shown for mobile wallets | ✅ PASS | Warning shown | | 3.10 | Connected state: LUNC balance, address, Disconnect button | ✅ PASS | All elements displayed | | 3.11 | "Connecting..." state renders while connecting | ✅ PASS | Loading state shown | | 3.12 | Retry / Cancel for WalletConnect pairing | ✅ PASS | Retry/Cancel available | | 3.13 | Wallet modal: error display on connection failure | ⏭️ SKIP | Not triggered | Section totals: 7 PASS / 1 FAIL / 5 SKIP --- ## 4. Transfer Page ( / ) — Form & Validation | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 4.1 | Source chain selector renders with correct chains | ✅ PASS | BSC, opBNB, Terra Classic | | 4.2 | Source chain shows wallet balance and bridge max | ✅ PASS | Balance and max displayed | | 4.3 | Rate limit countdown displays when applicable | ✅ PASS | Countdown shows when used \> 0 | | 4.4 | Amount input accepts valid numeric values | ✅ PASS | Valid numbers accepted | | 4.5 | MAX button fills maximum bridgeable amount | ✅ PASS | Fills max amount | | 4.6 | Token dropdown lists registered tokens | ✅ PASS | TESTA, TESTB available | | 4.7 | Swap direction button toggles source ↔ dest | ✅ PASS | Direction toggles | | 4.8 | Destination chain selector renders correctly | ✅ PASS | All chains available | | 4.9 | Recipient input auto-fills from connected wallet | ✅ PASS | Auto-fills address | | 4.10 | Recipient input accepts manual address entry | ✅ PASS | Manual entry works | | 4.11 | Validation: rejects amount below minimum | ✅ PASS | Minimum enforced | | 4.12 | Validation: rejects amount above maximum | ✅ PASS | Maximum enforced | | 4.13 | Validation: rejects invalid EVM address format | ✅ PASS | Invalid format rejected | | 4.14 | Validation: rejects invalid Terra address format | ✅ PASS | Invalid format rejected | | 4.15 | Validation: route misconfigured shows amber banner | ✅ PASS | Amber banner shown | | 4.16 | Fee breakdown: bridge fee percentage shown | ✅ PASS | 0.5% shown | | 4.17 | Fee breakdown: estimated time shown (\~5 min) | ✅ PASS | \~5 minutes shown | | 4.18 | Fee breakdown: "You will receive" amount + token symbol | ✅ PASS | Amount and symbol shown | | 4.19 | Fee breakdown: token explorer link works | ✅ PASS | Link works | | 4.20 | Submit button shows "Connect wallet" when disconnected | ✅ PASS | Correct label | | 4.21 | Submit button contextual labels | ✅ PASS | Bridge from EVM / Bridge from Terra | | 4.22 | Inline error banner displays on errors with Dismiss | ✅ PASS | Error banner with dismiss | | 4.23 | Transaction submitted: green success banner | ✅ PASS | Green success shown | Section totals: 23 PASS / 0 FAIL / 0 SKIP --- ## 5. Transfer Page ( / ) — Active & Recent Transfers | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 5.1 | Active transfer card displays in-progress transfer | ✅ PASS | Active card shown | | 5.2 | Recent transfers section shows last 5 transfers | ✅ PASS | Recent transfers listed | | 5.3 | Recent transfers status refreshes correctly | ✅ PASS | Status updates | | 5.4 | Recent transfer links navigate to status page | ✅ PASS | Links work | Section totals: 4 PASS / 0 FAIL / 0 SKIP --- ## 6. Bridge Transfer Flows — EVM → Terra | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 6.1 | Full lifecycle: form → approve → deposit → pending → complete | ✅ PASS | BSC→Terra completed successfully | | 6.2 | Token approval prompt in wallet (first time) | ✅ PASS | Approval prompted | | 6.3 | Deposit transaction signed in wallet | ✅ PASS | Signed and broadcast | | 6.4 | "Processing" / loading state during approve + deposit | ✅ PASS | Loading shown | | 6.5 | Transfer recorded in history after deposit | ✅ PASS | Appears in history | | 6.6 | Redirect to status page after submission | ✅ PASS | Redirected | | 6.7 | Error: user rejects wallet signing | ✅ PASS | Error shown, form recoverable | | 6.8 | Error: insufficient balance | ✅ PASS | Error displayed | | 6.9 | Error: disconnect wallet mid-transfer | ✅ PASS | Transfer continues on-chain, status page still tracks | Section totals: 9 PASS / 0 FAIL / 0 SKIP --- ## 7. Bridge Transfer Flows — Terra → EVM | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 7.1 | Full lifecycle: form → sign → deposit → pending → complete | ✅ PASS | Terra→BSC and Terra→opBNB both completed | | 7.2 | Transaction signed in Terra wallet | ✅ PASS | Signed in Keplr | | 7.3 | "Processing" / loading state during deposit | ✅ PASS | Loading shown | | 7.4 | Transfer recorded in history after deposit | ✅ PASS | Appears in history | | 7.5 | Redirect to status page after submission | ✅ PASS | Redirected | | 7.6 | Error: user rejects wallet signing | ✅ PASS | Error shown | | 7.7 | Error: insufficient LUNC for gas | ✅ PASS | LUNC balance check implemented (#54 fixed) | | 7.8 | Error: disconnect wallet mid-transfer | ✅ PASS | Transfer continues | Section totals: 8 PASS / 0 FAIL / 0 SKIP --- ## 8. Transfer Status Page ( /transfer/:xchainHashId ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 8.1 | Step indicator: Deposit → Submit Hash → Approval → Complete | ✅ PASS | All 4 steps shown | | 8.2 | Step statuses render correctly (DONE / ACTIVE / FAILED / UP NEXT) | ✅ PASS | Correct statuses | | 8.3 | Transfer details: XChain Hash ID, direction, amount, source/dest TX | ✅ PASS | All details shown | | 8.4 | Copy XChain Hash ID button works | ✅ PASS | Copies to clipboard | | 8.5 | Auto-submit withdrawal fires when both wallets connected | ✅ PASS | Auto-submits | | 8.6 | Manual withdrawal link to Verify page works | ✅ PASS | Link works | | 8.7 | Retry nonce resolution (Terra→EVM) | ✅ PASS | Works | | 8.8 | Retry hash submission after failure | ✅ PASS | Retry works | | 8.9 | Fix transfer: wrong chain submitted flow | ⏭️ SKIP | Cannot reproduce — would need intentional wrong-chain submit | | 8.10 | Retry detection button works | ✅ PASS | Works | | 8.11 | "Back to Bridge" link navigates to / | ✅ PASS | Navigates correctly | | 8.12 | "View History" link navigates to /history | ✅ PASS | Navigates correctly | | 8.13 | "Verify Hash" link navigates to /verify | ✅ PASS | Navigates correctly | | 8.14 | Error state: transfer not found | ✅ PASS | Shows error for fake hash | | 8.15 | Error state: nonce resolution failed | ⏭️ SKIP | Cannot reproduce | | 8.16 | Error state: hash submission failed (diagnostics shown) | ⏭️ SKIP | Cannot reproduce | | 8.17 | Error state: hash submitted on wrong chain | ⏭️ SKIP | Cannot reproduce | | 8.18 | Error state: hash not found on destination | ⏭️ SKIP | Cannot reproduce | | 8.19 | Rate limit: permanently blocked message | ⏭️ SKIP | Would need to exceed max bridge amount | | 8.20 | Rate limit: temporarily blocked with countdown | ✅ PASS | Countdown shown when rate limit active | | 8.21 | Cancel window active: countdown timer | ✅ PASS | Cancel window countdown works (3:52 remaining observed) | | 8.22 | Lifecycle polling updates status in real-time | ✅ PASS | Status updates in real-time | | 8.23 | Sound plays on transfer completion | ✅ PASS | Sound plays | Section totals: 17 PASS / 0 FAIL / 6 SKIP --- ## 9. History Page ( /history ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 9.1 | Past transfers list renders from localStorage | ✅ PASS | All past transfers listed | | 9.2 | Each transfer shows: amount, token, lifecycle badge, status | ✅ PASS | All info displayed | | 9.3 | Each transfer shows: source → dest chain | ✅ PASS | Chain direction shown | | 9.4 | Each transfer shows: timestamp | ✅ PASS | Timestamps present | | 9.5 | "View Status" link navigates to status page | ✅ PASS | Links work | | 9.6 | "Submit Hash" link shown when needed | ✅ PASS | Shown when applicable | | 9.7 | Explorer link opens correct block explorer | ✅ PASS | Opens correct explorer | | 9.8 | Empty state: illustration and "No transactions yet" message | ✅ PASS | Works | Section totals: 8 PASS / 0 FAIL / 0 SKIP --- ## 10. Hash Verification Page ( /verify ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 10.1 | Hash search bar accepts input | ✅ PASS | Accepts hash input | | 10.2 | Verify button triggers search | ✅ PASS | Search triggers | | 10.3 | URL ?hash= parameter pre-fills and auto-searches | ✅ PASS | Auto-searches | | 10.4 | Chain query status: progress shown across chains | ✅ PASS | Progress shown per chain | | 10.5 | Source hash card displays correctly | ✅ PASS | Card displays | | 10.6 | Destination hash card displays correctly | ✅ PASS | Card displays | | 10.7 | Hash fields table shows all comparison fields | ✅ PASS | All fields shown | | 10.8 | Match indicator: correct match shown | ✅ PASS | Match confirmed | | 10.9 | Match indicator: mismatch / fraud alert shown | ✅ PASS | Works | | 10.10 | Status badge renders correctly per state | ✅ PASS | Correct badges | | 10.11 | Cancel info displays when applicable | ✅ PASS | Shown when applicable | | 10.12 | Submit Hash button: submit on EVM when not yet submitted | ✅ PASS | Works | | 10.13 | Submit Hash button: submit on Terra when not yet submitted | ✅ PASS | Works | | 10.14 | Invalid hash: validation error shown (aria-invalid) | ✅ PASS | Validation error shown | | 10.15 | Recent verifications: last 5 from localStorage | ✅ PASS | Recent list shown | | 10.16 | Recent verification click navigates to ?hash= | ✅ PASS | Navigation works | Section totals: 16 PASS / 0 FAIL / 0 SKIP --- ## 11. Hash Monitor Section ( /verify ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 11.1 | Monitor table renders transfer hashes | ✅ PASS | Hashes listed | | 11.2 | Filter: All | ✅ PASS | Shows all | | 11.3 | Filter: Verified | ✅ PASS | Filters correctly | | 11.4 | Filter: Pending | ✅ PASS | Filters correctly | | 11.5 | Filter: Canceled | ✅ PASS | Filters correctly | | 11.6 | Filter: Fraudulent | ✅ PASS | Filters correctly | | 11.7 | Filter: Unknown | ✅ PASS | Filters correctly | | 11.8 | Filter counts update correctly | ✅ PASS | Counts accurate | | 11.9 | Pagination: First / Prev / Next / Last | ✅ PASS | Pagination works | | 11.10 | Fraudulent / canceled warning banner | ✅ PASS | Banner shown | | 11.11 | Row click navigates to ?hash=\<id\> | ✅ PASS | Navigation works | Section totals: 11 PASS / 0 FAIL / 0 SKIP --- ## 12. Settings Page — Chains Tab ( /settings ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 12.1 | Chains tab is accessible and active by default | ✅ PASS | Active by default | | 12.2 | Chain card per chain: name, chain ID, type | ✅ PASS | All info shown | | 12.3 | Chain card shows RPC / LCD URLs | ✅ PASS | URLs displayed | | 12.4 | Chain card shows explorer link | ✅ PASS | Explorer links work | | 12.5 | Tabs: keyboard navigation and aria roles work | ✅ PASS | Keyboard nav works | Section totals: 5 PASS / 0 FAIL / 0 SKIP --- ## 13. Settings Page — Tokens Tab ( /settings ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 13.1 | Tokens tab renders token list | ✅ PASS | Test A, Test B, Test Dec, LUNC listed | | 13.2 | Token card: symbol, verification status | ✅ PASS | Status shown per token | | 13.3 | Verify button per token works | ✅ PASS | Verification runs | | 13.4 | "Verify All" button works | ✅ PASS | All tokens verified | | 13.5 | Loading state during verification | ✅ PASS | Loading shown | | 13.6 | Error state on verification failure | ✅ PASS | LUNC shows 4 failures (expected — native token, not CW20) | Section totals: 6 PASS / 0 FAIL / 0 SKIP --- ## 14. Settings Page — Bridge Config Tab ( /settings ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 14.1 | Bridge Config tab renders chain config cards | ✅ PASS | Cards rendered | | 14.2 | Chain config card: Cl8y chain ID, network chain ID | ✅ PASS | IDs shown | | 14.3 | Chain config card: cancel window, fee, fee collector, admin | ✅ PASS | All fields shown | | 14.4 | Expandable sections: Operators, Cancelers, Tokens | ✅ PASS | Expandable sections work | | 14.5 | Token row: min/max, withdraw rate limit, destinations | ✅ PASS | All info displayed | | 14.6 | Withdraw rate limit countdown displays correctly | ✅ PASS | Countdown shown when applicable | Section totals: 6 PASS / 0 FAIL / 0 SKIP --- ## 15. Settings Page — Faucet Tab ( /settings ) | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 15.1 | Faucet tab renders test token list (Test A, Test B, Test Dec) | ✅ PASS | All 3 test tokens listed | | 15.2 | Per-chain balance display | ✅ PASS | Balances per chain shown | | 15.3 | EVM faucet: chain switch prompt when on wrong chain | ✅ PASS | Prompt shown | | 15.4 | EVM faucet: claim button works | ✅ PASS | Claim succeeds | | 15.5 | EVM faucet: cooldown timer after claim | ✅ PASS | Cooldown shown | | 15.6 | Terra faucet: claim button works | ✅ PASS | Claim succeeds | | 15.7 | Terra faucet: cooldown timer after claim | ✅ PASS | Cooldown shown | | 15.8 | Terra faucet: "No LUNC for gas" warning when applicable | ✅ PASS | Warning shown | Section totals: 8 PASS / 0 FAIL / 0 SKIP --- ## 16. Responsive / Mobile | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 16.1 | Small screens (\< 375px): layout renders without breakage | ✅ PASS | No breakage | | 16.2 | Medium screens (375–768px): layout adapts correctly | ✅ PASS | Adapts correctly | | 16.3 | Tablet screens (768–1024px): layout adapts correctly | ✅ PASS | Adapts correctly | | 16.4 | Desktop (\> 1024px): full layout renders | ✅ PASS | Full layout | | 16.5 | Mobile navigation usability (tap targets, spacing) | ✅ PASS | Usable | | 16.6 | Wallet modal usability on mobile | ✅ PASS | Modal fits screen | | 16.7 | Transfer form mobile usability (inputs, dropdowns) | ✅ PASS | Form usable | | 16.8 | No horizontal scroll on any page | ✅ PASS | No horizontal scroll | | 16.9 | Touch targets ≥ 44px on interactive elements | ✅ PASS | Targets adequate | | 16.10 | Chain/token selects usable on mobile | ✅ PASS | Selects work | | 16.11 | Hash verification page usable on mobile | ✅ PASS | Usable | | 16.12 | Settings tabs usable on mobile | ✅ PASS | Tabs work | Section totals: 12 PASS / 0 FAIL / 0 SKIP --- ## 17. Accessibility | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 17.1 | Focus styles visible on all interactive elements | ✅ PASS | Focus styles visible | | 17.2 | Modals: role="dialog", aria-modal, focus trap | ✅ PASS | Aria attributes present | | 17.3 | Tabs: role="tablist" / role="tab" / aria-selected | ✅ PASS | Correct roles | | 17.4 | Comboboxes: role="combobox", aria-expanded, aria-haspopup | ✅ PASS | Correct attributes | | 17.5 | Status indicators: role="status", aria-label | ✅ PASS | Status roles present | | 17.6 | Buttons have accessible labels | ✅ PASS | Labels present | | 17.7 | Decorative elements use aria-hidden | ✅ PASS | Aria-hidden applied | | 17.8 | Keyboard-only navigation through all interactive flows | ✅ PASS | Tab navigation works | Section totals: 8 PASS / 0 FAIL / 0 SKIP --- ## 18. Error & Edge Cases | \# | Test Case | Result | Notes | |----|-----------|--------|-------| | 18.1 | Disconnect EVM wallet mid-transfer: graceful error | ✅ PASS | Transfer continues on-chain, status page tracks | | 18.2 | Disconnect Terra wallet mid-transfer: graceful error | ✅ PASS | Transfer continues | | 18.3 | Reject signing in wallet: error shown, form recoverable | ✅ PASS | Error shown, form recoverable | | 18.4 | Invalid inputs: form prevents submission | ✅ PASS | Validation prevents submission | | 18.5 | Network switch during transfer: handled gracefully | ✅ PASS | Handled | | 18.6 | Refresh page during transfer: state preserved | ✅ PASS | Status preserved from localStorage | | 18.7 | Slow / failed RPC: timeout or error shown | ✅ PASS | Error shown | | 18.8 | localStorage cleared: app handles missing data gracefully | ✅ PASS | Handles gracefully | | 18.9 | Multiple tabs open: no state conflicts | ✅ PASS | No conflicts | Section totals: 9 PASS / 0 FAIL / 0 SKIP --- ## Devices Tested | Device | OS / Browser | Wallets Tested | |--------|--------------|----------------| | Desktop PC | Windows / Chrome (latest) | MetaMask, Rabby, Coinbase, Keplr, Leap, LuncDash | | Android Phone | Android / MetaMask in-app browser | MetaMask (WalletConnect QR), LuncDash | --- ## Bugs Found | Issue # | Title | Severity | Section | |---------|-------|----------|---------| | #56 | Leap wallet connection does nothing — no popup or error | Medium | 3\. Wallet Connection Terra | --- ## Grand Totals | Result | Count | |--------|-------| | ✅ PASS | 177 | | ❌ FAIL | 1 | | ⏭️ SKIP | 11 | | Total test cases | 189 | --- ## Additional Notes * LUNC token verification shows 4 failures on Settings → Tokens tab — this is expected behavior as LUNC is a native token (uluna), not a CW20 contract, so cross-chain destination mappings are not configured for it. * All 3 test tokens (Test A, Test B, Test Dec) verify successfully across all chains. * Bridge #44 (countdown timer N/A) and #47 (pending hash recheck) verified and closed during this session. * #52 (wallet disconnect button) and #46 (hash monitor scroll) also verified and closed. * Transfer tested during QA: BSC→Terra (hash: 0x17eac47d...) — completed successfully including disconnect-both-wallets-mid-transfer edge case. * Rate limit countdown correctly shows N/A when destination chain has used = 0 (no active rate limit window) and shows countdown when used \> 0. Confirmed with on-chain data.
Brouie commented 2026-03-13 04:18:27 +00:00 (Migrated from gitlab.com)

Bridge QA pass complete. 177 PASS / 1 FAIL / 11 SKIP. One bug filed: #56 (Leap wallet connection). Ready for CL8Y cross-chain setup. @PlasticDigits

Bridge QA pass complete. 177 PASS / 1 FAIL / 11 SKIP. One bug filed: #56 (Leap wallet connection). Ready for CL8Y cross-chain setup. @PlasticDigits
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-03-13 06:45:01 +00:00
PlasticDigits commented 2026-03-13 06:46:25 +00:00 (Migrated from gitlab.com)

Reviewed. Note that terrastation is popular so needs to be setup

Reviewed. Note that terrastation is popular so needs to be setup
Brouie commented 2026-03-14 00:40:02 +00:00 (Migrated from gitlab.com)

Update: #56 (Leap wallet) now verified fixed on b28e30d. Bridge QA pass is now 178 PASS / 0 FAIL / 11 SKIP. Ready for CL8Y cross-chain setup.

Update: #56 (Leap wallet) now verified fixed on b28e30d. Bridge QA pass is now 178 PASS / 0 FAIL / 11 SKIP. Ready for CL8Y cross-chain setup.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-bridge-monorepo#55
No description provided.