LARAVEL DUSK: PRUEBAS END-TO-END EN LARAVEL DE FORMA SENCILLA
Laravel Dusk es la herramienta oficial de Laravel para realizar pruebas de navegador o Browser Testing y automatización. Permite simular el comportamiento real de un usuario dentro del navegador, interactuando con JavaScript, formularios, animaciones y todo lo que sucede en el frontend.A diferencia de pruebas unitarias o de feature tradicionales, Dusk abre un navegador real (Chrome por defecto) y ejecuta las acciones como lo haría una persona.
¿Por qué usar Laravel Dusk?
- Realiza pruebas end-to-end completas.
- Ideal para aplicaciones con mucho JavaScript (Vue, Livewire, Alpine, React, etc.).
- Fácil de leer y escribir (API fluida y expresiva).
- No requiere Selenium ni JDK (usa ChromeDriver).
- Puedes probar autenticación, flujos complejos, subida de archivos, notificaciones, etc.
- Muy útil para detectar regresiones visuales o de comportamiento.
Características principales y métodos
Instalación
Ejecutar los siguientes comandos:composer require laravel/dusk --dev
php artisan dusk:install
- Crea la carpeta "tests/Browser"
- Instala el ChromeDriver compatible con el sistema
- Crea un ejemplo de test
APP_URL=http://localhost:8000
Creando el primer test
php artisan dusk:make LoginTest
namespace Tests\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class LoginTest extends DuskTestCase
{
use DatabaseMigrations;
public function test_usuario_puede_iniciar_sesion()
{
$user = User::factory()->create([
'email' => 'test@example.com',
'password' => bcrypt('password'),
]);
$this->browse(function (Browser $browser) use ($user) {
$browser->visit('/login')
->type('email', $user->email)
->type('password', 'password')
->press('Iniciar Sesión')
->assertPathIs('/dashboard')
->assertSee('Bienvenido');
});
}
}
php artisan dusk
Mejores prácticas
Dusk permite crear clases de página para mantener el código limpio:php artisan dusk:page LoginPage
public function test_login()
{
$this->browse(function (Browser $browser) {
$browser->visit(new LoginPage)
->login('test@example.com', 'password')
->assertSee('Dashboard');
});
}
Ventajas de Laravel Dusk
- Sintaxis muy limpia, orientada y con excelente integración con Laravel.
- Soporta Livewire, Inertia.js y Vue sin problemas.
- Fácil de ejecutar en CI/CD (GitHub Actions, Forge, Vapor, etc.).
- Permite tomar capturas de pantalla automáticamente en caso de fallo.
Desventajas
- Pruebas más lentas que las pruebas unitarias o HTTP tests.
- Requiere Chrome, lo que complica el entorno de CI si no está bien configurado.
- No es ideal para miles de tests, es mejor combinar con Feature Tests + Dusk solo para los flujos críticos.