How to fix error "Could not detect Mac OS X Version from sw_vers output: '10.12 '" from Appium
It' worked for me.
You can config file by this command:
- grep -rl "Could not detect Mac OS X Version from sw_vers output:" /Applications/Appium.app/
Terminal will show :/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js/Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js/Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js
Use command vim and config each file.
Example
vim /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js
Config file:
Change From ->
case 10: _arr = ['10.8', '10.9', '10.10', '10.11']; _i = 0;
To ->
case 10: _arr = ['10.8', '10.9', '10.10', '10.11','10.12']; _i = 0;
vim /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js
Config file:
Change From ->
try {stdout = (await exec('sw_vers', ['-productVersion'])).stdout;}
To ->
try {stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();}
Change From ->
for (let v of ['10.8', '10.9', '10.10', '10.11']) {if (stdout.indexOf(v) === 0) { return v; }}
To ->
for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) {if (stdout.indexOf(v) === 0) { return v; }}
vim /Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js
Config file:
Change From ->
case 10: _arr = ['10.8', '10.9', '10.10', '10.11']; _i = 0;
To ->
case 10: _arr = ['10.8', '10.9', '10.10', '10.11','10.12']; _i = 0;
vim /Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js
Config file:
Change From ->
try {stdout = (await exec('sw_vers', ['-productVersion'])).stdout;}
To ->
try {stdout = (await exec('sw_vers', ['-productVersion'])).stdout.trim();}
Change From ->
for (let v of ['10.8', '10.9', '10.10', '10.11']) {if (stdout.indexOf(v) === 0) { return v; }}
To ->
for (let v of ['10.8', '10.9', '10.10', '10.11','10.12']) {if (stdout.indexOf(v) === 0) { return v; }}
Click start the stethoscope button
I went through the above steps even though I saw that it's been fixed by appium already.
Just run:
npm install appium-doctor -g
to update appium-doctor itself, then run:
appium-doctor
again to see it work.