Nisha Mendon
Nisha Mendon

Reputation: 1

Error: The desired capabilities must include either an app or a bundleId for iOS

I am using mac OS X 10.12, Appium server 1.5.3 , xcode version 8.3. If I run the doctor then it shows the appium is installed correctly.

info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor  ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor  ✔ Xcode Command Line Tools are installed.
info AppiumDoctor  ✔ DevToolsSecurity is enabled.
info AppiumDoctor  ✔ The Authorization DB is set up properly.
info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor  ✔ HOME is set to: /Users/nishamendon
info AppiumDoctor  ✔ ANDROID_HOME is set to: /Users/nishamendon/Library/Android/sdk
info AppiumDoctor  ✔ JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
info AppiumDoctor  ✔ adb exists at: /Users/nishamendon/Library/Android/sdk/platform-tools/adb
info AppiumDoctor  ✔ android exists at: /Users/nishamendon/Library/Android/sdk/tools/android
info AppiumDoctor  ✔ emulator exists at: /Users/nishamendon/Library/Android/sdk/tools/emulator
info AppiumDoctor ### Diagnostic completed, no fix needed. ###
info AppiumDoctor 
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor 

But, if I start the appium server, and I try to launch the inspector I am getting an error unable to start Inspector with the below log.

    [iOS] Error: The desired capabilities must include either an app or a bundleId for iOS
    at Object.wrappedLogger.errorAndThrow (lib/logger.js:60:13)
    at IosDriver.validateDesiredCaps (lib/driver.js:409:14)
    at IosDriver.callee$0$0$ (lib/basedriver/commands/session.js:14:8)
    at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at Promise.F (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at IosDriver.callee$0$0 [as createSession] (lib/basedriver/commands/session.js:8:46)
    at IosDriver.createSession$ (lib/driver.js:40:16)
    at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at Promise.F (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at IosDriver.createSession (lib/driver.js:110:19)
    at AppiumDriver.createSession$ (lib/appium.js:121:43)
    at tryCatch (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueR
esult (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at Promise.F (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)

Upvotes: 0

Views: 9604

Answers (3)

Padma
Padma

Reputation: 117

Add the desired capabilities for the app path as (for eg.) DesiredCapabilities.setCapability("app", "/Users/Library/Developer/Xcode/DerivedData/foldername/Build/Products/Debug-iphoneos/appname.app");

Also, you can open appium inspector of 1.5.3 just by opening appium GUI, keeping iOS icon selected and tapping inspector icon (don't tap 'Launch' in GUI) after starting appium (1.6+) server in terminal.
Refer: https://discuss.appium.io/t/how-to-launch-appium-inspector-on-appium-1-6-0-beta2-as-there-is-no-appium-app-file-for-that-beta/12448/16

Upvotes: 1

SaiPawan
SaiPawan

Reputation: 1194

You need to add the capabilitiy "app" or "bundleId".Because in your case it is not able to know which app it should launch.

capabilities.setCapability("app","path of your .app file");

Appium 1.5.3 is not compatible with xcode 8+. If you are already installed appium through terminal then launch the appium through terminal by running the command.

appium

This command will start the appium server.Don not use appium 1.5.3.

Refer the below link to know how to launch and run the appium from terminal after installing appium 1.6+

Launch and run appium in Mac

Upvotes: 0

Padma
Padma

Reputation: 117

The regenerator error occurs because xCode 8 works only with appium 1.6 +.

You can refer: https://github.com/appium/appium/issues/6845

Upvotes: 1

Related Questions