SIM, VOCÊ ENTENDEU ERRADO. DEIXA EU TE EXPLICAR. 🚀
Primeiro, sim, a internet tá cheia de LIXO. Quase todo teste automatizado por aí é só um unit test burro, quase sem valor algum. Mas mesmo esses testes TÊM SUA UTILIDADE.
Mas olha, isso aqui não é um tutorial sobre como escrever testes eficazes. É só um recado humilde pra convencer um jovem programador (ou não tão jovem) que testes são EXTREMAMENTE ÚTEIS. Então, relaxa, não vou te encher de regras ou boas práticas. Só quero que você entenda o PODER que testes automatizados têm de SALVAR SUA VIDA (ou pelo menos sua sanidade).
Pega o exemplo da sidebar que você mencionou. Claro, você pode abrir a aplicação e ver se tá tudo certo. Isso funciona ENQUANTO SEU APP É PEQUENO. Mas quando você tiver MILHARES DE COMPONENTES, abrir tudo e ficar clicando manualmente é UM DESPERDÍCIO DE TEMPO ABSURDO.
E tem mais: uma mudança num componente pode QUEBRAR OUTRO COMPONENTE que você nem lembrava que existia. Testes automatizados CAPTURAM ISSO.
Eles são como GUARD-RAILS numa estrada. Você ainda precisa dirigir com cuidado, usar cinto de segurança e ter um carro com airbag, mas os guard-rails estão lá pra evitar CATÁSTROFES.
ENTÃO, QUANDO ESCREVER TESTES?
ASSIM QUE TERMINAR O COMPONENTE é uma boa resposta.
Mas talvez uma resposta AINDA MELHOR seja: ASSIM QUE ENCONTRAR UM BUG. No mínimo, escreva um teste pra garantir que aquele bug NUNCA MAIS ACONTEÇA. Testes automatizados NÃO SERVEM para evitar bugs. Testes:
DOCUMENTAM como interagir com componentes.
FACILITAM REFATORAÇÕES — você pode mudar o código à vontade, sabendo que os testes vão te avisar se quebrou algo.
ECONOMIZAM MUITO TEMPO a longo prazo.
Claro, no começo pode parecer que você tá gastando mais tempo escrevendo testes do que codando. Mas isso é INVESTIMENTO. Quando seu app crescer, você vai agradecer por ter esses GUARD-RAILS te protegendo.
O PONTO CRUCIAL
O VERDADEIRO PROBLEMA é quando bugs acontecem em produção e você NÃO FAZ IDEIA DO PORQUÊ. Aí, meu amigo, é PERDA DE TEMPO GIGANTE. Debuggar sem testes é como procurar uma agulha num palheiro. TESTES SÃO DETECTORES DE METAL. Eles mostram ONDE as coisas quebraram, O QUE quebrou e COMO quebrou. Ou pelo menos deveriam.
Depois de noites mal dormidas perseguindo bugs que NUNCA DEVERIAM TER CHEGADO TÃO LONGE, você percebe: "Eu deveria ter escrito mais testes e testes melhores."
Se você não tem isso, vai passar horas (ou semanas) tentando descobrir o que deu errado.
ENTÃO, RECAPITULANDO:
Testes automatizados são GUARD-RAILS — não servem pra evitar acidentes (bugs), mas reduzem as chances de um acidente (bug) causar um estrago FORA DE CONTROLE.
Escreva testes ASSIM QUE TERMINAR O COMPONENTE e ASSIM QUE ENCONTRAR UM BUG.
Eles DOCUMENTAM, FACILITAM REFATORAÇÕES, e ECONOMIZAM TEMPO.
NÃO CAIA NA ARMADILHA DE ACHAR QUE TESTES SÃO INÚTEIS. Eles são ESSENCIAIS pra qualquer projeto que pretenda crescer sem virar um pesadelo.
Agora, VAI LÁ. Escolhe um componente, escreve um teste, e quando você perceber que dá pra refatorar sem medo, quando perceber que tá gastando mais tempo escrevendo testes do que programando, como seu colega aqui, você vai entender que:
Gastar tempo escrevendo testes automatizados é infinitamente melhor do que gastar tempo debugando código pra descobrir por que as coisas não funcionam. ISSO SIM É TEMPO PERDIDO.
Um abraço e bons estudos!