tvarchive / optimusTemplate

This is a cucumber jvm implementation template using the optimus mobile automation framework. If you like it, star it, help spread the word.
http://docs.testvagrant.com
66 stars 23 forks source link

execution on physical iOS device throws error as "The executable contains an invalid signature." #11

Closed asitishere closed 6 years ago

asitishere commented 6 years ago

./gradlew runDistribution -DtestFeed="helloOptimusIos" -Dtags=@helloOptimus

{ "executionDetails": { "appium_js_path": "/usr/local/bin/appium", "appium_node_path": "/usr/local/bin/node" }, "testFeed": [ { "belongsTo": "optimus", "runsOn": "device", "appDir": "app", "nativeApp":true, "optimusDesiredCapabilities": { "appiumServerCapabilities": { "app": "HelloOptimus.app", "platformName": "iOS", "platformVersion": "11.0", "deviceName": "iPhone 5s", "automationName":"XcuiTest" }, "iOSOnlyCapabilities": { "launchTimeout": 300000, "useNewWDA":false, "showXcodeLog":true, "autoGrantPermissions": true } }, "deviceState":{ "captureVideo":true } } ] }

Stack trace on Debug mode.

01:19:10.469 [QUIET] [system.out] '. Stderr: '2017-10-22 01:19:09.951 ios-deploy[2493:227341] [ !! ] Error 0xe8008014: The executable contains an invalid signature. AMDeviceSecureInstallApplication(0, device, url, options, install_callback, 0) 01:19:10.469 [QUIET] [system.out] '. 01:19:10.470 [QUIET] [system.out] [XCUITest] Error: Could not install app: 'Command 'ios-deploy --id cc685401a30be51ff3b73840cbaacc858937bf6e --bundle /Users/asit/Documents/MobileAutomation/app/HelloOptimus.app' exited with code 253' 01:19:10.470 [QUIET] [system.out] at IOSDeploy.install$ (../../lib/ios-deploy.js:40:13) 01:19:10.470 [QUIET] [system.out] at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40) 01:19:10.470 [QUIET] [system.out] at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22) 01:19:10.470 [QUIET] [system.out] at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21) 01:19:10.470 [QUIET] [system.out] at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37) 01:19:10.470 [QUIET] [system.out] at 01:19:10.470 [QUIET] [system.out] Error: Could not install app: 'Command 'ios-deploy --id cc685401a30be51ff3b73840cbaacc858937bf6e --bundle /Users/asit/Documents/MobileAutomation/app/HelloOptimus.app' exited with code 253' 01:19:10.470 [QUIET] [system.out] at IOSDeploy.install$ (../../lib/ios-deploy.js:40:13) 01:19:10.470 [QUIET] [system.out] at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40) 01:19:10.470 [QUIET] [system.out] at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22) 01:19:10.470 [QUIET] [system.out] at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21) 01:19:10.470 [QUIET] [system.out] at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37) 01:19:10.470 [QUIET] [system.out] at 01:19:10.470 [QUIET] [system.out] [debug] [XCUITest] Not clearing log files. Use clearSystemFiles capability to turn on. 01:19:10.470 [QUIET] [system.out] [debug] [iOSLog] Stopping iOS log capture 01:19:10.471 [QUIET] [system.out] [MJSONWP] Encountered internal error running command: Error: Could not install app: 'Command 'ios-deploy --id cc685401a30be51ff3b73840cbaacc858937bf6e --bundle /Users/asit/Documents/MobileAutomation/app/HelloOptimus.app' exited with code 253' 01:19:10.471 [QUIET] [system.out] at IOSDeploy.install$ (../../lib/ios-deploy.js:40:13) 01:19:10.471 [QUIET] [system.out] at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40) 01:19:10.471 [QUIET] [system.out] at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22) 01:19:10.471 [QUIET] [system.out] at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21) 01:19:10.471 [QUIET] [system.out] at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37) 01:19:10.471 [QUIET] [system.out] at 01:19:10.477 [QUIET] [system.out] [HTTP] <-- POST /wd/hub/session 500 14399 ms - 318 01:19:14.705 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 17179869184, Free: 6284390400} 01:19:14.705 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 17179869184, Free: 6284390400} 01:19:14.705 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 954728448, Committed: 554172416} 01:19:16.063 [DEBUG] [org.mongodb.driver.cluster] Checking status of localhost:27017 01:19:16.064 [DEBUG] [org.mongodb.driver.cluster] Updating cluster description to {type=STANDALONE, servers=[{address=localhost:27017, type=STANDALONE, roundTripTime=1.4 ms, state=CONNECTED}] 01:19:17.999 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running 01:19:18.000 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry. 01:19:18.000 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry. 01:19:18.000 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry. 01:19:18.000 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry. 01:19:18.000 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry. 01:19:18.000 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry. 01:19:19.706 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 17179869184, Free: 6285725696} 01:19:19.706 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 17179869184, Free: 6285725696} 01:19:19.706 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 954728448, Committed: 554172416} 01:19:20.502 [QUIET] [system.out] Failure in before hook:StartingSteps.setUp(Scenario) 01:19:20.502 [QUIET] [system.out] Message: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Could not install app: 'Command 'ios-deploy --id cc685401a30be51ff3b73840cbaacc858937bf6e --bundle /Users/asit/Documents/MobileAutomation/app/HelloOptimus.app' exited with code 253' (WARNING: The server did not provide any stacktrace information) 0

KrishnB commented 6 years ago

@asitishere This is a valid exception since you are trying to run .app extension on physical device. Physical devices would require apps with .ipa extension.

asitishere commented 6 years ago

ok so you suggesting if i will pint a .ipa with a valid cert and developer profile . It will install the app...

In that case what will be the JSON structure for iOS ?

KrishnB commented 6 years ago

Yeah thats correct. The JSON structure would remain same. You will have to store the .ipa file under app folder and update the app name in test feed to <appname>.ipa

asitishere commented 6 years ago

Thanks...