【Laravel 5.4】Laravel Duskによるブラウザテストの作成方法
上の記事を参考にさせてもらいながらDuskを動かそうとしましたが、
Laradockの環境ではうまく動作しなかったので、対処法をメモします。
前提
-
composer
を使ってlaravel/dusk
をインストール済み。 -
ServiceProvider
にDusk
を登録済み。 -
php artisan dusk:install
を実行済み
Laradockで実行した場合
laravel_workspace
コンテナに入り、 php artisan dusk
を実行すると、
以下のようなエラーに襲われます。
Facebook\WebDriver\Exception\WebDriverCurlException:
Curl error thrown for http POST to /session with params:
{"desiredCapabilities":{"browserName":"chrome","platform":"ANY"}}
・
・
・
そのため、WebDriverを設定し直す必要があります。
対処法
まず、 dusk
用の環境変数の設定ファイル、.env.dusk.local
を準備します。
これは必須ではないですが、環境変数はテスト用に分けたほうがよいでしょう。
.env.dusk.local
は .env
からコピってきてOKです。
ただし、 APP_URL
のみ、 http://nginx
に設定します。
.env.dusk.local
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://nginx
・
・
・
そして、 tests\DuskTestCase.php
内のdriver()
メソッドを以下のように変更します。
tests\DuskTestCase.php
protected function driver()
{
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()
);
}
これで、アプリケーション側の準備はOKです。
最後に、 laradock_selenium
のコンテナが必要になりますので、
docker-composer
で立ち上げておきます。
docker-compose build selenium
実行します。
$ php artisan dusk
PHPUnit 5.7.9 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 31.01 seconds, Memory: 16.00MB
OK (2 tests, 2 assertions)
できたーー( ´ ▽ ` )ノ