diff --git a/apps/web/src/__tests__/components/VaultPanel.test.tsx b/apps/web/src/__tests__/components/VaultPanel.test.tsx index 4785f26b..0e184212 100644 --- a/apps/web/src/__tests__/components/VaultPanel.test.tsx +++ b/apps/web/src/__tests__/components/VaultPanel.test.tsx @@ -99,10 +99,10 @@ describe("VaultPanel — position load error", () => { const amountInput = screen.getByPlaceholderText("0.00"); fireEvent.change(amountInput, { target: { value: "10" } }); - const depositButton = screen - .getByText("vaultPanel.deposit") - .closest("button"); - expect(depositButton?.disabled).toBe(false); + const depositButton = screen.getByTestId( + "vault-deposit-submit" + ) as HTMLButtonElement; + expect(depositButton.disabled).toBe(false); }); it("does not show the error message once positions load successfully", () => { @@ -131,6 +131,19 @@ describe("VaultPanel — disconnected", () => { }); }); +describe("VaultPanel — tab switcher", () => { + it("translates the tab labels instead of rendering raw tab ids", () => { + render(); + + expect(screen.getByTestId("vault-tab-deposit").textContent).toBe( + "vaultPanel.deposit" + ); + expect(screen.getByTestId("vault-tab-withdraw").textContent).toBe( + "vaultPanel.withdraw" + ); + }); +}); + describe("VaultPanel — deposit", () => { it("calls deposit with the entered amount and clears the field on success", async () => { render(); @@ -138,7 +151,7 @@ describe("VaultPanel — deposit", () => { fireEvent.change(screen.getByPlaceholderText("0.00"), { target: { value: "25" }, }); - fireEvent.click(screen.getByText("vaultPanel.deposit")); + fireEvent.click(screen.getByTestId("vault-deposit-submit")); await waitFor(() => { expect(deposit).toHaveBeenCalledWith("25", "meridian-usdc", "USDC"); @@ -154,14 +167,11 @@ describe("VaultPanel — withdraw", () => { mockPositions({ isError: false, data: [POSITION] }); render(); - // The tab switcher renders a raw capitalized label ("Withdraw"), distinct - // from the action button below it, which renders the translated - // "vaultPanel.withdraw" key. - fireEvent.click(screen.getByText("Withdraw")); + fireEvent.click(screen.getByTestId("vault-tab-withdraw")); fireEvent.change(screen.getByPlaceholderText("0.00"), { target: { value: "10" }, }); - fireEvent.click(screen.getByText("vaultPanel.withdraw")); + fireEvent.click(screen.getByTestId("vault-withdraw-submit")); await waitFor(() => { expect(withdraw).toHaveBeenCalledWith("10", "meridian-usdc", "USDC"); @@ -172,7 +182,7 @@ describe("VaultPanel — withdraw", () => { mockPositions({ isError: false, data: [] }); render(); - fireEvent.click(screen.getByText("Withdraw")); + fireEvent.click(screen.getByTestId("vault-tab-withdraw")); expect(screen.getByText("vaultPanel.position")).toBeDefined(); }); }); diff --git a/apps/web/src/components/dashboard/VaultPanel.tsx b/apps/web/src/components/dashboard/VaultPanel.tsx index 8c80c6ba..f2173866 100644 --- a/apps/web/src/components/dashboard/VaultPanel.tsx +++ b/apps/web/src/components/dashboard/VaultPanel.tsx @@ -195,18 +195,18 @@ export function VaultPanel() { {/* Tab switcher */} {connected && (
- {(["deposit", "withdraw"] as Tab[]).map((t) => ( + {(["deposit", "withdraw"] as Tab[]).map((tabId) => ( ))}