Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 33 additions & 7 deletions tests/e2e/agenda-tela-do-produto.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,16 +173,42 @@ test.describe("a Agenda como o dono do produto a usa", () => {
).toHaveAttribute("aria-pressed", "true");
}

// A régua do agora só existe quando o instante cabe na faixa desenhada
// (07h–21h). Fora dela a ausência é CORRETA, e exigir presença faria a spec
// ficar vermelha de madrugada — que é o defeito que este repo já pagou nos
// A régua do agora só existe quando o instante cabe na faixa desenhada.
// Fora dela a ausência é CORRETA, e exigir presença faria a spec ficar
// vermelha de madrugada — que é o defeito que este repo já pagou nos
// invariantes de turno.
const hora = new Date().getHours();
//
// ⚠️ A FAIXA É CALCULADA COMO O COMPONENTE CALCULA, e não "7 a 21".
//
// `GradeDaAgenda.tsx` desenha quando
// `0 <= (hora - 7) * 60 + minuto <= (21 - 7 + 1) * 60`, ou seja até as
// **22:00:59** — o limite superior é `<= 900`, não `< 900`. A versão
// anterior desta spec comparava `hora >= 7 && hora <= 21`, e as duas réguas
// discordavam numa janela de UM MINUTO por dia: às 22:00 o componente ainda
// desenha e a spec exigia ausência.
//
// Um minuto em 1440 parece desprezível até acontecer. Aconteceu em
// 11/09/2026, em DOIS PRs de contribuidores diferentes, cujos `e2e`
// começaram às `22:00:12` e `22:00:24` — os dois ficaram vermelhos por um
// defeito que não era deles, num arquivo que eles não tocaram.
//
// A régua aqui passou a ser a MESMA conta do componente. Duplicar a regra
// continua sendo duplicação; o que muda é que agora ela duplica o que o
// componente faz, em vez de uma aproximação dele.
const agora = new Date();
const minutosDesdeOTopo = (agora.getHours() - 7) * 60 + agora.getMinutes();
const dentroDaFaixa = minutosDesdeOTopo >= 0 && minutosDesdeOTopo <= (21 - 7 + 1) * 60;
const regua = page.getByTestId("regua-do-agora");
if (hora >= 7 && hora <= 21) {
await expect(regua, "dentro da faixa 07h–21h e sem régua do agora").toBeVisible();
if (dentroDaFaixa) {
await expect(
regua,
`dentro da faixa desenhada (${agora.getHours()}h${String(agora.getMinutes()).padStart(2, "0")}) e sem régua do agora`,
).toBeVisible();
} else {
await expect(regua, "fora da faixa e a régua apareceu mesmo assim").toHaveCount(0);
await expect(
regua,
`fora da faixa (${agora.getHours()}h${String(agora.getMinutes()).padStart(2, "0")}) e a régua apareceu mesmo assim`,
).toHaveCount(0);
}
});

Expand Down
Loading