Going Multi-Platform – Adding a Mac to the Grid: Part 1
- Driver Factory Part 3 – RemoteWebDrivers and my very own grid
- All is not as it seems: Checking the right browser launched
- Enter the Matrix: Selenium grid made simple
- Going Multi-Platform – Adding a Mac to the Grid: Part 1
- Going Multi-Platform – Adding a Mac to the Grid: Part 2
Apologies if you got a link to the incomplete first attempt at this post. This one is the real deal. It has long been my intention to look at adding multi-platform testing to my set-up, and finally I got my hands on a Mac to see if I could get it working. I am sure that I could easily have got a linux VM up and running in no time, but both my stats for this site, and from gs.statcounter.com clearly show that the only non Windows browser I need to worry about is Safari.

Of course, once I have a Mac on the grid, it should be trivial to add Firefox and Chrome on MacOS support too right?
So how do we do it?
- Acquire a Mac. The expensive bit: Even 5 year old Mac Mini’s going for around £200.
- Ensure its up to date and install Chrome and Firefox.
- Install a Java 8 or later jre.
- As with Windows:
Download the Selenium server jar, and Mac versions of the chromedriver and geckodriver executables into a safe location. In the same location create a .json file to configure this new node. This is what I came up with for mine.
{
"capabilities":
[
{
"browserName": "safari",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "firefox",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
},
{
"browserName": "chrome",
"maxInstances": 5,
"seleniumProtocol": "WebDriver"
}
],
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 5,
"port": 5571,
"register": true,
"registerCycle": 5000,
"hub": "http://192.168.0.12:4444",
"nodeStatusCheckTimeout": 5000,
"nodePolling": 5000,
"role": "node",
"unregisterIfStillDownAfter": 60000,
"downPollingLimit": 2,
"debug": false,
"servlets" : [],
"withoutServlets": [],
"custom": {}
}
Note that I only register a single instance of Safari. It seems that rather similar to Edge on windows. Safari will only run a single test browser instance at a time.
Also I totally failed to get name resolution working, hence the IP address in the config.
Hang on a second, you forgot the safaridriver!!!
Well no as it happens. One of the few things I like about Safari (since version 10.0) is that it includes its own selenium driver. Of course it is not turned on by default so just:
Open the Develop menu and enable ‘Remote Automation’
Then pop open a Terminal window in the directory you saved the files in earlier. For me then the command to get it running and attached to my grid hub is:
java -jar selenium-server-standalone-3.12.0.jar -role node -nodeConfig mac.json
and boom. It really is that simple:

Then its just a case of updating my code to add the new browser options. Oh, and fixing my tests to actually run on them of course! That’s for next time though…..
Progress made:
- Updated my grid hub to version 3.12.0 and updated all drivers.
- Mac node configured with Chrome, Firefox and Safari browsers now available on the grid.
Lessons learnt:
- No matter how many times I try, I really don’t get on with MacOS / OSX.
- Configuration of Chrome and Firefox is as on Windows.
- Safari does not require an additional driver download.