Laravel Dusk: Facebook\WebDriver\Exception\UnknownErrorException: unknown error: net::ERR_CONNECTION_REFUSED

7

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?

php
laravel
google-chrome
automated-tests
laravel-6
asked on Stack Overflow Aug 31, 2020 by Trevor • edited Sep 1, 2020 by Trevor

4 Answers

6

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
answered on Stack Overflow Sep 6, 2020 by Coola • edited Jan 9, 2021 by Coola
2

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.

answered on Stack Overflow Apr 10, 2021 by Valeriu Paloş • edited Apr 10, 2021 by Dharman
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.

answered on Stack Overflow Sep 1, 2020 by Trevor
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)
answered on Stack Overflow May 18, 2021 by Manjeet

User contributions licensed under CC BY-SA 3.0