タイトルにあるように、Laravel 5.4と最新のHomestead(1.0.1)をクリーンインストールしました。ただし、単純なDuskテストケースを実行すると、次のエラーが表示されます。
Localhostポート9515への接続に失敗しました:接続が拒否されました
誰もこれに対処する方法を知っていますか?ポートを8888
などの別のものに変更してみましたが、役に立ちませんでした。
編集:私はもう少し掘り下げることができましたが、chromedriver
実行可能ファイルは実際には実行可能ではないことがわかりました(chmod
)。手動で実行しようとすると、このエラーが表示されることが修正されました。
./chromedriver:共有ライブラリのロード中のエラー:libnss3.so:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません
クロムドライバーのインストールが壊れているようです。
最初からインストールしてみることができます
CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.Zip -P ~/
unzip ~/chromedriver_linux64.Zip -d ~/
rm ~/chromedriver_linux64.Zip
Sudo mv -f ~/chromedriver /usr/local/bin/chromedriver
Sudo chown root:root /usr/local/bin/chromedriver
Sudo chmod 0755 /usr/local/bin/chromedriver
Ubuntu Linux 16.04では、これが機能するようになりました。
ヘッドレステスト用のChromiumと依存関係のインストール
Sudo apt-get -y install chromium-browser xvfb gtk2-engines-pixbuf xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable imagemagick x11-apps
custom DuskCommand
を作成
次のhandle
メソッドを使用して、オリジナルを拡張します。
public function handle()
{
$xvfb = (new ProcessBuilder())
->setTimeout(null)
->setPrefix('/usr/bin/Xvfb')
->setArguments(['-ac', ':0', '-screen', '0', '1280x1024x16'])
->getProcess();
$xvfb->start();
try {
parent::handle();
} finally {
$xvfb->stop();
}
return;
}
これにより、テストを実行する前にヘッドレステストのXvfbが開始され、テストの完了後にプロセスが停止します。
編集:そして、vendor/laravel/dusk/bin/chromedriver-linux
は実行可能です。
これは、chromeドライバーの最新バージョンをダウンロードし、適切に解凍するのに役立ちます。
LATEST_VERSION=$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE) && wget -O /tmp/chromedriver.Zip https://chromedriver.storage.googleapis.co /$LATEST_VERSION/chromedriver_linux64.Zip && Sudo unzip /tmp/chromedriver.Zip chromedriver -d /usr/local/bin/;
最新のlaravel/Homestead box v.6.0.0では、そのまま使用できます
customDuskCommandを作成します
namespace App\Console\Commands;
use Symfony\Component\Process\Process;
class DuskCommand extends \Laravel\Dusk\Console\DuskCommand {
public function handle() {
$xvfb = (new Process(['/usr/bin/Xvfb', '-ac', ':0', '-screen', '0', '1280x1024x16']))
->setTimeout(null);
$xvfb->start();
try {
parent::handle();
} finally {
$xvfb->stop();
}
return;
}
}
https://stackoverflow.com/a/44322930/470749 に感謝します。それは時代遅れで動作しなかったので、動作する更新された回答を提供しています。
私は今日この問題を抱えていましたが、解決策は Laracasts です
これがコピーです。
# makes sure all your repos are up to date
Sudo apt-get update
# chrome dependencies I think
Sudo apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4
# chromium is what I had success with on Codeship, so seemed a good option
Sudo apt-get install chromium-browser
# XVFB for headless applications
Sudo apt-get -y install xvfb gtk2-engines-pixbuf
# fonts for the browser
Sudo apt-get -y install xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable
# support for screenshot capturing
Sudo apt-get -y install imagemagick x11-apps
# Once all this has run through, you need to fire up xvfb on your Homestead box. If you’re planning to # do this on a regular basis, you’ll want to get this setup on boot, but for the sake of testing things out:
Xvfb -ac :0 -screen 0 1280x1024x16 &