mcpField
L
laravel-dusk-skill

laravel-dusk-skill

github.com/lambdatest测试与质量384224 次安装2 周前更新
代码仓库

关于 laravel-dusk-skill

laravel-dusk-skill 是编写和运行 Laravel Dusk 浏览器测试的参考技能,涵盖常见测试结构、页面对象和高级交互,也介绍可选的 TestMu AI 云端执行。

主要功能

  1. 01Laravel Dusk 安装与测试命令
  2. 02浏览器导航和表单交互
  3. 03页面对象模式
  4. 04数据库、截图与调试指南
  5. 05LambdaTest 云端与 CI/CD 示例

适用场景

  1. 01编写登录和多步骤表单的浏览器测试
  2. 02使用可复用页面对象组织测试
  3. 03配置远程浏览器执行
  4. 04排查常见测试故障

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lambdatest/agent-skills --skill laravel-dusk-skill

安装后在 Claude Code 中输入/laravel-dusk-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference/
advanced-patterns.md
cloud-integration.md
playbook.md

详细介绍

Laravel Dusk 技能

如需了解 TestMu AI 云端执行,请参阅 reference/cloud-integration.md 和 shared/testmu-cloud-reference.md。

核心模式

基本测试
<?php
namespace Tests\Browser;

use Laravel\Dusk\Browser;
use Tests\DuskTestCase;

class LoginTest extends DuskTestCase
{
    public function testLoginWithValidCredentials(): void
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/login')
                ->type('email', '[email protected]')
                ->type('password', 'password123')
                ->press('Login')
                ->assertPathIs('/dashboard')
                ->assertSee('Welcome');
        });
    }

    public function testLoginWithInvalidCredentials(): void
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/login')
                ->type('email', '[email protected]')
                ->type('password', 'wrong')
                ->press('Login')
                ->assertPathIs('/login')
                ->assertSee('Invalid credentials');
        });
    }
}
浏览器方法
// Navigation
$browser->visit('/path');
$browser->back();
$browser->forward();
$browser->refresh();

// Forms
$browser->type('name', 'value');
$browser->clear('name');
$browser->select('select', 'option');
$browser->check('checkbox');
$browser->uncheck('checkbox');
$browser->radio('radio', 'value');
$browser->attach('file', '/path/to/file');
$browser->press('Button Text');
$browser->click('.selector');

// Assertions
$browser->assertSee('text');
$browser->assertDontSee('text');
$browser->assertPathIs('/expected');
$browser->assertUrlIs('http://full-url');
$browser->assertInputValue('name', 'value');
$browser->assertChecked('checkbox');
$browser->assertVisible('.element');
$browser->assertMissing('.element');
$browser->assertTitle('Page Title');
$browser->assertPresent('.selector');

// Waiting
$browser->waitFor('.element');
$browser->waitFor('.element', 10); // 10 seconds
$browser->waitUntilMissing('.loading');
$browser->waitForText('Loaded');
$browser->waitForLink('Click Me');
$browser->pause(1000); // milliseconds
页面对象
<?php
namespace Tests\Browser\Pages;

use Laravel\Dusk\Page;

class LoginPage extends Page
{
    public function url(): string { return '/login'; }

    public function assert(Browser $browser): void
    {
        $browser->assertPathIs($this->url());
    }

    public function login(Browser $browser, string $email, string $password): void
    {
        $browser->type('email', $email)
            ->type('password', $password)
            ->press('Login');
    }
}

// Usage
$browser->visit(new LoginPage)
    ->login($browser, '[email protected]', 'password123');
云端:重写 DuskTestCase::driver(),使其返回带有 LT caps 的 RemoteWebDriver

设置:composer require --dev laravel/dusk && php artisan dusk:install

在 TestMu AI 上执行云端测试

设置 .env 变量:LT_USERNAME、LT_ACCESS_KEY

// tests/DuskTestCase.php
protected function driver()
{
    $options = (new ChromeOptions)->addArguments(['--disable-gpu', '--no-sandbox']);
    $ltOptions = [
        'user' => env('LT_USERNAME'),
        'accessKey' => env('LT_ACCESS_KEY'),
        'build' => 'Laravel Dusk Build',
        'name' => $this->getName(),
        'platformName' => 'Windows 11',
        'video' => true,
        'console' => true,
    ];
    $options->setExperimentalOption('LT:Options', $ltOptions);
    return RemoteWebDriver::create(
        'https://hub.lambdatest.com/wd/hub', $options
    );
}

运行:php artisan dusk 或 php artisan dusk tests/Browser/LoginTest.php

深入模式

生产级模式请参阅 reference/playbook.md:

章节内容
§1 项目设置安装、DuskTestCase、.env.dusk 配置
§2 浏览器测试登录流程、表单、多步骤向导、多个浏览器
§3 页面对象包含元素、自定义方法和断言的页面类
§4 组件DatePicker、Modal、可复用组件模式
§5 高级交互JavaScript、滚动、拖放、等待策略
§6 数据库与数据DatabaseMigrations、工厂、屏幕截图、控制台日志
§7 LambdaTest 集成使用 LT:Options capabilities 的远程 WebDriver
§8 CI/CD 集成使用 MySQL、ChromeDriver 和制品上传的 GitHub Actions
§9 调试表12 个常见问题及其原因和修复方法
§10 最佳实践Laravel Dusk 测试检查清单,共 14 项

评论

支持 Markdown