diff --git a/src/context/SorokitProvider.test.tsx b/src/context/SorokitProvider.test.tsx
index d9a2316..629888c 100644
--- a/src/context/SorokitProvider.test.tsx
+++ b/src/context/SorokitProvider.test.tsx
@@ -131,6 +131,31 @@ describe("SorokitProvider", () => {
expect(mockClient.network.switchNetwork).toHaveBeenCalledWith("testnet");
});
+ it("switchNetwork clears stale address, account, and balances from the previous network (#523)", async () => {
+ renderWithProvider(, { client: mockClient });
+
+ await act(async () => {
+ fireEvent.click(screen.getByText("Connect"));
+ });
+
+ expect(screen.getByTestId("address")).toHaveTextContent("GABC");
+ await waitFor(() => {
+ expect(screen.getByTestId("account")).toHaveTextContent("100");
+ expect(screen.getByTestId("balances")).toHaveTextContent("1");
+ });
+
+ // Switching networks without this reset would leave the previous
+ // network's address/account/balances on screen — e.g. showing mainnet
+ // balances while the UI reports the user is now on testnet.
+ await act(async () => {
+ fireEvent.click(screen.getByText("Switch"));
+ });
+
+ expect(screen.getByTestId("address")).toHaveTextContent("none");
+ expect(screen.getByTestId("account")).toHaveTextContent("none");
+ expect(screen.getByTestId("balances")).toHaveTextContent("0");
+ });
+
it("memoizes the context value across parent re-renders", async () => {
const Wrapper = ({ client }: { client: ReturnType }) => {
const [, setTick] = useState(0);