11

Running php artisan dusk get the error:

Facebook\WebDriver\Exception\UnknownErrorException: unknown error: net::ERR_CONNECTION_REFUSED
  (Session info: headless chrome=85.0.4183.83)

Versions:

  • OS: Windows 10 v1903 build 18362.1016
  • Chrome: 85.0.4183.83
  • Laravel: v6.18.37
  • Dusk: v5.11.0
  • Phpunit: v8.5.8

Tried:

  • Disable firewall
  • Set test website to use localhost (was myapp.local)
  • Can access all pages using Chrome browser
  • Check that vendor/laravel/dusk/bin/chromedriver-win.exe is executable (-rwxr-xr-x)
  • php artisan route:clear
  • php artisan cache:clear
  • php artisan config:clear
  • composer dump-autoload
  • google "Facebook\WebDriver\Exception\UnknownErrorException: unknown error: net::ERR_CONNECTION_REFUSED"

The server localhost:9515 appears to be running while tests executing as I get the following response in Chrome when trying it:

{
    value: {
        error: "unknown command",
        message: "unknown command: unknown command: ",
        stacktrace: "Backtrace: Ordinal0 [0x0037D383+3134339] Ordinal0 [0x0026A171+2007409] Ordinal0 [0x0010AEE8+569064] Ordinal0 [0x000AD12C+184620] Ordinal0 [0x000ACF0A+184074] Ordinal0 [0x00081FD7+8151] Ordinal0 [0x00082496+9366] Ordinal0 [0x00082B40+11072] Ordinal0 [0x00280CD9+2100441] GetHandleVerifier [0x004EB75A+1396954] GetHandleVerifier [0x004EB3D9+1396057] GetHandleVerifier [0x004F7126+1444518] GetHandleVerifier [0x004EBCE8+1398376] Ordinal0 [0x00277F51+2064209] Ordinal0 [0x00081D35+7477] Ordinal0 [0x00081991+6545] GetHandleVerifier [0x006BF31C+3312796] BaseThreadInitThunk [0x76986359+25] RtlGetAppContainerNamedObjectPath [0x771D7C24+228] RtlGetAppContainerNamedObjectPath [0x771D7BF4+180] (No symbol) [0x00000000] ",
    }
}

DuskTestCase driver:

/**
 * Create the RemoteWebDriver instance.
 *
 * @return \Facebook\WebDriver\Remote\RemoteWebDriver
 */
protected function driver()
{
    $options = (new ChromeOptions)->addArguments([
        '--disable-gpu',
        '--headless',
        '--window-size=1920,1080',
    ]);

    return RemoteWebDriver::create(
        'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
            ChromeOptions::CAPABILITY, $options
        )
    );
}

Does anyone have any clues on what else to try? Or does anyone else know a resolution?

Trevor
  • 1,111
  • 2
  • 18
  • 30

8 Answers8

17

I faced the same issue and for me what worked was setting the APP_URL parameter in the .env file as:

APP_URL=http://127.0.0.1:8000

As that was the same port on which my php artisan serve would also serve the website i.e.

Laravel development server started: http://127.0.0.1:8000
Coola
  • 2,934
  • 2
  • 19
  • 43
  • I have no idea and still can't believe why this worked. – buryo Aug 27 '22 at 23:53
  • I suppose dusk needs to use the website being served to run the browser tests. It doesn't run its own servers but uses the same as your app. – Coola Aug 28 '22 at 12:28
  • 3
    My issue was a little different, but this was a helpful clue! I am running my tests inside a Docker-driven environment and I needed to have `APP_URL=http://nginx:8080` (where `nginx` is the name of the container in which chromedriver is running) in `.env.testing`, whereas `APP_URL=http://localhost:8080` is needed in `.env`. Tricky little issue; thanks! – Ben Johnson Nov 08 '22 at 19:40
  • 1
    @BenJohnson This was exactly my issue, tried everything possible until this fixed it – Matthew Bradley May 19 '23 at 07:32
14

I'm putting this out there for others that might face the same thing as me.

It turns out Laravel Dusk expects us to run php artisan serve before running php artisan dusk! The ERR_CONNECTION_REFUSED error refers to not being able to connect to the http://localhost:8000 URL of the application itself, because it's not running.

This does make sense, but I simply didn't know and the documentation was not clear on that (I had to deduce it). The ChromeDriver, however, is started automatically by Dusk at execution time.

Dharman
  • 30,962
  • 25
  • 85
  • 135
Valeriu Paloş
  • 3,459
  • 1
  • 20
  • 12
1

The only thing that helped me with Laravel 9 is to set APP_URL=http://laravel.test in the .env.dusk.local file.

Shone Tow
  • 497
  • 4
  • 14
0

Fixed it by following these steps:

  1. Remove vendor folder and remove composer.lock
  2. php composer.phar install
  3. Check your current Chrome Version - you can check it by going to https://www.whatismybrowser.com/detect/what-version-of-chrome-do-i-have
  4. Download the WebDriver for Chrome that matches your current Chrome Version from http://chromedriver.chromium.org/downloads
  5. Manually remove old chromedriver-win.exe version from vendor\laravel\dusk\bin and put the one you downloaded there. Note that you will have to rename the file.

After doing step 2 above the error message changed which prompted the remaining steps.

Trevor
  • 1,111
  • 2
  • 18
  • 30
  • I am getting the same error and I tried the above but for some reason it is not resolving the issue. I also tried clearing the cache with `php artisan optimize` but that did not help either. – Coola Sep 06 '20 at 01:39
  • @Coola Thanks for that feedback. I wasn't convinced myself although it seemed to work hence not marking it as the answer. Hopefully someone does find the solution. :) – Trevor Sep 15 '20 at 01:28
0

To fix this error you will need to update .env file APP_URL parameter to your local server url as below

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:XZoWMB3aWom/V3iZy870VSQjMsBdGCHYdWbRuNb6aY0=
APP_DEBUG=true
APP_URL=http://127.0.0.1:8000 #(This can be url to your local environment)
mk23
  • 1,257
  • 1
  • 12
  • 25
0

For me the error disappeared after setting .env APP_ENV=development and i keep .env.dusk.development also same.

Shameem Ali
  • 181
  • 2
  • 7
0

I was trying to run the dusk after installing the new Laravel 8.77 and faced the following error and found the solution by creating new .env.dusk.local file. You have to create .env.dusk.{environment} as per your current environment.

In your newly created env file, you need to define proper URL for ex. http://testing-laravel.local by creating virtual host.

There was 1 error:

1) Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\UnknownErrorException: unknown error: net::ERR_CONNECTION_REFUSED
  (Session info: headless chrome=96.0.4664.110)
Mayank Dudakiya
  • 3,635
  • 35
  • 35
0

As obvious as it sounds, don't do what I did and completely forget to start your development server before attempting to run Dusk tests locally - if the server that the tests are running on isn't started, the connection will obviously be refused. Whether you're using XAMPP or just php artisan serve, make sure you remember to turn on your local server.

Hashim Aziz
  • 4,074
  • 5
  • 38
  • 68