laravel-dusk-skill について
laravel-dusk-skillは、Laravel Duskのブラウザーテストを作成・実行するためのリファレンススキルです。一般的なテスト構成、ページオブジェクト、高度な操作に加え、TestMu AIでのクラウド実行も扱います。
主な機能
- 01Laravel Duskのセットアップとテストコマンド
- 02ブラウザー操作とフォーム入力
- 03ページオブジェクトのパターン
- 04データベース、スクリーンショット、デバッグの指針
- 05LambdaTestクラウドとCI/CDの例
活用シーン
- 01ログインや複数ステップフォームのテスト作成
- 02再利用可能なページオブジェクトによるテスト整理
- 03リモートブラウザー実行の設定
- 04よくあるテスト失敗の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill laravel-dusk-skillインストール後、Claude Code で/laravel-dusk-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/advanced-patterns.mdcloud-integration.mdplaybook.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 対応