Laravel Dusk
はじめに
Laravel Dusk は、表現力豊かで使いやすいブラウザ自動化およびテストAPIを提供します。デ フォルトでは、DuskはローカルコンピュータにJDKやSeleniumをインストールする必要はありません。代わりに、DuskはスタンドアロンのChromeDriver インストールを使用します。ただし、他のSelenium互換のドライバを自由に利用することもできます。
インストール
始めるには、Google Chrome をインストールし、laravel/dusk Composer 依存関係をプロジェクトに追加する必要があります:
composer require laravel/dusk --dev
Duskのサービスプロバイダを手動で登録する場合は、決して 本番環境で登録しないでください。そうすると、任意のユーザがアプリケーションに認証できる可能性があります。
Duskパッケージをインストールした後、dusk:install Artisan コマンドを実行します。dusk:install コマンドは、tests/Browser ディレクトリ、Dusk テストの例、およびオペレーティングシステム用の Chrome Driver バイナリをインストールします:
php artisan dusk:install
次に、アプリケーションの .env ファイルで APP_URL 環境変数を設定します。この値は、ブラウザでアプリケーションにアクセスするために使用するURLと一致する必要があります。
Laravel Sail を使用してローカル開発環境を管理している場合は、Dusk テストの設定と実行に関するSailドキュメントも参照してください。
ChromeDriver インストールの管理
Laravel Duskによってdusk:installコマンドを介してインストールされるChromeDriverのバージョンとは異なるバージョンのChromeDriverをインストールしたい場合は、dusk:chrome-driverコマンドを使用できます:
# Install the latest version of ChromeDriver for your OS...
php artisan dusk:chrome-driver
# Install a given version of ChromeDriver for your OS...
php artisan dusk:chrome-driver 86
# Install a given version of ChromeDriver for all supported OSs...
php artisan dusk:chrome-driver --all
# Install the version of ChromeDriver that matches the detected version of Chrome / Chromium for your OS...
php artisan dusk:chrome-driver --detect
Duskはchromedriverバイナリが実行可能であることを要求します。Duskの実行に問題がある場合は、次のコマンドを使用してバイナリが実行可能であることを確認してください: chmod -R 0755 vendor/laravel/dusk/bin/.
他のブラウザを使用する
デフォルトでは、Dusk は Google Chrome とスタンドアロンの ChromeDriver インストールを使用してブラウザテ ストを実行します。ただし、独自の Selenium サーバーを起動し、希望するブラウザでテストを実行することもできます。
開始するには、アプリケーションの基本的な Dusk テストケースである tests/DuskTestCase.php ファイルを開きます。このファイル内で、startChromeDriver メソッドの呼び出しを削除することができます。これにより、Dusk が ChromeDriver を自動的に起動しなくなります:
/**
* Prepare for Dusk test execution.
*
* @beforeClass
*/
public static function prepare(): void
{
// static::startChromeDriver();
}
次に、driver メソッドを変更して、希望する URL とポートに接続することができます。さらに、WebDriver に渡すべき「desired capabilities」を変更することもできます:
use Facebook\WebDriver\Remote\RemoteWebDriver;
/**
* Create the RemoteWebDriver instance.
*/
protected function driver(): RemoteWebDriver
{
return RemoteWebDriver::create(
'http://localhost:4444/wd/hub', DesiredCapabilities::phantomjs()
);
}
はじめに
テストの生成
Dusk テストを生成するには、dusk:make Artisan コマンドを使用します。生成されたテストは tests/Browser ディレクトリに配置されます:
php artisan dusk:make LoginTest