Files
portifolio-evandrodevbr/lib/next-config.test.ts
T
Evandro Fonseca Junior 9e2d65a926 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.
2026-10-14 19:14:47 -03:00

25 lines
1.0 KiB
TypeScript

import nextConfig from "../next.config";
describe("next.config", () => {
it("does not announce the framework in the X-Powered-By header", () => {
expect(nextConfig.poweredByHeader).toBe(false);
});
it("serves AVIF before WebP, because the browser takes the first format of the list it accepts", () => {
expect(nextConfig.images?.formats).toEqual(["image/avif", "image/webp"]);
});
it("leaves the image cache time to the framework default instead of revalidating every minute", () => {
expect(nextConfig.images).not.toHaveProperty("minimumCacheTTL");
});
it("keeps the CSP in Report-Only (Google Ads is allowed in it now, but the owner activates it later), never enforcing it by accident", async () => {
const rules = (await nextConfig.headers?.()) ?? [];
const site = rules.find(({ source }) => source === "/(.*)");
const names = site?.headers.map(({ key }) => key) ?? [];
expect(names).toContain("Content-Security-Policy-Report-Only");
expect(names).not.toContain("Content-Security-Policy");
});
});