If you are looking at this post, chances high that, you are trying to run laravel dusk and seeing the following kind of error:
[[email protected] blog]$ php artisan dusk PHPUnit 9.3.11 by Sebastian Bergmann and contributors. E 1 / 1 (100%) Time: 00:00.331, Memory: 18.00 MB There was 1 error: 1) Tests\Browser\ExampleTest::testBasicExample Facebook\WebDriver\Exception\WebDriverCurlException: Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","goog:chromeOptions":{"binary":"","args":["--disable-gpu","--headless"]}}]},"desiredCapabilities":{"browserName":"chrome","platform":"ANY","chromeOptions":{"binary":"","args":["--disable-gpu","--headless"]}}} Failed to connect to localhost port 9515: Connection refused /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:331 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:136 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/tests/DuskTestCase.php:40 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:200 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/vendor/laravel/framework/src/Illuminate/Support/helpers.php:234 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:201 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:95 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:65 /var/www/vhosts/elastic-keldysh.139-99-24-82.plesk.page/blog/tests/Browser/ExampleTest.php:21 ERRORS! Tests: 1, Assertions: 0, Errors: 1.
Chorme/Chromium browser runs it’s on 9515 port and laravel dusk tries to connect to it through the Browser binary, but failing to do so. To resolve the case, we first, need to check if chromedriver for linux can run or not.
First, browse your laravel root directory, in my case, it’s the blog directory and then run the chromedriver for linux as following:
cd blog vendor/laravel/dusk/bin/chromedriver-linux
This should return something like the following if the driver able to load in memory:
[[email protected] blog]$ vendor/laravel/dusk/bin/chromedriver-linux
Starting ChromeDriver 85.0.4183.87 (cd6713ebf92fa1cacc0f1a598df280093af0c5d7-refs/branch-heads/[email protected]{#1689}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
But if it can not be loaded, it will return some kind of error like the following:
[[email protected] blog]$ vendor/laravel/dusk/bin/chromedriver-linux vendor/laravel/dusk/bin/chromedriver-linux: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory
As the error suggests, it is failing to access the library called libX11-xcb. To install it in CentOS, you may run the following from root shell:
[[email protected] lib64]# yum install libX11-xcb*
Once you see the following:
Installed: libX11-xcb-1.6.8-3.el8.x86_64 Complete!
You may now, go back to the user shell, and run the chromedriver-linux again:
[[email protected] lib64]# su - elastic-keldysh Last login: Thu Oct 1 15:28:29 IST 2020 on pts/0 [[email protected] ~]$ cd blog [[email protected] blog]$ vendor/laravel/dusk/bin/chromedriver-linux Starting ChromeDriver 85.0.4183.87 (cd6713ebf92fa1cacc0f1a598df280093af0c5d7-refs/branch-heads/[email protected]{#1689}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.
Now, you may run the following to start using the laravel dusk:
php artisan dusk
After you are done resolving the 9515 error, you might also have to face another error with Chrome Binary, have a look at the following on how to resolve the error: