# EIP-6963 Multi-Wallet > [🇬🇧 English](./eip-6963.md) • [🇯🇵 日本語](../../ja/concepts/eip-6963.md) ## TL;DR kiwa supports EIP-6963 (Multi Injected Provider Discovery), injecting multiple wallets into a single page so wagmi v2 / RainbowKit v2 wallet pickers can detect them correctly. ## Why Real dApp users juggle MetaMask, Rabby, Coinbase Wallet, Trust, and others. Wallet picker UI testing is critical. Reproducing EIP-6963 announce/request events lets you verify the wallet-picker selection flow end-to-end. ## How ```mermaid sequenceDiagram participant T as test participant P as Page participant W1 as Wallet A participant W2 as Wallet B participant D as dApp T->>P: test.use wallets [A, B] P->>W1: eip6963:announceProvider P->>W2: eip6963:announceProvider D->>P: eip6963:requestProvider P->>D: announce A + B T->>P: pick Wallet B from picker P->>W2: connect ``` ## Example ~~~ts import { dappE2eTest } from '@kiwa-test/dapp'; const test = dappE2eTest.extend({}); test.use({ wallets: [[ { name: 'MetaMask', rdns: 'io.metamask', icon: 'data:,', privateKey: '0xac09...' }, { name: 'Rabby', rdns: 'io.rabby', icon: 'data:,', privateKey: '0x59c6...' }, ]], } as never); test('multi-wallet picker', async ({ page, dappE2e }) => { await dappE2e.wallets!['io.rabby'].connect(); }); ~~~ ## Related - [Fixture design](./fixture.md) - [Cookbook: Multi-Wallet test](../cookbook/multi-wallet.md)