2016-08-02 16 views
1

Bei meiner derzeitigen Firma haben wir ungefähr 10 Websites. Das alles erstreckt sich von einer einzigen Codebasis.Mehrere Nachtwächter-Instanzen laufen lassen

Wenn wir etwas in der Codebasis "Kern" ändern, wollen wir Tests auf allen 10 Websites parallel durchführen. Es ist viel einfacher in der Cloud, aber wir wollen es auch lokal tun können.

Damit dies geschehen kann, ich mehr Selenium Instanzen im Grunde beginnen, alle mit eigenem Hafen, und legen Sie einen anderen Nachtschwärmer-launch_url für jede Instanz

So machte ich einen NodeJS Skript .. Das schafft eine nightwatch.json für Jede Seite, jeder hält seine eigene Launch_url und Selen Port .. Und spawns Nachtwache 10-mal Bezug auf seine eigene JSON Config-Datei.

Aber ich frage mich, ob das der "richtige" Ansatz ist.

Kann Selenium Grid dieses Problem lösen? Auch für lokale Tests?

Danke!

Antwort

2

Das Selenium-Gitter ist so konzipiert, dass es mehrere parallele Sitzungen verarbeiten kann.

Sie sollten nur einen Selen-Hub mit einem oder mehreren Selenknoten haben. Beginnen Sie Ihren Selen Knoten mit extra params -browser

Beispiel

java -jar selenium_server.jar -Dwebdriver.chrome.driver=$CHROMEDRIVER -role node -hub http://localhost:4444/grid/register -maxSession 20 -browser browserName=chrome,maxInstances=10 -browser browserName=firefox,maxInstances=10"

(für Differenz zwischen maxSession vs MaxInstances überprüfen Sie dieses: Selenium Grid: MaxSessions vs MaxInstances)

alle Tests konfiguriert werden, um das gleiche zu verwenden Selen-Hub-Instanz.

+0

Danke für die Antwort! Habe ein bisschen aufgeräumt .. Ich habe es jetzt mit 1 Selen-Instanz gearbeitet.Es zeigt mir immer noch nichts über Best Practices, wie man mehrere Instanzen von Nightwatch laufen lässt. – DutchKevv

+0

Die beste Methode, um alle Selentests allgemein durchzuführen (nicht nur über Nachtwächter-Framework), ist die Einrichtung eines Selenhubs + mehrerer Selenknoten (einer Selen-Knoten auf der VM) (also könnten Sie mehrere VMs haben, zB eine mit Windows, eine mit Linux, usw.), und Sie sollten Selen nicht aus Ihrem Test starten. Selenium-Hub sollte als Systemdienst eingerichtet werden, damit es immer funktioniert. Jetzt sollten Ihre Tests nur mit Selen-Hub kommunizieren, und Selen Hub wird dafür verantwortlich sein, den besten Selen-Knoten zu finden, um Ihren Test zu starten. – nirmus

0

Wenn Sie Cloud-Lösung wollen, arbeitet Nachtschwärmer wirklich gut mit browserstack oder saucelabs in der nightwatch.json Datei

"selenium" : { 
    "start_process" : true, 
    "server_path" : "lib/selenium/selenium-server-standalone-2.53.0.jar", 
    "start_session" : true, 
    "log_path" : "log/", 
    "host" : "127.0.0.1", 
    "port" : 4444, 
    "cli_args" : { 
     "webdriver.chrome.driver" : "lib/drivers/chromedriver" 
    } 
    }, 

    "test_settings" : { 
    "bstk" : { 
     "launch_url": "http://hub.browserstack.com", 
     "selenium_port" : 80, 
     "selenium_host" : "hub.browserstack.com", 
     "silent": true, 
     "screenshots": { 
      "enabled": false, 
      "path": "" 
     }, 

     "desiredCapabilities": { 
      "browserName": "chrome", 
      "javascriptEnabled": true, 
      "acceptSslCerts": true, 
      "browserstack.user": "username", 
      "browserstack.key": "..." 
     } 
     }, 
1

Selenium Grid Ihr Problem nicht lösen wird. Da Selen Grid die gleichen Testfälle über verschiedene Instanzen läuft. Selenium Grid wird verwendet, um zu überprüfen, ob diese Testfälle mit verschiedenen Browsern, Browserversionen oder verschiedenen Betriebssystemen kompatibel sind. Überprüfen Selen Gitter: http://www.seleniumhq.org/docs/07_selenium_grid.jsp

Und in Ihrem Fall möchten Sie Testfälle für verschiedene URLs ausführen, daher gibt es 10 verschiedene Testfälle festgelegt.

Sie tun es richtig, "Also habe ich ein NodeJS-Skript .. Das erstellt eine Nightwatch.json für jede Website, jeder mit seinen eigenen launch_url und Selen Port .. Und spawns Nachtwache 10-mal Bezug auf seine eigenen json Config Datei."

Sie können jeden Testfallsatz parallel ausführen, indem Sie test_workers festlegen. Beispiel: "test_workers": {"enabled": true, "workers": "auto"}. Überprüfen Sie test_workers, um den Testfall parallel auszuführen http://nightwatchjs.org/gettingstarted/#basic-settings

Korrigieren Sie mich, wenn ich falsch liege.

Verwandte Themen