Files
amare/openspec/changes/archive/2026-08-10-remove-visual-regression/design.md

2.7 KiB

Context

A suíte browser contém uma camada exclusiva de comparação de pixels: um teste com baselines versionados, um trait para estabilizar capturas, exportação de diffs e configuração de CI para seeds e artefatos determinísticos. O restante da cobertura browser — smoke, acessibilidade, motion e fixtures de conteúdo — não depende dessa camada.

Goals / Non-Goals

Goals:

  • Remover integralmente a comparação de pixels, os baselines e a infraestrutura exclusiva de suporte.
  • Manter o job browser em FrankenPHP e suas verificações funcionais, de acessibilidade e motion.
  • Atualizar as fontes normativas e as specs ativas para que não exijam snapshots visuais.

Non-Goals:

  • Não substituir a comparação de pixels por outro serviço ou ferramenta de regressão visual.
  • Não remover VisualContentSeeder, fixtures JPEG, APP_FROZEN_NOW que tenham usos fora das capturas, screenshots documentais ou testes browser não relacionados.
  • Não alterar APIs públicas, rotas, conteúdo nem comportamentos de interface.

Decisions

  1. Eliminar a capability em vez de reduzir a matriz. Todos os requisitos de visual-regression serão removidos, pois o produto não terá mais comparação de pixels. Alternativa rejeitada: conservar apenas algumas telas, pois ainda manteria baselines e o custo operacional indesejado.
  2. Preservar diagnósticos gerais de browser. O CI manterá screenshots, logs e relatórios úteis a falhas funcionais; serão removidos apenas seed global, relógio congelado e artefatos específicos de baseline/diff. Alternativa rejeitada: retirar todos os diagnósticos, pois reduziria a capacidade de investigar falhas não visuais.
  3. Separar determinismo reutilizável da captura visual. VisualContentSeeder e APP_FROZEN_NOW permanecem quando usados por outros testes ou pela aplicação; somente as referências exclusivas a screenshot são excluídas. Alternativa rejeitada: remover os nomes por associação, pois quebraria fixtures e cenários existentes.

Risks / Trade-offs

  • [Uma mudança puramente visual deixa de bloquear CI] → acessibilidade, smoke, motion e revisão humana continuam no fluxo de qualidade.
  • [Remover preparação comum do job browser afeta testes restantes] → inspecionar usos de seed/relógio e executar a suíte browser contra FrankenPHP após a alteração.
  • [Uma spec ativa ainda reintroduz snapshots] → remover as menções no delta de enhance-public-motion antes da validação OpenSpec.

Migration Plan

Publicar a remoção junto com a atualização da documentação e do CI; não há migração de dados. O rollback é um revert do commit, restaurando os arquivos versionados e a configuração anterior.

Open Questions

Nenhuma.