From 11937129f37593c5a26a399837f2b52c4ffe6e82 Mon Sep 17 00:00:00 2001 From: Erjan Gavalji Date: Thu, 29 Oct 2015 15:12:25 +0200 Subject: [PATCH 1/7] Restore the cleanup on end --- build/run-testsapp.grunt.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/build/run-testsapp.grunt.js b/build/run-testsapp.grunt.js index 86d85a311..049481b29 100644 --- a/build/run-testsapp.grunt.js +++ b/build/run-testsapp.grunt.js @@ -268,8 +268,6 @@ module.exports = { "clean:simulatorLog" ]); - -//xcrun instruments -s grunt.registerTask("testsapp", [ "clean:workingDir", "mkdir:workingDir", @@ -294,8 +292,8 @@ module.exports = { getPlatformSpecificTask("exec:start{platform}App"), getPlatformSpecificTask("collectLog{platform}"), -// getPlatformSpecificTask("exec:kill{platform}Emulator"), -// "clean:workingDir" + getPlatformSpecificTask("exec:kill{platform}Emulator"), + "clean:workingDir" ]); } } From 9e6ce564a03ae924d9f8731f64aed61b1b08eb9c Mon Sep 17 00:00:00 2001 From: Erjan Gavalji Date: Mon, 2 Nov 2015 13:18:15 +0200 Subject: [PATCH 2/7] Add runOnly command --- build/run-testsapp.grunt.js | 82 +++++++++++++++++++++++++------------ gruntfile.js | 2 +- run.sh | 9 ++++ 3 files changed, 65 insertions(+), 28 deletions(-) create mode 100755 run.sh diff --git a/build/run-testsapp.grunt.js b/build/run-testsapp.grunt.js index 049481b29..ac5c0419c 100644 --- a/build/run-testsapp.grunt.js +++ b/build/run-testsapp.grunt.js @@ -14,7 +14,9 @@ module.exports = { emuAvdName: grunt.option("avd"), outFile: grunt.option("logFilePath"), runtimePath: grunt.option("runtimePath"), - showEmu: grunt.option("showEmu") + showEmu: grunt.option("showEmu"), + runAppOnly: grunt.option("runAppOnly"), + pathToApp: grunt.option("pathToApp") }; (function validateInput(){ @@ -30,6 +32,10 @@ module.exports = { throw new Error("Please, specify the name of the AVD to start (--avd=...)."); } } + + if (args.runAppOnly && !args.pathToApp) { + throw new Error("runAppOnly called, but no path to application specified. Please, add the path via the (--pathToApp=...) parameter."); + } }()); var localCfg = { @@ -40,6 +46,7 @@ module.exports = { outFile: args.outFile || "./TestRunResult.txt", frameworkArgument: args.runtimePath ? " --frameworkPath=" + args.runtimePath : "", showEmu: args.showEmu || false, + runAppOnly: args.runAppOnly || false, workingDir:".testsapprun", testsAppName:"TestsApp", @@ -54,6 +61,10 @@ module.exports = { platform: args.platform } + if (localCfg.runAppOnly) { + localCfg.pathToApp = localCfg.pathToApk = args.pathToApp; + } + grunt.initConfig({ clean: { workingDir: { @@ -260,40 +271,57 @@ module.exports = { "copy:simulatorLog" ]); - grunt.registerTask("doPostPlatformAddAndroid", [ + grunt.registerTask("doPreUninstallAppAndroid", [ "exec:restartAdb" ]); - grunt.registerTask("doPostPlatformAddiOS", [ + grunt.registerTask("doPreUninstallAppiOS", [ "clean:simulatorLog" ]); - grunt.registerTask("testsapp", [ - "clean:workingDir", - "mkdir:workingDir", - getPlatformSpecificTask("exec:kill{platform}Emulator"), - getPlatformSpecificTask("startEmulator{platform}"), + grunt.registerTask("buildTestsApp", [ + "clean:workingDir", + "mkdir:workingDir", + getPlatformSpecificTask("exec:kill{platform}Emulator"), + getPlatformSpecificTask("startEmulator{platform}"), - "exec:createApp", - "clean:originalAppDir", - "copy:testsAppToRunDir", - "clean:modules", - "untar:modules", - "copy:modulesToDir", - "clean:tempExtractedModules", + "exec:createApp", + "clean:originalAppDir", + "copy:testsAppToRunDir", + "clean:modules", + "untar:modules", + "copy:modulesToDir", + "clean:tempExtractedModules", - "exec:addPlatform", - getPlatformSpecificTask("copy:add{platform}Permissions"), - "shell:buildApp", - getPlatformSpecificTask("doPostPlatformAdd{platform}"), - - getPlatformSpecificTask("exec:uninstallExisting{platform}App"), - getPlatformSpecificTask("exec:installNew{platform}App"), - getPlatformSpecificTask("exec:start{platform}App"), - getPlatformSpecificTask("collectLog{platform}"), - - getPlatformSpecificTask("exec:kill{platform}Emulator"), - "clean:workingDir" + "exec:addPlatform", + getPlatformSpecificTask("copy:add{platform}Permissions"), + "shell:buildApp", ]); + + grunt.registerTask("runApp", [ + getPlatformSpecificTask("doPreUninstallApp{platform}"), + + getPlatformSpecificTask("exec:uninstallExisting{platform}App"), + getPlatformSpecificTask("exec:installNew{platform}App"), + getPlatformSpecificTask("exec:start{platform}App"), + getPlatformSpecificTask("collectLog{platform}"), + + ]); + + grunt.registerTask("cleanup", [ + getPlatformSpecificTask("exec:kill{platform}Emulator"), + "clean:workingDir" + ]); + + var tasksToExecute = ["runApp"]; + if (!localCfg.runAppOnly) { + tasksToExecute = [ + "buildTestsApp", + "runApp", + "cleanup" + ]; + } + + grunt.registerTask("testsapp", tasksToExecute); } } diff --git a/gruntfile.js b/gruntfile.js index b584ab7b9..ea3771fb7 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -1,6 +1,6 @@ module.exports = function(grunt) { - if (grunt.cli.tasks.indexOf("testsapp") >= 0) { + if (grunt.cli.tasks.indexOf("testsapp") || grunt.cli.tasks.indexOf("buildtestsapp")>= 0) { var tsTester = require("./build/run-testsapp.grunt.js"); tsTester.run(grunt); } else { diff --git a/run.sh b/run.sh new file mode 100755 index 000000000..4adee5a70 --- /dev/null +++ b/run.sh @@ -0,0 +1,9 @@ +#! /bin/bash + +#grunt testsapp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api19" --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-android.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz + +#grunt testsapp --verbose --platform=iOS --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" + +grunt buildTestsApp --verbose --platform=iOS --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" + +#grunt testsapp --verbose --platform=iOS --runAppOnly --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" From aec54a80e11a690ab10cc06553c2300ae511e54a Mon Sep 17 00:00:00 2001 From: Erjan Gavalji Date: Mon, 2 Nov 2015 17:54:48 +0200 Subject: [PATCH 3/7] Fix the runner. Adjust the temporary run script for a relative folder structure --- gruntfile.js | 2 +- run.sh | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gruntfile.js b/gruntfile.js index ea3771fb7..e1913143a 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -1,6 +1,6 @@ module.exports = function(grunt) { - if (grunt.cli.tasks.indexOf("testsapp") || grunt.cli.tasks.indexOf("buildtestsapp")>= 0) { + if (grunt.cli.tasks.indexOf("testsapp") >= 0 || grunt.cli.tasks.indexOf("buildtestsapp")>= 0) { var tsTester = require("./build/run-testsapp.grunt.js"); tsTester.run(grunt); } else { diff --git a/run.sh b/run.sh index 4adee5a70..373687fa8 100755 --- a/run.sh +++ b/run.sh @@ -1,9 +1,14 @@ #! /bin/bash +androidRuntimePath=realpath ../../../LATEST_RUNTIMES/tns-android.tgz + #grunt testsapp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api19" --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-android.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz #grunt testsapp --verbose --platform=iOS --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" -grunt buildTestsApp --verbose --platform=iOS --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" +#grunt buildTestsApp --verbose --platform=iOS --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" #grunt testsapp --verbose --platform=iOS --runAppOnly --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" + + +grunt testsapp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz From 5add617349e91989f9ebda79aa4f6e980440abfc Mon Sep 17 00:00:00 2001 From: Erjan Gavalji Date: Mon, 2 Nov 2015 18:42:53 +0200 Subject: [PATCH 4/7] Remove the unnecessary emulator start for the buildTestsApp command --- build/run-testsapp.grunt.js | 24 +++++++++++++++--------- gruntfile.js | 2 +- run.sh | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/build/run-testsapp.grunt.js b/build/run-testsapp.grunt.js index ac5c0419c..588b9e648 100644 --- a/build/run-testsapp.grunt.js +++ b/build/run-testsapp.grunt.js @@ -279,12 +279,12 @@ module.exports = { "clean:simulatorLog" ]); - grunt.registerTask("buildTestsApp", [ - "clean:workingDir", - "mkdir:workingDir", + grunt.registerTask("cleanup", [ getPlatformSpecificTask("exec:kill{platform}Emulator"), - getPlatformSpecificTask("startEmulator{platform}"), + "clean:workingDir" + ]); + grunt.registerTask("buildOnly", [ "exec:createApp", "clean:originalAppDir", "copy:testsAppToRunDir", @@ -298,6 +298,13 @@ module.exports = { "shell:buildApp", ]); + grunt.registerTask("buildTestsApp", [ + "cleanup", + "mkdir:workingDir", + "buildOnly" + + ]); + grunt.registerTask("runApp", [ getPlatformSpecificTask("doPreUninstallApp{platform}"), @@ -308,15 +315,14 @@ module.exports = { ]); - grunt.registerTask("cleanup", [ - getPlatformSpecificTask("exec:kill{platform}Emulator"), - "clean:workingDir" - ]); var tasksToExecute = ["runApp"]; if (!localCfg.runAppOnly) { tasksToExecute = [ - "buildTestsApp", + "cleanup", + "mkdir:workingDir", + getPlatformSpecificTask("startEmulator{platform}"), + "buildOnly", "runApp", "cleanup" ]; diff --git a/gruntfile.js b/gruntfile.js index e1913143a..c19a9987f 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -1,6 +1,6 @@ module.exports = function(grunt) { - if (grunt.cli.tasks.indexOf("testsapp") >= 0 || grunt.cli.tasks.indexOf("buildtestsapp")>= 0) { + if (grunt.cli.tasks.indexOf("testsapp") >= 0 || grunt.cli.tasks.indexOf("buildTestsApp")>= 0) { var tsTester = require("./build/run-testsapp.grunt.js"); tsTester.run(grunt); } else { diff --git a/run.sh b/run.sh index 373687fa8..9036d9b96 100755 --- a/run.sh +++ b/run.sh @@ -11,4 +11,4 @@ androidRuntimePath=realpath ../../../LATEST_RUNTIMES/tns-android.tgz #grunt testsapp --verbose --platform=iOS --runAppOnly --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" -grunt testsapp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz +grunt buildTestsApp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz From 4997b9c3f508354dc5b021f01015dea8f6300eb2 Mon Sep 17 00:00:00 2001 From: Erjan Gavalji Date: Mon, 2 Nov 2015 23:17:12 +0200 Subject: [PATCH 5/7] Introduce a separate group task to make the runApp work as expected --- build/run-testsapp.grunt.js | 14 +++++++++++--- run.sh | 5 +++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/build/run-testsapp.grunt.js b/build/run-testsapp.grunt.js index 588b9e648..3ecb5ef01 100644 --- a/build/run-testsapp.grunt.js +++ b/build/run-testsapp.grunt.js @@ -63,6 +63,7 @@ module.exports = { if (localCfg.runAppOnly) { localCfg.pathToApp = localCfg.pathToApk = args.pathToApp; + localCfg.applicationDir = "./"; } grunt.initConfig({ @@ -200,7 +201,7 @@ module.exports = { }, startiOSApp: { cmd: "xcrun simctl launch " + localCfg.emuAvdName + " org.nativescript." + localCfg.testsAppName - }, + } }, untar: { modules: { @@ -305,13 +306,20 @@ module.exports = { ]); - grunt.registerTask("runApp", [ + grunt.registerTask("runOnly", [ getPlatformSpecificTask("doPreUninstallApp{platform}"), getPlatformSpecificTask("exec:uninstallExisting{platform}App"), getPlatformSpecificTask("exec:installNew{platform}App"), getPlatformSpecificTask("exec:start{platform}App"), getPlatformSpecificTask("collectLog{platform}"), + ]); + + grunt.registerTask("runApp", [ + "cleanup", + getPlatformSpecificTask("startEmulator{platform}"), + "runOnly", + "cleanup" ]); @@ -323,7 +331,7 @@ module.exports = { "mkdir:workingDir", getPlatformSpecificTask("startEmulator{platform}"), "buildOnly", - "runApp", + "runOnly", "cleanup" ]; } diff --git a/run.sh b/run.sh index 9036d9b96..701fea988 100755 --- a/run.sh +++ b/run.sh @@ -1,6 +1,7 @@ #! /bin/bash -androidRuntimePath=realpath ../../../LATEST_RUNTIMES/tns-android.tgz +androidRuntimePath=$(realpath ../../../LATEST_RUNTIMES/tns-android.tgz) +builtApkPath=$(realpath ../../../THE_APK/TestsApp-debug.apk) #grunt testsapp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api19" --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-android.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz @@ -11,4 +12,4 @@ androidRuntimePath=realpath ../../../LATEST_RUNTIMES/tns-android.tgz #grunt testsapp --verbose --platform=iOS --runAppOnly --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" -grunt buildTestsApp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz +grunt testsapp --runAppOnly --verbose --pathToApp="$builtApkPath" --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz From ce05c18859e55e8cadd7b40cc7cb5b6869353c3b Mon Sep 17 00:00:00 2001 From: Erjan Gavalji Date: Mon, 2 Nov 2015 23:33:08 +0200 Subject: [PATCH 6/7] Add iOS commands to the run script as well --- run.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/run.sh b/run.sh index 701fea988..27febedfd 100755 --- a/run.sh +++ b/run.sh @@ -2,6 +2,8 @@ androidRuntimePath=$(realpath ../../../LATEST_RUNTIMES/tns-android.tgz) builtApkPath=$(realpath ../../../THE_APK/TestsApp-debug.apk) +iosRuntimePath=/Users/erjitka/work/LATEST_RUNTIMES/tns-ios.tgz +builtAppPath=/Users/erjitka/work/THE_BUILT_APP/TestsApp.app #grunt testsapp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api19" --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-android.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz @@ -11,5 +13,7 @@ builtApkPath=$(realpath ../../../THE_APK/TestsApp-debug.apk) #grunt testsapp --verbose --platform=iOS --runAppOnly --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" +#grunt testsapp --runAppOnly --verbose --pathToApp="$builtApkPath" --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz + +grunt testsapp --runAppOnly --verbose --pathToApp="$builtAppPath" --platform=iOS --avd="3C67F2C2-BF43-4210-BD21-E28D84119247" --logFilePath="./TestRunResult.txt" --runtimePath=$iosRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz -grunt testsapp --runAppOnly --verbose --pathToApp="$builtApkPath" --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz From 399c6f3665b3040b86289040648b7b2114519e03 Mon Sep 17 00:00:00 2001 From: Erjan Gavalji Date: Mon, 2 Nov 2015 23:34:58 +0200 Subject: [PATCH 7/7] Remove the run.sh used for test purposes only --- run.sh | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100755 run.sh diff --git a/run.sh b/run.sh deleted file mode 100755 index 27febedfd..000000000 --- a/run.sh +++ /dev/null @@ -1,19 +0,0 @@ -#! /bin/bash - -androidRuntimePath=$(realpath ../../../LATEST_RUNTIMES/tns-android.tgz) -builtApkPath=$(realpath ../../../THE_APK/TestsApp-debug.apk) -iosRuntimePath=/Users/erjitka/work/LATEST_RUNTIMES/tns-ios.tgz -builtAppPath=/Users/erjitka/work/THE_BUILT_APP/TestsApp.app - -#grunt testsapp --verbose --platform=Android --emuPId=".*emulator64-x86" --avd="Api19" --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-android.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz - -#grunt testsapp --verbose --platform=iOS --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" - -#grunt buildTestsApp --verbose --platform=iOS --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" - -#grunt testsapp --verbose --platform=iOS --runAppOnly --logFilePath="./TestRunResult.txt" --runtimePath="/Users/erjan/tns-ios.tgz" --showEmu=true --modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz --avd="'iPhone 6 (9.0) ['" - -#grunt testsapp --runAppOnly --verbose --pathToApp="$builtApkPath" --platform=Android --emuPId=".*emulator64-x86" --avd="Api21" --logFilePath="./TestRunResult.txt" --runtimePath=$androidRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz - -grunt testsapp --runAppOnly --verbose --pathToApp="$builtAppPath" --platform=iOS --avd="3C67F2C2-BF43-4210-BD21-E28D84119247" --logFilePath="./TestRunResult.txt" --runtimePath=$iosRuntimePath --showEmu=true #--modulesPath=/Volumes/distributions/DailyBuilds/NativeScript/tns-modules/Stable/tns-core-modules.tgz -