nightwatchjs / nightwatch

Integrated end-to-end testing framework written in Node.js and using W3C Webdriver API. Developed at @browserstack
https://nightwatchjs.org
MIT License
11.79k stars 1.31k forks source link

Nightwatch should start up a selenium grid instead of start a selenium standalone server if runs locally. #882

Closed domige closed 8 years ago

domige commented 8 years ago

I want to start several nightwatch test cases in paralle on my local work station. So i specify selenium settings in my capabilities file. Nightwatch will try to start standalone selenium server locally. Only the first test case can run, the cases after that will fail with error: 4444 port is in use. I do think nightwatch should start a selenium grid (1 hub and 1 node) locally instead a standalone selenium server. Thus it can support parralel run. The test settings should be able to set selenium required settings. Max session, max instances etc. Current capabilitties with selenium settings

localchrome: {
        selenium_host: "127.0.0.1",
        selenium_port: 4444,
        selenium: {
            start_process: true,
            host: "127.0.0.1",
            port: 4444,
            server_path: "node_modules/selenium-server/lib/runner/selenium-server-standalone-2.52.0.jar",
            cli_args: {
                "webdriver.chrome.driver": "node_modules/.bin/chromedriver",
                "webdriver.ie.driver": "",
                "webdriver.firefox.profile": ""
            }
        }

The selenium log Entering the global before function for nightwatch [1;35mStarting selenium server... [0mThere was an error while starting the Selenium server:

[0;31m15:13:33.669 INFO - Launching a standalone Selenium Server Setting system property webdriver.chrome.driver to node_modules/.bin/chromedriver.cmd 15:13:33.748 INFO - Java: Oracle Corporation 25.73-b02 15:13:33.748 INFO - OS: Windows 8.1 6.3 amd64 15:13:33.760 INFO - v2.48.0, with Core v2.48.0. Built from revision 41bccdd 15:13:33.863 INFO - Driver class not found: com.opera.core.systems.OperaDriver 15:13:33.863 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered 15:13:34.058 WARN - Failed to start: SocketListener0@0.0.0.0:4444 Exception in thread "main" java.net.BindException: Selenium is already running on port 4444. Or some other service is. at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:479) at org.openqa.selenium.server.SeleniumServer.boot(SeleniumServer.java:292) at org.openqa.selenium.server.SeleniumServer.main(SeleniumServer.java:232) at org.openqa.grid.selenium.GridLauncher.main(GridLauncher.java:64)

beatfactor commented 8 years ago

Nightwatch has its own parallel testing capability (http://nightwatchjs.org/guide#parallel-running) and supporting Grid parallelisation is not part of our focus for now I'm afraid.

DutchKevv commented 8 years ago

Nightwatch is only capable of doing the same test on multiple browsers in parallel..

The direction @domig probably means, is a bit like this.

At my current company, we develop about 20 websites, all extending from a single codebase. Whenever we do a change in the core codebase, we want to test all 20 websites, every website running the full suite of tests.

So for now (probably not a best solution), I automatically spawn multiple nightwatch processes, give them each a separate nightwatch.conf.json holding the unique lauch_url etc params for each website etc, and then spawn it locally (a bit heavy) or on browserstack

madhavajay commented 7 years ago

Checkout TestArmada Magellan https://github.com/TestArmada/magellan

We are using it with about 60 phantomjs browsers with Selenium Standalone in parallel, and im currently investigating a Selenium Grid solution so we can go higher.