import React from "react"; import "@testing-library/jest-dom"; import { fireEvent, render, screen, within } from "@testing-library/react"; import { Alert, Button, ThemeProvider } from "@mui/material"; import { getTheme } from "./theme"; import { PageHeader, PageSection } from "./layout/PageLayout"; import ViewStateNotice from "./components/ViewStateNotice"; import { I18nProvider } from "./i18n/I18nProvider"; test("[PRES-E08] page and nested section headings retain full names and independent actions", () => { const save = jest.fn(); const manage = jest.fn(); render( Lagre varslingsinnstillinger} /> Administrer tilkoblede kontoer}> ); expect(screen.getAllByRole("heading", { level: 1 })).toHaveLength(1); expect(screen.getByRole("heading", { level: 1 })).toHaveTextContent("Innstillinger for oppfølginger og jobbpreferanser"); const section = screen.getByRole("region", { name: "Tilkoblede kontoer" }); expect(within(section).getByRole("heading", { level: 2 })).toHaveTextContent("Tilkoblede kontoer"); expect(within(section).getByRole("heading", { level: 3 })).toHaveTextContent("Kontotilgang"); expect(section).not.toHaveAttribute("tabindex"); fireEvent.click(screen.getByRole("button", { name: "Lagre varslingsinnstillinger" })); fireEvent.click(within(section).getByRole("button", { name: "Administrer tilkoblede kontoer" })); fireEvent.click(screen.getByRole("button", { name: "Utilgjengelig" })); expect(save).toHaveBeenCalledTimes(1); expect(manage).toHaveBeenCalledTimes(1); }); test("[PRES-E08] section composition retains loaded, error/retry and empty child semantics", () => { const retry = jest.fn(); const content = (loading: boolean, failed: boolean) => {!loading && !failed ? No notifications. : null} ; const view = render(content(true, false)); expect(screen.getByRole("status")).toHaveTextContent("Loading"); view.rerender(content(false, true)); fireEvent.click(screen.getByRole("button", { name: "Retry" })); expect(retry).toHaveBeenCalledTimes(1); expect(screen.getByRole("alert")).toHaveTextContent("Could not load"); view.rerender(content(false, false)); expect(screen.getByRole("status")).toHaveTextContent("Content loaded."); expect(screen.getByRole("alert")).toHaveTextContent("No notifications."); expect(screen.getByRole("region", { name: "Notifications" })).not.toHaveAttribute("tabindex"); });