[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:
adityankannan-tw
2024-01-25 18:23:20 +05:30
committed by GitHub
parent 336a676e10
commit 00d3ebacbb
9 changed files with 520 additions and 146 deletions

190
.github/workflows/ui-automation.yml vendored Normal file
View 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 }}

View 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"

View 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"

View 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>

View 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>

View 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>

View 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>

View File

@@ -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>

View File

@@ -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