開発環境をhomestead等で構築した場合、duskテストをheadlessでしか実行できない。
そこで、ホストOS(それ以外のホストでも同じ)のブラウザを使うことでブラウザ動作を目視できるようにする。
記事は下記構成を想定
・開発環境: homestead(VirtualBox)
・Laravelバージョン: Laravel5.5 + dusk2.0
・ホストOS: Windows10
ホストOS側
Laravelプロジェクト内のchromedriver実行ファイルをホストOSの任意の場所にコピー
win,mac,linux用があるので環境にあわせてチョイスしてください。
vendor/laravel/dusk/bin/chromedriver-win.exe
chromedriverを実行
接続元IPアドレスのホワイトリストを設定する必要があるが、面倒なので全許可にしておく。
./chromedriver-win.exe --whitelisted-ips 0.0.0.0
ファイアウォール等の設定
外部からの接続を阻害する要因は全てパスしておくこと。
その他
Chromeブラウザがインストールされていること。
Laravelプロジェクト側
DuskTestCase.phpを編集
optionsのheadless設定はコメントアウトします。
10.0.2.2:9515がホストOSのIP:ポートです。
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
// '--disable-gpu',
// '--headless'
]);
return RemoteWebDriver::create(
'http://10.0.2.2:9515', DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY, $options
)
);
}
duskテスト実行
いつもどおりduskコマンドでテストを実行します。
ホストOS側のブラウザが起動して自動操作が始まります。
php artisan dusk test/Browser/HogeTest.php