最推荐使用Laravel Dusk进行浏览器测试,它可模拟用户操作并支持断言、截图和等待元素。通过Composer安装后,在AppServiceProvider中注册服务,并用artisan命令生成测试文件。在测试类中使用visit、type、press等方法编写测试流程,如登录验证。运行php artisan dusk执行测试,默认使用无头Chrome,可通过配置查看界面。建议使用.env.dusk.local环境文件隔离测试数据,并利用waitFor、screenshot等方法辅助调试。Dusk适用于端到端场景,确保关键业务流程正常。

在 Laravel 中进行浏览器测试,最推荐的方式是使用官方提供的 Laravel Dusk。它能模拟真实用户在浏览器中的操作,比如点击、填写表单、断言页面内容等,非常适合做自动化端到端测试。
安装 Laravel Dusk
Laravel Dusk 可以通过 Composer 安装到项目中:
composer require --dev laravel/dusk
安装完成后,在 app/Providers/AppServiceProvider.php 的 register() 方法中注册 Dusk 服务(仅在开发环境):
use Laravel\Dusk\DuskServiceProvider;
public function register()
{
if ($this->app->environment('local', 'testing')) {
$this->app->register(DuskServiceProvider::class);
}
}
生成测试用例
使用 Artisan 命令创建一个浏览器测试:
php artisan dusk:make LoginTest
这会在 tests/Browser 目录下生成 LoginTest.php 文件。你可以在这个类中编写测试逻辑。
编写简单的浏览器测试
打开生成的测试文件,示例代码如下:
public function testUserCanLogin()
{
$this->browse(function ($browser) {
$browser->visit('/login')
->type('email', 'test@example.com')
->type('password', 'password')
->press('Login')
->assertPathIs('/home');
});
}
说明:
- visit():访问指定页面
- type():在输入框中填入内容
- press():点击按钮或链接
- assertPathIs():断言当前 URL 路径
运行测试
执行以下命令来运行所有浏览器测试:
php artisan dusk
Dusk 默认使用 ChromeDriver 启动无头浏览器(无需安装完整 Chrome)。如果需要查看界面,可以修改 tests/DuskTestCase.php 中的启动选项,关闭无头模式。
注意事项与技巧
- 确保 .env.dusk.local 存在,Dusk 会自动使用它避免影响开发数据库
- 可使用 $browser->screenshot('error'); 截图调试失败场景
- 支持等待元素出现:$browser->waitFor('.success-message');
- 可自定义 Chrome 启动参数,比如显示界面用于调试
基本上就这些。Laravel Dusk 让浏览器自动化变得简单直观,特别适合验证登录、表单提交、页面跳转等关键流程。










