Wallet connection is where most dApp user experience breaks happen. Teams spend weeks testing contract logic and minutes testing the wallet integration — then discover that MetaMask behaves differently on iOS Safari, or that WalletConnect sessions drop after 30 minutes of inactivity.
This guide covers how to test wallet flows systematically before mainnet launch.
What to test in wallet connection
Happy path connection across MetaMask browser extension, WalletConnect QR modal, and Coinbase Wallet. Disconnection and reconnection — including page reload with active session, manual disconnect, and wallet-initiated disconnect. Network switching: prompt display when user is on wrong chain, automatic switch request, user rejection of switch request.
Mobile-specific: MetaMask mobile browser, WalletConnect deep link on Android and iOS, hardware wallet via WalletConnect bridge. These paths break far more often than desktop Chrome.
Transaction flow testing
Each transaction type needs its own test cases: approval transactions (ERC-20 allowances), main contract calls (swap, stake, bridge), and rejection handling. Test what happens when a user rejects the transaction in their wallet — does your UI recover gracefully, or does it hang?
Gas estimation display is a common source of user confusion and support tickets. Test that your estimated gas is accurate and updates when network conditions change.
Automating wallet tests
Full E2E wallet automation is difficult because most wallets are external browser extensions or mobile apps. Practical approaches: use Playwright with MetaMask fixture setups for core happy paths, mock wallet providers for unit and integration tests, and reserve manual testing for cross-device and hardware wallet scenarios.
QaLock uses a combination of automated Playwright suites with injected test wallets and structured manual test plans for wallet-specific edge cases — giving teams documented coverage without 100% automation of inherently manual flows.
Want help implementing this for your product?
Book a free 30-minute QA audit — coverage report in 48 hours.