feat(cases): prova certa por serviço, páginas internas com trabalho no topo
Diagnóstico sem case que não cabe; desktop com o GCC Installer como projeto próprio; IoT com o Twins Lab e a nota da Apolo. Mosaico de pôsteres em /servicos e /cases, faixa baixa em uma coluna no currículo, privacidade e laboratório; Laboratório como lista compacta; SEV começando por catálogo, pedido no WhatsApp e painel; Joinville e SC nos títulos; imagens do LCP com fetchPriority e sizes reais; pré-carregamento só no hover; 404 com Open Graph próprio.
This commit is contained in:
1 parent
7b633f0f4a
commit
de6af74a0c
37 files changed
+1062
-254
No files matched your search
@@ -0,0 +1,33 @@
|
||||
import { caseStudies, servicePages, siteUrl } from "@/lib/site-content";
|
||||
import sitemap from "./sitemap";
|
||||
|
||||
/** O mapa do site lista a home, as páginas fixas, cada serviço e cada case, sem repetir endereço. */
|
||||
describe("sitemap", () => {
|
||||
const urls = sitemap().map((entry) => entry.url);
|
||||
|
||||
it("lists the fixed pages, every service and every case, once each", () => {
|
||||
expect(urls).toEqual(
|
||||
expect.arrayContaining([
|
||||
siteUrl,
|
||||
`${siteUrl}/curriculo`,
|
||||
`${siteUrl}/privacidade`,
|
||||
`${siteUrl}/servicos`,
|
||||
`${siteUrl}/cases`,
|
||||
`${siteUrl}/ia`,
|
||||
...servicePages.map(({ slug }) => `${siteUrl}/servicos/${slug}`),
|
||||
...caseStudies.map(({ id }) => `${siteUrl}/cases/${id}`),
|
||||
]),
|
||||
);
|
||||
expect(new Set(urls).size).toBe(urls.length);
|
||||
expect(urls).toHaveLength(6 + servicePages.length + caseStudies.length);
|
||||
});
|
||||
|
||||
it("never lists the 404 page", () => {
|
||||
expect(urls.some((url) => /not-found|nada/.test(url))).toBe(false);
|
||||
});
|
||||
|
||||
it("gives every entry the same fixed date, so the sitemap is equal on every build", () => {
|
||||
const dates = sitemap().map((entry) => String(entry.lastModified));
|
||||
expect(new Set(dates).size).toBe(1);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user