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項目チェックリスト

コメント