WORKING GREAT with Caveats!!
Finally, I was able to achieve what I need. To rephrase, this is my setup:
Selenium Grid Hub: Running on iMac with Yosemite/Maveicks (Also tried with Windows 10 Preview using Bootcamp). Source for the test scripts are on the hub and NOT on each of the nodes. This is very important as I wanted to have the source in one single location for getting latest from SVN.
Selenium Grid Node: Running on MacBook Air:
Connected 2 devices (iPhone 6+ and Samsung Note II). Each of the devices are running on different appium ports. Selenium grid node are instantiated on each of the ports appium is listening (more on this later).
For debugging purposes, I installed IntelliJ on the hub machine (iMac) and when the test cases start running, I was seeing parallel run on both the devices at the same time (on the node machine). So far so good. I did the same with Windows 10 Preview (on the hub) and it works extremely well too. So, Windows hub can talk to Mac nodes. Awesome!
Now, the issue: I wanted to see if it works with Windows node. I disconnected the Android device (Samsung Note II) and plugged in to Windows 7 laptop while the hub is running on Windows 10 Preview (I think Windows OS shouldn't matter here). When I ran the test case from the hub on Windows 10 Preview, at the line where the AndroidDriver is instantiated, I got a Internet Explorer Driver error asking me to set this: System.setProperty("webdriver.ie.driver", "C:\SeleniumDrivers\IEDriverServer.exe");
I did this on both the server and the node (both running on Windows OS). Then, I got one more new error:
org.openqa.selenium.WebDriverException: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones. (WARNING: The server did not provide any stacktrace information).
My first question is I'm at loss on why these errors about Internet Explorer are happening when I'm trying to run an Android native app on the phone connected to a node remotely. These kind of issues are not happening when both the hub and the node are on OS X and also when the hub is on Windows 10 Preview and the node is on OS X. These pesky errors only happen when both the hub and node are on Windows OS. I haven't tried where the hub is on OS X and the node is on Windows 7.
And here's the snippet that I'm using to instantiate appium servers and grid nodes on the node machine:
C:\Program Files\nodejs>node C:\Users\username\AppData\Roaming\npm\node_mod
ules\appium\bin\appium.js --port 6000 --bootstrap-port 6025 --udid "android device id" --app-pkg "android package name" --app-activity "android activity name"
C:\Automation\Server>java -jar selenium-server-standalone.jar -role node -browse
r browserName=Android,version=4.3,maxinstance=1,platform=WINDOWS,applicationName
="udid" -Dwebdriver.ie.driver=C:\WebDrivers\IEDriverServer.exe -hub http://hubip:4444/grid/register3 -port 6000
I have to add the -Dwebdriver.ie.driver to make the nasty InternetExplorer Driver location failure to go away. Still getting the protected zone error.
Puzzled on why all of these when I'm trying to run a native android app on and android phone connected to a Windows OS node.
Btw, is the browsername correct? I'm just automating a native iPhone and a Android app.
Anybody, with any thoughts?
Thanks.