feat(home): prova no topo, contato sem atrito e conversão medida

Home mais curta (hero, vitrine de clientes, sobre, serviços, IA resumida, depoimentos e contato), faixa de clientes e telas reais no hero, sem números do GitHub. Barra de cookies fina, WhatsApp fixo no celular, formulário com e-mail opcional e alternativa por e-mail, página /ia, eventos de e-mail, redes e currículo e conversão do Ads opcional por variável. Rodapé em 3 colunas. Remove componentes órfãos (LighthouseMetrics, Skills, Experience, contagem do GitHub).
This commit is contained in:
Evandro Fonseca Junior committed 2026-10-14 03:32:23 -03:00
1 parent 6e1022b58c
commit 8d07b8c6bb
60 files changed
+4392 -2124

No files matched your search

+48
View File
@@ -0,0 +1,48 @@
import { render, screen } from "@testing-library/react";
import type { Testimonial } from "@/lib/proof";
import { testimonials } from "@/lib/proof";
import Testimonials from "./Testimonials";
const item: Testimonial = {
quote: "Entregou no prazo combinado.",
name: "Maria Souza",
role: "Sócia",
company: "Empresa de Teste",
projectId: "lavacao-047",
};
it("renders nothing without testimonials", () => {
const { container } = render(<Testimonials items={[]} />);
expect(container).toBeEmptyDOMElement();
const withoutProp = render(<Testimonials />);
expect(withoutProp.container).toBeEmptyDOMElement();
});
it("ships with no testimonial until a real, authorized one is added", () => {
expect(testimonials).toEqual([]);
});
it("shows the quote, who said it and a link to the case", () => {
render(<Testimonials items={[item]} />);
expect(
screen.getByRole("heading", { name: "O que dizem os clientes." }),
).toBeInTheDocument();
expect(
screen.getByText("“Entregou no prazo combinado.”"),
).toBeInTheDocument();
expect(screen.getByText("Maria Souza")).toBeInTheDocument();
expect(screen.getByText("Sócia, Empresa de Teste")).toBeInTheDocument();
expect(screen.getByRole("link", { name: "Ver o case" })).toHaveAttribute(
"href",
"/cases/lavacao-047",
);
});
it("falls back to initials without a photo and has no case link without a project", () => {
render(<Testimonials items={[{ ...item, projectId: undefined }]} />);
expect(screen.getByText("MS")).toBeInTheDocument();
expect(screen.queryByRole("link", { name: "Ver o case" })).toBeNull();
});