mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 05:27:57 -05:00
203 lines
6.9 KiB
YAML
203 lines
6.9 KiB
YAML
name: UI - Automation
|
|
run-name: ${{ inputs.runName }}
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
runName:
|
|
description: 'Name the run for Actions'
|
|
default: 'Ex: Sanity/Regression[ENV]'
|
|
type: string
|
|
buildFor:
|
|
description: 'Trigger test case run for'
|
|
required: true
|
|
type: choice
|
|
options:
|
|
- Android
|
|
- IOS
|
|
testType:
|
|
description: 'Test type Sanity/Regression'
|
|
required: true
|
|
default: 'Sanity'
|
|
type: choice
|
|
options:
|
|
- Sanity
|
|
- Regression
|
|
backendServiceUrlMimoto:
|
|
description: 'Mimoto backend service URL'
|
|
required: true
|
|
default: 'https://api.sandbox.mosip.net'
|
|
type: string
|
|
backendServiceUrlEsiget:
|
|
description: 'Esignet backend service URL'
|
|
required: true
|
|
default: 'https://api.sandbox.mosip.net'
|
|
type: string
|
|
|
|
jobs:
|
|
android-ui-automation:
|
|
if: ${{ 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@v4
|
|
with:
|
|
path: '~/.npm'
|
|
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-npm-
|
|
|
|
- name: Install npm dependencies
|
|
run: |
|
|
npm ci
|
|
- name: Check Java Version
|
|
run: |
|
|
java -version
|
|
- 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.backendServiceUrlMimoto }}
|
|
ESIGNET_HOST: ${{ github.event.inputs.backendServiceUrlEsignet }}
|
|
APPLICATION_THEME: 'gradient'
|
|
CREDENTIAL_REGISTRY_EDIT: 'false'
|
|
RELEASE_KEYSTORE_ALIAS: 'androidreleasekey'
|
|
RELEASE_KEYSTORE_PASSWORD: "${{ secrets.INJI_ANDROID_RELEASE_STOREPASS }}"
|
|
|
|
- name: Upload Artifact to Actions
|
|
uses: actions/upload-artifact@v3.1.1
|
|
with:
|
|
name: residentapp
|
|
path: android/app/build/outputs/apk/residentapp/release/Inji_universal.apk
|
|
retention-days: 10
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '21'
|
|
- name: Run UI Automation Tests on BrowserStack
|
|
run: |
|
|
chmod +x injitest/automation_trigger.sh
|
|
./injitest/automation_trigger.sh "$BROWSERSTACK_USERNAME" "$BROWSERSTACK_ACCESS_KEY" "$TEST_TYPE" "$PLATFORM_NAME"
|
|
env:
|
|
PLATFORM_NAME: ${{ github.event.inputs.buildFor }}
|
|
TEST_TYPE: ${{ github.event.inputs.testType }}
|
|
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
|
|
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
|
|
|
|
- name: Save test reports
|
|
uses: actions/upload-artifact@v3
|
|
if: success() || failure()
|
|
with:
|
|
name: test-reports
|
|
path: injitest/target/surefire-reports
|
|
|
|
- name: Upload to S3
|
|
if: success() || failure()
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_REGION: ${{ secrets.AWS_REGION }}
|
|
S3_BUCKET: ${{ secrets.S3_BUCKET }}
|
|
run: |
|
|
S3_OBJECT_KEY=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 2)
|
|
aws s3 cp injitest/target/surefire-reports s3://$S3_BUCKET/$S3_OBJECT_KEY/android-ui/ --recursive
|
|
|
|
ios-ui-automation:
|
|
if: ${{ 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@v4
|
|
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.backendServiceUrlMimoto }}
|
|
ESIGNET_HOST: ${{ github.event.inputs.backendServiceUrlEsignet }}
|
|
APPLICATION_THEME: 'gradient'
|
|
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: Upload Artifact to Actions
|
|
uses: actions/upload-artifact@v3.1.1
|
|
with:
|
|
name: residentapp
|
|
path: ios/Inji.ipa
|
|
retention-days: 10
|
|
|
|
- name: Set up JDK 21
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '21'
|
|
|
|
- name: Run UI Automation Tests on BrowserStack
|
|
run: |
|
|
chmod +x injitest/automation_trigger.sh
|
|
./injitest/automation_trigger.sh "$BROWSERSTACK_USERNAME" "$BROWSERSTACK_ACCESS_KEY" "$TEST_TYPE" "$PLATFORM_NAME"
|
|
env:
|
|
PLATFORM_NAME: ${{ github.event.inputs.buildFor }}
|
|
TEST_TYPE: ${{ github.event.inputs.testType }}
|
|
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
|
|
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
|
|
|
|
- name: Save test reports
|
|
uses: actions/upload-artifact@v3
|
|
if: success() || failure()
|
|
with:
|
|
name: test-reports
|
|
path: injitest/target/surefire-reports
|
|
|
|
- name: Upload to S3
|
|
if: success() || failure()
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_REGION: ${{ secrets.AWS_REGION }}
|
|
S3_BUCKET: ${{ secrets.S3_BUCKET }}
|
|
run: |
|
|
S3_OBJECT_KEY=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 2)
|
|
aws s3 cp injitest/target/surefire-reports s3://$S3_BUCKET/$S3_OBJECT_KEY/ios-ui/ --recursive
|