// @vitest-environment jsdom import { afterEach, describe, expect, it, vi } from "vitest"; import { cleanup, fireEvent, render, screen } from "@testing-library/react"; import BotonFlotante from "../../src/components/BotonFlotante.jsx"; afterEach(cleanup); describe("BotonFlotante", () => { it("expone su propósito con aria-label (accesible sin hover)", () => { render( {}} />); expect(screen.getByRole("button", { name: "Añade un nuevo local al directorio" })).toBeTruthy(); }); it("tooltip oculto por defecto y visible al recibir foco", () => { render( {}} />); expect(screen.queryByRole("tooltip")).toBeNull(); fireEvent.focus(screen.getByRole("button")); expect(screen.getByRole("tooltip").textContent).toBe("Añade un nuevo local al directorio"); fireEvent.blur(screen.getByRole("button")); expect(screen.queryByRole("tooltip")).toBeNull(); }); it("tooltip también en hover", () => { render( {}} />); fireEvent.mouseEnter(screen.getByRole("button")); expect(screen.getByRole("tooltip")).toBeTruthy(); fireEvent.mouseLeave(screen.getByRole("button")); expect(screen.queryByRole("tooltip")).toBeNull(); }); it("al pulsarlo abre la pasarela (onClick)", () => { const onClick = vi.fn(); render(); fireEvent.click(screen.getByRole("button")); expect(onClick).toHaveBeenCalledTimes(1); }); });