teqo-backup/docs/changelog/2026-08-24-ops83.md

2.4 KiB
Raw Permalink Blame History

OPS83 — desbloquear deploy: estabilizar os e2e do verify sem reduzir cobertura; AgendaFeed volta a rodar em prod (2026-08-24): o deploy manual (deploy.yml) estava bloqueado pelo job verify (run #15: 1 failed + 7 flaky + 2 skipped + 1 did-not-run). Causas estudadas e corrigidas por reescrita de specs (settle/poll/hermeticidade/escopo de locator) — nenhum test.flaky, nenhuma remoção de cobertura, nenhuma mudança de workers/retries, zero mudança de app/contrato/acesso: (1) kill switch da home — o poll de server-HTML convergia enquanto a seção renderizada ainda mostrava o link do Instagram; passou a pollar o DOM rendered escopado a [data-home-section="contents"] (expectSectionCardCount, usado também no sibling de fallback IG); (2) section-hidden — o revalidate tag=posts era engolido por .catch; agora o POST é assertado e a convergência ganha orçamento explícito (não bump cego); (3) SavedFilters strict-mode — o link 'Municípios' agora é escopado ao container [data-slot="sidebar"] (2º match = bottom nav, #669 absorvida); (4) People — gate S: + settle do stream antes de asserir rows (testes 15, pós-search e C118); (5) Municípios:642 — poll DOM da liderança específica em vez de .first() no stream; (6) Municípios:386 B176 — settleMunicipalityStream entre remove-chip e o próximo clique de opção; (7) Newsletter:222 — toHaveURL(/#novidades/) sem $ (o ?e2e=scroll-… é legítimo); (8) DemandVisibility:62 — .goto com cache-buster para a asserção de 404 do peer (a cache RSC servia a demanda acessível após a troca de cookie). AgendaFeed (Decision B): os 2 test.skip(isProdMode) foram removidos — o build e2e agora inlina NEXT_PUBLIC_SITE_URL=https://feed.e2e.teqo.test (.test TLD, passa o fail-closed requireProductionDNSOrigin), o diálogo gera o link canônico e os testes asserem o path e buscam via campaign.baseURL + path; confirmado que share usa window.location.origin, webauthn é desacoplado via request-host e webhooks usam campaign.baseURL — nenhum outro e2e depende do origin. Escopo config: playwright.config.ts (default do webServer env em prod), deploy.yml e ci-pr.yml (env do build-for-e2e + do passo de testes). Verificação: specs afetadas verdes em dev mode (2×) e AgendaFeed verde em E2E_PROD=1; pnpm lint/tsc/format:check/knip/check:cycles/test:unit (2443) verdes; PR em main com auto-merge.