fix(home): oferta leva ao formulário, ofertas logo depois da vitrine
O botão das ofertas rola até o contato com o tipo marcado e não quebra mais as âncoras; ofertas com o que você recebe e primeiro passo, logo depois da vitrine; bloco de IA fora da home; cartão largo da SEV no hero do celular; separador da faixa de clientes só entre itens; favicon de 13 para 1,8 KB; pré-carregamento só no hover e nunca de /#... fora da home; X do menu e cabeçalho opaco; WhatsApp com "o case"; /ia com 3 passos e modelo de relatório ilustrativo; Sobre alinhado ao currículo; CSP Report-Only com os domínios do Ads.
This commit is contained in:
1 parent
fc44a69fb3
commit
9e2d65a926
51 files changed
+1730
-420
No files matched your search
@@ -0,0 +1,63 @@
|
||||
import { fireEvent, render, screen } from "@testing-library/react";
|
||||
import type HoverPrefetchLinkType from "./HoverPrefetchLink";
|
||||
|
||||
/**
|
||||
* Caminho-base de HoverPrefetchLink que só existe com next/navigation sem `usePathname` (os testes que trocam o
|
||||
* módulo por um dublê só com `notFound`): o `navigation.usePathname ?? (() => null)` do módulo cai no `null` e
|
||||
* nada muda no pré-carregamento, nem para uma âncora da home vista de outra página.
|
||||
* Arquivo à parte: o módulo é carregado isolado, depois de registrar o dublê, e não pode ter sido importado antes.
|
||||
*/
|
||||
|
||||
jest.mock("next/link", () => ({
|
||||
__esModule: true,
|
||||
default: ({
|
||||
children,
|
||||
prefetch,
|
||||
...props
|
||||
}: { children?: React.ReactNode; prefetch?: boolean | null } & Record<
|
||||
string,
|
||||
unknown
|
||||
>) => (
|
||||
<a data-prefetch={String(prefetch)} {...props}>
|
||||
{children}
|
||||
</a>
|
||||
),
|
||||
}));
|
||||
|
||||
function loadWithoutUsePathname() {
|
||||
const React = jest.requireActual<typeof import("react")>("react");
|
||||
let loaded: typeof HoverPrefetchLinkType | undefined;
|
||||
jest.isolateModules(() => {
|
||||
// o mesmo React do teste, para os hooks do componente isolado
|
||||
jest.doMock("react", () => React);
|
||||
jest.doMock("next/navigation", () => ({ notFound: jest.fn() }));
|
||||
loaded = require("./HoverPrefetchLink").default;
|
||||
});
|
||||
jest.dontMock("react");
|
||||
jest.dontMock("next/navigation");
|
||||
if (!loaded) throw new Error("o módulo isolado não carregou");
|
||||
return loaded;
|
||||
}
|
||||
|
||||
describe("HoverPrefetchLink sem usePathname em next/navigation", () => {
|
||||
it("path: unknown page -> a home anchor waits for the first touch and then prefetches as usual", () => {
|
||||
const Isolated = loadWithoutUsePathname();
|
||||
render(<Isolated href="/#contact">Ir</Isolated>);
|
||||
const link = screen.getByRole("link", { name: "Ir" });
|
||||
expect(link).toHaveAttribute("data-prefetch", "false");
|
||||
|
||||
fireEvent.mouseEnter(link);
|
||||
|
||||
expect(link).toHaveAttribute("data-prefetch", "null");
|
||||
});
|
||||
|
||||
it("path: unknown page -> a link to another page behaves the same", () => {
|
||||
const Isolated = loadWithoutUsePathname();
|
||||
render(<Isolated href="/cases">Ir</Isolated>);
|
||||
const link = screen.getByRole("link", { name: "Ir" });
|
||||
|
||||
fireEvent.focus(link);
|
||||
|
||||
expect(link).toHaveAttribute("data-prefetch", "null");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user