Table of Contents
Introduction
L’écriture de tests pour les applications web est une étape cruciale du développement logiciel. Les développeurs ont besoin d’une solution fiable et efficace pour tester leurs applications avant leur déploiement en production. Dans ce chapitre, nous allons explorer deux outils de testing populaires dans le monde de Laravel : BrowserKit Testing et Dusk.
BrowserKit Testing
BrowserKit Testing est un package qui a été initialement inclus dans les versions précédentes de Laravel (avant la version 5.4). Cet outil permet de simuler une interaction avec l’application en utilisant le navigateur web. Il peut être utile pour des interactions simples comme cliquer sur un lien ou remplir un formulaire, mais il ne prend pas en compte les aspects JavaScript.
Malheureusement, BrowserKit Testing a l’apparence d’une solution dépassée et obsolète. Les documents officiels de Laravel n’en parlent même plus, ce qui suggère que cette solution n’est plus recommandée. Si vous souhaitez en savoir plus sur cet outil, nous vous conseillons de consulter la première édition de ce livre, disponible sous forme de PDF gratuit.
Dusk
Dusk est un outil de testing créé par Laravel pour faciliter l’écriture de tests Selenium-style pour les applications web. Il utilise ChromeDriver et permet d’interagir avec votre application comme si elle était une vraie page web. Voici comment écrire un test simple en utilisant Dusk :
$this->browse(function ($browser) {
$browser->visit('/register')
->type('email', 'test@example.com')
->type('password', 'secret')
->press('Sign Up')
->assertPathIs('/dashboard');
});
Dusk est particulièrement utile pour les tests de regression, car il permet d’interagir avec votre application comme si elle était une vraie page web. Cela signifie que vous pouvez tester des interactions complexes avec JavaScript et même prendre des écrans d’échec.
Installation de Dusk
Pour installer Dusk, exécutez les commandes suivantes :
composer require --dev laravel/dusk
php artisan dusk:install
Modifiez ensuite votre fichier .env pour définir la variable APP_URL sur l’URL que vous utilisez pour accéder à votre site dans votre navigateur local.
Écriture de tests en utilisant Dusk
Pour écrire un nouveau test en utilisant Dusk, utilisez la commande suivante :
php artisan dusk:make RatingTest
Ce test sera placé dans le fichier tests/Browser/RatingTest.php.
Customisation des variables d’environnement pour Dusk
Vous pouvez personnaliser les variables d’environnement pour Dusk en créant un nouveau fichier nommé .env.dusk.local. Remplacez local par l’environnement dans lequel vous travaillez (par exemple, “staging”).
Exemples de tests avec Dusk
Voici quelques exemples de tests que vous pouvez écrire en utilisant Dusk :
public function testBasicExample()
{
$user = factory(User::class)->create();
$this->browse(function ($browser) use ($user) {
$browser->visit('login')
->type('email', $user->email)
->type('password', 'secret')
->press('Login')
->assertPathIs('/home');
});
}
Notez que la syntaxe pour l’authentification est légèrement différente de celle utilisée dans les tests de Laravel. Utilisez $browser->loginAs($user) au lieu de $this->be($user).
Pitfalls à éviter
Lorsque vous utilisez Dusk, il y a quelques choses que vous devez garder à l’esprit pour éviter des erreurs et des comportements indésirables :
- N’utilisez pas le trait
RefreshDatabaseavec Dusk. Utilisez plutôt le traitDatabaseMigrations. - Utilisez les attributs
dusk="selector-here"pour référencer vos éléments HTML de manière plus fiable. - Notez que Dusk utilise des transactions pour interagir avec votre base de données, ce qui peut causer des problèmes si vous utilisez le trait
RefreshDatabase.
Conclusion
Dusk est un outil puissant et utile pour écrire des tests Selenium-style pour les applications web. Il permet d’interagir avec votre application comme si elle était une vraie page web et prend en compte les aspects JavaScript. Cependant, il est important de garder à l’esprit les pittoresques mentionnés ci-dessus pour éviter des erreurs et des comportements indésirables.
Nous vous recommandons d’utiliser Dusk pour vos tests de regression et d’explorer ses fonctionnalités plus en profondeur dans la documentation officielle.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Gestion des fichiers et telechargements dans Laravel : File, Download et StreamDownload
Guide complet pour gerer fichiers et telechargements dans Laravel. Utilisez File facade, response()->download() et streamDownload() efficacement.
Manipulation des dates en JavaScript : UTC, conversion et formatage
Guide complet sur les dates JavaScript : conversion en chaine, creation de dates UTC, methodes setUTC et bonnes pratiques pour eviter les problemes de fuseaux.
La comparaison équivalente en JavaScript : une analyse appro
Here's a compelling meta description that summarizes the main value proposition, includes a subtle call-to-action, and meets the 150-160 character requirement: