Laravel Dusk: Testando sua aplicação Laravel diretamente no browser

Luís Dalmolin

No mais recente lançamento do Laravel (Versão 5.4), Taylor nos presenteou com uma nova maneira de executar nossos testes: Diretamente no browser.

Nas versões anteriores a 5.4, se a página que você estivesse testando precisasse executar qualquer javascript, você já não conseguia testá-la.

O exemplo acima é um teste utilizando a versão 5.3 do Laravel e algumas das features que ele disponibiliza. Porém, se qualquer uma destas ações acima precisasse de javascript para acontecer, não seria possível testar desta maneira.

Laravel Dusk

E exatamente para estes casos que o Laravel Dusk foi criado.

No caso acima (que é um teste real utilizando Laravel Dusk em uma aplicação que eu desenvolvo) existem pelo menos três interações com javascript: Ao clicar no link “Solicitar reserva”, o teste só continua sua execução quando o texto “Diárias selecionadas” aparecer. Depois disto, é executada mais algumas interações dentro de um modal onde é executado mais um javascript antes do teste ser finalizado.

E o mais legal, é que quando o seu teste falha, é gerado um screenshot do exato momento em que o teste falhou.

Laravel Dusk executando um teste que falou

Podem ver no gif acima, como o chrome realmente é aberto quando o teste falha. E é nesse momento que o screenshot é tirado.

E como eu começo?

Antes de qualquer coisa, você precisa ter uma aplicação Laravel na versão 5.4.

Tendo isto, você apenas precisa executar os seguintes passos:

$ composer require laravel/dusk

Depois, no seu AppServiceProvider.php, adicione o código abaixo dentro do método register.

if ($this->app->environment('local', 'testing')) {
$this->app->register(DuskServiceProvider::class);
}

E execute o comando:

$ php artisan dusk:install

Pronto, o setup para utilizar o Laravel Dusk está completo. Todos os testes do Dusk ficam dentro da pasta testes/Browser. E para executar os testes, você apenas precisa executar:

$ php artisan dusk

Para criar novos testes, apenas execute:

php artisan dusk:make LoginTest

Nesta parte da documentação oficial, você pode ver exatamente como você pode interagir com os elementos da página.

Jeffrey Way também criou um tutorial gratuito no Laracasts explicando como utilizar esta ferramenta que vale a pena conferir.

Finalizando, acho que você não precisa ter todos os seus testes no Laravel Dusk, mas ele pode cobrir o gap de muitas coisas que você não conseguia testar sem uma ferramenta deste tipo.

Luís Dalmolin

Written by

Full Stack Developer. Laravel and a LOT more.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade