یکی از مهم ترین چالش هایی که هر توسعه دهنده وب باهاش مواجه می شه، اطمینان از صحت و عملکرد صحیح اپلیکیشن هاست. همه ی ما می دونیم که تست کردن دستی تمامی اجزای یک اپلیکیشن چقدر وقت گیر و پر از اشتباهه. اینجاست که Laravel Dusk به کمک تو میاد.
تصور کن داری یه پروژه وب رو مدیریت می کنی و هر بار که یه تغییر کوچیک تو کدت می دی، باید همه چیز رو دستی تست کنی. چقدر زمان و انرژی ازت می گیره؟ اینجا دقیقاً جاییه که Laravel Dusk مثل یه نجات دهنده وارد می شه و همه ی تست ها رو به صورت خودکار برات انجام می ده. حالا بیا با هم کشف کنیم که چطور این ابزار فوق العاده می تونه زندگی برنامه نویسی ات رو راحت تر کنه و باگ ها رو به حداقل برسونه. آماده ای؟ بزن بریم!

Laravel Dusk یک ابزار قدرتمند و کاربردی برای تست خودکار مرورگر هست که توسط تیم لاراول توسعه داده شده. با Laravel Dusk می توانی به راحتی تست های تعاملی و واقعی مرورگر را انجام بدی و از صحت عملکرد برنامه تحت وب خودت مطمئن بشی. یکی از ویژگی های برجسته Laravel Dusk اینه که از مرورگر واقعی استفاده می کنه و نتایج تست ها دقیقاً همون چیزیه که کاربران واقعی می بینن. نصب و راه اندازی این ابزار بسیار ساده ست و با چند دستور ساده می تونی کار رو شروع کنی. حتی امکان گرفتن اسکرین شات و ضبط ویدیو از مراحل تست وجود داره که به شناسایی و رفع خطاها کمک می کنه. با ادغام آسان با سیستم های CI/CD، می تونی تست ها رو به صورت خودکار در فرآیندهای توسعه و تحویل مداوم نرم افزارت اجرا کنی و مطمئن باشی که کدهای جدید بدون مشکل به محیط تولید منتقل می شن. Laravel Dusk یه انتخاب عالی برای برنامه نویسانی هست که می خوان تست های مرورگرشون رو به صورت خودکار و بدون دردسر انجام بدن.
استفاده از Laravel Dusk می تونه خیلی از کارها رو برای توسعه دهندگان لاراول راحت تر و سریع تر کنه. این ابزار فوق العاده نه تنها برای تست های خودکار بلکه برای بسیاری از کاربردهای دیگه هم مفیده. بیا با هم ببینیم چطور می تونی از Dusk برای بهبود فرآیند توسعه و تست پروژه هات استفاده کنی.
Laravel Dusk می تونه به راحتی فرم های پیچیده و چندمرحله ای رو تست کنه. مثلاً می تونی مطمئن بشی که همه فیلدهای اجباری پر می شن و ولیدیشن ها درست کار می کنن.
Dusk بهت این امکان رو می ده که رفتار کاربر رو شبیه سازی کنی. مثلاً می تونی تست کنی که وقتی کاربر روی یه دکمه کلیک می کنه، چه اتفاقی می افته و مطمئن بشی که همه چیز درست کار می کنه.
با Dusk می تونی ظاهر و استایل صفحات رو هم تست کنی. مثلا می تونی مطمئن بشی که همه المان ها به درستی نمایش داده می شن و هیچ مشکلی در ریسپانسیو بودن صفحات وجود نداره.
یکی دیگه از کاربردهای جالب Dusk اینه که می تونی عملکرد سایت رو تحت بار تست کنی. یعنی می تونی بررسی کنی که سایتت وقتی تعداد زیادی کاربر همزمان دارن ازش استفاده می کنن، چطور عمل می کنه و آیا عملکردش افت می کنه یا نه.
استفاده از Laravel Dusk مزایای زیادی داره که می تونه توسعه نرم افزار رو به سطح جدیدی برسونه. این ابزار قدرتمند برای توسعه دهنده های لاراول خیلی کارآمده و امکانات متنوعی رو در اختیارت می ذاره. بیا با هم نگاهی بندازیم به برخی از ویژگی های منحصر به فرد و مفیدش که شاید تا حالا نمی دونستی.
یکی از بزرگ ترین مزایای Laravel Dusk اینه که می تونی تست هات رو در محیط های مختلف اجرا کنی. یعنی حتی اگر تو محیط لوکال تست می گیری، می تونی همون تست ها رو توی محیط های استیجینگ و پروداکشن هم بدون هیچ مشکلی اجرا کنی. این قابلیت کمک می کنه که مطمئن بشی کدت توی هر محیطی به درستی کار می کنه.
Dusk این امکان رو بهت می ده که بتونی تست های خودت رو با استفاده از روش های مختلف احراز هویت انجام بدی. مثلا می تونی کاربر رو با استفاده از API Token یا OAuth لاگین کنی و ببینی که آیا همه چیز درست کار می کنه یا نه.
یکی دیگه از ویژگی های باحال Dusk اینه که می تونی تست هات رو به صورت موازی (پارالل) اجرا کنی. این ویژگی باعث می شه که زمان اجرای تست ها به شدت کاهش پیدا کنه و سرعت توسعه ات بره بالا.
تصور کن می خوای ببینی دقیقا چه اتفاقی توی تست هات می افته. Dusk این امکان رو بهت می ده که از هر مرحله تست اسکرین شات بگیری یا حتی ویدئو ضبط کنی. اینطوری می تونی مشکلات رو خیلی سریع تر و دقیق تر شناسایی کنی.
استفاده از Laravel Dusk با تمام مزایاش، ممکنه چالش هایی هم داشته باشه که باید در نظر بگیری. این ابزار قدرتمند ممکنه در بعضی شرایط مشکلاتی رو به همراه داشته باشه. بیا با هم نگاهی بندازیم به برخی از معایب و محدودیت هایش که شاید تا حالا نمی دونستی.
اجرای تست های مرورگری با Dusk نیازمند منابع سخت افزاری بیشتری هست. این یعنی ممکنه سیستم شما برای اجرای تست ها دچار کندی بشه و نیاز به ارتقای سخت افزار داشته باشی.
تست های مرورگری نسبت به تست های واحد زمان بیشتری می برند. این موضوع ممکنه سرعت توسعه رو کمی کاهش بده، به خصوص وقتی که تعداد تست ها زیاد باشه.
با تغییرات مداوم در UI و عملکرد سایت، نگهداری و بروزرسانی تست ها می تونه چالش برانگیز باشه. هر تغییر کوچکی در ظاهر سایت ممکنه نیاز به تغییرات در تست ها داشته باشه که زمان بره.
Dusk به صورت پیش فرض از Chrome استفاده می کنه و اگر بخوای از مرورگرهای دیگه استفاده کنی، نیاز به تنظیمات اضافی داره. این وابستگی به یک مرورگر خاص ممکنه در بعضی شرایط مشکل ساز بشه.

راه اندازی Laravel Dusk خیلی راحت تر از چیزی هست که فکر می کنی. با چند دستور ساده، می تونی این ابزار قدرتمند رو به پروژه لاراولت اضافه کنی و شروع به استفاده ازش بکنی. بیایید با هم مراحل نصب و تنظیم Dusk رو قدم به قدم مرور کنیم تا بتونی به سرعت از امکاناتش بهره مند بشی.
اول از همه، باید یه پروژه لاراول جدید ایجاد کنی. برای این کار، دستور زیر رو توی ترمینال وارد کن:
composer create-project --prefer-dist laravel/laravel my-dusk-appاین دستور یک پروژه جدید به نام my-dusk-app ایجاد می کنه. بعد از اینکه پروژه نصب شد، وارد دایرکتوری پروژه شو:
cd my-dusk-appحالا نوبت نصب Laravel Dusk هست. برای نصب این پکیج، دستور زیر رو اجرا کن:
composer require --dev laravel/duskبعد از اینکه پکیج نصب شد، باید Dusk رو نصب و تنظیم کنیم:
php artisan dusk:installبا این چند مرحله ساده، الان آماده ای تا از Laravel Dusk استفاده کنی و پروژه هات رو به سطح جدیدی ببری. حالا می تونی با خیال راحت شروع به نوشتن تست های خودکار کنی و از امکانات این ابزار فوق العاده بهره مند بشی!
حالا بریم سراغ یکی از تست های مهم و پرکاربرد: تست فرم Login. با Laravel Dusk می تونی به راحتی فرم لاگین رو تست کنی و مطمئن بشی که همه چیز درست کار می کنه. بیا با هم قدم به قدم یه تست بنویسیم که مطمئن بشیم فرم لاگین در مرورگر Chrome به درستی کار می کنه.
اولین قدم اینه که یه فایل تست جدید ایجاد کنیم. برای این کار دستور زیر رو اجرا کن:
php artisan dusk:make LoginTestاین دستور یه فایل جدید به نام LoginTest.php در دایرکتوری tests/Browser ایجاد می کنه.
حالا فایل LoginTest.php رو باز کن و کد زیر رو داخلش بنویس:
<?php
namespace Tests\Browser;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class LoginTest extends DuskTestCase
{
/**
* A basic browser test example.
*
* @return void
*/
public function testLogin()
{
$this->browse(function (Browser $browser) {
$browser->visit('/login')
->type('email', 'user@example.com')
->type('password', 'password')
->press('Login')
->assertPathIs('/home')
->assertSee('Dashboard');
});
}
}در این تست، ما مراحل زیر رو انجام می دیم:
حالا که تست رو نوشتیم، باید اجراش کنیم تا مطمئن بشیم همه چیز درست کار می کنه. برای این کار دستور زیر رو اجرا کن:
php artisan duskاگر همه چیز درست باشه، تست با موفقیت اجرا می شه و نتیجه رو بهت نشون می ده.
با این تست ساده، تو الان مطمئن می شی که فرم لاگینت به درستی کار می کنه و کاربران می تونن بدون مشکل وارد سیستم بشن. Laravel Dusk این فرآیند رو خیلی راحت و سریع می کنه و باعث می شه با خیال راحت تری کدت رو بنویسی و تست کنی.

وقتی صحبت از تست های خودکار برای پروژه های لاراولی می شه، ابزارهای مختلفی وجود داره که می تونن بهت کمک کنن. اما کدوم یکی بهتره؟ بیا با هم بررسی کنیم و ببینیم Laravel Dusk در مقایسه با ابزارهای دیگه مثل Selenium و Cypress چه مزایا و معایبی داره. این مقایسه می تونه بهت کمک کنه تا بهترین ابزار رو برای پروژه هات انتخاب کنی.
Selenium یکی از قدیمی ترین و پراستفاده ترین ابزارهای تست مرورگریه. اما وقتی با Laravel Dusk مقایسه می شه، چند تفاوت اساسی داره. Dusk به طور خاص برای لاراول طراحی شده و نصب و راه اندازیش خیلی ساده تره. در حالی که Selenium عمومی تره و نیاز به تنظیمات بیشتری داره. اگه از لاراول استفاده می کنی، Dusk یه انتخاب مناسب تره چون به خوبی با این فریمورک یکپارچه شده.
[note]
پیشنهاد می کنم یه سر به مقاله "ابزار تست Selenium چیست؟ (نحوه استفاده از Selenium و کاربرد آن)" بزنی.
[/note]
Cypress یک ابزار مدرن برای تست های End-to-End هست که به خاطر سرعت بالا و رابط کاربری خوبش معروفه. اما Dusk به دلیل یکپارچگی با لاراول و قابلیت های خاصش برای توسعه دهندگان لاراول، یه انتخاب عالیه. Cypress سریع تره اما نیاز به تنظیمات پیچیده تری داره. اگه دنبال یه ابزار ساده و کارآمد برای پروژه های لاراولی هستی، Dusk می تونه گزینه بهتری باشه.
Codeception یه ابزار دیگه برای تست های خودکاره که امکانات زیادی داره. اما وقتی با Dusk مقایسه می شه، متوجه می شی که Dusk نصب و راه اندازیش خیلی راحت تره و برای تست های مرورگری در پروژه های لاراولی بسیار کارآمدتره. Codeception قابلیت های زیادی داره ولی اگه فقط دنبال تست های مرورگری هستی، Dusk گزینه بهتریه.
برای اینکه بتونی راحت تر انتخاب کنی، یه جدول مقایسه آماده کردیم که توش ابزارهای مختلف رو از جنبه های مختلف بررسی کردیم. این جدول بهت کمک می کنه تا بفهمی هر ابزار چه ویژگی ها و قابلیت هایی داره و کدوم یکی برای پروژه ت مناسب تره. حالا بیا نگاهی به این جدول بندازیم.
| ویژگی ها | Laravel Dusk | Selenium | Cypress | Codeception |
|---|---|---|---|---|
| یکپارچگی با لاراول | عالی | ضعیف | متوسط | متوسط |
| سرعت اجرا | متوسط | متوسط | بالا | متوسط |
| نصب و راه اندازی | ساده | پیچیده | پیچیده | متوسط |
| رابط کاربری | ندارد | ندارد | دارد | دارد |
| پشتیبانی از مرورگرها | Chrome | همه | Chrome | همه |
| مستندات و پشتیبانی | خوب | عالی | خوب | خوب |
| قابلیت های اضافی | متوسط | بالا | بالا | بالا |
| منابع سخت افزاری مورد نیاز | متوسط | بالا | متوسط | متوسط |
| محبوبیت | بالا | بالا | در حال رشد | متوسط |
این جدول بهت کمک می کنه تا بر اساس نیازهای خاص پروژه ات بهترین ابزار رو انتخاب کنی. هر کدوم از این ابزارها مزایا و معایب خاص خودشون رو دارن، اما Laravel Dusk به خاطر یکپارچگی با لاراول و سادگی استفاده اش، یه انتخاب عالی برای پروژه های لاراولیه.

برای نصب Laravel Dusk ابتدا باید یه پروژه لاراول داشته باشی. بعدش دستور زیر رو اجرا کن:
composer require --dev laravel/duskسپس با اجرای دستور php artisan dusk:install، Dusk رو به پروژه اضافه کن.
بله، می تونی از مرورگرهای دیگه هم استفاده کنی. برای این کار باید تنظیمات مرورگر رو در فایل DuskTestCase.php تغییر بدی و مرورگر دلخواهت رو تنظیم کنی.
برای اجرای تست های Dusk در CI/CD می تونی از سرویس های مختلفی مثل GitHub Actions، GitLab CI یا Travis CI استفاده کنی. کافیست تنظیمات مربوط به Dusk رو در فایل کانفیگ CI/CD اضافه کنی و مرورگر Chrome رو برای محیط تست آماده کنی.
Dusk قابلیت اجرای تست های پیچیده جاوااسکریپتی رو داره. می تونی با استفاده از متدهای مختلفی مثل click, type, assertSee و... تست های خودت رو بنویسی و تعاملات پیچیده کاربری رو شبیه سازی کنی.
بله، Dusk می تونه تعاملات با فریمورک های جاوااسکریپتی مثل Vue.js و React رو تست کنه. می تونی به راحتی عناصر DOM رو پیدا کنی و تعاملات مورد نیازت رو شبیه سازی کنی.
بله، Dusk این امکان رو بهت می ده که از مراحل مختلف تست اسکرین شات بگیری. برای گرفتن اسکرین شات می تونی از متد screenshot استفاده کنی. متاسفانه ضبط ویدئو به صورت پیش فرض در Dusk پشتیبانی نمی شه ولی می تونی از ابزارهای جانبی استفاده کنی.
بله، تست های Dusk روی سیستم عامل های مختلف مثل ویندوز، مک و لینوکس قابل اجرا هستن. فقط باید اطمینان حاصل کنی که ChromeDriver برای سیستم عاملت نصب شده باشه.
اجرای تست های موازی به صورت پیش فرض در Dusk پشتیبانی نمی شه. برای این کار باید از ابزارهای جانبی مثل Paratest استفاده کنی که بهت اجازه می ده تست ها رو به صورت موازی اجرا کنی.
Dusk به طور خاص برای تست های مرورگری طراحی شده ولی می تونی تست های API رو با استفاده از امکانات لاراول مثل HTTP Testing انجام بدی و Dusk رو برای تست های مرورگری نگه داری.
بله، Dusk بعد از اجرای تست ها به طور خودکار مرورگر رو می بنده. این کار باعث می شه منابع سیستم آزاد بشن و تست ها سریع تر اجرا بشن.
خب تا اینجا کلی درباره Laravel Dusk صحبت کردیم و یاد گرفتیم که چطور این ابزار می تونه توی تست های خودکار پروژه های لاراولی به ما کمک کنه. از نصب و راه اندازیش گفتیم که چقدر ساده و سریع انجام می شه، تا ویژگی ها و مزایاش مثل اجرای تست ها در محیط های مختلف، پشتیبانی از روش های احراز هویت مختلف، و ایجاد اسکرین شات و ویدئو از تست ها. همچنین معایبش مثل نیاز به منابع سخت افزاری بیشتر و نگهداری پیچیده تست ها رو هم بررسی کردیم.
مقایسه ای هم داشتیم با ابزارهای مشابه مثل Selenium، Cypress و Codeception و دیدیم که هر کدوم چه ویژگی هایی دارن و در چه زمینه هایی ممکنه بهتر یا ضعیف تر از Dusk عمل کنن. در نهایت هم به سوالات پرتکرار درباره استفاده از Dusk پاسخ دادیم تا هیچ ابهامی برات باقی نمونه.
حالا دیگه باید برای تست های پروژه هات آماده باشی و با خیال راحت از Laravel Dusk استفاده کنی. اما قبل از اینکه بری سراغ نوشتن تست های خودکار، خوشحال می شم نظرت رو درباره این مقاله بدونم. آیا تا حالا از Laravel Dusk استفاده کردی؟ تجربه ت چی بوده؟ حتماً توی کامنت ها برامون بنویس تا با هم بیشتر درباره این ابزار فوق العاده صحبت کنیم.
اصفهان، خیابان حمزه اصفهانی، بن بست تخت جمشید(18) ، پلاک ۴
دفتر تهران: تهران، خیابان سهروردی شمالی، خیابان هویزه شرقی، پلاک 20، طبقه دوم، واحد 6