【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 に設定します。
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()メソッドを以下のように変更します。
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)
できたーー( ´ ▽ ` )ノ