import { cleanup, fireEvent, render, screen } from "@testing-library/react"; import { afterEach, expect, it, vi } from "vitest"; vi.mock("@termix/plugin-sdk/frontend", () => ({ useTranslation: () => { throw Error("No plugin scope in the global toaster"); }, })); import { DownloadProgressToast } from "../../src/frontend/components/DownloadProgressToast"; import { TransferProgressToast } from "../../src/frontend/components/TransferProgressToast"; import { LocalTransferProgressToast } from "../../src/frontend/components/LocalTransferProgressToast"; afterEach(cleanup); const t = (key: string) => key; it("renders download progress outside plugin scope", () => { render( , ); expect(screen.getByRole("progressbar").getAttribute("aria-valuenow")).toBe( "50", ); }); it("renders host transfer progress outside plugin scope", () => { render( , ); expect(screen.getByRole("progressbar")).toBeTruthy(); }); it("preserves cancellation on local transfers outside plugin scope", () => { const cancel = vi.fn(); render( , ); fireEvent.click(screen.getByRole("button")); expect(cancel).toHaveBeenCalledOnce(); });