javascriptremotewebdrivernightwatchselenoid

How to configure a remote webdriver in Nightwatch?


I'm getting started with Nightwatch and trying to launch a browser remotely using Selenoid.

But looks like there is no sample of remote Webdriver configuration in official documentation. For instance, in Java I'm creating a RemoteWebdriver object, passing the hub url into it, like:

 WebDriver wd = new RemoteWebDriver(URI.create('http://hub-master:4444/wd/hub').toURL(), capabilities)

But when I'm setting the suggested parameters from the documentation (https://nightwatchjs.org/gettingstarted/configuration/#webdriver-settings):

webdriver: {
        "host": "http://hub-master",
        "port": 4444,
        "default_path_prefix": "/wd/hub",
        "log_path": 'selenium_logs',
},

I'm getting the error:

  An error occurred while retrieving a new session: "getaddrinfo ENOTFOUND http://simulia-master"

So could anyone provide an example of configured remote webdriver in Nightwatch conf.js for Selenoid or Selenium Grid, please?


Solution

  • Solved by the following configuration. It appeared that basic selenium settings can be set in default to be used for several local environments, and also, its particular fields like host and port can be overridden in selenoid environments:

     test_settings: {
            default: {
                disable_error_log: false,
                launch_url: 'https://my-url.com',
                selenium: {
                    host: "localhost",
                    port: 4444,
                    start_process: true,
                    server_path: "node_modules/selenium-server/lib/runner/selenium-server-standalone-3.141.59.jar",
                    start_session: true,
                    log_path: "out/selenium_log",
                    cli_args: {
                        "webdriver.chrome.driver": "node_modules/chromedriver/lib/chromedriver/chromedriver.exe",
                        "webdriver.gecko.driver": "node_modules/geckodriver/geckodriver.exe"
                    }
                },
                desiredCapabilities: {
                    "browserName": "chrome", /* default browser for local run */
                },
            },
            chrome: {
                silent: true,
                screenshots: {
                    enabled: true,
                    path: './screenshots/chrome/',
                    on_failure: true,
                    on_error: true,
                },
                desiredCapabilities: {
                    browserName: "chrome",
                    chromeOptions: {
                        args: [
                            "disable-web-security",
                            "ignore-certificate-errors",
                            "--test-type"
                        ],
                        "prefs": {
                            "protocol_handler": {
                                "allowed_origin_protocol_pairs": allowedProtocols
                            },
                        },
                        "w3c": false,
                    }
                }
            },
            firefox: {
                screenshots: {
                    enabled: true,
                    path: './screenshots/firefox/',
                    on_failure: true,
                    on_error: true,
                },
                desiredCapabilities: {
                    browserName: "firefox",
                    alwaysMatch: {
                        "moz:firefoxOptions": {
                            args: [
                                "--headless",
                                "--width=1920",
                                "--height=1080"
                            ],
                        }
                    }
                }
            },
            selenoidChrome: {
                selenium: {
                    start_process: false,
                    host: "selenoid-host",
                    port: 4444,
                    live_output: true,
                },
                screenshots: {
                    enabled: true,
                    path: './screenshots/selenoidChrome',
                    on_failure: true,
                    on_error: true,
                },
                desiredCapabilities: {
                    "enableVNC": true,
                    "browserName": "chrome",
                    "enableLog": true,
                    "enableVideo": true,
                },
            },
            selenoidFirefox: {
                extends: 'selenoidChrome',
                screenshots: {
                    path: './screenshots/selenoidFirefox',
                },
                desiredCapabilities: {
                    "browserName": "firefox",
                }
            },
        },