import { act, fireEvent, render, screen, within } from "@testing-library/react"; import { getFeaturedProjects } from "@/lib/portfolio-data"; import { getShowcaseConfig, mobileFractionAt } from "@/lib/project-showcase"; import { ShowcaseProvider, useShowcaseOpen } from "./ShowcaseProvider"; /** * Caminhos-base de readMetadata (CC 3) e do efeito de `readyState` no ProjectLightbox (complemento de * ProjectLightbox.test.tsx): o vídeo que já chega com os metadados (cache, preload) não dispara `loadedmetadata` * depois de montado, então o efeito lê a duração e aplica o ponto pendente da troca de aparelho. * O que o teste principal já cobre: pronto na abertura sem ponto pendente; troca de aparelho com o evento. * Aqui: troca de aparelho com o vídeo novo JÁ pronto (o ponto pendente é aplicado sem evento algum), troca de * projeto com o vídeo novo já pronto (sem ponto pendente, o vídeo começa do zero), e vídeo ainda sem metadados. */ jest.mock("./ProjectLightboxLazy", () => ({ ProjectLightboxLazy: jest.requireActual("./ProjectLightbox").ProjectLightbox, })); jest.mock("@/app/hooks/useReducedMotion", () => ({ useReducedMotion: () => false, })); const DURATION = 30; const lavacao = getShowcaseConfig("lavacao-047"); const projects = getFeaturedProjects(null); /** O ponto de cada