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
@@ -44,6 +44,28 @@ describe("next.config headers()", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("path: any environment -> the policy (still Report-Only) allows the domains the Google Ads tag uses after consent, in connect-src and img-src", async () => {
|
||||
const headers = await siteHeaders();
|
||||
const policy = header(headers, "Content-Security-Policy-Report-Only") ?? "";
|
||||
const directive = (name: string) =>
|
||||
policy.split("; ").find((part) => part.startsWith(`${name} `)) ?? "";
|
||||
|
||||
for (const name of ["connect-src", "img-src"]) {
|
||||
for (const host of [
|
||||
"https://pagead2.googlesyndication.com",
|
||||
"https://googleads.g.doubleclick.net",
|
||||
"https://www.googleadservices.com",
|
||||
]) {
|
||||
expect(directive(name)).toContain(host);
|
||||
}
|
||||
// o que já estava liberado segue liberado
|
||||
expect(directive(name)).toContain("https://*.google-analytics.com");
|
||||
}
|
||||
// nada de curinga aberto e nada enforçado: a política continua só em Report-Only
|
||||
expect(policy).not.toMatch(/\* |https:(?!\/)/);
|
||||
expect(header(headers, "Content-Security-Policy")).toBeUndefined();
|
||||
});
|
||||
|
||||
it("path: any environment -> the video rule keeps the long cache", async () => {
|
||||
const rules = (await nextConfig.headers?.()) ?? [];
|
||||
const videos = rules.find(({ source }) => source === "/videos/:path*");
|
||||
|
||||
Reference in new issue
Block a user