Spaces:
Build error
Build error
import { describe, it, expect, afterEach, vi } from "vitest"; | |
import { screen, render } from "@testing-library/react"; | |
import React from "react"; | |
// Mock modules before importing the component | |
vi.mock("react-router", async () => { | |
const actual = await vi.importActual("react-router"); | |
return { | |
...(actual as object), | |
useParams: () => ({ conversationId: "test-conversation-id" }), | |
}; | |
}); | |
vi.mock("#/context/conversation-context", () => ({ | |
useConversation: () => ({ conversationId: "test-conversation-id" }), | |
ConversationProvider: ({ children }: { children: React.ReactNode }) => children, | |
})); | |
vi.mock("react-i18next", async () => { | |
const actual = await vi.importActual("react-i18next"); | |
return { | |
...(actual as object), | |
useTranslation: () => ({ | |
t: (key: string) => key, | |
i18n: { | |
changeLanguage: () => new Promise(() => {}), | |
}, | |
}), | |
}; | |
}); | |
// Mock redux | |
const mockDispatch = vi.fn(); | |
let mockBrowserState = { | |
url: "https://example.com", | |
screenshotSrc: "", | |
}; | |
vi.mock("react-redux", async () => { | |
const actual = await vi.importActual("react-redux"); | |
return { | |
...actual, | |
useDispatch: () => mockDispatch, | |
useSelector: () => mockBrowserState, | |
}; | |
}); | |
// Import the component after all mocks are set up | |
import { BrowserPanel } from "#/components/features/browser/browser"; | |
describe("Browser", () => { | |
afterEach(() => { | |
vi.clearAllMocks(); | |
// Reset the mock state | |
mockBrowserState = { | |
url: "https://example.com", | |
screenshotSrc: "", | |
}; | |
}); | |
it("renders a message if no screenshotSrc is provided", () => { | |
// Set the mock state for this test | |
mockBrowserState = { | |
url: "https://example.com", | |
screenshotSrc: "", | |
}; | |
render(<BrowserPanel />); | |
// i18n empty message key | |
expect(screen.getByText("BROWSER$NO_PAGE_LOADED")).toBeInTheDocument(); | |
}); | |
it("renders the url and a screenshot", () => { | |
// Set the mock state for this test | |
mockBrowserState = { | |
url: "https://example.com", | |
screenshotSrc: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN0uGvyHwAFCAJS091fQwAAAABJRU5ErkJggg==", | |
}; | |
render(<BrowserPanel />); | |
expect(screen.getByText("https://example.com")).toBeInTheDocument(); | |
expect(screen.getByAltText("BROWSER$SCREENSHOT_ALT")).toBeInTheDocument(); | |
}); | |
}); | |