Skip to main content

Cos’è Laravel Dusk

Laravel Dusk è uno strumento di test E2E che opera realmente sul browser per verificare l’intera schermata.
Per impostazione predefinita, puoi eseguire i test con ChromeDriver senza dover preparare a parte un server Selenium.
Nella documentazione ufficiale, per i nuovi progetti sono consigliati anche i browser test di Pest 4. Usa questa pagina se stai usando Dusk in un progetto esistente o se vuoi utilizzare l’API di Dusk.

Installazione

Per prima cosa installa Google Chrome e aggiungi Dusk come dipendenza di sviluppo.
Se vuoi allineare la versione di ChromeDriver usa il comando dusk:chrome-driver.

Configurazione dell’ambiente (.env.dusk.local)

Per usare variabili d’ambiente dedicate a Dusk, crea .env.dusk.{environment} nella root del progetto.
Per l’ambiente locale usa .env.dusk.local.
Durante l’esecuzione di Dusk .env viene salvato come backup e il contenuto di .env.dusk.local viene applicato temporaneamente.

Test di base del browser

Genera un test ed eseguilo con php artisan dusk.
Per rieseguire solo i test falliti:

Esempio di operazioni di base

visit(), type(), press() e assertSee() sono le operazioni più usate in Dusk.
Nei test Dusk non si usa RefreshDatabase. Come indica la documentazione ufficiale, inizializza i dati tra i test con DatabaseMigrations o DatabaseTruncation.

Pattern Page Object

Quando testi schermate complesse, creare un page object con dusk:page facilita la manutenzione.
In tests/Browser/Pages/Login.php definisci url() ed elements() e riutilizzali lato test.

Screenshot e debug

Per indagare i fallimenti è utile salvare screenshot e log della console.
  • Screenshot: tests/Browser/screenshots
  • Log della console: tests/Browser/console

Esecuzione in CI (GitHub Actions)

In GitHub Actions avvia ChromeDriver e il server incluso di Laravel e poi esegui php artisan dusk.

Flusso di esecuzione di Dusk

Documentazione ufficiale

Laravel Dusk — Documentazione ufficiale

Consulta la documentazione ufficiale per tutte le API di Dusk (attese, asserzioni, operazioni da tastiera, operazioni su iframe, ecc.).
Ultima modifica il 13 luglio 2026