TypeError: Cannot read property 'isInstalled' of undefined

Hi everyone,

I’ve been seeing this error with every 1.4.X version of Appium when calling “is_app_installed”, while it works perfectly fine on earlier versions e.g. 1.3.7.

Any ideas what could be the problem here?

My current setup is:

  • OSX Yosemite
  • Appium 1.4.16
  • NodeJS v5.3.0
  • Xcode 7.1
  • iOS 9.1

Appium logs:

$ node /usr/local/bin/appium --session-override --no-reset --address 127.0.0.1 --command-timeout 99999 --log-timestamp --log-level debug
2016-01-18 13:34:35:287 - info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)
2016-01-18 13:34:35:290 - info: Appium REST http interface listener started on 127.0.0.1:4723
2016-01-18 13:34:35:293 - info: [debug] Non-default server args: {“address”:“127.0.0.1”,“sessionOverride”:true,“noReset”:true,“logTimestamp”:true,“defaultCommandTimeout”:99999}
2016-01-18 13:34:35:294 - info: Console LogLevel: debug
2016-01-18 13:34:52:189 - info: --> POST /wd/hub/session {“desiredCapabilities”:{“deviceName”:“iPhone”,“udid”:“b3a6c616f49783d9455f0e1fbf124704a7f08482”,“autoAcceptAlerts”:“True”,“showIOSLog”:“False”,“browserName”:"",“waitForAppScript”:"$.delay(5000); $.acceptAlert(); true;",“autoLaunch”:“False”,“newCommandTimeout”:“99999”,“platformName”:“iOS”,“app”:“com.example.Test”}}
2016-01-18 13:34:52:192 - info: Client User-Agent string: Python http auth
2016-01-18 13:34:52:193 - warn: Converting cap autoAcceptAlerts from string to boolean. This might cause unexpected behavior.
2016-01-18 13:34:52:193 - warn: Converting cap showIOSLog from string to boolean. This might cause unexpected behavior.
2016-01-18 13:34:52:193 - warn: Converting cap autoLaunch from string to boolean. This might cause unexpected behavior.
2016-01-18 13:34:52:197 - info: [debug] App is an iOS bundle, will attempt to run as pre-existing
2016-01-18 13:34:52:197 - info: [debug] Creating new appium session 8ffca627-d186-4d33-863f-ed89a9fa653c
2016-01-18 13:34:52:198 - info: [debug] Appium session started with sessionId 8ffca627-d186-4d33-863f-ed89a9fa653c
2016-01-18 13:34:52:204 - info: <-- POST /wd/hub/session 303 14.361 ms - 74
2016-01-18 13:34:52:207 - info: --> GET /wd/hub/session/8ffca627-d186-4d33-863f-ed89a9fa653c {}
2016-01-18 13:34:52:208 - info: [debug] Responding to client with success: {“status”:0,“value”:{“webStorageEnabled”:false,“locationContextEnabled”:false,“browserName”:"",“platform”:“MAC”,“javascriptEnabled”:true,“databaseEnabled”:false,“takesScreenshot”:true,“networkConnectionEnabled”:false,“warnings”:{},“desired”:{“deviceName”:“iPhone”,“udid”:“b3a6c616f49783d9455f0e1fbf124704a7f08482”,“autoAcceptAlerts”:true,“showIOSLog”:false,“browserName”:"",“waitForAppScript”:"$.delay(5000); $.acceptAlert(); true;",“autoLaunch”:false,“newCommandTimeout”:“99999”,“platformName”:“iOS”,“app”:“com.example.Test”},“deviceName”:“iPhone”,“udid”:“b3a6c616f49783d9455f0e1fbf124704a7f08482”,“autoAcceptAlerts”:true,“showIOSLog”:false,“waitForAppScript”:"$.delay(5000); $.acceptAlert(); true;",“autoLaunch”:false,“newCommandTimeout”:“99999”,“platformName”:“iOS”,“app”:“com.example.Test”},“sessionId”:“8ffca627-d186-4d33-863f-ed89a9fa653c”}
2016-01-18 13:34:52:211 - info: <-- GET /wd/hub/session/8ffca627-d186-4d33-863f-ed89a9fa653c 200 3.470 ms - 846 {“status”:0,“value”:{“webStorageEnabled”:false,“locationContextEnabled”:false,“browserName”:"",“platform”:“MAC”,“javascriptEnabled”:true,“databaseEnabled”:false,“takesScreenshot”:true,“networkConnectionEnabled”:false,“warnings”:{},“desired”:{“deviceName”:“iPhone”,“udid”:“b3a6c616f49783d9455f0e1fbf124704a7f08482”,“autoAcceptAlerts”:true,“showIOSLog”:false,“browserName”:"",“waitForAppScript”:"$.delay(5000); $.acceptAlert(); true;",“autoLaunch”:false,“newCommandTimeout”:“99999”,“platformName”:“iOS”,“app”:“com.example.Test”},“deviceName”:“iPhone”,“udid”:“b3a6c616f49783d9455f0e1fbf124704a7f08482”,“autoAcceptAlerts”:true,“showIOSLog”:false,“waitForAppScript”:"$.delay(5000); $.acceptAlert(); true;",“autoLaunch”:false,“newCommandTimeout”:“99999”,“platformName”:“iOS”,“app”:“com.example.Test”},“sessionId”:“8ffca627-d186-4d33-863f-ed89a9fa653c”}
2016-01-18 13:35:09:587 - info: --> POST /wd/hub/session/8ffca627-d186-4d33-863f-ed89a9fa653c/appium/device/app_installed {“sessionId”:“8ffca627-d186-4d33-863f-ed89a9fa653c”,“bundleId”:“com.example.Test”}
2016-01-18 13:35:09:592 - info: <-- POST /wd/hub/session/8ffca627-d186-4d33-863f-ed89a9fa653c/appium/device/app_installed 500 5.135 ms - 101
TypeError: Cannot read property ‘isInstalled’ of undefined
at [object Object].IOS.isAppInstalled (/usr/local/lib/node_modules/appium/lib/devices/ios/ios.js:1515:20)
at exports.isAppInstalled (/usr/local/lib/node_modules/appium/lib/server/controller.js:113:16)
at Layer.handle [as handle_request] (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/layer.js:82:5)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:110:13)
at Route.dispatch (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:91:3)
at Layer.handle [as handle_request] (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/layer.js:82:5)
at /usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:267:22
at param (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:340:14)
at param (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:356:14)
at Function.proto.process_params (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:400:3)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:261:10)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:100:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at exports.sessionBeforeFilter (/usr/local/lib/node_modules/appium/lib/server/controller.js:56:5)
at Layer.handle [as handle_request] (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/layer.js:82:5)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:110:13)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at Route.dispatch (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:91:3)
at Layer.handle [as handle_request] (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/layer.js:82:5)
at /usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:267:22
at Function.proto.process_params (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:321:12)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/index.js:261:10)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:100:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)
at next (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/route.js:104:14)

Update: just found out that is_app_installed work when I set capability “autoLaunch”:“True”, so there seems to be a bug with “autoLaunch”:False".

Upade 2: Digging through Appium git repo I found the pull request that fixes this issue:

The pull request is from July 2015, however this fix is not present in my 1.4.16 release… Any ideas why? I am not familiar with how Appium releases are done, but I would have expected this fix to be released already?