1

Eu trataria os asserts semânticos como porta de entrada e o diff visual como uma segunda camada, não como alternativas. Primeiro provo que o cenário é o certo: rota, dados, roles, estados enabled/disabled e interação. Só depois comparo layout.

A tolerância deve nascer dos diffs observados no ambiente fixo, não de um número escolhido para fazer o CI passar. E concordo com o ponto do ale3xandr3lUsis: eu evitaria “mascarar agressivamente” como regra geral; mascara-se apenas o que é realmente não determinístico. Se preço, mensagem de erro ou CTA vivem mudando e entram na máscara, o teste perde justamente o sinal que deveria proteger.

No fim, DOM responde “a tela funciona no estado esperado?”; screenshot responde “a apresentação desse estado mudou?”. O contrato fica forte quando os dois falham por motivos diferentes e devolvem evidências separadas.

Carregando publicação patrocinada...