#!/bin/bash
zstoken="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0Ijp7ImJhc2VVcmwiOiJodHRwczovL3dlbGFiYmFuay5hdGxhc3NpYW4ubmV0IiwidXNlciI6eyJhY2NvdW50SWQiOiI2MzM1NGUzMWY1Njg2MTViZGM3ZWJlNjYiLCJ0b2tlbklkIjoiMjY5ZWU0M2EtNWYzNy00YzVjLWI4NGUtMTZmMTAyZTU5YWY4In19LCJpc3MiOiJjb20ua2Fub2FoLnRlc3QtbWFuYWdlciIsInN1YiI6ImZmMzViODM3LTUyMjktM2ZhYi04MDNlLTdhMjdhMTBhZWRlYyIsImV4cCI6MTc2NTYxODQ1NSwiaWF0IjoxNzM0MDgyNDU1fQ.r-9M_ugoSufvXUTxr5HUcs7Fn5SFemCi_KPKYlggtv4"
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
echo "${SHELL_FOLDER}"
env="stage"
platform="mobile"
mobile_temp="ios"
mobile=`echo ${mobile_temp} | tr '[A-Z]' '[a-z]'`
# get test cases from test execution
#echo "Enter test cycle key:"
#read manualTestCycleKey_temp # in uppercase, e.g. "VBL", "ACBN"
#manualTestCycleKey=`echo ${manualTestCycleKey_temp} | tr '[a-z]' '[A-Z]'`
manualTestCycleKey="ACBN-R76"
manualProjectKey=${manualTestCycleKey%%-*}
echo "manualTestCycleKey: ${manualTestCycleKey}"
echo "manualProjectKey: ${manualProjectKey}"
##################################################################
# get test case
manualTestCycleName=$(curl -k -H "Authorization: Bearer ${zstoken}" -X GET "https://api.zephyrscale.smartbear.com/v2/testcycles/${manualTestCycleKey}" -H "Content-Type: application/json" | jq -r -c '.name')
manualTestCycle=$(curl -k -H "Authorization: Bearer ${zstoken}" -X GET "https://api.zephyrscale.smartbear.com/v2/testexecutions?testCycle=${manualTestCycleKey}&startAt=0&maxResults=1000" -H "Content-Type: application/json")
manualTestCycleArr=(${manualTestCycle//,/ })
echo "check get testcase costs time if there are many test executions"
##################################################################
# read the case and save in list
manualTestCaseKeysFull=()
manualTestCaseKeysFullTemp=()
for ((i = 0 ; i < ${#manualTestCycleArr[@]} ; i++ ))
do
if [[ ${manualTestCycleArr[$i]} = *"testcases"* ]]; then
tempStr=${manualTestCycleArr[$i]#\"testCase\":{\"self\":\"https://api.zephyrscale.smartbear.com/v2/testcases/}}
tempStr=${tempStr%%/*}
echo "tempStr: ${tempStr}"
manualTestCaseKeysFullTemp+=($tempStr)
fi
done
manualTestCaseKeysFull+=($(echo "${manualTestCaseKeysFullTemp[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
echo "manualTestCaseKeysFull: ${manualTestCaseKeysFull[@]}"
echo "manualTestCaseKeysFullTemp: ${manualTestCaseKeysFullTemp[@]}"
#####################
## update runner file
xmlLocations="${SHELL_FOLDER}/src/main/resources/suite/channel/mobile_ios.xml"
runnerFolder="${SHELL_FOLDER}/src/main/java/com/welab/automation/projects/channel/runners"
runnerFile="/MobileTestRunner_iOS.java"
fullRunnerName=${runnerFolder}${runnerFile} #字符串拼接不需要加号
echo "fullRunnerName: ${fullRunnerName}"
tags_string=$(IFS=,; echo "${manualTestCaseKeysFull[*]}") # 把list的元素用逗号隔开生成字符串
echo "tags_string: ${tags_string}"
i_tag=@$(sed 's/,/ or @/g' <<< ${tags_string}) # 用"or " 替换逗号
runner=
i_runner=$(sed "s/tags = \".*\",/tags = \"$i_tag\",/" ${fullRunnerName})
echo "$i_runner" > ${fullRunnerName}
#####################
######################################### 上传所有的case 的测试结果到这test cycle中
upperManualProjectKey=`echo ${manualProjectKey} | tr '[a-z]' '[A-Z]'`
if [[ $upperManualProjectKey == "ACBN" ]]; then
manualFolderId="9250320"
elif [[ $upperManualProjectKey == "VBL" ]]; then
manualFolderId="8410995"
elif [[ $upperManualProjectKey == "GOS" ]]; then
manualFolderId="10206779"
elif [[ $upperManualProjectKey == "VBWMIS" ]]; then
manualFolderId="9250352"
fi
currentDateTime=`date +"%Y-%m-%d %H:%M:%S"`
createManualTestCycleKey=$(curl -k -H "Authorization: Bearer ${zstoken}" -X POST "https://api.zephyrscale.smartbear.com/v2/testcycles" -H "Content-Type: application/json" -d "{\"projectKey\":\"${manualProjectKey}\",\"name\":\"${manualTestCycleKey}-${manualTestCycleName}-${currentDateTime}\",\"folderId\":\"${manualFolderId}\"}")
newManualTestCycleKey=$(jq -r -c '.key' <<< "$createManualTestCycleKey")
echo "createManualTestCycleKey: ${createManualTestCycleKey}"
echo "newManualTestCycleKey: ${newManualTestCycleKey}"
###########################################
echo mvn clean test -Denv=${env} -Dplatform=${platform} -Dmobile=${mobile} -DtestngXmlFile="${xmlLocations}"
echo "**************************************************************************************************"
mvn clean
mvn test -Denv=${env} -Dplatform=${platform} -Dmobile=${mobile} -DtestngXmlFile="${xmlLocations}"
##################################################################
for ((i = 0 ; i < ${#manualTestCaseKeysFull[@]} ; i++ ))
do
testResultCsvFile=${SHELL_FOLDER}/TestReport/zephyrscale/suites.csv
waitTime=10
while : ; do
[[ -f ${testResultCsvFile} || $waitTime == 0 ]] && break
echo "Pausing until suites.csv exists."
let waitTime--
echo $waitTime
sleep 1
done
appVersionTxtFile=${SHELL_FOLDER}/TestReport/zephyrscale/appversion.txt
while : ; do
[[ -f ${appVersionTxtFile} || $waitTime == 0 ]] && break
echo "Pausing until appversion.txt exists."
let waitTime--
echo $waitTime
sleep 1
done
appVersionTxt=`cat ${appVersionTxtFile} | tr '\r\n' "#"`
appVersionTxt=$(sed 's/#/\<br\>/g' <<< $appVersionTxt)
testResultCsv=`cat ${testResultCsvFile}`
echo $testResultCsv
i_comment=${appVersionTxt}
# 根据txt文件判断是否pass
i_testExecutionStatus=${appVersionTxt}
if [[ $i_comment = *"${manualTestCaseKeysFull[$i]}=false"* ]]; then
i_testExecutionStatus="Fail"
elif [[ $i_comment = *"${manualTestCaseKeysFull[$i]}=true"* ]]; then
i_testExecutionStatus="Pass"
else
i_testExecutionStatus="In Progress"
fi
i_executionTime="800"
echo "manualProjectKey: ${manualProjectKey}"
echo "manualTestCaseKeys[$i]: ${manualTestCaseKeysFull[$i]}" # 所有feature 文件中的tag都存方法在这个list里面
echo "newManualTestCycleKey: ${newManualTestCycleKey}" #新建的test cycle
echo "i_testExecutionStatus: ${i_testExecutionStatus}"
echo "i_comment: ${i_comment}"
echo "i_executionTime: ${i_executionTime}"
# manualProjectKey 是ACBN
# manualTestCaseKeys 是ACBN
echo curl -k -H "Authorization: Bearer ${zstoken}" -X POST "https://api.zephyrscale.smartbear.com/v2/testexecutions" -H "Content-Type: application/json" -d "{\"projectKey\":\"${manualProjectKey}\",\"testCaseKey\":\"${manualTestCaseKeysFull[$i]}\",\"testCycleKey\":\"${newManualTestCycleKey}\",\"statusName\":\"${i_testExecutionStatus}\",\"comment\":\"${i_comment}\",\"executionTime\":\"${i_executionTime}\"}"
manualTestExecution=$(curl -k -H "Authorization: Bearer ${zstoken}" -X POST "https://api.zephyrscale.smartbear.com/v2/testexecutions" -H "Content-Type: application/json" -d "{\"projectKey\":\"${manualProjectKey}\",\"testCaseKey\":\"${manualTestCaseKeysFull[$i]}\",\"testCycleKey\":\"${newManualTestCycleKey}\",\"statusName\":\"${i_testExecutionStatus}\",\"comment\":\"${i_comment}\",\"executionTime\":\"${i_executionTime}\"}") # Not Executed / Pass / Fail / WIP / Blocked
# rm -f temppayload.json # delete json
# rm -f payload.json # delete json
# rm -f ${SHELL_FOLDER}/TestReport/zephyrscale/suites.csv # delete test result
# rm -f ${SHELL_FOLDER}/TestReport/zephyrscale/API.txt # delete API.txt
done