browser.test.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { describe, it, expect, afterEach, vi } from "vitest";
  2. import * as router from "react-router";
  3. // Mock useParams before importing components
  4. vi.mock("react-router", async () => {
  5. const actual = await vi.importActual("react-router");
  6. return {
  7. ...actual as object,
  8. useParams: () => ({ conversationId: "test-conversation-id" }),
  9. };
  10. });
  11. // Mock i18next
  12. vi.mock("react-i18next", async () => {
  13. const actual = await vi.importActual("react-i18next");
  14. return {
  15. ...actual as object,
  16. useTranslation: () => ({
  17. t: (key: string) => key,
  18. i18n: {
  19. changeLanguage: () => new Promise(() => {}),
  20. },
  21. }),
  22. };
  23. });
  24. import { screen } from "@testing-library/react";
  25. import { renderWithProviders } from "../../test-utils";
  26. import { BrowserPanel } from "#/components/features/browser/browser";
  27. describe("Browser", () => {
  28. afterEach(() => {
  29. vi.clearAllMocks();
  30. });
  31. it("renders a message if no screenshotSrc is provided", () => {
  32. renderWithProviders(<BrowserPanel />, {
  33. preloadedState: {
  34. browser: {
  35. url: "https://example.com",
  36. screenshotSrc: "",
  37. updateCount: 0,
  38. },
  39. },
  40. });
  41. // i18n empty message key
  42. expect(screen.getByText("BROWSER$EMPTY_MESSAGE")).toBeInTheDocument();
  43. });
  44. it("renders the url and a screenshot", () => {
  45. renderWithProviders(<BrowserPanel />, {
  46. preloadedState: {
  47. browser: {
  48. url: "https://example.com",
  49. screenshotSrc:
  50. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN0uGvyHwAFCAJS091fQwAAAABJRU5ErkJggg==",
  51. updateCount: 0,
  52. },
  53. },
  54. });
  55. expect(screen.getByText("https://example.com")).toBeInTheDocument();
  56. expect(screen.getByAltText(/browser screenshot/i)).toBeInTheDocument();
  57. });
  58. });