2016-08-02 12 views
1

私の現在の会社では、約10のウェブサイトがあります。そのすべてが単一のコードベースから拡張されています。複数のナイトウォッチインスタンスを実行する

我々は「コア」のコードベースで何かを変更するたびに、我々は、並行して、すべての10社のウェブサイト上でテストを実行します。クラウドでの作業は非常に簡単ですが、ローカルで行うこともできます。そのためには

、私は基本的にすべての独自のポートと、複数のセレンのインスタンスを起動し、すべてのインスタンスに対して

を異なるナイトウォッチlaunch_urlを設定するだから私はNodeJSスクリプトを作った...それはのためのnightwatch.jsonを作成しますそれぞれのサイトはそれぞれ独自のlaunch_urlとseleniumポートを持っています。そして、独自のjson設定ファイルを参照してナイトウォッチを10回生成します。

しかし、「正しい」アプローチのthatsのだろうか。

Selenium Gridはこの問題を解決しますか?ローカルテスト用にも?

ありがとうございます!

答えて

2

セレングリッドは、複数の並列セッションを処理できるように設計されています。

1つのまたは複数のセレンノードに一つだけのセレンハブを持っている必要があります。あなたのすべてのテストは同じを使用するように構成することができ

:あなたのセレンのノードは-browser

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"

Selenium Grid: MaxSessions vs MaxInstances MAXINSTANCES対maxSessionの違いのために、このいずれかをご確認ください)余分のparamsで開始 セレンハブインスタンス。

+0

ありがとうございます!私は1セレンのインスタンスと実際に今働いている。それでも、複数のNightwatchインスタンスを実行する方法に関するベストプラクティスについては何も表示していません – DutchKevv

+0

一般的に、すべてのセレンテストを実行するベストプラクティスは、1つのセレンハブ+複数のセレンノード(1つVM上のSeleniumノード)(Windowsが1つ、Linuxが1つなど、複数のVMを持つことができます)、テストからセレンを起動しないでください。セレンハブはシステムサービスとして設定する必要がありますので、常に動作します。今、あなたのテストはセレンのハブとだけ話す必要があり、セレンハブはあなたのテストを開始するために最高のセレンのノードを見つける責任があります) – nirmus

0

あなたはクラウドソリューションをしたい場合は、ナイトウォッチはnightwatch.jsonファイルにbrowserstackまたはsaucelabsで本当によく働く

"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グリッドは、これらのテストケースが異なるブラウザー、ブラウザーのバージョンまたは異なるOSと互換性があるかどうかをチェックするために使用されます。セレンのグリッドを確認してください:http://www.seleniumhq.org/docs/07_selenium_grid.jsp

あなたのケースでは、異なるURLのテストケースを実行したいので、10種類のテストケースが設定されています。

NodeJSスクリプトを作成しました。それはそれぞれ独自のlaunch_urlとseleniumポートを持つすべてのサイトに対してnightwatch.jsonを作成します。独自のjson設定を参照してナイトウォッチを10回生成しますファイル。"

test_workersを設定することで、各テストケースセットを並列に実行できます。例: "test_workers":{"enabled":true、 "workers": "auto"} test_workersをチェックしてテストケースを並行して実行するhttp://nightwatchjs.org/gettingstarted/#basic-settings

私が間違っている場合は私を修正してください。

関連する問題