title: How to run test cases on Safari on Selenium Grid with Windows 10 machine as hub and MAC machine as node
body: <p>Details:</p>
  
  <p><strong>Windows version:</strong> 10 , 64 bit</p>
  
  <p><strong>MAC:</strong> macOS Sierra 10.12.5</p>
  
  <p><strong>Safari:</strong> 10.1.1</p>
  
  <p><strong>Selenium:</strong> 3.4.0</p>
  
  <p>Started hub on Windows machine with below command and successfully started</p>
  
  <pre><code>java -jar selenium-server-standalone-3.4.0.jar -role hub -port 4444
  </code></pre>
  
  <p>Started node on MAC machine with below command and successfully started</p>
  
  <pre><code>java -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig mac.json
  </code></pre>
  
  <p>mac.json content is </p>
  
  <pre><code>{
    "capabilities":
    [
      {
        "browserName": "safari",
        "maxInstances": 5,
        "seleniumProtocol": "WebDriver"
      },
      {
        "browserName": "firefox",
        "maxInstances": 5,
        "seleniumProtocol": "WebDriver"
      },
      {
        "browserName": "chrome",
        "maxInstances": 5,
        "seleniumProtocol": "WebDriver"
      },
      {
        "browserName": "internet explorer",
        "maxInstances": 1,
        "seleniumProtocol": "WebDriver"
      }
    ],
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 5,
    "port": 5555,
    "register": true,
    "registerCycle": 5000,
    "hub": "http://192.101.3.23:4444",
    "nodeStatusCheckTimeout": 5000,
    "nodePolling": 5000,
    "role": "node",
    "unregisterIfStillDownAfter": 60000,
    "downPollingLimit": 2,
    "debug": false,
    "servlets" : [],
    "withoutServlets": [],
    "custom": {}
  }
  </code></pre>
  
  <p>Selenium Java code to invoke browser is</p>
  
  <pre><code>capability = DesiredCapabilities.safari();
  capability.setBrowserName("safari");
  capability.setPlatform(Platform.MAC);
  SafariOptions options = new SafariOptions();
  options.setUseCleanSession(true);
  capability=DesiredCapabilities.safari();
  capability.setCapability(SafariOptions.CAPABILITY, options);
  capability.setPlatform(Platform.ANY);
  
  driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);
  </code></pre>
  
  <p>On executing the below line for Safari browser</p>
  
  <pre><code>driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);
  </code></pre>
  
  <p>Throwing an exception</p>
  
  <pre><code>java.lang.reflect.InvocationTargetException
  </code></pre>
  
  <p>I am unable to proceed to, did i missed anything, what is not allowing me to proceed further, can any one help please.   </p>
  
  <p>Updated the Selenium Java code as below, and is working fine</p>
  
  <pre><code>capability = DesiredCapabilities.safari();
  driver=new RemoteWebDriver(new URL(http://192.101.1.23:5555),capability);
  </code></pre>