Laravelでブラウザテストを実行する(Laravel Dusk)
いままでブラウザテストの環境は、Codeceptionとか、Seleniumとか使っていたのですが、PHP環境だとしっくりくるブラウザテスト環境がありませんでした。多分好みの問題だけど。
会社でよくつかっているLaravelにも標準でブラウザテスト環境が用意されているので、いままで使っていなかったですが、せっかくなので使ってみました。
Laravel Dusk
https://laravel.com/docs/5.5/dusk
会社でよくつかっているLaravelにも標準でブラウザテスト環境が用意されているので、いままで使っていなかったですが、せっかくなので使ってみました。
Laravel Dusk
https://laravel.com/docs/5.5/dusk

Duskは「夕暮れ」のことです。
上記の公式ドキュメントによると、JDKとかSeleniumとかが不要で、スタンドアロンでChromeDriverを利用するよ、とのことです。
また、他のSelenum互換のドライバも利用できるようです。
上記の公式ドキュメントによると、JDKとかSeleniumとかが不要で、スタンドアロンでChromeDriverを利用するよ、とのことです。
また、他のSelenum互換のドライバも利用できるようです。
Laravel Duskをcomposerで追加インストールします。
>composer require --dev laravel/dusk You are running Composer with SSL/TLS protection disabled. Using version ^2.0 for laravel/dusk ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 2 installs, 0 updates, 0 removals - Installing facebook/webdriver (1.5.0): Downloading (100%) - Installing laravel/dusk (v2.0.8): Downloading (100%) Writing lock file Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postUpdate > php artisan optimize
composer.jsonの様子。
{ "name": "laravel/laravel", "description": "The Laravel Framework.", // 略 , "require-dev": { "fzaninotto/faker": "~1.4", "laravel/dusk": "^2.0", "mockery/mockery": "0.9.*", "phpunit/phpunit": "~5.7" },
artisanでDuskのscaffoldを作成します。
>php artisan dusk:install Dusk scaffolding installed successfully.
できました!

失敗したけどうごいた(標準ではヘッドレス Chromeで動作するため見た目は何も変化なし)

失敗すると、勝手にスクリーンショットが取得されます。

ExampleTest.phpで比較文字列が”Laravel”になっていた
$this->browse(function (Browser $browser) { $browser->visit('/')->assertSee('Laravel'); });けど存在しないので、存在する文字列で比較。
成功

以上。選択肢が増えるのはいいことです