Giao diện
Laravel Dusk
- Giới thiệu
- Cài đặt
- Bắt đầu
- Browser Basics
- Tương tác với Elements
- Available Assertions
- Pages
- Components
- Continuous Integration
Nguồn gốc: Bản dịch từ Laravel Dusk
GỢI Ý
Pest 4 giờ đã tích hợp automated browser testing với hiệu năng và trải nghiệm tốt hơn đáng kể. Với dự án mới, khuyến nghị dùng Pest cho browser testing.
Giới thiệu (Introduction)
Laravel Dusk cung cấp API browser automation và testing biểu cảm, dễ sử dụng. Mặc định Dusk không yêu cầu JDK hoặc Selenium — dùng ChromeDriver standalone.
Cài đặt (Installation)
Yêu cầu: Google Chrome đã cài.
bash
composer require laravel/dusk --devbash
php artisan dusk:installLệnh trên tạo thư mục tests/Browser, test mẫu, và cài Chrome Driver binary.
Đặt APP_URL trong .env khớp với URL truy cập ứng dụng.
Quản lý ChromeDriver
bash
php artisan dusk:chrome-driverSử dụng Browser khác
Dusk hỗ trợ bất kỳ driver tương thích Selenium.
Bắt đầu (Getting Started)
Tạo Tests
bash
php artisan dusk:make LoginTestReset Database sau mỗi Test
Dùng trait DatabaseMigrations — không dùng RefreshDatabase vì Dusk chạy process riêng biệt.
Chạy Tests
bash
php artisan duskChạy test cụ thể:
bash
php artisan dusk --filter=LoginTestEnvironment Handling
Dusk sử dụng file .env.dusk.{environment} khi chạy.
Browser Basics
Tạo Browsers
php
$this->browse(function (Browser $browser) {
$browser->visit('/login')
->type('email', 'taylor@laravel.com')
->type('password', 'password')
->press('Login')
->assertPathIs('/home');
});Multiple Browsers
Test với nhiều browser cùng lúc (testing real-time features).
Navigation
php
$browser->visit('/login');
$browser->visitRoute('login');
$browser->back();
$browser->forward();
$browser->refresh();Authentication
php
$user = User::factory()->create();
$this->browse(function (Browser $browser) use ($user) {
$browser->loginAs($user)
->visit('/home');
});Cookies
php
$browser->cookie('name');
$browser->cookie('name', 'Taylor');
$browser->deleteCookie('name');Taking a Screenshot
php
$browser->screenshot('filename');Tương tác với Elements
Dusk Selectors
Dùng attribute dusk thay vì CSS selector dễ thay đổi:
html
<button dusk="login-button">Login</button>php
$browser->click('@login-button');Interacting With Forms
php
$browser->type('email', 'taylor@laravel.com');
$browser->select('size', 'Large');
$browser->check('terms');
$browser->radio('plan', 'monthly');
$browser->attach('photo', __DIR__.'/photos/me.jpg');Clicking Links & Buttons
php
$browser->clickLink('Sign Up');
$browser->press('Login');Waiting for Elements
php
$browser->waitFor('.selector');
$browser->waitForText('Hello World');
$browser->waitUntilMissing('.selector');
$browser->waitForLocation('/dashboard');Available Assertions
Dusk cung cấp nhiều assertion phong phú:
| Method | Mô tả |
|---|---|
assertTitle($title) | Title trang khớp |
assertTitleContains($text) | Title chứa text |
assertUrlIs($url) | URL khớp |
assertPathIs($path) | Path khớp |
assertSee($text) | Text hiển thị trên trang |
assertDontSee($text) | Text không hiển thị |
assertSeeIn($selector, $text) | Text hiển thị trong selector |
assertValue($selector, $value) | Input có giá trị |
assertChecked($field) | Checkbox checked |
assertNotChecked($field) | Checkbox unchecked |
assertSelected($field, $value) | Select có giá trị |
assertEnabled($field) | Field enabled |
assertDisabled($field) | Field disabled |
assertVisible($selector) | Element visible |
assertMissing($selector) | Element missing |
assertAuthenticated() | User đã xác thực |
assertGuest() | User chưa xác thực |
Pages
Page objects cho phép tổ chức selector và action phức tạp thành class.
bash
php artisan dusk:page LoginPageComponents
Tái sử dụng component (date picker, dropdown...) trên nhiều test.
bash
php artisan dusk:component DatePickerContinuous Integration
Dusk hỗ trợ CI trên: Heroku CI, Travis CI, GitHub Actions, Chipper CI.