DEV Community

Cover image for Golden Test: Fazendo testes dos widgets (parte 2)
Toshi Ossada for flutterbrasil

Posted on • Edited on

Golden Test: Fazendo testes dos widgets (parte 2)

Golden Test: Fazendo testes dos widgets (parte 2)

Bom, na primeira parte https://blog.flutterando.com.br/golden-test-testando-suas-p%C3%A1ginas-parte-1-a8b2b490f4ea vimos como fazer a configuração inicial do Golden Test e também vimos como fazer o teste da página completa. Agora nesta parte iremos ver como podemos fazer o testes dos widgets menores.


A primeira diferença logo de cara é que ao invés de utilizar o DeviceBuilder() utilizaremos o GoldenBuilder.grid() que na imagem ele irá renderizar o widget como se fosse uma tabela, espera-se dois parâmetros o primeiro é a columns que irá representar a quantidade de widgets que será mostrado por linha e o segundo é o widthToHeightRatio que é a proporção da imagem é uma relação proporcional entre a largura e a altura de uma imagem, eu costumo deixar como padrão com o valor 1.

Logo em seguida também utilizamos o addScenario() que espera uma descrição e o widget.

A segunda diferença é que ao invés de utilizarmos o pumpDeviceBuilder(builder) utilizaremos o pumpWidgetBuilder(builder) que assim como o anterior espera o objeto builder.

Agora executando o comando para gerar os snapshots

flutter test --update-goldens
Enter fullscreen mode Exit fullscreen mode

Ele irá gerar a pasta goldens com os snapshots

Posso gerar quantas variações do meu cenário eu quiser.



Simulando Erro

Para simular o erro troquei o Icone e o HintText

Agora igual o teste das paginas irá ser gerado uma pasta chamada failure contendo os artefatos dos erros ao rodar

flutter test
Enter fullscreen mode Exit fullscreen mode

E as imagens seguem a mesma logica do artigo anterior

BONUS



As vezes precisamos do contexto para fazer determinados testes, como por exemplo recuperar alguma cor do Tema da aplicação, uma solução que encontrei foi sempre que necessitar envolver o widget do cenário com o Builder(), para não ter que ficar adicionando o Builder em todo lugar criei uma extension para fazer isso. Basta adicionar essa extension em seu código e ao invés de utilizar o addScenario utilizar o addScenarioBuilder.

A utilização dele é bem simples, basta ao invés de passar o widget direto será necessário passar uma função que tem como parâmetro o context e ele retorna o widget que será testando.

Image description

Entre em nosso discord para interagir com a comunidade: https://discord.com/invite/flutterbrasil
https://linktr.ee/flutterbrasil

Top comments (0)