mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-10 14:07:59 -05:00
[INJI-700]: UI automation workflow (#1208)
* text file added for sanity and regression Signed-off-by: kamalsingh <kamal.singh@thoughtworks.com> * [INJI-700] add scripts to trigger test case run in devicefarm Signed-off-by: adityankannan-tw <adityan410pm@gmail.com> * [INJI-606]: Integration of Sunbird Issuer with New UI (#1193) * [INJI-606]: Integration of Sunbird Issuer with New UI Signed-off-by: Vijay <94220135+vijay151096@users.noreply.github.com> * [INJI-606]: Don't show share with selfie option for sunbird VC Signed-off-by: Vijay <94220135+vijay151096@users.noreply.github.com> --------- Signed-off-by: Vijay <94220135+vijay151096@users.noreply.github.com> * Inji 681 cloud sign on (#1192) * INJI-681: Added basic cloud sign in component Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com> * INJI-681: Refactored the component and setting the token now Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com> * INJI-681: Added missing env variable Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com> --------- Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com> * [INJI-543] fix skip button alignment Signed-off-by: Sri Kanth Kola <srikanthsri7447@gmail.com> * [INJI-543] fix logo and skip button alignment in intro slider screen Signed-off-by: Sri Kanth Kola <srikanthsri7447@gmail.com> * [INJI-543] moved styles into style theme files Signed-off-by: Sri Kanth Kola <srikanthsri7447@gmail.com> * [INJI-700] add script to download the artifacts Signed-off-by: adityankannan-tw <adityan410pm@gmail.com> * [INJI-700] give name to artifact zip file Signed-off-by: adityankannan-tw <adityan410pm@gmail.com> * [INJI-700] give name to artifact zip file Signed-off-by: adityankannan-tw <adityan410pm@gmail.com> --------- Signed-off-by: kamalsingh <kamal.singh@thoughtworks.com> Signed-off-by: adityankannan-tw <adityan410pm@gmail.com> Signed-off-by: Vijay <94220135+vijay151096@users.noreply.github.com> Signed-off-by: Sreenadh S <32409698+sree96@users.noreply.github.com> Signed-off-by: Sri Kanth Kola <srikanthsri7447@gmail.com> Co-authored-by: kamalsinghthoughtworks <120381388+kamalsinghthoughtworks@users.noreply.github.com> Co-authored-by: adityankannan-tw <adityan410pm@gmail.com> Co-authored-by: vijay151096 <94220135+vijay151096@users.noreply.github.com> Co-authored-by: Sreenadh S <32409698+sree96@users.noreply.github.com> Co-authored-by: Sri Kanth Kola <srikanthsri7447@gmail.com>
This commit is contained in:
190
.github/workflows/ui-automation.yml
vendored
Normal file
190
.github/workflows/ui-automation.yml
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
name: UI - Automation
|
||||
run-name: ${{ inputs.runName }}
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
runName:
|
||||
description: 'Name the run for Actions & DeviceFarm'
|
||||
required: true
|
||||
default: 'Ex: Sanity/Regression[ENV]'
|
||||
type: string
|
||||
buildFor:
|
||||
description: 'Trigger test case run for'
|
||||
required: true
|
||||
default: 'Both[Android and IOS]'
|
||||
type: choice
|
||||
options:
|
||||
- Both[Android and IOS]
|
||||
- Android
|
||||
- IOS
|
||||
testType:
|
||||
description: 'Test type Sanity/Regression'
|
||||
required: true
|
||||
default: 'sanity'
|
||||
type: choice
|
||||
options:
|
||||
- sanity
|
||||
- regression
|
||||
backendServiceUrl:
|
||||
description: 'Mimoto and Esignet backend service URL'
|
||||
required: true
|
||||
default: 'https://api.sandbox.mosip.net'
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
android-ui-automation:
|
||||
if: ${{ github.event.inputs.buildFor == 'Both[Android and IOS]' || github.event.inputs.buildFor == 'Android'}}
|
||||
name: Trigger android run
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18.x'
|
||||
|
||||
- name: Cache npm dependencies
|
||||
uses: actions/cache@v3.3.1
|
||||
with:
|
||||
path: '~/.npm'
|
||||
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-npm-
|
||||
|
||||
- name: Install npm dependencies
|
||||
run: |
|
||||
npm ci
|
||||
|
||||
- name: Generate Android keystore
|
||||
run: |
|
||||
echo "$ANDROID_KEYSTORE_FILE" > release.keystore.b64
|
||||
base64 -d -i release.keystore.b64 > android/app/release.keystore
|
||||
env:
|
||||
ANDROID_KEYSTORE_FILE: ${{ secrets.INJI_ANDROID_RELEASE_KEYSTORE }}
|
||||
|
||||
- name: Create Android Build
|
||||
run: |
|
||||
npx jetify
|
||||
cd android/scripts
|
||||
./android-build.sh
|
||||
env:
|
||||
MIMOTO_HOST: ${{ github.event.inputs.backendServiceUrl }}
|
||||
ESIGNET_HOST: ${{ github.event.inputs.backendServiceUrl }}
|
||||
APPLICATION_THEME: 'orange'
|
||||
CREDENTIAL_REGISTRY_EDIT: 'false'
|
||||
RELEASE_KEYSTORE_ALIAS: 'androidreleasekey'
|
||||
RELEASE_KEYSTORE_PASSWORD: "${{ secrets.INJI_ANDROID_RELEASE_STOREPASS }}"
|
||||
|
||||
- name: Configure AWS CLI
|
||||
run: |
|
||||
aws configure set aws_access_key_id ${{ secrets.AWS_DEVICE_FARM_ACCESS_KEY }}
|
||||
aws configure set aws_secret_access_key ${{ secrets.AWS_DEVICE_FARM_SECRET_KEY }}
|
||||
aws configure set region us-west-2
|
||||
|
||||
- name: Android - Automation
|
||||
id: android-run
|
||||
run: |
|
||||
cd injitest/scripts/ui_automation
|
||||
./automation_trigger.sh "Android" "$RUN_NAME-Android" "$TEST_TYPE"
|
||||
env:
|
||||
RUN_NAME: ${{ github.event.inputs.runName }}
|
||||
TEST_TYPE: ${{ github.event.inputs.testType }}
|
||||
|
||||
- name: Download Android Artifacts
|
||||
run: |
|
||||
cd injitest/scripts/ui_automation
|
||||
./download_artifacts.sh "$RUN_ARN" "Android"
|
||||
|
||||
- name: Upload Artifact to Actions
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: Android-Artifacts
|
||||
path: injitest/scripts/ui_automation/artifacts/android_artifacts/
|
||||
retention-days: 10
|
||||
|
||||
# - name: Update slack channel
|
||||
# if: always()
|
||||
# uses: 8398a7/action-slack@v3
|
||||
# with:
|
||||
# status: ${{ job.status }}
|
||||
# fields: repo,message,author,commit,workflow,job
|
||||
# env:
|
||||
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_INJI_TEAM }}
|
||||
|
||||
ios-ui-automation:
|
||||
if: ${{ github.event.inputs.buildFor == 'Both[Android and IOS]' || github.event.inputs.buildFor == 'IOS'}}
|
||||
name: Trigger ios run
|
||||
runs-on: macos-13
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18.x'
|
||||
|
||||
- name: Cache npm dependencies
|
||||
uses: actions/cache@v3.3.1
|
||||
with:
|
||||
path: '~/.npm'
|
||||
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-npm-
|
||||
|
||||
- name: Install npm dependencies
|
||||
run: |
|
||||
npm ci
|
||||
|
||||
- name: Create iOS Build
|
||||
run: |
|
||||
cd ios
|
||||
pod install && pod install
|
||||
fastlane ios_ui_automation_build
|
||||
env:
|
||||
MIMOTO_HOST: ${{ github.event.inputs.backendServiceUrl }}
|
||||
ESIGNET_HOST: ${{ github.event.inputs.backendServiceUrl }}
|
||||
APPLICATION_THEME: 'orange'
|
||||
APP_FLAVOR: 'residentapp'
|
||||
CREDENTIAL_REGISTRY_EDIT: 'false'
|
||||
INJI_IOS_TEMP_KEYCHAIN_PASSWORD: '${{ secrets.INJI_IOS_TEMP_KEYCHAIN_PASSWORD }}'
|
||||
INJI_IOS_TEMP_KEYCHAIN_USER: '${{ secrets.INJI_IOS_TEMP_KEYCHAIN_USER }}'
|
||||
GIT_AUTHORIZATION: '${{ secrets.GIT_AUTHORIZATION }}'
|
||||
APPLE_KEY_ID: '${{ secrets.APPLE_KEY_ID }}'
|
||||
APPLE_ISSUER_ID: '${{ secrets.APPLE_ISSUER_ID }}'
|
||||
APPLE_KEY_CONTENT: '${{ secrets.APPLE_KEY_CONTENT }}'
|
||||
MATCH_PASSWORD: '${{ secrets.INJI_IOS_MATCH_PASSWORD }}'
|
||||
|
||||
- name: Configure AWS CLI
|
||||
run: |
|
||||
aws configure set aws_access_key_id ${{ secrets.AWS_DEVICE_FARM_ACCESS_KEY }}
|
||||
aws configure set aws_secret_access_key ${{ secrets.AWS_DEVICE_FARM_SECRET_KEY }}
|
||||
aws configure set region us-west-2
|
||||
|
||||
- name: IOS - Automation
|
||||
run: |
|
||||
cd injitest/scripts/ui_automation
|
||||
./automation_trigger.sh "IOS" "$RUN_NAME-IOS" "$TEST_TYPE"
|
||||
env:
|
||||
RUN_NAME: ${{ github.event.inputs.runName }}
|
||||
TEST_TYPE: ${{ github.event.inputs.testType }}
|
||||
|
||||
- name: Download IOS Artifacts
|
||||
run: |
|
||||
cd injitest/scripts/ui_automation
|
||||
./download_artifacts.sh "$RUN_ARN" "IOS"
|
||||
|
||||
- name: Upload Artifact to Actions
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: IOS-Artifacts
|
||||
path: injitest/scripts/ui_automation/artifacts/ios_artifacts/
|
||||
retention-days: 10
|
||||
|
||||
# - name: Update slack channel
|
||||
# if: always()
|
||||
# uses: 8398a7/action-slack@v3
|
||||
# with:
|
||||
# status: ${{ job.status }}
|
||||
# fields: repo,message,author,commit,workflow,job
|
||||
# env:
|
||||
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_INJI_TEAM }}
|
||||
155
injitest/scripts/ui_automation/automation_trigger.sh
Executable file
155
injitest/scripts/ui_automation/automation_trigger.sh
Executable file
@@ -0,0 +1,155 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# Get input parameters
|
||||
PLATFORM=$1
|
||||
RUN_NAME=$2
|
||||
TEST_TYPE=$3
|
||||
|
||||
# Constants
|
||||
PROJECT_ARN="arn:aws:devicefarm:us-west-2:931337674770:project:b356580b-c561-4fd2-bfdf-8993aebafc5a"
|
||||
TEST_PACKAGE_FILE_TYPE="APPIUM_JAVA_TESTNG_TEST_PACKAGE"
|
||||
|
||||
# Variables to be set later
|
||||
APP_UPLOAD_ARN=""
|
||||
DEVICE_POOL_ARN=""
|
||||
TEST_PACKAGE_ARN=""
|
||||
|
||||
# Function to set paths and configurations based on platform
|
||||
configure_platform() {
|
||||
local platform=$1
|
||||
local project_path=$(pwd)
|
||||
|
||||
# Set default values
|
||||
DEVICE_POOL_NAME=""
|
||||
APP_NAME=""
|
||||
APP_TYPE=""
|
||||
TEST_PACKAGE_NAME=""
|
||||
TEST_SPEC_ARN=""
|
||||
TEST_PACKAGE_PATH=""
|
||||
APP_PATH=""
|
||||
|
||||
# Get the absolute package path
|
||||
cd "$project_path/target"
|
||||
local package_path=$(pwd)
|
||||
TEST_PACKAGE_PATH="$package_path/zip-with-dependencies.zip"
|
||||
cd "$project_path"
|
||||
|
||||
# Configure based on platform
|
||||
if [ "$platform" = "Android" ]; then
|
||||
|
||||
# Android configuration
|
||||
DEVICE_POOL_NAME="ANDROID DEVICE POOL"
|
||||
APP_NAME="Inji_universal.apk"
|
||||
APP_TYPE="ANDROID_APP"
|
||||
TEST_PACKAGE_NAME="Android-Test"
|
||||
TEST_SPEC_ARN="arn:aws:devicefarm:us-west-2::upload:100e31e8-12ac-11e9-ab14-d663b5a4a910"
|
||||
|
||||
cd "$project_path/../android/app/build/outputs/apk/residentapp/release"
|
||||
local app_path=$(pwd)
|
||||
APP_PATH="$app_path/Inji_universal.apk"
|
||||
cd "$project_path"
|
||||
else
|
||||
|
||||
# iOS configuration
|
||||
DEVICE_POOL_NAME="IOS DEVICE POOL"
|
||||
APP_NAME="Inji.ipa"
|
||||
APP_TYPE="IOS_APP"
|
||||
TEST_PACKAGE_NAME="IOS-Test"
|
||||
TEST_SPEC_ARN="arn:aws:devicefarm:us-west-2::upload:100e31e8-12ac-11e9-ab14-d663bd873c82"
|
||||
|
||||
cd "$project_path/../ios"
|
||||
local app_path=$(pwd)
|
||||
APP_PATH="$app_path/Inji.ipa"
|
||||
cd "$project_path"
|
||||
fi
|
||||
}
|
||||
|
||||
# Update XML based on platform
|
||||
update_xml_configuration() {
|
||||
|
||||
#Go to file path
|
||||
cd ../../src/main/resources
|
||||
|
||||
#Update the testng file
|
||||
if [ "$PLATFORM" = 'Android' ]; then
|
||||
if [ "$TEST_TYPE" = 'sanity' ]; then
|
||||
cat androidSanity.txt > testng.xml
|
||||
else
|
||||
cat androidRegression.txt > testng.xml
|
||||
fi
|
||||
elif [ "$PLATFORM" = 'IOS' ]; then
|
||||
if [ "$TEST_TYPE" = 'sanity' ]; then
|
||||
cat iosSanity.txt > testng.xml
|
||||
else
|
||||
cat iosRegression.txt > testng.xml
|
||||
fi
|
||||
fi
|
||||
|
||||
#Move back to original path
|
||||
cd ../../../
|
||||
}
|
||||
|
||||
#upload artifacts to device farm
|
||||
upload_to_device_farm() {
|
||||
local project_arn=$1
|
||||
local file_path=$2
|
||||
local file_name=$3
|
||||
local file_type=$4
|
||||
|
||||
#Get upload URL Link
|
||||
response=$(aws devicefarm create-upload --project-arn "$project_arn" --name "$file_name" --type "$file_type" --query 'upload.{url: url, arn: arn}' --output json)
|
||||
upload_url=$(echo "$response" | jq -r '.url')
|
||||
|
||||
#Upload the file to the link
|
||||
curl -T $file_path "$upload_url"
|
||||
|
||||
#Return the upload arn
|
||||
echo "$response" | jq -r '.arn'
|
||||
}
|
||||
|
||||
#trigger the run
|
||||
start_run_on_device_farm() {
|
||||
local project_arn=$1
|
||||
local app_arn=$2
|
||||
local device_pool_arn=$3
|
||||
local test_package_arn=$4
|
||||
local test_spec_arn=$5
|
||||
local run_name=$6
|
||||
|
||||
#Start the run
|
||||
run_arn=$(aws devicefarm schedule-run --project-arn "$project_arn" --app-arn "$app_arn" --device-pool-arn "$device_pool_arn" --name "$run_name" --test testSpecArn=$test_spec_arn,type=APPIUM_JAVA_TESTNG,testPackageArn="$test_package_arn" --query run.arn --output text)
|
||||
|
||||
#Return the run arn
|
||||
echo "$run_arn"
|
||||
}
|
||||
|
||||
# #rewrite the xml file
|
||||
update_xml_configuration
|
||||
|
||||
# # #build the test jar
|
||||
mvn clean package -DskipTests=true
|
||||
|
||||
# Configure defaults based on platform
|
||||
configure_platform "$PLATFORM"
|
||||
|
||||
#upload the jar and apk
|
||||
TEST_PACKAGE_ARN=$(upload_to_device_farm $PROJECT_ARN $TEST_PACKAGE_PATH $TEST_PACKAGE_NAME $TEST_PACKAGE_FILE_TYPE)
|
||||
echo "Test arn is ------ $TEST_PACKAGE_ARN"
|
||||
|
||||
#upload the app file
|
||||
APP_UPLOAD_ARN=$(upload_to_device_farm $PROJECT_ARN $APP_PATH $APP_NAME $APP_TYPE)
|
||||
echo "App arn is ------ $APP_UPLOAD_ARN"
|
||||
|
||||
#list device pools and filter by name
|
||||
DEVICE_POOL_ARN=$(aws devicefarm list-device-pools --arn $PROJECT_ARN --query "devicePools[?name=='$DEVICE_POOL_NAME'].arn" --output text)
|
||||
echo "Device pool arn is ------ $DEVICE_POOL_ARN"
|
||||
|
||||
# Wait for app upload to complete to start the run
|
||||
sleep 100
|
||||
|
||||
#Start the run
|
||||
RUN_ARN=$(start_run_on_device_farm $PROJECT_ARN $APP_UPLOAD_ARN $DEVICE_POOL_ARN $TEST_PACKAGE_ARN $TEST_SPEC_ARN $RUN_NAME)
|
||||
echo "RUN_ARN=$RUN_ARN" >> $GITHUB_ENV
|
||||
echo "Run Started Successfully!"
|
||||
|
||||
echo "RUN ARN IS ---> $RUN_ARN"
|
||||
65
injitest/scripts/ui_automation/download_artifacts.sh
Executable file
65
injitest/scripts/ui_automation/download_artifacts.sh
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
RUN_ARN=$1
|
||||
PLATFORM=$2
|
||||
ARTIFACT_DIRECTORY=""
|
||||
|
||||
get_directory_name() {
|
||||
local platform=$1
|
||||
|
||||
case "$platform" in
|
||||
"Android") echo "android_artifacts" ;;
|
||||
"IOS") echo "ios_artifacts" ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
wait_for_run_completion() {
|
||||
local run_arn=$1
|
||||
|
||||
while true; do
|
||||
run_status=$(aws devicefarm get-run --arn "$run_arn" --query 'run.status' --output text)
|
||||
if [ "$run_status" == "COMPLETED" ]; then
|
||||
echo "Run completed..."
|
||||
sleep 120 # wait for 2 minutes to process the artifacts
|
||||
break
|
||||
fi
|
||||
echo "Waiting for the run to complete..."
|
||||
sleep 180 # wait for 3 minutes before checking again
|
||||
done
|
||||
}
|
||||
|
||||
download_customer_artifacts() {
|
||||
local run_arn=$1
|
||||
|
||||
ARTIFACT_DIRECTORY=$(get_directory_name "$PLATFORM")
|
||||
mkdir -p "artifacts/$ARTIFACT_DIRECTORY"
|
||||
|
||||
response=$(aws devicefarm list-artifacts --arn "arn:aws:devicefarm:us-west-2:931337674770:run:b356580b-c561-4fd2-bfdf-8993aebafc5a/36910efb-e008-49f7-ac59-5eb8a22dd293" --type FILE --query 'artifacts[?name==`Customer Artifacts`].[url]' --output json)
|
||||
url=$(echo "$response" | jq -r '.[0][0]')
|
||||
cd "artifacts/$ARTIFACT_DIRECTORY"
|
||||
|
||||
echo "Downloading customer artifact from $url"
|
||||
curl -JL "$url" -o "$PLATFORM.zip"
|
||||
echo "$(pwd)"
|
||||
echo "$(ls -l)"
|
||||
echo "Artifacts downloaded successfully"
|
||||
}
|
||||
|
||||
download_videos() {
|
||||
local run_arn=$1
|
||||
|
||||
aws devicefarm list-artifacts --arn "$run_arn" --type VIDEO --query 'artifacts[].[url, name]' --output text | while read -r url name; do
|
||||
echo "Downloading video $name from $url"
|
||||
curl -o "artifacts/$ARTIFACT_DIRECTORY/$name" "$url"
|
||||
done
|
||||
}
|
||||
|
||||
# Wait for run completion
|
||||
wait_for_run_completion "$RUN_ARN"
|
||||
|
||||
# Download customer artifacts after run completion
|
||||
download_customer_artifacts "$RUN_ARN"
|
||||
|
||||
# Download videos after run completion
|
||||
#download_videos "$RUN_ARN"
|
||||
17
injitest/src/main/resources/androidRegression.txt
Normal file
17
injitest/src/main/resources/androidRegression.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite name="All Test Suite">
|
||||
<listeners>
|
||||
<listener class-name="inji.listeners.Listeners"/>
|
||||
</listeners>
|
||||
<test verbose="2" preserve-order="true" name="android">
|
||||
<classes>
|
||||
<class name="androidTestCases.UnlockWithPasscodeTest">
|
||||
<methods>
|
||||
<include name="logoutAndLoginWithPasscode"/>
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
|
||||
17
injitest/src/main/resources/androidSanity.txt
Normal file
17
injitest/src/main/resources/androidSanity.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite name="All Test Suite">
|
||||
<listeners>
|
||||
<listener class-name="inji.listeners.Listeners"/>
|
||||
</listeners>
|
||||
<test verbose="2" preserve-order="true" name="android">
|
||||
<classes>
|
||||
<class name="androidTestCases.UnlockWithPasscodeTest">
|
||||
<methods>
|
||||
<include name="logoutAndLoginWithPasscode"/>
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
|
||||
16
injitest/src/main/resources/iosRegression.txt
Normal file
16
injitest/src/main/resources/iosRegression.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite name="All Test Suite">
|
||||
<listeners>
|
||||
<listener class-name="inji.listeners.Listeners"/>
|
||||
</listeners>
|
||||
<test verbose="2" preserve-order="true" name="ios">
|
||||
<classes>
|
||||
<class name="iosTestCases.UnlockWithPasscodeTest">
|
||||
<methods>
|
||||
<include name="logoutAndLoginWithPasscode"/>
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
16
injitest/src/main/resources/iosSanity.txt
Normal file
16
injitest/src/main/resources/iosSanity.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite name="All Test Suite">
|
||||
<listeners>
|
||||
<listener class-name="inji.listeners.Listeners"/>
|
||||
</listeners>
|
||||
<test verbose="2" preserve-order="true" name="ios">
|
||||
<classes>
|
||||
<class name="iosTestCases.UnlockWithPasscodeTest">
|
||||
<methods>
|
||||
<include name="logoutAndLoginWithPasscode"/>
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
@@ -1,146 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite name="All Test Suite">
|
||||
<listeners>
|
||||
<listener class-name="inji.listeners.Listeners"/>
|
||||
</listeners>
|
||||
<test verbose="2" preserve-order="true" name="ios">
|
||||
<classes>
|
||||
<!--<class name="iosTestCases.AboutInjiTest">
|
||||
<methods>
|
||||
<include name="copyAppId"/>
|
||||
</methods>
|
||||
</class>-->
|
||||
<class name="iosTestCases.ActivateVcTest">
|
||||
<methods>
|
||||
<include name="activateVc"/>
|
||||
<include name="noPreDownloadedVCAndNoHistoryInFreshInstallation"/>
|
||||
<include name="verifyInvalidOtpMessage"/>
|
||||
<include name="activateVcFromDetailedViewPage"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.ChangeLanguageTest">
|
||||
<methods>
|
||||
<include name="changeLanguage"/>
|
||||
<include name="languageShouldBeInNativeLanguages"/>
|
||||
<include name="verifyTuvaliVersion"/>
|
||||
<include name="changeLanguageToArabic"/>
|
||||
<include name="changeLanguageToFilipionAndSearchIssuer"/>
|
||||
<include name="changeLanguageToFilipionAndSearchIssuerEnterIncompleteName"/>
|
||||
<include name="changeLanguageToHindiAndSearchIssuer"/>
|
||||
<include name="changeLanguageToFilipionAndcheckInjiTour"/>
|
||||
<include name="changeLanguageToHindiAndcheckInjiTour"/>
|
||||
<include name="changeLanguageToTamilAndcheckInjiTour"/>
|
||||
<include name="changeLanguageToKannadAndcheckInjiTour"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.CredentialRegistryTest">
|
||||
<methods>
|
||||
<!-- <include name="downloadAndVerifyVcInNewEnv"/>-->
|
||||
<include name="cancelChangeEnvAndVerify"/>
|
||||
<!-- <include name="downloadAndVerifyVcInInvalidEnv"/>-->
|
||||
<!-- <include name="generateUinInNewEnv"/>-->
|
||||
<include name="retrivingUinInOtherEnv"/>
|
||||
<!-- <include name="downloadAndVerifyVcInTwoEnv"/>-->
|
||||
<!-- <include name="downloadVcAndActivateItInOtherEnv"/>-->
|
||||
<!-- <include name="downloadAndVerifyVcInNewEnvForEsignet"/>-->
|
||||
<!-- <include name="downloadAndVerifyVcInInvalidEnvForEsignet"/>-->
|
||||
<!-- <include name="downloadAndVerifyVcInInvalidEnvForEsignetInFillpino"/>-->
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.DeletingVcTest">
|
||||
<methods>
|
||||
<include name="deleteVcAndVerifyInHistory"/>
|
||||
<include name="cancelDeleteVc"/>
|
||||
<include name="DownloadingDeletedVc"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.GenerateUinOrVidTest">
|
||||
<methods>
|
||||
<include name="generateUinOrVidUsingAid"/>
|
||||
<include name="goBackToGenerateUinOrVidUsingAidFromOtpVerificationPage"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.NoNetworkIosTest">
|
||||
<methods>
|
||||
<!-- <include name="setupPasscodeAndDownloadCardWithoutInternet"/>-->
|
||||
<!-- <include name="openCameraOnFlightMode"/>-->
|
||||
<!-- <include name="activateVcWithoutInternet"/>-->
|
||||
<include name="verifyListOfLanguagesInOfflineMode"/>
|
||||
<include name="verifyHelpPageOfflineMode"/>
|
||||
<include name="deleteDownloadedVcInOfflineMode"/>
|
||||
<include name="openQrOffline"/>
|
||||
<!-- <include name="verifyRecivedCardOffline"/>-->
|
||||
<!-- <include name="downloadCardWithoutInternetRetryWithInternet"/>-->
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.PinVcTest">
|
||||
<methods>
|
||||
<include name="pinVc"/>
|
||||
<!-- <include name="VerifyCameraOpenAfterPinVc"/>-->
|
||||
<!-- <include name="downloadVcViaEsignetAndPinUnpin"/>-->
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.ShareVcTest">
|
||||
<methods>
|
||||
<include name="noCardsAvailableToShare"/>
|
||||
<include name="verifyReceivedCardTabPresent"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.UnlockWithPasscodeTest">
|
||||
<methods>
|
||||
<include name="logoutAndLoginWithPasscode"/>
|
||||
<include name="loginWithInvalidPasscode"/>
|
||||
</methods>
|
||||
</class>
|
||||
<!-- <class name="iosTestCases.VcDownloadAndVerifyUsingEsignetTest">-->
|
||||
<!-- <methods>-->
|
||||
<!-- <include name="downloadAndVerifyVcUsingUinViaEsignet"/>-->
|
||||
<!-- <include name="downloadAndVerifyVcUsingVidViaEsignet"/>-->
|
||||
<!-- </methods>-->
|
||||
<!-- </class>-->
|
||||
<class name="iosTestCases.VcDownloadAndVerifyUsingUinTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingUin"/>
|
||||
<include name="downloadMultipleVcUsingDifferentUin"/>
|
||||
<include name="downloadWithEmptyUin"/>
|
||||
<include name="generateMultipleVcWithSameUin"/>
|
||||
<include name="verifyInvalidUinErrorMessage"/>
|
||||
<include name="verifyOtpTimeOutAndGoBack"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VcDownloadAndVerifyUsingVidTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingVid"/>
|
||||
<include name="downloadTwoVcDeleteOneUsingVid"/>
|
||||
<include name="verifyInvalidVidErrorMessage"/>
|
||||
<include name="downloadAndVerifyVcUsingRevokeVid"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VerifyHelpPageTest">
|
||||
<methods>
|
||||
<include name="verifyHelpPage"/>
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VerifyHistoryTest">
|
||||
<methods>
|
||||
<include name="downloadVcAndVerifyHistory"/>
|
||||
<include name="verifyActivationFailedRecordInHistory"/>
|
||||
<include name="verifyActivationFailedRecordInHistoryFromDetailedView"/>
|
||||
<include name="activateVcAndVerifyInHistory"/>
|
||||
<!-- <include name="downloadAndVerifyHistoryUsingUinViaEsignet"/>-->
|
||||
<!-- <include name="downloadAndVerifyHistoryUsingVidViaEsignet"/>-->
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VerifyWelcomePagesTest">
|
||||
<methods>
|
||||
<include name="verifyWelcomePagesContent"/>
|
||||
<include name="verifyWelcomePagesFromInjiTourGuide"/>
|
||||
<include name="verifyGoBackFromInjiTourGuide"/>
|
||||
<include name="verifyClickOnBackFromInjiTourGuide"/>
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
|
||||
@@ -91,6 +91,50 @@ end
|
||||
|
||||
|
||||
platform :ios do
|
||||
|
||||
lane :ios_ui_automation_build do
|
||||
keychain_name = TEMP_KEYCHAIN_USER
|
||||
keychain_password = TEMP_KEYCHAIN_PASSWORD
|
||||
ensure_temp_keychain(keychain_name, keychain_password)
|
||||
|
||||
api_key = app_store_connect_api_key(
|
||||
key_id: "#{APPLE_KEY_ID}",
|
||||
issuer_id: "#{APPLE_ISSUER_ID}",
|
||||
key_content: "#{APPLE_KEY_CONTENT}",
|
||||
duration: 1200,
|
||||
in_house: false,
|
||||
is_key_content_base64: true
|
||||
)
|
||||
|
||||
match(
|
||||
type: 'appstore',
|
||||
app_identifier: "#{generate_app_bundle_id}",
|
||||
git_basic_authorization: Base64.strict_encode64("#{GIT_AUTHORIZATION}"),
|
||||
readonly: false,
|
||||
keychain_name: keychain_name,
|
||||
keychain_password: keychain_password,
|
||||
api_key: api_key
|
||||
)
|
||||
|
||||
profile_mapping = Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
|
||||
|
||||
gym(
|
||||
configuration: "Release",
|
||||
workspace: "Inji.xcworkspace",
|
||||
scheme: "Inji",
|
||||
export_method: "app-store",
|
||||
|
||||
export_options: {
|
||||
provisioningProfiles: {
|
||||
"#{generate_app_bundle_id}" => "match AppStore #{generate_app_bundle_id}"
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
delete_temp_keychain(keychain_name)
|
||||
|
||||
end
|
||||
|
||||
lane :beta do
|
||||
keychain_name = TEMP_KEYCHAIN_USER
|
||||
keychain_password = TEMP_KEYCHAIN_PASSWORD
|
||||
|
||||
Reference in New Issue
Block a user