Merge pull request #1223 from tw-mosip/internal-release-01-02-2024
[Release 01-02-2024] User data backup and restore and Gender Mag issues
5
.env
@@ -14,8 +14,11 @@ APPLICATION_THEME=orange
|
||||
#environment can be changed if it is toggled
|
||||
CREDENTIAL_REGISTRY_EDIT=true
|
||||
#DataBackup can enable if it is toggled
|
||||
DATA_BACKUP=false
|
||||
BACKUP_AND_RESTORE=true
|
||||
DEBUG_MODE=false
|
||||
|
||||
#supported languages( en, fil, ar, hi, kn, ta)
|
||||
APPLICATION_LANGUAGE=en
|
||||
|
||||
#INJI MOBILE CLIENT ID
|
||||
GOOGLE_ANDROID_CLIENT_ID='<client_id>'
|
||||
|
||||
2
.github/workflows/internal-build.yml
vendored
@@ -105,6 +105,7 @@ jobs:
|
||||
RELEASE_KEYSTORE_PASSWORD: '${{ secrets.INJI_ANDROID_RELEASE_STOREPASS }}'
|
||||
INJI_ANDROID_PLAY_STORE_CONFIG_JSON: ${{ secrets.INJI_ANDROID_PLAY_STORE_CONFIG_JSON }}
|
||||
SLACK_WEBHOOK_URL: '${{ secrets.SLACK_WEBHOOK_INJI_TEAM }}'
|
||||
GOOGLE_ANDROID_CLIENT_ID: ${{secrets.INJI_GOOGLE_CLIENT_ID}}
|
||||
|
||||
build-android-beta:
|
||||
if: ${{ inputs.release == 'beta' && (inputs.buildFor == 'Both[Android and IOS]' || inputs.buildFor == 'Android') }}
|
||||
@@ -130,6 +131,7 @@ jobs:
|
||||
RELEASE_KEYSTORE_PASSWORD: '${{ secrets.INJI_ANDROID_RELEASE_STOREPASS }}'
|
||||
INJI_ANDROID_PLAY_STORE_CONFIG_JSON: ${{ secrets.INJI_ANDROID_PLAY_STORE_CONFIG_JSON }}
|
||||
SLACK_WEBHOOK_URL: '${{ secrets.SLACK_WEBHOOK_INJI_TEAM }}'
|
||||
GOOGLE_ANDROID_CLIENT_ID: ${{secrets.INJI_GOOGLE_CLIENT_ID}}
|
||||
|
||||
build-ios:
|
||||
if: ${{ inputs.buildFor == 'Both[Android and IOS]' || inputs.buildFor == 'IOS'}}
|
||||
|
||||
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 }}
|
||||
126
.talismanrc
@@ -2,7 +2,7 @@ fileignoreconfig:
|
||||
- filename: package.json
|
||||
checksum: 4770aabfda162fbc0b9a8c53d7dee483ce29b82c6cd3e17e81e3e628d93dbadc
|
||||
- filename: package-lock.json
|
||||
checksum: e4569b3ec846749ae56bd9ad907c6cd05c27ab111475ceb501e667ec38367609
|
||||
checksum: 4e96631f1fa326fe49fd48c1ab7ab3eae5808376bb28f477d82e7671d335fd0c
|
||||
- filename: lib/jsonld-signatures/suites/ed255192018/ed25519.ts
|
||||
checksum: 493b6e31144116cb612c24d98b97d8adcad5609c0a52c865a6847ced0a0ddc3a
|
||||
- filename: components/PasscodeVerify.tsx
|
||||
@@ -24,7 +24,7 @@ fileignoreconfig:
|
||||
- filename: screens/BiometricScreenController.ts
|
||||
checksum: 4a424adbd2d2404c9d968c54607885af643a07e09acc4a2d37c6e7a7952c4945
|
||||
- filename: screens/Home/IntroSlidersScreen.tsx
|
||||
checksum: 9ff212530850e9f921f91d406c01f67ea5dd2a44e9cdb5e63d977749c7a7c5bd
|
||||
checksum: af4a7e2d04b1141b7c32acfabeb3213a32eaca2a8e8f61e6958b6c97219dce57
|
||||
- filename: machines/issuersMachine.ts
|
||||
checksum: 742b8ff561dca61be08ab0b9aef3997ad5d043df298a84c17349dc0206ddcee6
|
||||
- filename: machines/issuersMachine.typegen.ts
|
||||
@@ -36,15 +36,11 @@ fileignoreconfig:
|
||||
- filename: shared/telemetry/TelemetryUtils.js
|
||||
checksum: ffe9aac2dcc590b98b0d588885c088eff189504ade653a77f74b67312bfd27ad
|
||||
- filename: shared/fileStorage.ts
|
||||
checksum: 5c4c9bc78446e6b25bf6e6ac276918757d6275a27ba93d253338ca629ebc0240
|
||||
- filename: shared/storage.ts
|
||||
checksum: 837dda0fd0a3e160e62f10df44003d29e29dfce897550a85a8e74fe77a2a06db
|
||||
checksum: 451e8873a635d955fe426d9a5fcf191f2d4fd74984a1a4518760e2d10e9e1817
|
||||
- filename: screens/Issuers/IssuersScreen.tsx
|
||||
checksum: 9c53e3770dbefe26e0de67ee4b7d5cc9c52d9823cbb136a1a5104dcb0a101071
|
||||
- filename: ios/Podfile.lock
|
||||
checksum: 1da328d6edcd284799be962d59281b120a5bb2a6873ca6a01da321857e59a7d3
|
||||
- filename: screens/Home/IntroSlidersScreen.tsx
|
||||
checksum: 72ef913857448ef05763e52e32356faa2d1f3de8130a1c638d1897f44823031f
|
||||
checksum: c9bb3501f86e3ac35c7522ed1028b0fa726723c86d395bb159d5f96a21e50159
|
||||
- filename: shared/commonUtil.ts
|
||||
checksum: 4a53bb615f2ea0fbf687bd7027c4c246e819dd88bc273941ed611e763d9d2356
|
||||
- filename: screens/Home/MyVcs/GetIdInputModal.tsx
|
||||
@@ -56,7 +52,7 @@ fileignoreconfig:
|
||||
- filename: machines/store.typegen.ts
|
||||
checksum: 6d22bc5c77398316b943c512c208ce0846a9fff674c1ccac79e07f21962acd5f
|
||||
- filename: shared/telemetry/TelemetryConstants.js
|
||||
checksum: df7619021aa023fa62ade9efb60a80fc9c6901da8c52f563014d3f51497c190c
|
||||
checksum: fd8dc3a69cdef68855dc5f0531d8e634bfa2621bb4dc22f85b8247512a349c4c
|
||||
- filename: machines/VCItemMachine/EsignetMosipVCItem/EsignetMosipVCItemMachine.ts
|
||||
checksum: cca7657da3a1a91b63e0a10605545d1e0d3d152b083a55f9dbb9eed893646e4b
|
||||
- filename: machines/VCItemMachine/ExistingMosipVCItem/ExistingMosipVCItemMachine.ts
|
||||
@@ -68,11 +64,9 @@ fileignoreconfig:
|
||||
- filename: shared/telemetry/TelemetryUtils.js
|
||||
checksum: a0686e9a5c006176fd720b84bc36ca947db1422caf65c90cd0c2d1102a9e96df
|
||||
- filename: ios/fastlane/Fastfile
|
||||
checksum: 78edb7772ca7bf64fc0c603cb82771c793e03afff37ccbbfd1b9f578ec0e5369
|
||||
checksum: a4e3772dc67a07ecbcfc58be0d6d4f7fa799cec7ac25bd269ac29459c8669ca4
|
||||
- filename: machines/bleShare/scan/scanMachine.ts
|
||||
checksum: a514c958ca3da3c5b22a1a95ad680af8f05fb22638fab79b3842aa8fcc1b4a17
|
||||
- filename: locales/spa.json
|
||||
checksum: eac9685c6b205ece5759e414669d27ad7ce383453d7b5e7d9f5ce75d290cc860
|
||||
- filename: screens/PasscodeScreen.tsx
|
||||
checksum: 5d3003027b245234f8c00bfc98836f1fb90a5d9525ffacf61c53f3d50954aa6a
|
||||
- filename: screens/PasscodeScreen.tsx
|
||||
@@ -87,16 +81,12 @@ fileignoreconfig:
|
||||
checksum: 9970da0ea685018a90f7306fb88945d135dd019439099dd56b6109d915a8a24f
|
||||
- filename: assets/Flip_Camera_Icon.svg
|
||||
checksum: 736b5a7ddb86bd4376229ce198dbf8a663e7ac89fc3311bd4f19afd4a2b36ffd
|
||||
- filename: ios/fastlane/Fastfile
|
||||
checksum: 086080bc7a04accf5094c457b5acf84d9fec5d7dfa72eaaaf02e433ecf4f996b
|
||||
- filename: assets/Finger_Print_Icon.svg
|
||||
checksum: 776d4fe4fc4b54d185ccf97daf0511b9fe2c0e0f7c1a809047020e5e8a100db6
|
||||
- filename: android/app/build.gradle
|
||||
checksum: d5409b8eda2e1bf5b2552a909595a9e0aea4fd4e7572cf1746c99eee1583b83a
|
||||
- filename: .github/workflows/push-triggers.yml
|
||||
checksum: abc19ea38c8d7b79f15695d015709cc88a34a995181aaf12bc8344f940f3cbc4
|
||||
- filename: ios/fastlane/Fastfile
|
||||
checksum: 086080bc7a04accf5094c457b5acf84d9fec5d7dfa72eaaaf02e433ecf4f996b
|
||||
- filename: android/fastlane/Fastfile
|
||||
checksum: a25f155bcbbae7ab09563637c23771f7349738f12a6ddc8ae71c29c61ed535af
|
||||
- filename: .github/workflows/internal-build.yml
|
||||
@@ -105,58 +95,92 @@ fileignoreconfig:
|
||||
checksum: f4e8a054fc4168e08bc9e9fe3e644cebabacdfc31ef0cbe36dd281766f47df5e
|
||||
- filename: screens/Home/MyVcs/IdInputModal.tsx
|
||||
checksum: 7ee46d8ef4761c0e9b59f3e602e6e30be5f47221817c819e91ab10ca2203089f
|
||||
- filename: .env
|
||||
checksum: d3023fb22734e6c7bd626f24007ba7b93e791cb0bcb8a086cb8e99f04bc31c7c
|
||||
- filename: machines/backup.ts
|
||||
checksum: d4b95b075ce39ed80b119014188f8903dbb46d46dd19a3757eea2ae8a06ba7ad
|
||||
- filename: machines/backup.typegen.ts
|
||||
checksum: 4ae5dbf36353cb7568a278628256e68caded071f1e91d6e1b25ac9aefb1f81cf
|
||||
- filename: screens/Settings/BackupController.tsx
|
||||
checksum: 054665c377b4a8e246ae1bfb419ab86d0cb1c120ae92cdc27ceed9cf1f39679b
|
||||
- filename: screens/Settings/BackupViaPassword.tsx
|
||||
checksum: 5fb2f98fb8a4efeb6b691b8a29e62eba64a99e9b2129bc0af1d11bc56bdfb374
|
||||
- filename: screens/Settings/DataBackup.tsx
|
||||
checksum: 6f3eaf26a58712b3ddd36dfa49d0d608eb873455ca91374545148c23e36fd43b
|
||||
- filename: shared/constants.ts
|
||||
checksum: 062fb9bc4ba7dc7c91558caee5a4fd41ba748b0dcd108c62b50a2fdd06eaa289
|
||||
checksum: ae922a7acafab9c42746bd54e194c44532af81122837594c397713cef6922ca0
|
||||
- filename: shared/commonUtil.ts
|
||||
checksum: 4f353f525ce0d2c9c7caf734aa9ce4a7a5ce8d526528a491974052256b8cbe76
|
||||
- filename: screens/Settings/BackupController.tsx
|
||||
checksum: d2a355356bcaf8f7ef3b53ba93710cec15fefd0fdf31efd779eebd2bfab61c19
|
||||
- filename: shared/constants.ts
|
||||
checksum: 3961940d2df158b6c287cb689b8841d278eae273a4e5553ae2ae612340f8b8c8
|
||||
- filename: shared/api.ts
|
||||
checksum: 96a87e2128c30d16526cb1cb91b7da58f266d8c32d830adff11ca4d04e8c459f
|
||||
- filename: machines/backupWithEncryption.ts
|
||||
checksum: 038c12d30b2312fcbd9230a1c6ddb494d2e561fe0d09741335fa80ab67e2c550
|
||||
- filename: machines/backupWithEncryption.typegen.ts
|
||||
checksum: f5f9a71082e3f30f89e98a7913535327b31b942709ee8b5efb40e18c73ddee2a
|
||||
checksum: f5f9a71082e3f30f89e98a7913535327b31b942709ee8b5efb40e18c73ddee2a
|
||||
- filename: screens/Home/MyVcs/OtpVerificationModal.tsx
|
||||
checksum: 1db1f39701019383e1e40e6ed5278177e6c9bb3d28def0935cf6d4bd9e41e63a
|
||||
checksum: 1db1f39701019383e1e40e6ed5278177e6c9bb3d28def0935cf6d4bd9e41e63a
|
||||
- filename: screens/Home/MyVcs/GetIdInputModal.tsx
|
||||
checksum: e85d18cd3349e0127f1cc7173fcdfd31824e609508512a613997a73756cd4dec
|
||||
checksum: e85d18cd3349e0127f1cc7173fcdfd31824e609508512a613997a73756cd4dec
|
||||
- filename: .github/workflows/android-custom-build.yml
|
||||
checksum: 4d155c6e5468effb0b82e62f6878f2bd7ff7e7c9540e16bdd28cb81b80672ac3
|
||||
checksum: 4d155c6e5468effb0b82e62f6878f2bd7ff7e7c9540e16bdd28cb81b80672ac3
|
||||
- filename: .github/workflows/push-triggers.yml
|
||||
checksum: 4a031b46646aa982c8f40e4c7fe0bd3e05a76a6af1ff1c2de7350ba6ebf9a839
|
||||
- filename: screens/Home/IntroSlidersScreen.tsx
|
||||
checksum: 24b993e0406a49ace5b95dd05f7c4702220ec3d3f3fc2e774f20c023ef73822a
|
||||
- filename: .env
|
||||
checksum: 4259c7c600ef49bfca798a7807a03afe9fefb1a04efd3adf224397c18117a8c1
|
||||
- filename: ios/Podfile.lock
|
||||
checksum: f32d1580e34e354c0eb27d53d2d1c2b766b0902fc6366c407d84c24d6d8d38e3
|
||||
- filename: package-lock.json
|
||||
checksum: 2fb6ce0541ab33a7a981213911d7af60cf4c8144bf0d1587522ce22a48b104d6
|
||||
- filename: components/VC/Views/VCCardViewContent.tsx
|
||||
checksum: 02655ff3d7f8a8ea4f3664485f98c961802c598242ec44408594a2ddb721fa5e
|
||||
- filename: screens/Home/IntroSlidersScreen.tsx
|
||||
checksum: 99aad6f5e474f4d5dfa563245d7b627f5fed28a1a4fe8879cc8b8cc538a66f4e
|
||||
- filename: shared/storage.ts
|
||||
checksum: fa967759d765432926475a5534c26adfa61727c8e3334c795d7ee1e5b2dd0e1f
|
||||
- filename: shared/constants.ts
|
||||
checksum: ae922a7acafab9c42746bd54e194c44532af81122837594c397713cef6922ca0
|
||||
- filename: shared/fileStorage.ts
|
||||
checksum: 451e8873a635d955fe426d9a5fcf191f2d4fd74984a1a4518760e2d10e9e1817
|
||||
- filename: screens/Settings/BackupController.tsx
|
||||
checksum: daf682b5616e45bd7b9a7c76becc617fea56be83124c3c4db838c2046e977481
|
||||
version: ""
|
||||
checksum: 4a031b46646aa982c8f40e4c7fe0bd3e05a76a6af1ff1c2de7350ba6ebf9a839
|
||||
- filename: machines/backupRestore.ts
|
||||
checksum: 3ad985af5b88d949bad3ebb598b644d6fcb21de3f739300658bc44aa20915a00
|
||||
- filename: machines/backupRestore.typegen.ts
|
||||
checksum: 4a732b953dc97b9949a131039deadfdada4728c2fc7e5c4f1c89dd8101d595c5
|
||||
- filename: machines/settings.typegen.ts
|
||||
checksum: e4ae05822f1b1c23f3f70d03dd46fd8f29ba6b52d40f2f24c121f536fbb5f2c4
|
||||
- filename: .env
|
||||
checksum: 399e4dadae9dbd22612f48c8583fd64d6f07e9e1fcb0b57a1a8874b056da4b6c
|
||||
- filename: .github/workflows/ui-automation.yml
|
||||
checksum: 0b26a5dcb7524ba15d6aaeaf04f2ef94be9d25ef702d9072d6628bcd58e50f36
|
||||
- filename: injitest/src/test/java/androidTestCases/PinVcTest.java
|
||||
checksum: cf9ddace5e416970eec6f078567e7fe16c12f357e667ebd8f1018089b117d61f
|
||||
- filename: injitest/src/test/java/androidTestCases/NoNetworkAndroidTest.java
|
||||
checksum: c300122d39af06f68ecd0b6dc287daa0370fc6b744072944ddcc7fe4ded79fb3
|
||||
- filename: injitest/src/test/java/androidTestCases/CredentialRegistryTest.java
|
||||
checksum: 126ad4f513d5e417fdc3ccbace187315b8aae4399806d3259421f8bca7d41254
|
||||
- filename: injitest/src/test/java/iosTestCases/NoNetworkIosTest.java
|
||||
checksum: 698b2fed274f17a6daa76b0558bb0a733825fa224144f42aecb4affb8e3897a8
|
||||
- filename: ios/fastlane/Fastfile
|
||||
checksum: a4e3772dc67a07ecbcfc58be0d6d4f7fa799cec7ac25bd269ac29459c8669ca4
|
||||
- filename: shared/storage.ts
|
||||
checksum: 5700dbefff3da97dc85be1d171bd80a3e72d6f488e77db4044a14520cbc1642a
|
||||
- filename: injitest/src/test/java/iosTestCases/CredentialRegistryTest.java
|
||||
checksum: b0808e0c511412cde21fd169a9bbeaf3b77cb48f25418e12d341cc3ce1df5898
|
||||
- filename: machines/backupAndRestore/backupAndRestore.ts
|
||||
checksum: 846117cf13554ffde8544200ca597ceb820363c87bfbe57cffaedadc168b49ce
|
||||
- filename: machines/backupAndRestore/backupAndRestore.typegen.ts
|
||||
checksum: 509b9660553990841883c54f8986971f21c7315e7450c455bba2766738c58bee
|
||||
- filename: machines/backupAndRestore/backup.ts
|
||||
checksum: a0cad5f0e2633dc11a9eba031408e03dd62b2b94c00fa82d9cb29d3721b68e70
|
||||
- filename: machines/backupAndRestore/backup.typegen.ts
|
||||
checksum: 0d751a7dec88014b831835784f138ff73d0aeb09008d5c4fbd66d1114f2bb1c4
|
||||
- filename: components/BackupAndRestoreAllScreenBanner.tsx
|
||||
checksum: 2c98e7e83959c9dac4dd12da32f81483c3d334bd05e279637cf465475fbf54b8
|
||||
checksum: f26489ce4ac607884437ad06c3117cc34d6cbcbcd3dd5719790fbe01a0853ee5
|
||||
- filename: machines/backup.ts
|
||||
checksum: df40cc92db9e459ab19d8382713afb24ae89c88a944623bbc21a7e6b9bc327a3
|
||||
- filename: locales/en.json
|
||||
checksum: 881b12057430b1b465306f6171d8a1c025c69909a29b6f9c405f70c2990ac4f4
|
||||
- filename: locales/hin.json
|
||||
checksum: 69bffc48c583a985ed6853988ca9f4a559adbdf14f4763f197e982a3684f3bad
|
||||
- filename: locales/kan.json
|
||||
checksum: f62d0d6cfd1454b396583ea7d0f438bcabd200c6af68f1327a7dfc3f5177d6d5
|
||||
- filename: locales/ara.json
|
||||
checksum: 89e413bc5884783f0601f8a22855f3da0cdd0ac9e9f80a1edd4e6a5fb10d94d4
|
||||
- filename: locales/tam.json
|
||||
checksum: 1beed968fa5d67d57961dbbaaade3596caaf543adb90847b40a558d0b50397bd
|
||||
- filename: locales/spa.json
|
||||
checksum: a03c5fa839d761f7bf5bbf0ea9bbd48da57116430a99e1d22f0e7184435d468c
|
||||
- filename: locales/fil.json
|
||||
checksum: 29193fd3b14b7332bf7a485f659197002f29a58af88ed0653cae262e7254c84d
|
||||
- filename: screens/Home/IntroSlidersScreen.tsx
|
||||
checksum: af4a7e2d04b1141b7c32acfabeb3213a32eaca2a8e8f61e6958b6c97219dce57
|
||||
- filename: screens/Home/MyVcs/GetIdInputModal.tsx
|
||||
checksum: 067664e19817d3aba98b0cfa68ef57a04958a982ee23b96b612e4bf466a73890
|
||||
- filename: screens/PasscodeScreen.tsx
|
||||
checksum: 9af4308001e7e260ffffd26955ca49df3b388e34686509371e23dd837b11d030
|
||||
- filename: screens/Home/MyVcs/IdInputModal.tsx
|
||||
checksum: b735aedc84164d03c199fe89ccbf9df58f8997bfb4f60e7058a22bfe952fda3e
|
||||
- filename: .github/workflows/ui-automation.yml
|
||||
checksum: 0b26a5dcb7524ba15d6aaeaf04f2ef94be9d25ef702d9072d6628bcd58e50f36
|
||||
version: ""
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ PLAY_CONSOLE_RELEASE_DESCRIPTION = ENV["BUILD_DESCRIPTION"]
|
||||
SLACK_URL = ENV["SLACK_WEBHOOK_URL"]
|
||||
CREDENTIAL_REGISTRY_EDIT = ENV["CREDENTIAL_REGISTRY_EDIT"]
|
||||
APP_FLAVOR = ENV["APP_FLAVOR"]
|
||||
GOOGLE_ANDROID_CLIENT_ID = ENV["GOOGLE_ANDROID_CLIENT_ID"]
|
||||
|
||||
def generate_app_bundle_id()
|
||||
flavor = APP_FLAVOR
|
||||
|
||||
3
assets/Backup.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="78.143" height="56.742" viewBox="0 0 78.143 56.742">
|
||||
<path id="cloud_upload_FILL0_wght400_GRAD0_opsz48" d="M58.648-742.258a17.938,17.938,0,0,1-13.142-5.506A17.938,17.938,0,0,1,40-760.906a18.532,18.532,0,0,1,4.4-12.21,17.75,17.75,0,0,1,11.322-6.349,24.071,24.071,0,0,1,8.347-14.075A23.062,23.062,0,0,1,79.249-799a22.15,22.15,0,0,1,16.827,7.237,24.474,24.474,0,0,1,6.793,17.36v2.131a14.364,14.364,0,0,1,10.833,4.129,14.514,14.514,0,0,1,4.44,10.878A14.432,14.432,0,0,1,113.7-746.7a14.432,14.432,0,0,1-10.567,4.44h-21.4a5.111,5.111,0,0,1-3.73-1.6,5.111,5.111,0,0,1-1.6-3.729V-770.5l-7.37,7.37-3.818-3.818L79.071-780.8l13.853,13.853-3.818,3.818-7.37-7.37v22.91h21.4a9.321,9.321,0,0,0,6.837-2.842,9.32,9.32,0,0,0,2.842-6.837,9.321,9.321,0,0,0-2.842-6.837,9.321,9.321,0,0,0-6.837-2.842H97.541V-774.4a19.09,19.09,0,0,0-5.372-13.586,17.539,17.539,0,0,0-13.275-5.683,17.68,17.68,0,0,0-13.32,5.683A19.006,19.006,0,0,0,60.157-774.4H58.47a12.611,12.611,0,0,0-9.324,3.863,13.046,13.046,0,0,0-3.818,9.546,12.988,12.988,0,0,0,3.9,9.457,12.752,12.752,0,0,0,9.419,3.952H71.079v5.328ZM79.071-768.009Z" transform="translate(-40 799)" fill="#f2801d"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
6
assets/Cloud_Upload_Done_Icon.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="41" height="41" viewBox="0 0 41 41">
|
||||
<g id="Group_58174" data-name="Group 58174" transform="translate(-34 -456)">
|
||||
<circle id="Ellipse_1228" data-name="Ellipse 1228" cx="20.5" cy="20.5" r="20.5" transform="translate(34 456)" fill="#eaf7e1"/>
|
||||
<path id="cloud_done_FILL0_wght300_GRAD0_opsz24" d="M68.852-767.843l5.3-5.3-1.085-1.085L68.837-770l-2.12-2.12-1.069,1.069ZM65-765a4.858,4.858,0,0,1-3.537-1.441A4.743,4.743,0,0,1,60-769.951a5,5,0,0,1,1.175-3.264,4.6,4.6,0,0,1,3-1.691,6.25,6.25,0,0,1,2.255-3.668A6.321,6.321,0,0,1,70.5-780a6.271,6.271,0,0,1,4.607,1.894A6.271,6.271,0,0,1,77-773.5v.5h.308a3.865,3.865,0,0,1,2.637,1.271A3.9,3.9,0,0,1,81-769a3.86,3.86,0,0,1-1.164,2.837A3.86,3.86,0,0,1,77-765Zm0-1.5H77a2.414,2.414,0,0,0,1.775-.725A2.414,2.414,0,0,0,79.5-769a2.414,2.414,0,0,0-.725-1.775A2.414,2.414,0,0,0,77-771.5H75.5v-2a4.82,4.82,0,0,0-1.463-3.538A4.82,4.82,0,0,0,70.5-778.5a4.82,4.82,0,0,0-3.538,1.463A4.82,4.82,0,0,0,65.5-773.5H65a3.373,3.373,0,0,0-2.475,1.025A3.373,3.373,0,0,0,61.5-770a3.373,3.373,0,0,0,1.025,2.475A3.373,3.373,0,0,0,65-766.5ZM70.5-772.5Z" transform="translate(-16.003 1248.998)" fill="#179f22"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/Intro_Backup.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 70 KiB |
BIN
assets/Intro_Share.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
23
assets/Permission_Denied.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="153" height="153" viewBox="0 0 153 153">
|
||||
<defs>
|
||||
<filter id="Rectangle_6853" x="0" y="0" width="153" height="153" filterUnits="userSpaceOnUse">
|
||||
<feOffset dy="3" input="SourceAlpha"/>
|
||||
<feGaussianBlur stdDeviation="7.5" result="blur"/>
|
||||
<feFlood flood-opacity="0.059"/>
|
||||
<feComposite operator="in" in2="blur"/>
|
||||
<feComposite in="SourceGraphic"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="success_message_icon" transform="translate(22 19.5)">
|
||||
<g transform="matrix(1, 0, 0, 1, -22, -19.5)" filter="url(#Rectangle_6853)">
|
||||
<rect id="Rectangle_6853-2" data-name="Rectangle 6853" width="108" height="108" rx="54" transform="translate(22.5 19.5)" fill="#fff"/>
|
||||
</g>
|
||||
<rect id="Rectangle_6846" data-name="Rectangle 6846" width="96" height="96" rx="48" transform="translate(6.5 6)" fill="rgba(157,32,32,0.08)"/>
|
||||
<g id="pending_activation_icon" transform="translate(-1328.424 -1133.959)">
|
||||
<g id="Group_57154" data-name="Group 57154" transform="translate(1366.33 1167.162)">
|
||||
<path id="gpp_maybe_FILL0_wght400_GRAD0_opsz48" d="M24.594,45.435a20.364,20.364,0,0,1-11.927-8.427A24.6,24.6,0,0,1,8,22.514V10.173L24.594,3.95l16.594,6.223V22.514a24.6,24.6,0,0,1-4.667,14.494A20.364,20.364,0,0,1,24.594,45.435Z" transform="translate(-8 -3.95)" fill="#db2e2e"/>
|
||||
<path id="gpp_maybe_FILL0_wght400_GRAD0_opsz48-2" data-name="gpp_maybe_FILL0_wght400_GRAD0_opsz48" d="M16.9,26.751a1.768,1.768,0,1,0-1.243-.518A1.695,1.695,0,0,0,16.9,26.751Zm-1.553-6.939h3.107V9.093H15.347ZM16.9,19.19Z" transform="translate(-0.306 1.601)" fill="#fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
3
assets/Restore.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24.994" height="24.994" viewBox="0 0 24.994 24.994">
|
||||
<path id="history_FILL0_wght400_GRAD0_opsz48" d="M132.393-815.006a11.869,11.869,0,0,1-8.783-3.662,12.168,12.168,0,0,1-3.61-8.869h2.083a10.191,10.191,0,0,0,2.985,7.394,9.844,9.844,0,0,0,7.325,3.055,10.1,10.1,0,0,0,7.464-3.09,10.268,10.268,0,0,0,3.055-7.5,9.7,9.7,0,0,0-3.09-7.273,10.34,10.34,0,0,0-7.429-2.968,9.44,9.44,0,0,0-4.426,1.076,12.073,12.073,0,0,0-3.593,2.847h3.645v2.083h-7.255v-7.221h2.083v3.68a13.211,13.211,0,0,1,4.287-3.333A11.809,11.809,0,0,1,132.393-840a12.4,12.4,0,0,1,4.895.972,12.825,12.825,0,0,1,4.009,2.656,12.467,12.467,0,0,1,2.708,3.94,11.968,11.968,0,0,1,.989,4.86,12.214,12.214,0,0,1-.989,4.895,12.565,12.565,0,0,1-2.708,3.992,12.92,12.92,0,0,1-4.009,2.69A12.213,12.213,0,0,1,132.393-815.006Zm4.443-6.839-5.346-5.277v-7.429h2.083v6.561l4.756,4.652Z" transform="translate(-120 840)" fill="#f2801d"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 933 B |
1
assets/google-drive-28.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="28px" height="28px"><path fill="#1e88e5" d="M38.59,39c-0.535,0.93-0.298,1.68-1.195,2.197C36.498,41.715,35.465,42,34.39,42H13.61 c-1.074,0-2.106-0.285-3.004-0.802C9.708,40.681,9.945,39.93,9.41,39l7.67-9h13.84L38.59,39z"/><path fill="#fbc02d" d="M27.463,6.999c1.073-0.002,2.104-0.716,3.001-0.198c0.897,0.519,1.66,1.27,2.197,2.201l10.39,17.996 c0.537,0.93,0.807,1.967,0.808,3.002c0.001,1.037-1.267,2.073-1.806,3.001l-11.127-3.005l-6.924-11.993L27.463,6.999z"/><path fill="#e53935" d="M43.86,30c0,1.04-0.27,2.07-0.81,3l-3.67,6.35c-0.53,0.78-1.21,1.4-1.99,1.85L30.92,30H43.86z"/><path fill="#4caf50" d="M5.947,33.001c-0.538-0.928-1.806-1.964-1.806-3c0.001-1.036,0.27-2.073,0.808-3.004l10.39-17.996 c0.537-0.93,1.3-1.682,2.196-2.2c0.897-0.519,1.929,0.195,3.002,0.197l3.459,11.009l-6.922,11.989L5.947,33.001z"/><path fill="#1565c0" d="M17.08,30l-6.47,11.2c-0.78-0.45-1.46-1.07-1.99-1.85L4.95,33c-0.54-0.93-0.81-1.96-0.81-3H17.08z"/><path fill="#2e7d32" d="M30.46,6.8L24,18L17.53,6.8c0.78-0.45,1.66-0.73,2.6-0.79L27.46,6C28.54,6,29.57,6.28,30.46,6.8z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
40
components/AccountInformation.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
import React from 'react';
|
||||
import {Image} from 'react-native';
|
||||
import {Column, Row, Text} from './ui';
|
||||
import {Theme} from './ui/styleUtils';
|
||||
import {ProfileInfo} from '../shared/googleCloudUtils';
|
||||
import {useTranslation} from 'react-i18next';
|
||||
import testIDProps from '../shared/commonUtil';
|
||||
|
||||
export const AccountInformation: React.FC<ProfileInfo> = ({email, picture}) => {
|
||||
const {t} = useTranslation('AccountSelection');
|
||||
return (
|
||||
<Row style={{marginBottom: 21, columnGap: 11}}>
|
||||
<Column align="center">
|
||||
<Image
|
||||
{...testIDProps('associatedAccountPicture')}
|
||||
style={{height: 40, width: 40, borderRadius: 45}}
|
||||
source={{
|
||||
uri: picture,
|
||||
}}
|
||||
/>
|
||||
</Column>
|
||||
<Column>
|
||||
<Row>
|
||||
<Text
|
||||
testID="associatedAccount"
|
||||
style={{color: Theme.Colors.helpText, fontSize: 12}}>
|
||||
{t('associatedAccount')}
|
||||
</Text>
|
||||
</Row>
|
||||
<Row>
|
||||
<Text
|
||||
testID="associatedAccountEmail"
|
||||
style={{fontSize: 13, fontFamily: 'Helvetica Neue'}}>
|
||||
{email}
|
||||
</Text>
|
||||
</Row>
|
||||
</Column>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
72
components/BackupAndRestoreAllScreenBanner.tsx
Normal file
@@ -0,0 +1,72 @@
|
||||
import React from 'react';
|
||||
import {useBackupScreen} from '../screens/backupAndRestore/BackupController';
|
||||
import {BannerNotification} from './BannerNotification';
|
||||
import {Theme} from './ui/styleUtils';
|
||||
import {useTranslation} from 'react-i18next';
|
||||
import {useBackupRestoreScreen} from '../screens/Settings/BackupRestoreController';
|
||||
|
||||
export const BackupAndRestoreAllScreenBanner: React.FC = () => {
|
||||
const backUpController = useBackupScreen();
|
||||
const restoreController = useBackupRestoreScreen();
|
||||
|
||||
const {t} = useTranslation('BackupAndRestoreBanner');
|
||||
|
||||
function backupFailure() {
|
||||
const translation = t(
|
||||
`backupFailure.${backUpController.backupErrorReason}`,
|
||||
);
|
||||
|
||||
return (
|
||||
<BannerNotification
|
||||
message={translation}
|
||||
onClosePress={backUpController.DISMISS}
|
||||
key={`backupFailure-${backUpController.backupErrorReason}`}
|
||||
testId={`backupFailure-${backUpController.backupErrorReason}`}
|
||||
customStyle={Theme.Styles.dataBackupFailure}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
function restoreFailure() {
|
||||
const translation = t(
|
||||
`restoreFailure.${restoreController.restoreErrorReason}`,
|
||||
);
|
||||
|
||||
return (
|
||||
<BannerNotification
|
||||
key={`restoreFailure-${restoreController.restoreErrorReason}`}
|
||||
message={translation}
|
||||
onClosePress={restoreController.DISMISS}
|
||||
testId={`restoreFailure-${restoreController.restoreErrorReason}`}
|
||||
customStyle={Theme.Styles.dataBackupFailure}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{backUpController.isBackingUpSuccess && (
|
||||
<BannerNotification
|
||||
message={t('backupSuccessful')}
|
||||
onClosePress={backUpController.DISMISS}
|
||||
key={'dataBackupSuccess'}
|
||||
testId={'dataBackupSuccess'}
|
||||
customStyle={Theme.Styles.dataBackupSuccess}
|
||||
/>
|
||||
)}
|
||||
|
||||
{backUpController.isBackingUpFailure && backupFailure()}
|
||||
|
||||
{restoreController.isBackUpRestoreSuccess && (
|
||||
<BannerNotification
|
||||
message={t('restoreSuccessful')}
|
||||
onClosePress={restoreController.DISMISS}
|
||||
key={'restoreBackupSuccess'}
|
||||
testId={'restoreBackupSuccess'}
|
||||
customStyle={Theme.Styles.dataBackupSuccess}
|
||||
/>
|
||||
)}
|
||||
{restoreController.isBackUpRestoreFailure && restoreFailure()}
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -7,13 +7,19 @@ import testIDProps from '../shared/commonUtil';
|
||||
|
||||
export const BannerNotification: React.FC<BannerNotificationProps> = props => {
|
||||
return (
|
||||
<View {...testIDProps(props.testId)}>
|
||||
<Row style={Theme.Styles.downloadingVcPopUp}>
|
||||
<View {...testIDProps(props.testId)} style={props.customStyle}>
|
||||
<Row
|
||||
style={
|
||||
props.customStyle
|
||||
? Theme.Styles
|
||||
.backupRestoreBanner /* TODO: rename to style without mentioning any specific flow */
|
||||
: Theme.Styles.downloadingVcPopUp
|
||||
}>
|
||||
<Text color={Theme.Colors.whiteText} weight="semibold" size="smaller">
|
||||
{props.message}
|
||||
</Text>
|
||||
<Icon
|
||||
testID="close"
|
||||
{...testIDProps('close')}
|
||||
name="close"
|
||||
onPress={props.onClosePress}
|
||||
color={Theme.Colors.whiteText}
|
||||
@@ -28,4 +34,5 @@ export interface BannerNotificationProps {
|
||||
message: string;
|
||||
onClosePress: () => void;
|
||||
testId: string;
|
||||
customStyle?: Object;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ export const CloudSignOn: React.FC<CloudSignOnProps> = props => {
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (response.type == 'success') {
|
||||
if (response?.type == 'success') {
|
||||
CloudStorage.setGoogleDriveAccessToken(
|
||||
response.authentication.accessToken,
|
||||
);
|
||||
@@ -37,6 +37,7 @@ export const CloudSignOn: React.FC<CloudSignOnProps> = props => {
|
||||
}
|
||||
});
|
||||
}}
|
||||
margin={[0, 0, 0, 0]}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,15 +1,40 @@
|
||||
import React, {useState} from 'react';
|
||||
import React, {useEffect, useState} from 'react';
|
||||
import {useTranslation} from 'react-i18next';
|
||||
import {Pressable} from 'react-native';
|
||||
import {Linking, Pressable} from 'react-native';
|
||||
import {Modal} from './ui/Modal';
|
||||
import {ScrollView} from 'react-native-gesture-handler';
|
||||
import {Column, Text} from './ui';
|
||||
import {Theme} from './ui/styleUtils';
|
||||
import {BackupAndRestoreAllScreenBanner} from './BackupAndRestoreAllScreenBanner';
|
||||
import getAllConfigurations from '../shared/commonprops/commonProps';
|
||||
|
||||
export const HelpScreen: React.FC<HelpScreenProps> = props => {
|
||||
const {t} = useTranslation('HelpScreen');
|
||||
|
||||
const [showHelpPage, setShowHelpPage] = useState(false);
|
||||
var [injiHelpUrl, setInjiHelpUrl] = useState('');
|
||||
|
||||
useEffect(() => {
|
||||
getAllConfigurations().then(response => {
|
||||
setInjiHelpUrl(response.aboutInjiUrl);
|
||||
});
|
||||
}, []);
|
||||
|
||||
const hyperLinkString = (
|
||||
word: string,
|
||||
urlString: string,
|
||||
extension?: string,
|
||||
) => {
|
||||
return (
|
||||
<Text
|
||||
style={Theme.TextStyles.urlLinkText}
|
||||
onPress={() => {
|
||||
urlString && Linking.openURL(urlString + extension);
|
||||
}}>
|
||||
{t(word)}
|
||||
</Text>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
@@ -28,42 +53,108 @@ export const HelpScreen: React.FC<HelpScreenProps> = props => {
|
||||
onDismiss={() => {
|
||||
setShowHelpPage(!showHelpPage);
|
||||
}}>
|
||||
<BackupAndRestoreAllScreenBanner />
|
||||
<ScrollView>
|
||||
<Column fill padding="10" align="space-between">
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('whatIsDigitalCredential?')}
|
||||
<Text style={Theme.TextStyles.helpHeader}>{t('whatIsAnId?')}</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-10')}</Text>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whatAreTheDifferentTypesOfId?')}
|
||||
</Text>
|
||||
<Text margin="5">
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-11')}</Text>
|
||||
<Text
|
||||
style={Theme.TextStyles.urlLinkText}
|
||||
onPress={() => {
|
||||
Linking.openURL(
|
||||
'https://docs.mosip.io/1.2.0/id-lifecycle-management/identifiers',
|
||||
);
|
||||
}}>
|
||||
{t('here')}
|
||||
</Text>
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whereCanIFindTheseIds?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-12a')}</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-12b')}</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-12c')}</Text>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whatIsaDigitalCredential?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-1')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('whatCanDoWithDigitalCredential?')}
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whatCanWeDoWithDigitalCredential?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-2')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whatIsAVerifiableCredential?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-15')}</Text>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('howToAddCard?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-3')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('howToRemoveCardFromWallet?')}
|
||||
<Text style={Theme.TextStyles.helpDetails}>
|
||||
{t('detail-3')}
|
||||
{hyperLinkString(
|
||||
'here',
|
||||
injiHelpUrl,
|
||||
'/end-user-guide#downloading-vc',
|
||||
)}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-4')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('canWeAddMultipleCards?')}
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('canIAddMultipleCards?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-5')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('howToShareCard?')}
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whyDoesMyVcSayActivationIsPending?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-6')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('howToActivateCardForOnlineLogin?')}
|
||||
<Text style={Theme.TextStyles.helpDetails}>
|
||||
{t('detail-13')}
|
||||
{hyperLinkString(
|
||||
'here',
|
||||
injiHelpUrl,
|
||||
'/end-user-guide#activating-a-vc',
|
||||
)}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whatDoYouMeanByActivatedForOnlineLogin?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>
|
||||
{t('detail-14a')}
|
||||
{hyperLinkString(
|
||||
'here',
|
||||
injiHelpUrl,
|
||||
'/overview/features/feature-workflows#id-4.-qr-code-login-process',
|
||||
)}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-14b')}</Text>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('howToActivateACardForOnlineLogin?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-7')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('howToViewActivity?')}
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('howToShareACard?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-6')}</Text>
|
||||
<Text style={Theme.TextStyles.header}>
|
||||
{t('howToRemoveACardFromTheWallet?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>
|
||||
{t('detail-4a')}
|
||||
{hyperLinkString(
|
||||
'here',
|
||||
injiHelpUrl,
|
||||
'/end-user-guide#deleting-a-vc',
|
||||
)}
|
||||
{t('detail-4b')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('howToViewActivityLogs?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-8')}</Text>
|
||||
<Text margin="7" style={Theme.TextStyles.header}>
|
||||
{t('whatCanDoBiometricsChanged?')}
|
||||
<Text style={Theme.TextStyles.helpHeader}>
|
||||
{t('whatHappensWhenAndroidKeystoreBiometricIsChanged?')}
|
||||
</Text>
|
||||
<Text style={Theme.TextStyles.helpDetails}>{t('detail-9')}</Text>
|
||||
</Column>
|
||||
|
||||
70
components/SectionLayout.tsx
Normal file
@@ -0,0 +1,70 @@
|
||||
import React from 'react';
|
||||
import {View} from 'react-native';
|
||||
import {Column, Row, Text} from './ui';
|
||||
import {Theme} from './ui/styleUtils';
|
||||
import testIDProps from '../shared/commonUtil';
|
||||
|
||||
export const SectionLayout: React.FC<SectionLayoutProps> = ({
|
||||
headerIcon,
|
||||
headerText,
|
||||
children,
|
||||
testId,
|
||||
marginBottom,
|
||||
}) => {
|
||||
return (
|
||||
<View
|
||||
{...testIDProps(testId)}
|
||||
style={{
|
||||
marginLeft: 18,
|
||||
marginRight: 18,
|
||||
marginTop: 16,
|
||||
marginBottom,
|
||||
rowGap: 2,
|
||||
}}>
|
||||
<Row
|
||||
style={{
|
||||
alignItems: 'center',
|
||||
padding: 16,
|
||||
backgroundColor: Theme.Colors.whiteBackgroundColor,
|
||||
borderTopLeftRadius: 6,
|
||||
borderTopRightRadius: 6,
|
||||
}}>
|
||||
{headerIcon}
|
||||
<Text
|
||||
style={{
|
||||
justifyContent: 'center',
|
||||
paddingLeft: 12,
|
||||
fontFamily: 'Inter_500Medium',
|
||||
fontWeight: '600',
|
||||
fontSize: 14,
|
||||
letterSpacing: 0,
|
||||
lineHeight: 17,
|
||||
}}
|
||||
testID={`${testId}Header`}>
|
||||
{headerText}
|
||||
</Text>
|
||||
</Row>
|
||||
<Row
|
||||
style={{
|
||||
padding: 16,
|
||||
backgroundColor: Theme.Colors.whiteBackgroundColor,
|
||||
borderBottomLeftRadius: 6,
|
||||
borderBottomRightRadius: 6,
|
||||
}}>
|
||||
<Column fill>{children}</Column>
|
||||
</Row>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
SectionLayout.defaultProps = {
|
||||
marginBottom: 0,
|
||||
};
|
||||
|
||||
export type SectionLayoutProps = {
|
||||
headerIcon: React.ReactNode;
|
||||
headerText: string;
|
||||
children: React.ReactNode;
|
||||
testId: string;
|
||||
marginBottom?: number;
|
||||
};
|
||||
@@ -4,7 +4,6 @@ import React from 'react';
|
||||
import {setTextColor} from './VCUtils';
|
||||
import LinearGradient from 'react-native-linear-gradient';
|
||||
import ShimmerPlaceHolder from 'react-native-shimmer-placeholder';
|
||||
import {Tooltip} from 'react-native-elements';
|
||||
|
||||
export const VCItemField = ({
|
||||
verifiableCredential,
|
||||
@@ -39,25 +38,23 @@ export const VCItemField = ({
|
||||
style={[Theme.Styles.subtitle]}>
|
||||
{fieldName}
|
||||
</Text>
|
||||
<Tooltip
|
||||
toggleOnPress={fieldValue.length > 20}
|
||||
containerStyle={{
|
||||
width: 200,
|
||||
height: null,
|
||||
overflow: 'hidden',
|
||||
}}
|
||||
skipAndroidStatusBar={true}
|
||||
backgroundColor={Theme.Colors.Icon}
|
||||
popover={<Text>{fieldValue}</Text>}>
|
||||
{Array.isArray(fieldValue) ? (
|
||||
fieldValue.map(field => (
|
||||
<Text
|
||||
testID={`${fieldName}Value`}
|
||||
weight="semibold"
|
||||
style={[Theme.Styles.subtitle, setTextColor(wellknown)]}>
|
||||
{field}
|
||||
</Text>
|
||||
))
|
||||
) : (
|
||||
<Text
|
||||
testID={`${fieldName}Value`}
|
||||
weight="semibold"
|
||||
numLines={1}
|
||||
ellipsizeMode={'tail'}
|
||||
style={[Theme.Styles.subtitle, setTextColor(wellknown)]}>
|
||||
{fieldValue}
|
||||
</Text>
|
||||
</Tooltip>
|
||||
)}
|
||||
</Column>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -58,8 +58,13 @@ export const getFieldValue = (
|
||||
return getLocalizedField(
|
||||
getFullAddress(verifiableCredential?.credentialSubject),
|
||||
);
|
||||
default:
|
||||
return getLocalizedField(verifiableCredential?.credentialSubject[field]);
|
||||
default: {
|
||||
const fieldValue = verifiableCredential?.credentialSubject[field];
|
||||
if (Array.isArray(fieldValue) && typeof fieldValue[0] != Object) {
|
||||
return fieldValue;
|
||||
}
|
||||
return getLocalizedField(fieldValue);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {useFocusEffect} from '@react-navigation/native';
|
||||
import React from 'react';
|
||||
import React, {Fragment} from 'react';
|
||||
import {useTranslation} from 'react-i18next';
|
||||
import {BackHandler, Dimensions, View} from 'react-native';
|
||||
import {Button, Column, Row, Text} from '.';
|
||||
@@ -10,31 +10,69 @@ import {Modal} from './Modal';
|
||||
|
||||
export const Error: React.FC<ErrorProps> = props => {
|
||||
const {t} = useTranslation('common');
|
||||
const tryAgainButtonProps = {
|
||||
onPress: props.tryAgain,
|
||||
title: t(props.tryAgainButtonTranslationKey),
|
||||
testID: props.tryAgainButtonTranslationKey,
|
||||
};
|
||||
if (!props.goBackButtonVisible) {
|
||||
tryAgainButtonProps['width'] = Dimensions.get('screen').width * 0.54;
|
||||
tryAgainButtonProps['type'] = 'outline';
|
||||
}
|
||||
|
||||
const errorContent = () => {
|
||||
return (
|
||||
<View style={{alignItems: 'center'}}>
|
||||
<View>
|
||||
<Row align="center" style={Theme.ErrorStyles.image}>
|
||||
{props.image}
|
||||
</Row>
|
||||
<Text style={Theme.ErrorStyles.title} testID="errorTitle">
|
||||
{props.title}
|
||||
</Text>
|
||||
<Text style={Theme.ErrorStyles.message} testID="errorMessage">
|
||||
{props.message}
|
||||
</Text>
|
||||
<Fragment>
|
||||
<View style={{alignItems: 'center'}}>
|
||||
<View>
|
||||
<Row align="center" style={Theme.ErrorStyles.image}>
|
||||
{props.image}
|
||||
</Row>
|
||||
<Text style={Theme.ErrorStyles.title} testID="errorTitle">
|
||||
{props.title}
|
||||
</Text>
|
||||
<Text style={Theme.ErrorStyles.message} testID="errorMessage">
|
||||
{props.message}
|
||||
</Text>
|
||||
{props.helpText && (
|
||||
<Text style={Theme.ErrorStyles.message} testID="errorHelpText">
|
||||
{props.helpText}
|
||||
</Text>
|
||||
)}
|
||||
</View>
|
||||
{!props.alignActionsOnEnd && (
|
||||
<Fragment>
|
||||
{props.tryAgain && <Button {...tryAgainButtonProps} />}
|
||||
{props.goBackButtonVisible && (
|
||||
<Button
|
||||
onPress={props.goBack}
|
||||
width={Dimensions.get('screen').width * 0.54}
|
||||
title={t('goBack')}
|
||||
type="clear"
|
||||
testID="goBack"
|
||||
/>
|
||||
)}
|
||||
</Fragment>
|
||||
)}
|
||||
</View>
|
||||
{props.tryAgain && (
|
||||
<Button
|
||||
onPress={props.tryAgain}
|
||||
width={Dimensions.get('screen').width * 0.54}
|
||||
title={t('tryAgain')}
|
||||
type="outline"
|
||||
testID="tryAgain"
|
||||
/>
|
||||
{props.alignActionsOnEnd && (
|
||||
<Column fill crossAlign="center" align="flex-end">
|
||||
<Row style={{marginHorizontal: 30}}>
|
||||
{props.tryAgain && (
|
||||
<Button styles={{borderRadius: 9}} {...tryAgainButtonProps} />
|
||||
)}
|
||||
</Row>
|
||||
<Row>
|
||||
<Button
|
||||
onPress={props.goBack}
|
||||
title={t('goBack')}
|
||||
type="clear"
|
||||
testID="goBack"
|
||||
/>
|
||||
</Row>
|
||||
</Column>
|
||||
)}
|
||||
</View>
|
||||
</Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -62,8 +100,12 @@ export const Error: React.FC<ErrorProps> = props => {
|
||||
...Theme.ModalStyles.modal,
|
||||
backgroundColor: Theme.Colors.whiteBackgroundColor,
|
||||
}}
|
||||
showClose={props.showClose}
|
||||
{...testIDProps(props.testID)}>
|
||||
<Column fill safe align="space-evenly">
|
||||
<Column
|
||||
fill
|
||||
safe
|
||||
align={props.alignActionsOnEnd ? 'space-around' : 'space-evenly'}>
|
||||
{errorContent()}
|
||||
</Column>
|
||||
</Modal>
|
||||
@@ -86,16 +128,25 @@ export const Error: React.FC<ErrorProps> = props => {
|
||||
|
||||
Error.defaultProps = {
|
||||
isModal: false,
|
||||
goBackButtonVisible: false,
|
||||
alignActionsOnEnd: false,
|
||||
showClose: true,
|
||||
tryAgainButtonTranslationKey: 'tryAgain',
|
||||
};
|
||||
|
||||
export interface ErrorProps {
|
||||
isModal?: boolean;
|
||||
isVisible: boolean;
|
||||
showClose?: boolean;
|
||||
alignActionsOnEnd?: boolean;
|
||||
title: string;
|
||||
message: string;
|
||||
helpText?: string;
|
||||
image: React.ReactElement;
|
||||
goBack?: () => void;
|
||||
goBackButtonVisible?: boolean;
|
||||
tryAgain: null | (() => void);
|
||||
tryAgainButtonTranslationKey?: string;
|
||||
testID: string;
|
||||
onDismiss?: () => void;
|
||||
}
|
||||
|
||||
@@ -93,4 +93,5 @@ interface LayoutProps {
|
||||
pY?: number | string | undefined;
|
||||
pX?: number | string | undefined;
|
||||
safe?: boolean;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import React, {Fragment, useEffect} from 'react';
|
||||
import {useTranslation} from 'react-i18next';
|
||||
import {BackHandler, SafeAreaView, View} from 'react-native';
|
||||
import Spinner from 'react-native-spinkit';
|
||||
import {Button, Centered, Column, Row, Text} from '../../components/ui';
|
||||
import {Theme} from './styleUtils';
|
||||
import testIDProps from '../../shared/commonUtil';
|
||||
import {SvgImage} from './svg';
|
||||
import {LoaderAnimation} from './LoaderAnimation';
|
||||
|
||||
export const Loader: React.FC<LoaderProps> = props => {
|
||||
const {t} = useTranslation('ScanScreen');
|
||||
@@ -50,14 +48,7 @@ export const Loader: React.FC<LoaderProps> = props => {
|
||||
crossAlign="center"
|
||||
fill>
|
||||
<Column margin="24 0" align="space-around">
|
||||
{SvgImage.ProgressIcon()}
|
||||
<View {...testIDProps('threeDotsLoader')}>
|
||||
<Spinner
|
||||
type="ThreeBounce"
|
||||
color={Theme.Colors.Loading}
|
||||
style={{marginLeft: 6}}
|
||||
/>
|
||||
</View>
|
||||
<LoaderAnimation />
|
||||
</Column>
|
||||
{(props.isHintVisible || props.onCancel) && (
|
||||
<Column style={Theme.SelectVcOverlayStyles.timeoutHintContainer}>
|
||||
|
||||
29
components/ui/LoaderAnimation.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
import React, {Fragment} from 'react';
|
||||
import {View} from 'react-native';
|
||||
import Spinner from 'react-native-spinkit';
|
||||
import {Theme} from './styleUtils';
|
||||
import testIDProps from '../../shared/commonUtil';
|
||||
import {SvgImage} from './svg';
|
||||
|
||||
export const LoaderAnimation: React.FC<LoaderAnimationProps> = ({showLogo}) => {
|
||||
return (
|
||||
<Fragment>
|
||||
{showLogo && SvgImage.ProgressIcon()}
|
||||
<View {...testIDProps('threeDotsLoader')}>
|
||||
<Spinner
|
||||
type="ThreeBounce"
|
||||
color={Theme.Colors.Loading}
|
||||
style={{marginLeft: 6}}
|
||||
/>
|
||||
</View>
|
||||
</Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
LoaderAnimation.defaultProps = {
|
||||
showLogo: true,
|
||||
};
|
||||
|
||||
interface LoaderAnimationProps {
|
||||
showLogo?: boolean;
|
||||
}
|
||||
@@ -42,12 +42,9 @@ export const Modal: React.FC<ModalProps> = props => {
|
||||
<Row
|
||||
fill
|
||||
align={props.headerLeft ? 'flex-start' : 'center'}
|
||||
margin={'16 0 0 0'}>
|
||||
margin={props.arrowLeft ? '16 0 0 -15' : '16 0 0 10'}>
|
||||
<Column>
|
||||
<Text
|
||||
testID={props.testID}
|
||||
style={Theme.TextStyles.header}
|
||||
margin="0 0 0 -15">
|
||||
<Text testID={props.testID} style={Theme.TextStyles.header}>
|
||||
{props.headerTitle || props.headerLeft}
|
||||
</Text>
|
||||
{!props.requester ? (
|
||||
@@ -110,4 +107,5 @@ export interface ModalProps {
|
||||
headerLeft?: React.ReactElement;
|
||||
arrowLeft?: boolean;
|
||||
onShow?: () => void;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,8 @@ export const Text: React.FC<TextProps> = (props: TextProps) => {
|
||||
style={textStyles}
|
||||
numberOfLines={props.numLines}
|
||||
ellipsizeMode={props.ellipsizeMode}
|
||||
accessible={props.accessible}>
|
||||
accessible={props.accessible}
|
||||
onPress={props.onPress}>
|
||||
{props.children}
|
||||
</RNText>
|
||||
);
|
||||
@@ -41,4 +42,5 @@ interface TextProps {
|
||||
ellipsizeMode?: 'head' | 'middle' | 'tail' | 'clip' | undefined;
|
||||
style?: StyleProp<TextStyle>;
|
||||
accessible?: boolean | true;
|
||||
onPress?: () => void;
|
||||
}
|
||||
|
||||
41
components/ui/Timestamp.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
import React from 'react';
|
||||
import {View} from 'react-native';
|
||||
import {Text} from '../ui/Text';
|
||||
|
||||
export const Timestamp: React.FC<TimestampProps> = props => {
|
||||
function formattedDate(): React.ReactNode {
|
||||
const date = new Date(props.time);
|
||||
const day = date.getDate();
|
||||
const month = date.toLocaleString('default', {month: 'long'});
|
||||
const year = date.getFullYear();
|
||||
const formattedHours = (date.getHours() % 12 || 12)
|
||||
.toString()
|
||||
.padStart(2, '0');
|
||||
const formattedMinutes = date.getMinutes().toString().padStart(2, '0');
|
||||
const period = date.getHours() >= 12 ? 'PM' : 'AM';
|
||||
|
||||
return `${day} ${month} ${year}, ${formattedHours}:${formattedMinutes} ${period}`;
|
||||
}
|
||||
|
||||
return (
|
||||
<View>
|
||||
<Text
|
||||
testID={`${props.testId}Time`}
|
||||
size="regular"
|
||||
style={{
|
||||
fontFamily: 'Inter_500Medium',
|
||||
fontWeight: '600',
|
||||
fontSize: 14,
|
||||
letterSpacing: 0,
|
||||
lineHeight: 17,
|
||||
}}>
|
||||
{formattedDate()}
|
||||
</Text>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
interface TimestampProps {
|
||||
time: number;
|
||||
testId: string;
|
||||
}
|
||||
@@ -23,8 +23,12 @@ import SuccessLogo from '../../assets/Success_Message_Icon1.svg';
|
||||
import NoInternetConnection from '../../assets/No_Internet_Connection.svg';
|
||||
import SomethingWentWrong from '../../assets/Something_Went_Wrong.svg';
|
||||
import MagnifierZoom from '../../assets/Magnifier_Zoom.svg';
|
||||
import GoogleDriveIcon from '../../assets/google-drive-28.svg';
|
||||
import {displayType} from '../../machines/issuersMachine';
|
||||
import {IssuerProps} from '../openId4VCI/Issuer';
|
||||
import Backup from '../../assets/Backup.svg';
|
||||
import Restore from '../../assets/Restore.svg';
|
||||
import PermissionDenied from '../../assets/Permission_Denied.svg';
|
||||
import {
|
||||
EsignetMosipVCItemContentProps,
|
||||
ExistingMosipVCItemContentProps,
|
||||
@@ -32,6 +36,7 @@ import {
|
||||
import {VCMetadata} from '../../shared/VCMetadata';
|
||||
import {VerifiableCredential} from '../../types/VC/ExistingMosipVC/vc';
|
||||
import {ProfileIcon} from '../ProfileIcon';
|
||||
import CloudUploadDoneIcon from '../../assets/Cloud_Upload_Done_Icon.svg';
|
||||
|
||||
export class SvgImage {
|
||||
static MosipLogo(props: LogoProps) {
|
||||
@@ -231,10 +236,34 @@ export class SvgImage {
|
||||
);
|
||||
}
|
||||
|
||||
static DataBackupIcon(width, height) {
|
||||
return (
|
||||
<Backup
|
||||
{...testIDProps('dataBackupIcon')}
|
||||
color1={Theme.Colors.linearGradientStart}
|
||||
color2={Theme.Colors.linearGradientEnd}
|
||||
width={width}
|
||||
height={height}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
static RestoreIcon() {
|
||||
return <Restore {...testIDProps('restoreIcon')} />;
|
||||
}
|
||||
|
||||
static SuccessLogo() {
|
||||
return <SuccessLogo {...testIDProps('SuccessLogo')} />;
|
||||
}
|
||||
|
||||
static PermissionDenied() {
|
||||
return <PermissionDenied {...testIDProps('permissionDeniedImage')} />;
|
||||
}
|
||||
|
||||
static CloudUploadDoneIcon() {
|
||||
return <CloudUploadDoneIcon {...testIDProps('cloudUploadDoneIcon')} />;
|
||||
}
|
||||
|
||||
static NoInternetConnection() {
|
||||
return (
|
||||
<NoInternetConnection {...testIDProps('noInternetConnectionImage')} />
|
||||
@@ -248,6 +277,16 @@ export class SvgImage {
|
||||
static MagnifierZoom() {
|
||||
return <MagnifierZoom />;
|
||||
}
|
||||
|
||||
static GoogleDriveIcon(width, height) {
|
||||
return (
|
||||
<GoogleDriveIcon
|
||||
width={width}
|
||||
height={height}
|
||||
{...testIDProps('googleDriveIcon')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function getIssuerLogo(props: displayType) {
|
||||
|
||||
@@ -25,6 +25,7 @@ const Colors = {
|
||||
DimGray: '#737373',
|
||||
platinumGrey: '#EDEDED',
|
||||
Orange: '#F2811D',
|
||||
Blue: '#0000FF',
|
||||
LightGrey: '#F7F7F7',
|
||||
ShadeOfGrey: '#6F6F6F',
|
||||
mediumDarkGrey: '#7B7B7B',
|
||||
@@ -128,6 +129,7 @@ export const DefaultTheme = {
|
||||
warningLogoBgColor: Colors.warningLogoBg,
|
||||
tooltipIcon: Colors.toolTip,
|
||||
toolTipPointerColor: Colors.toolTipPointer,
|
||||
urlLink: Colors.Orange,
|
||||
},
|
||||
Styles: StyleSheet.create({
|
||||
title: {
|
||||
@@ -218,6 +220,27 @@ export const DefaultTheme = {
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
backupRestoreBanner: {
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-between',
|
||||
height: 39,
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
dataBackupFailure: {
|
||||
justifyContent: 'space-between',
|
||||
backgroundColor: Colors.Red,
|
||||
height: 39,
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
dataBackupSuccess: {
|
||||
justifyContent: 'space-between',
|
||||
backgroundColor: Colors.Green,
|
||||
height: 39,
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
homeScreenContainer: {
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
@@ -555,7 +578,7 @@ export const DefaultTheme = {
|
||||
},
|
||||
idInputContainer: {
|
||||
marginTop: 20,
|
||||
marginRight: Dimensions.get('window').width * 0.26,
|
||||
width: Dimensions.get('window').width * 0.86,
|
||||
},
|
||||
idInputPicker: {
|
||||
width: Dimensions.get('window').width * 0.32,
|
||||
@@ -654,6 +677,19 @@ export const DefaultTheme = {
|
||||
height: 50,
|
||||
marginTop: -10,
|
||||
},
|
||||
keyboardAvoidStyle: {
|
||||
flex: 1,
|
||||
paddingVertical: 40,
|
||||
paddingHorizontal: 24,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-between',
|
||||
},
|
||||
passwordKeyboardAvoidStyle: {
|
||||
flex: 1,
|
||||
backgroundColor: Colors.White,
|
||||
paddingVertical: 40,
|
||||
paddingHorizontal: 24,
|
||||
},
|
||||
}),
|
||||
QrCodeStyles: StyleSheet.create({
|
||||
magnifierZoom: {
|
||||
@@ -748,11 +784,23 @@ export const DefaultTheme = {
|
||||
fontFamily: 'Inter_600SemiBold',
|
||||
lineHeight: 18,
|
||||
},
|
||||
helpHeader: {
|
||||
color: Colors.Black,
|
||||
fontFamily: 'Inter_700Bold',
|
||||
fontSize: 18,
|
||||
lineHeight: 19,
|
||||
paddingTop: 5,
|
||||
margin: 7,
|
||||
},
|
||||
helpDetails: {
|
||||
margin: 5,
|
||||
color: Colors.Gray44,
|
||||
fontFamily: 'Inter_600SemiBold',
|
||||
},
|
||||
urlLinkText: {
|
||||
color: Colors.Orange,
|
||||
fontFamily: 'Inter_600SemiBold',
|
||||
},
|
||||
aboutDetails: {
|
||||
color: Colors.Black,
|
||||
fontSize: 18,
|
||||
@@ -1029,12 +1077,47 @@ export const DefaultTheme = {
|
||||
marginVertical: 6,
|
||||
},
|
||||
}),
|
||||
BackupStyles: StyleSheet.create({
|
||||
newStyles: {
|
||||
backgroundColor: Colors.Orange,
|
||||
paddingHorizontal: 10,
|
||||
borderRadius: 3,
|
||||
},
|
||||
}),
|
||||
UpdateModalStyles: StyleSheet.create({
|
||||
modal: {
|
||||
width: Dimensions.get('screen').width,
|
||||
height: Dimensions.get('screen').height,
|
||||
},
|
||||
}),
|
||||
BackupAndRestoreStyles: StyleSheet.create({
|
||||
backupProgressText: {
|
||||
fontFamily: 'Inter_400Regular',
|
||||
fontSize: 14,
|
||||
color: Colors.Gray44,
|
||||
},
|
||||
backupProcessInfo: {
|
||||
fontWeight: 'bold',
|
||||
paddingHorizontal: 20,
|
||||
textAlign: 'center',
|
||||
},
|
||||
cloudInfo: {
|
||||
paddingHorizontal: 20,
|
||||
textAlign: 'center',
|
||||
paddingVertical: 15,
|
||||
},
|
||||
cloudLabel: {
|
||||
fontWeight: '600',
|
||||
paddingHorizontal: 10,
|
||||
textAlign: 'center',
|
||||
paddingTop: 15,
|
||||
fontFamily: 'Inter_500Medium',
|
||||
fontSize: 14,
|
||||
letterSpacing: 0,
|
||||
lineHeight: 17,
|
||||
minHeight: 50,
|
||||
},
|
||||
}),
|
||||
TextEditOverlayStyles: StyleSheet.create({
|
||||
overlay: {
|
||||
elevation: 5,
|
||||
@@ -1417,10 +1500,11 @@ export const DefaultTheme = {
|
||||
ICON_LARGE_SIZE: 33,
|
||||
CloseCard: require('../../../assets/Card_Bg1.png'),
|
||||
OpenCard: require('../../../assets/Card_Bg1.png'),
|
||||
sharingIntro: require('../../../assets/Intro_Secure_Sharing.png'),
|
||||
walletIntro: require('../../../assets/Intro_Wallet_Binding.png'),
|
||||
IntroScanner: require('../../../assets/Intro_Scanner.png'),
|
||||
protectPrivacy: require('../../../assets/Intro_Unlock_Method.png'),
|
||||
IntroWelcome: require('../../../assets/Intro_Unlock.png'),
|
||||
SecureSharing: require('../../../assets/Intro_Secure_Sharing.png'),
|
||||
DigitalWallet: require('../../../assets/Intro_Wallet.png'),
|
||||
IntroShare: require('../../../assets/Intro_Share.png'),
|
||||
IntroBackup: require('../../../assets/Intro_Backup.png'),
|
||||
elevation(level: ElevationLevel): ViewStyle {
|
||||
// https://ethercreative.github.io/react-native-shadow-generator/
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ const Colors = {
|
||||
DimGray: '#737373',
|
||||
platinumGrey: '#EDEDED',
|
||||
Orange: '#F2811D',
|
||||
Blue: '#0000FF',
|
||||
LightOrange: '#FDF1E6',
|
||||
LightGrey: '#FAF9FF',
|
||||
ShadeOfGrey: '#6F6F6F',
|
||||
@@ -131,6 +132,7 @@ export const PurpleTheme = {
|
||||
warningLogoBgColor: Colors.warningLogoBg,
|
||||
tooltipIcon: Colors.tooltip,
|
||||
toolTipPointerColor: Colors.toolTipPointer,
|
||||
urlLink: Colors.Purple,
|
||||
},
|
||||
Styles: StyleSheet.create({
|
||||
title: {
|
||||
@@ -223,6 +225,27 @@ export const PurpleTheme = {
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
backupRestoreBanner: {
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-between',
|
||||
height: 39,
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
dataBackupFailure: {
|
||||
justifyContent: 'space-between',
|
||||
backgroundColor: Colors.Red,
|
||||
height: 39,
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
dataBackupSuccess: {
|
||||
justifyContent: 'space-between',
|
||||
backgroundColor: Colors.Green,
|
||||
height: 39,
|
||||
position: 'relative',
|
||||
paddingHorizontal: 12,
|
||||
},
|
||||
homeScreenContainer: {
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
@@ -559,7 +582,7 @@ export const PurpleTheme = {
|
||||
},
|
||||
idInputContainer: {
|
||||
marginTop: 20,
|
||||
marginRight: Dimensions.get('window').width * 0.26,
|
||||
width: Dimensions.get('window').width * 0.86,
|
||||
},
|
||||
idInputPicker: {
|
||||
width: Dimensions.get('window').width * 0.32,
|
||||
@@ -658,6 +681,19 @@ export const PurpleTheme = {
|
||||
height: 50,
|
||||
marginTop: -10,
|
||||
},
|
||||
keyboardAvoidStyle: {
|
||||
flex: 1,
|
||||
paddingVertical: 40,
|
||||
paddingHorizontal: 24,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-between',
|
||||
},
|
||||
passwordKeyboardAvoidStyle: {
|
||||
flex: 1,
|
||||
backgroundColor: Colors.White,
|
||||
paddingVertical: 40,
|
||||
paddingHorizontal: 24,
|
||||
},
|
||||
}),
|
||||
QrCodeStyles: StyleSheet.create({
|
||||
magnifierZoom: {
|
||||
@@ -752,11 +788,23 @@ export const PurpleTheme = {
|
||||
fontFamily: 'Inter_600SemiBold',
|
||||
lineHeight: 18,
|
||||
},
|
||||
helpHeader: {
|
||||
color: Colors.Black,
|
||||
fontFamily: 'Inter_700Bold',
|
||||
fontSize: 18,
|
||||
lineHeight: 19,
|
||||
paddingTop: 5,
|
||||
margin: 7,
|
||||
},
|
||||
helpDetails: {
|
||||
margin: 5,
|
||||
color: Colors.Gray44,
|
||||
fontFamily: 'Inter_600SemiBold',
|
||||
},
|
||||
urlLinkText: {
|
||||
color: Colors.Purple,
|
||||
fontFamily: 'Inter_600SemiBold',
|
||||
},
|
||||
aboutDetails: {
|
||||
color: Colors.Black,
|
||||
fontSize: 18,
|
||||
@@ -1034,12 +1082,47 @@ export const PurpleTheme = {
|
||||
marginVertical: 6,
|
||||
},
|
||||
}),
|
||||
BackupStyles: StyleSheet.create({
|
||||
newStyles: {
|
||||
backgroundColor: Colors.Orange,
|
||||
paddingHorizontal: 10,
|
||||
borderRadius: 3,
|
||||
},
|
||||
}),
|
||||
UpdateModalStyles: StyleSheet.create({
|
||||
modal: {
|
||||
width: Dimensions.get('screen').width,
|
||||
height: Dimensions.get('screen').height,
|
||||
},
|
||||
}),
|
||||
BackupAndRestoreStyles: StyleSheet.create({
|
||||
backupProgressText: {
|
||||
fontFamily: 'Inter_400Regular',
|
||||
fontSize: 14,
|
||||
color: Colors.Gray44,
|
||||
},
|
||||
backupProcessInfo: {
|
||||
fontWeight: 'bold',
|
||||
paddingHorizontal: 20,
|
||||
textAlign: 'center',
|
||||
},
|
||||
cloudInfo: {
|
||||
paddingHorizontal: 20,
|
||||
textAlign: 'center',
|
||||
paddingVertical: 15,
|
||||
},
|
||||
cloudLabel: {
|
||||
fontWeight: '600',
|
||||
paddingHorizontal: 10,
|
||||
textAlign: 'center',
|
||||
paddingTop: 15,
|
||||
fontFamily: 'Inter_500Medium',
|
||||
fontSize: 14,
|
||||
letterSpacing: 0,
|
||||
lineHeight: 17,
|
||||
minHeight: 50,
|
||||
},
|
||||
}),
|
||||
TextEditOverlayStyles: StyleSheet.create({
|
||||
overlay: {
|
||||
elevation: 5,
|
||||
@@ -1428,10 +1511,11 @@ export const PurpleTheme = {
|
||||
ICON_LARGE_SIZE: 33,
|
||||
CloseCard: require('../../../assets/Card_Bg1.png'),
|
||||
OpenCard: require('../../../assets/Card_Bg1.png'),
|
||||
sharingIntro: require('../../../assets/Intro_Secure_Sharing.png'),
|
||||
walletIntro: require('../../../assets/Intro_Wallet_Binding.png'),
|
||||
IntroScanner: require('../../../assets/Intro_Scanner.png'),
|
||||
protectPrivacy: require('../../../assets/Intro_Unlock_Method.png'),
|
||||
IntroWelcome: require('../../../assets/Intro_Unlock.png'),
|
||||
SecureSharing: require('../../../assets/Intro_Secure_Sharing.png'),
|
||||
DigitalWallet: require('../../../assets/Intro_Wallet.png'),
|
||||
IntroShare: require('../../../assets/Intro_Share.png'),
|
||||
IntroBackup: require('../../../assets/Intro_Backup.png'),
|
||||
elevation(level: ElevationLevel): ViewStyle {
|
||||
// https://ethercreative.github.io/react-native-shadow-generator/
|
||||
|
||||
|
||||
50
injitest/androidSanity.xml
Normal file
@@ -0,0 +1,50 @@
|
||||
<?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" />
|
||||
<include name="loginWithInvalidPasscode" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VcDownloadAndVerifyUsingUinTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingUin" />
|
||||
<include name="downloadMultipleVcUsingDifferentUin" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VcDownloadAndVerifyUsingVidTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingVid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.GenerateUinOrVidTest">
|
||||
<methods>
|
||||
<include name="generateUinOrVidUsingAid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.ActivateVcTest">
|
||||
<methods>
|
||||
<include name="activateVc" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.ChangeLanguageTest">
|
||||
<methods>
|
||||
<include name="changeLanguageToArabic" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.PinVcTest">
|
||||
<methods>
|
||||
<include name="pinVc" />
|
||||
<include name="VerifyCameraOpenAfterPinVc" />
|
||||
<include name="downloadVcViaEsignetAndPinUnpin" />
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
49
injitest/iosSanity.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<?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" />
|
||||
<include name="loginWithInvalidPasscode" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VcDownloadAndVerifyUsingUinTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingUin" />
|
||||
<include name="downloadMultipleVcUsingDifferentUin" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VcDownloadAndVerifyUsingVidTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingVid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.GenerateUinOrVidTest">
|
||||
<methods>
|
||||
<include name="generateUinOrVidUsingAid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.ActivateVcTest">
|
||||
<methods>
|
||||
<include name="activateVc" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.ChangeLanguageTest">
|
||||
<methods>
|
||||
<include name="changeLanguageToArabic" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.PinVcTest">
|
||||
<methods>
|
||||
<include name="pinVc" />
|
||||
<include name="downloadVcViaEsignetAndPinUnpin" />
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
@@ -30,6 +30,7 @@
|
||||
</developer>
|
||||
</developers>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
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-d663b5a4a920"
|
||||
|
||||
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
@@ -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"
|
||||
@@ -26,8 +26,8 @@ public class AboutInjiPage extends BasePage {
|
||||
@iOSXCUITFindBy(accessibility = "arrowLeft")
|
||||
private WebElement backButton;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Click here\")")
|
||||
@iOSXCUITFindBy(accessibility = "Click here")
|
||||
@AndroidFindBy(accessibility = "clickHere")
|
||||
@iOSXCUITFindBy(accessibility = "clickHere")
|
||||
public WebElement clickHereButton;
|
||||
|
||||
public AboutInjiPage(AppiumDriver driver) {
|
||||
|
||||
@@ -27,19 +27,10 @@ public class AddNewCardPage extends BasePage{
|
||||
@iOSXCUITFindBy(accessibility = "Continue")
|
||||
private WebElement continueButton;
|
||||
|
||||
@AndroidFindBy(xpath = "(//android.widget.TextView)[4]")
|
||||
@AndroidFindBy(accessibility = "issuersScreenDescription")
|
||||
@iOSXCUITFindBy(accessibility = "issuersScreenDescription")
|
||||
private WebElement addNewCardGuideMessage;
|
||||
|
||||
@AndroidFindBy(xpath = "(//android.widget.TextView)[5]")//remove once get accesibility id
|
||||
private WebElement addNewCardGuideMessageForEsignet;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Mangyaring piliin ang iyong gustong tagabigay mula sa mga opsyon sa ibaba upang magdagdag ng bagong card.\")")
|
||||
private WebElement addNewCardGuideMessageInFillpino;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"नया कार्ड जोड़ने के लिए कृपया नीचे दिए गए विकल्पों में से अपना पसंदीदा जारीकर्ता चुनें।\")")
|
||||
private WebElement addNewCardGuideMessageInHindi;
|
||||
|
||||
@AndroidFindBy(accessibility = "issuerDescription-Mosip")
|
||||
@iOSXCUITFindBy(accessibility = "issuerDescription-Mosip")
|
||||
private WebElement issuerDescriptionMosip;
|
||||
@@ -58,23 +49,10 @@ public class AddNewCardPage extends BasePage{
|
||||
|
||||
public String verifyLanguageForAddNewCardGuideMessage(){
|
||||
return getTextFromLocator(addNewCardGuideMessage);
|
||||
|
||||
// switch (language) {
|
||||
// case "Hindi":
|
||||
// boolean isMessagePresentInHindi = (actualText.equalsIgnoreCase("नया कार्ड जोड़ने के लिए कृपया नीचे दिए गए विकल्पों में से अपना पसंदीदा जारीकर्ता चुनें।")==true) ? true : false;
|
||||
// return isMessagePresentInHindi ;
|
||||
// case "English":
|
||||
// boolean isMessagePresentInEnglish = (actualText.equalsIgnoreCase("Please choose your preferred issuer from the options below to add a new card.")==true) ? true : false;
|
||||
// return isMessagePresentInEnglish ;
|
||||
// case "Filipino":
|
||||
// boolean isMessagePresentInFilipino = (actualText.equalsIgnoreCase("Mangyaring piliin ang iyong gustong tagabigay mula sa mga opsyon sa ibaba upang magdagdag ng bagong card.")==true) ? true : false;
|
||||
// return isMessagePresentInFilipino ;
|
||||
// }
|
||||
// return false;
|
||||
}
|
||||
|
||||
public boolean isAddNewCardPageGuideMessageForEsignetDisplayed() {
|
||||
return this.isElementDisplayed(addNewCardGuideMessageForEsignet);
|
||||
return this.isElementDisplayed(addNewCardGuideMessage);
|
||||
}
|
||||
|
||||
public boolean isAddNewCardPageLoaded() {
|
||||
@@ -128,11 +106,11 @@ public class AddNewCardPage extends BasePage{
|
||||
}
|
||||
|
||||
public boolean isAddNewCardGuideMessageDisplayedInFillopin() {
|
||||
return this.isElementDisplayed(addNewCardGuideMessageInFillpino);
|
||||
return this.isElementDisplayed(addNewCardGuideMessage);
|
||||
}
|
||||
|
||||
public boolean isAddNewCardGuideMessageDisplayedInHindi() {
|
||||
return this.isElementDisplayed(addNewCardGuideMessageInHindi);
|
||||
return this.isElementDisplayed(addNewCardGuideMessage);
|
||||
}
|
||||
public boolean isIssuerDescriptionMosipDisplayed() {
|
||||
return this.isElementDisplayed(issuerDescriptionMosip);
|
||||
|
||||
@@ -3,6 +3,7 @@ package inji.pages;
|
||||
import io.appium.java_client.AppiumDriver;
|
||||
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.StaleElementReferenceException;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.PageFactory;
|
||||
import org.openqa.selenium.support.ui.ExpectedConditions;
|
||||
@@ -10,6 +11,8 @@ import org.openqa.selenium.support.ui.WebDriverWait;
|
||||
|
||||
import static java.time.Duration.ofSeconds;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
public class BasePage {
|
||||
protected AppiumDriver driver;
|
||||
|
||||
@@ -122,4 +125,22 @@ public class BasePage {
|
||||
this.waitForElementToBeVisible(element);
|
||||
return element.getText();
|
||||
}
|
||||
|
||||
protected String retrieToGetElement(WebElement element) {
|
||||
int maxRetries = 3;
|
||||
String text = null;
|
||||
for (int i = 0; i < maxRetries; i++) {
|
||||
try {
|
||||
text = getTextFromLocator(element);
|
||||
break;
|
||||
} catch (StaleElementReferenceException e) {
|
||||
if (i == maxRetries - 1) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
return text;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,8 +13,8 @@ public class ConfirmPasscode extends BasePage {
|
||||
private WebElement confirmPasscode;
|
||||
|
||||
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'Passcode did not match.')]")
|
||||
@iOSXCUITFindBy(accessibility = "Passcode did not match.")
|
||||
@AndroidFindBy(accessibility = "PasscodeError")
|
||||
@iOSXCUITFindBy(accessibility = "PasscodeError")
|
||||
private WebElement invalidPasscode;
|
||||
|
||||
public ConfirmPasscode(AppiumDriver driver) {
|
||||
|
||||
@@ -38,9 +38,14 @@ public class CredentialRegistryPage extends BasePage {
|
||||
@iOSXCUITFindBy(accessibility = "cancel")
|
||||
public WebElement cancelButton;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"iconIcon\")")
|
||||
@AndroidFindBy(accessibility = "arrowLeft")
|
||||
@iOSXCUITFindBy(accessibility = "arrowLeft")
|
||||
public WebElement backArrow;
|
||||
|
||||
@AndroidFindBy(accessibility = "credentialRegistryErrorMessage")
|
||||
@iOSXCUITFindBy(accessibility = "credentialRegistryErrorMessage")
|
||||
public WebElement credentialRegistryErrorMessage;
|
||||
|
||||
|
||||
public CredentialRegistryPage(AppiumDriver driver) {
|
||||
super(driver);
|
||||
@@ -49,6 +54,10 @@ public class CredentialRegistryPage extends BasePage {
|
||||
public boolean isCredentialRegistryTextBoxHeaderDisplayed() {
|
||||
return this.isElementDisplayed(credentialRegistryTextBoxHeader);
|
||||
}
|
||||
|
||||
public boolean isCredentialRegistryErrorMessageDisplayed() {
|
||||
return this.isElementDisplayed(credentialRegistryErrorMessage);
|
||||
}
|
||||
|
||||
public boolean isCredentialRegistryTextBoxHeaderInFilipinoDisplayed() {
|
||||
return this.isElementDisplayed(credentialRegistryTextBoxHeaderInFilipino);
|
||||
|
||||
@@ -25,13 +25,13 @@ public class EsignetLoginPage extends BasePage {
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'Enter Your VID')]")
|
||||
private WebElement enterYourVidTextHeader;
|
||||
|
||||
@AndroidFindBy(xpath = "//android.widget.EditText[@resource-id=\"Otp_mosip-vid\"]")
|
||||
@AndroidFindBy(uiAutomator = "UiSelector().className(\"android.widget.EditText\").instance(1)")
|
||||
private WebElement enterIdTextBox;
|
||||
|
||||
@AndroidFindBy(xpath = "//android.widget.Button[@resource-id=\"get_otp\"]")
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.Button\").instance(1)")
|
||||
private WebElement getOtpButton;
|
||||
|
||||
@AndroidFindBy(xpath = "//android.widget.Button[@resource-id=\"verify_otp\"]")
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.Button\").instance(1)")
|
||||
private WebElement verifyButton;
|
||||
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'OTP has been sent to your registered Mobile Number')]")
|
||||
|
||||
@@ -7,8 +7,8 @@ import org.openqa.selenium.WebElement;
|
||||
|
||||
public class GenerateUinOrVidPage extends BasePage {
|
||||
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'Retrieve your UIN/VID')]")
|
||||
@iOSXCUITFindBy(iOSClassChain = "**/XCUIElementTypeStaticText[`label == \"Retrieve your UIN/VID\"`]")
|
||||
@AndroidFindBy(accessibility = "getIdHeader")
|
||||
@iOSXCUITFindBy(accessibility = "getIdHeader")
|
||||
private WebElement retrieveUinVidText;
|
||||
|
||||
@AndroidFindBy(accessibility = "getIdInputModalIndividualId")
|
||||
|
||||
@@ -22,31 +22,16 @@ public class HassleFreeAuthenticationPage extends BasePage {
|
||||
public HassleFreeAuthenticationPage(AppiumDriver driver) {
|
||||
super(driver);
|
||||
}
|
||||
BasePage basePage = new BasePage(driver);
|
||||
|
||||
public String verifyLanguageforHassleFreeAuthenticationPageLoaded(){
|
||||
basePage.retrieToGetElement(hassleFreeAuthenticationText);
|
||||
return getTextFromLocator(hassleFreeAuthenticationText);
|
||||
|
||||
// switch (language) {
|
||||
// case "English":
|
||||
// boolean isHederLoadedInEnglish = (actualText.equalsIgnoreCase("Hassle free authentication")==true) ? true : false;
|
||||
// return isHederLoadedInEnglish ;
|
||||
// case "Hindi":
|
||||
// boolean isHederLoadedInHindi = (actualText.equalsIgnoreCase("परेशानी मुक्त प्रमाणीकरण")==true) ? true : false;
|
||||
// return isHederLoadedInHindi ;
|
||||
// case "Filipino":
|
||||
// boolean isHederLoadedInFilipino = (actualText.equalsIgnoreCase("Walang problema sa pagpapatotoo")==true) ? true : false;
|
||||
// return isHederLoadedInFilipino ;
|
||||
// case "Tamil":
|
||||
// boolean isHederLoadedInTamil = (actualText.equalsIgnoreCase("தொந்தரவு இல்லாத அங்கீகாரம்")==true) ? true : false;
|
||||
// return isHederLoadedInTamil ;
|
||||
// case "Kannada":
|
||||
// boolean isHederLoadedInKannada = (actualText.equalsIgnoreCase("ಜಗಳ ಮುಕ್ತ ದೃಢೀಕರಣ")==true) ? true : false;
|
||||
// return isHederLoadedInKannada ;
|
||||
// }
|
||||
// return false;
|
||||
}
|
||||
|
||||
public String getHassleFreeAuthenticationDescription() {
|
||||
|
||||
basePage.retrieToGetElement(hassleFreeAuthenticationDescription);
|
||||
return this.getTextFromLocator(hassleFreeAuthenticationDescription);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ public class HelpPage extends BasePage {
|
||||
@iOSXCUITFindBy(accessibility = "helpScreen")
|
||||
private WebElement helpText;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"iconIcon\")")
|
||||
@AndroidFindBy(accessibility = "close")
|
||||
@iOSXCUITFindBy(accessibility = "close")
|
||||
private WebElement crossIcon;
|
||||
|
||||
|
||||
@@ -5,8 +5,11 @@ import io.appium.java_client.AppiumDriver;
|
||||
import io.appium.java_client.pagefactory.AndroidFindBy;
|
||||
import io.appium.java_client.pagefactory.iOSXCUITFindBy;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.JavascriptExecutor;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class HistoryPage extends BasePage {
|
||||
@@ -80,7 +83,7 @@ public class HistoryPage extends BasePage {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public boolean verifyActivityLogHeader(String vcNumber, Target os) {
|
||||
switch (os) {
|
||||
case ANDROID:
|
||||
|
||||
@@ -4,7 +4,11 @@ import io.appium.java_client.AppiumDriver;
|
||||
import io.appium.java_client.pagefactory.AndroidFindBy;
|
||||
import io.appium.java_client.pagefactory.iOSXCUITFindBy;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.JavascriptExecutor;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.remote.RemoteWebElement;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
public class HomePage extends BasePage {
|
||||
@AndroidFindBy(accessibility = "plusIcon")
|
||||
@@ -55,9 +59,13 @@ public class HomePage extends BasePage {
|
||||
@iOSXCUITFindBy(accessibility = "errorTitle")
|
||||
private WebElement noInternetConnection;
|
||||
|
||||
@AndroidFindBy(accessibility = "scan")
|
||||
@iOSXCUITFindBy(accessibility = "scan")
|
||||
private WebElement scanButton;
|
||||
@AndroidFindBy(accessibility = "share")
|
||||
@iOSXCUITFindBy(accessibility = "share")
|
||||
private WebElement shareButton;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().className(\"android.widget.TextView\").instance(6);")// fix with accecibility
|
||||
@iOSXCUITFindBy(accessibility = "share")
|
||||
private WebElement shareButtonByForText;
|
||||
|
||||
@AndroidFindBy(accessibility = "nationalCard")
|
||||
@iOSXCUITFindBy(accessibility = "nationalCard")
|
||||
@@ -137,20 +145,6 @@ public class HomePage extends BasePage {
|
||||
|
||||
public String verifyLanguageForNoVCDownloadedPageLoaded(){
|
||||
return getTextFromLocator(bringYourDigitalIdentity);
|
||||
|
||||
// switch (language) {
|
||||
// case "English":
|
||||
// boolean isEnglishMatch = (actualText.equalsIgnoreCase("Bring your digital identity")==true) ? true : false;
|
||||
// return isEnglishMatch ;
|
||||
// case "Hindi":
|
||||
// boolean isHindiMatch = (actualText.equalsIgnoreCase("अपनी डिजिटल आईडी लाओ")==true) ? true : false;
|
||||
// return isHindiMatch ;
|
||||
// case "Filipino":
|
||||
// boolean isFilipinoMatch = (actualText.equalsIgnoreCase("Dalhin ang Iyong Digital ID")==true) ? true : false;
|
||||
// return isFilipinoMatch ;
|
||||
//
|
||||
// }
|
||||
// return false;
|
||||
}
|
||||
|
||||
public boolean verifyLanguageForNoInternetConnectionDisplayed(String language){
|
||||
@@ -171,9 +165,13 @@ public class HomePage extends BasePage {
|
||||
return false;
|
||||
}
|
||||
|
||||
public ScanPage clickOnScanButton() {
|
||||
clickOnElement(scanButton);
|
||||
return new ScanPage(driver);
|
||||
public SharePage clickOnShareButton() {
|
||||
clickOnElement(shareButton);
|
||||
return new SharePage(driver);
|
||||
}
|
||||
|
||||
public String getShareButton() {
|
||||
return getTextFromLocator(shareButtonByForText);
|
||||
}
|
||||
|
||||
public boolean isIdTypeDisplayed() {
|
||||
|
||||
@@ -31,12 +31,12 @@ public class MoreOptionsPage extends BasePage {
|
||||
@iOSXCUITFindBy(accessibility = "profileAuthenticated")
|
||||
private WebElement activatedForOnlineLoginButton;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"iconIcon\")")
|
||||
@iOSXCUITFindBy(iOSClassChain = "**/XCUIElementTypeOther[`label == \"\uE5CD\"`][1]")
|
||||
@AndroidFindBy(accessibility = "close")
|
||||
@iOSXCUITFindBy(accessibility = "Close")
|
||||
private WebElement closeButton;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Something is wrong. Please try again later!\")")
|
||||
@iOSXCUITFindBy(iOSClassChain = "**/XCUIElementTypeOther[`label == \"Something is wrong. Please try again later!\"`]")
|
||||
@iOSXCUITFindBy(accessibility = "walletBindingErrorTitle")
|
||||
public WebElement somethingIsWrongPopup;
|
||||
|
||||
public MoreOptionsPage(AppiumDriver driver) {
|
||||
|
||||
@@ -16,11 +16,11 @@ public class OtpVerificationPage extends BasePage {
|
||||
@iOSXCUITFindBy(accessibility = "otpVerificationError")
|
||||
private WebElement invalidOtpMessage;
|
||||
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'Something is wrong. Please try again later!')]")
|
||||
@AndroidFindBy(accessibility = "walletBindingErrorTitle")
|
||||
@iOSXCUITFindBy(iOSClassChain = "**/XCUIElementTypeStaticText[`label == \"Something is wrong. Please try again later!\"`]")
|
||||
private WebElement invalidOtpMessageInVcActivation;
|
||||
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'Cancel')]")
|
||||
@AndroidFindBy(xpath = "cancel")
|
||||
@iOSXCUITFindBy(accessibility = "cancel")
|
||||
private WebElement cancelButton;
|
||||
|
||||
@@ -44,7 +44,7 @@ public class OtpVerificationPage extends BasePage {
|
||||
@iOSXCUITFindBy(iOSClassChain = "**/XCUIElementTypeStaticText[`label == \"VID not available in database\"`]")
|
||||
private WebElement vidNotAvailableMessage;
|
||||
|
||||
@AndroidFindBy(accessibility = "resendCode")
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"resendCodeView\")") //as parent component has correct property
|
||||
@iOSXCUITFindBy(accessibility = "resendCode")
|
||||
private WebElement resendCodeButton;
|
||||
|
||||
@@ -102,8 +102,12 @@ public class OtpVerificationPage extends BasePage {
|
||||
return this.isElementDisplayed(vidNotAvailableMessage);
|
||||
}
|
||||
|
||||
public boolean verifyResendCodeButtonDisplayed() {
|
||||
return this.isElementDisplayed(resendCodeButton);
|
||||
public boolean verifyResendCodeButtonDisplayedEnabled() {
|
||||
return this.isElementEnabled(resendCodeButton);
|
||||
}
|
||||
|
||||
public void clickOnResendButton() {
|
||||
clickOnElement(resendCodeButton);
|
||||
}
|
||||
|
||||
public boolean confirmPopupHeaderDisplayed() {
|
||||
@@ -111,6 +115,11 @@ public class OtpVerificationPage extends BasePage {
|
||||
}
|
||||
|
||||
public boolean verifyOtpVerificationTimerCompleted() {
|
||||
return this.WaitTillElementVisible(otpVerificationTimer, 230);
|
||||
return this.WaitTillElementVisible(otpVerificationTimer, 190);
|
||||
}
|
||||
|
||||
public boolean verifyOtpVerificationTimerDisplayedAfterClickOnResend() {
|
||||
return this.isElementDisplayed(otpVerificationTimer);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,10 @@ import org.openqa.selenium.WebElement;
|
||||
import inji.utils.IosUtil;
|
||||
|
||||
public class ReceiveCardPage extends BasePage {
|
||||
@AndroidFindBy(accessibility = "showQrCode")
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Allow\")")
|
||||
private WebElement allowButton;
|
||||
|
||||
@AndroidFindBy(accessibility = "showQrCode")
|
||||
private WebElement receiveCardHeader;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Ipakita ang QR code na ito para humiling ng resident card\")")
|
||||
@@ -26,6 +29,11 @@ public class ReceiveCardPage extends BasePage {
|
||||
super(driver);
|
||||
}
|
||||
|
||||
public void clickOnAllowButton() {
|
||||
if (isElementDisplayed(bluetoothPopUp)) {
|
||||
clickOnElement(allowButton);
|
||||
}
|
||||
}
|
||||
public boolean isReceiveCardHeaderDisplayed() {
|
||||
return this.isElementDisplayed(receiveCardHeader);
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import org.openqa.selenium.WebElement;
|
||||
|
||||
|
||||
public class RetrieveIdPage extends BasePage {
|
||||
@AndroidFindBy(accessibility = "retreiveIdHeader")
|
||||
@iOSXCUITFindBy(accessibility = "retreiveIdHeader")
|
||||
@AndroidFindBy(accessibility = "retrieveIdHeader")
|
||||
@iOSXCUITFindBy(accessibility = "retrieveIdHeader")
|
||||
private WebElement retrieveIdText;
|
||||
|
||||
@AndroidFindBy(accessibility = "idInputModalIndividualId")
|
||||
@@ -45,6 +45,13 @@ public class RetrieveIdPage extends BasePage {
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'AID is not ready yet')]")
|
||||
@iOSXCUITFindBy(accessibility = "AID is not ready yet")
|
||||
private WebElement aidIsNotReadyYetMessage;
|
||||
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'Select ID type and enter the MOSIP provided UIN or VID you')]")
|
||||
@iOSXCUITFindBy(accessibility = "Select ID type and enter the MOSIP provided UIN or VID you wish to download. In the next step, you will be asked to enter OTP.")
|
||||
private WebElement downloadIdGuideMessage;
|
||||
|
||||
@AndroidFindBy(accessibility = "IdInputToolTipInfo")
|
||||
private WebElement infoIcon;
|
||||
|
||||
public RetrieveIdPage(AppiumDriver driver) {
|
||||
super(driver);
|
||||
@@ -53,6 +60,17 @@ public class RetrieveIdPage extends BasePage {
|
||||
public boolean isRetrieveIdPageLoaded() {
|
||||
return this.isElementDisplayed(retrieveIdText);
|
||||
}
|
||||
|
||||
public boolean isInfoIconDisplayed() {
|
||||
return this.isElementDisplayed(infoIcon);
|
||||
}
|
||||
public void clickInfoIcon() {
|
||||
clickOnElement(infoIcon);
|
||||
}
|
||||
|
||||
public String getRetrieveIdPageHeader() {
|
||||
return this.getTextFromLocator(retrieveIdText);
|
||||
}
|
||||
|
||||
public RetrieveIdPage setEnterIdTextBox(String uinOrVid) {
|
||||
clickOnElement(generateCardButton);
|
||||
@@ -69,6 +87,14 @@ public class RetrieveIdPage extends BasePage {
|
||||
this.clickOnElement(getItNowText);
|
||||
return new GenerateUinOrVidPage(driver);
|
||||
}
|
||||
|
||||
public String verifyGetItTextDisplayed() {
|
||||
return this.getTextFromLocator(getItNowText);
|
||||
}
|
||||
|
||||
public boolean verifyDownloadIdPageGuideMessage() {
|
||||
return this.isElementDisplayed(downloadIdGuideMessage);
|
||||
}
|
||||
|
||||
public boolean isInvalidUinMassageLoaded() {
|
||||
return this.isElementDisplayed(invalidUin);
|
||||
@@ -83,9 +109,9 @@ public class RetrieveIdPage extends BasePage {
|
||||
|
||||
switch (os) {
|
||||
case ANDROID:
|
||||
clickOnElement(spinnerButton);
|
||||
for (int i = 0; i < maxRetries; i++) {
|
||||
try {
|
||||
clickOnElement(spinnerButton);
|
||||
clickOnElement(vidDropDownValueAndroid);
|
||||
return this;
|
||||
} catch (StaleElementReferenceException e) {
|
||||
|
||||
@@ -22,31 +22,16 @@ public class SecureSharingPage extends BasePage {
|
||||
public SecureSharingPage(AppiumDriver driver) {
|
||||
super(driver);
|
||||
}
|
||||
BasePage basePage = new BasePage(driver);
|
||||
|
||||
public String verifyLanguageforSecureSharingPageLoaded(){
|
||||
basePage.retrieToGetElement(secureSharingText);
|
||||
return getTextFromLocator(secureSharingText);
|
||||
|
||||
// switch (language) {
|
||||
// case "English":
|
||||
// boolean isHederLoadedInEnglish = (actualText.equalsIgnoreCase("Secure Sharing")==true) ? true : false;
|
||||
// return isHederLoadedInEnglish ;
|
||||
// case "Hindi":
|
||||
// boolean isHederLoadedInHindi = (actualText.equalsIgnoreCase("सुरक्षित साझाकरण")==true) ? true : false;
|
||||
// return isHederLoadedInHindi ;
|
||||
// case "Filipino":
|
||||
// boolean isHederLoadedInFilipino = (actualText.equalsIgnoreCase("Mabilis na pagpasok")==true) ? true : false;
|
||||
// return isHederLoadedInFilipino ;
|
||||
// case "Tamil":
|
||||
// boolean isHederLoadedInTamil = (actualText.equalsIgnoreCase("பாதுகாப்பான பகிர்வு")==true) ? true : false;
|
||||
// return isHederLoadedInTamil ;
|
||||
// case "Kannada":
|
||||
// boolean isHederLoadedInKannada = (actualText.equalsIgnoreCase("ಸುರಕ್ಷಿತ ಹಂಚಿಕೆ")==true) ? true : false;
|
||||
// return isHederLoadedInKannada ;
|
||||
// }
|
||||
// return false;
|
||||
}
|
||||
|
||||
public String getSecureSharingDescription() {
|
||||
basePage.retrieToGetElement(secureSharingDescription);
|
||||
return this.getTextFromLocator(secureSharingDescription);
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ public class SettingsPage extends BasePage {
|
||||
@AndroidFindBy(xpath = "//*[contains(@text,'Tumanggap ng Card')]")
|
||||
public WebElement receiveCardInfilipinoLanguageText;
|
||||
|
||||
@AndroidFindBy(xpath = "(//*[@resource-id=\"padView\"])[3]")
|
||||
@AndroidFindBy(accessibility = "ar")
|
||||
@iOSXCUITFindBy(accessibility = "عربى")
|
||||
private WebElement arabicLanguageButton;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.openqa.selenium.WebElement;
|
||||
|
||||
import inji.utils.IosUtil;
|
||||
|
||||
public class ScanPage extends BasePage {
|
||||
public class SharePage extends BasePage {
|
||||
|
||||
@AndroidFindBy(accessibility = "camera")
|
||||
private WebElement camera;
|
||||
@@ -17,6 +17,9 @@ public class ScanPage extends BasePage {
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Allow\")")
|
||||
private WebElement allowButton;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Deny\")")
|
||||
private WebElement denyButton;
|
||||
|
||||
@AndroidFindBy(accessibility = "noShareableVcs")
|
||||
@iOSXCUITFindBy(accessibility = "noShareableVcs")
|
||||
@@ -27,18 +30,28 @@ public class ScanPage extends BasePage {
|
||||
|
||||
@AndroidFindBy(accessibility = "holdPhoneSteadyMessage")
|
||||
private WebElement holdCameraSteady;
|
||||
|
||||
@AndroidFindBy(accessibility = "bluetoothIsTurnedOffMessage")
|
||||
private WebElement bluetoothIsTurnedOffMessage;
|
||||
|
||||
public ScanPage(AppiumDriver driver) {
|
||||
public SharePage(AppiumDriver driver) {
|
||||
super(driver);
|
||||
}
|
||||
|
||||
public ScanPage acceptPermissionPopupBluetooth() {
|
||||
public SharePage acceptPermissionPopupBluetooth() {
|
||||
if (isElementDisplayed(allowButton)) {
|
||||
clickOnElement(allowButton);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public SharePage denyPermissionPopupBluetooth() {
|
||||
if (isElementDisplayed(denyButton)) {
|
||||
clickOnElement(denyButton);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isCameraOpen() {
|
||||
return isElementDisplayed(camera);
|
||||
}
|
||||
@@ -46,6 +59,10 @@ public class ScanPage extends BasePage {
|
||||
public boolean isNoShareableCardsMessageDisplayed() {
|
||||
return isElementDisplayed(noShareableCards);
|
||||
}
|
||||
|
||||
public String isBluetoothIsTurnedOffMessageDisplayed() {
|
||||
return getTextFromLocator(bluetoothIsTurnedOffMessage);
|
||||
}
|
||||
|
||||
public boolean isCameraPageLoaded() {
|
||||
return this.isElementEnabled(holdCameraSteady);
|
||||
@@ -22,32 +22,15 @@ public class TrustedDigitalWalletPage extends BasePage {
|
||||
public TrustedDigitalWalletPage(AppiumDriver driver) {
|
||||
super(driver);
|
||||
}
|
||||
BasePage basePage = new BasePage(driver);
|
||||
|
||||
public String verifyLanguageforTrustedDigitalWalletPageLoaded(){
|
||||
basePage.retrieToGetElement(trustedDigitalWalletText);
|
||||
return getTextFromLocator(trustedDigitalWalletText);
|
||||
|
||||
//
|
||||
// switch (language) {
|
||||
// case "English":
|
||||
// boolean isHederLoadedInEnglish = (actualText.equalsIgnoreCase("Trusted Digital Wallet")==true) ? true : false;
|
||||
// return isHederLoadedInEnglish ;
|
||||
// case "Hindi":
|
||||
// boolean isHederLoadedInHindi = (actualText.equalsIgnoreCase("विश्वसनीय डिजिटल वॉलेट")==true) ? true : false;
|
||||
// return isHederLoadedInHindi ;
|
||||
// case "Filipino":
|
||||
// boolean isHederLoadedInFilipino = (actualText.equalsIgnoreCase("Pinagkakatiwalaang Digital Wallet")==true) ? true : false;
|
||||
// return isHederLoadedInFilipino ;
|
||||
// case "Tamil":
|
||||
// boolean isHederLoadedInTamil = (actualText.equalsIgnoreCase("நம்பகமான டிஜிட்டல் வாலட்")==true) ? true : false;
|
||||
// return isHederLoadedInTamil ;
|
||||
// case "Kannada":
|
||||
// boolean isHederLoadedInKannada = (actualText.equalsIgnoreCase("ವಿಶ್ವಾಸಾರ್ಹ ಡಿಜಿಟಲ್ ವಾಲೆಟ್")==true) ? true : false;
|
||||
// return isHederLoadedInKannada ;
|
||||
// }
|
||||
// return false;
|
||||
}
|
||||
|
||||
public String getTrustedDigitalWalletDescription() {
|
||||
basePage.retrieToGetElement(trustedDigitalWalletDescription);
|
||||
return this.getTextFromLocator(trustedDigitalWalletDescription);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,36 +24,21 @@ public class WelcomePage extends BasePage {
|
||||
@iOSXCUITFindBy(xpath = "(//XCUIElementTypeOther[@name=\"Susunod\" or @name=\"next\" or @name=\"अगला\" or @name=\"ಮುಂದೆ\" or @name=\"அடுத்தது\"])[4]\n")
|
||||
private WebElement nextButton;
|
||||
|
||||
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"Back\")")
|
||||
@AndroidFindBy(accessibility = "back")
|
||||
@iOSXCUITFindBy(iOSClassChain = "**/XCUIElementTypeButton[`label == \"Back\"`][1]")
|
||||
public WebElement backButton;
|
||||
|
||||
public WelcomePage(AppiumDriver driver) {
|
||||
super(driver);
|
||||
}
|
||||
BasePage basePage = new BasePage(driver);
|
||||
|
||||
public String verifyLanguageforWelcomePageLoaded(){
|
||||
return getTextFromLocator(welcomeText);
|
||||
|
||||
// switch (language) {
|
||||
// case "Hindi":
|
||||
// boolean isHederLoadedInHindi = (actualText.equalsIgnoreCase("सुरक्षित साझाकरण!")==true) ? true : false;
|
||||
// return isHederLoadedInHindi ;
|
||||
// case "Filipino":
|
||||
// boolean isHederLoadedInFilipino = (actualText.equalsIgnoreCase("Ligtas na Pagbabahagi!")==true) ? true : false;
|
||||
// return isHederLoadedInFilipino ;
|
||||
// case "Tamil":
|
||||
// boolean isHederLoadedInTamil = (actualText.equalsIgnoreCase("பாதுகாப்பான பகிர்வு!")==true) ? true : false;
|
||||
// return isHederLoadedInTamil ;
|
||||
// case "Kannada":
|
||||
// boolean isHederLoadedInKannada = (actualText.equalsIgnoreCase("ಸುರಕ್ಷಿತ ಹಂಚಿಕೆ!")==true) ? true : false;
|
||||
// return isHederLoadedInKannada ;
|
||||
// }
|
||||
// Assert.fail("noCaseFound");
|
||||
// return false;
|
||||
}
|
||||
|
||||
public boolean isWelcomePageLoaded() {
|
||||
basePage.retrieToGetElement(welcomeText);
|
||||
return this.isElementDisplayed(welcomeText);
|
||||
}
|
||||
|
||||
@@ -68,6 +53,7 @@ public class WelcomePage extends BasePage {
|
||||
}
|
||||
|
||||
public String getWelcomeDescription() {
|
||||
basePage.retrieToGetElement(welcomeTextDescription);
|
||||
return this.getTextFromLocator(welcomeTextDescription);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,23 @@ public class AndroidUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static void disableBluetooth() {
|
||||
try {
|
||||
ProcessBuilder processBuilder=null;
|
||||
String osName = System.getProperty("os.name");
|
||||
if (osName.contains("Windows")) {
|
||||
processBuilder = new ProcessBuilder("cmd.exe", "/c", "adb shell cmd bluetooth_manager disable");
|
||||
|
||||
} else {
|
||||
processBuilder = new ProcessBuilder("/bin/bash", "-c", "adb shell cmd bluetooth_manager disable");
|
||||
}
|
||||
processBuilder.redirectErrorStream(true);
|
||||
processBuilder.start();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ForceStopeApp() {
|
||||
try {
|
||||
ProcessBuilder processBuilder=null;
|
||||
|
||||
@@ -106,7 +106,7 @@ public class JsonUtil {
|
||||
|
||||
try {
|
||||
|
||||
File f = new File(TestRunner.getResourcePath() + "/" + "resources/"+document);
|
||||
File f = new File(TestRunner.getResourcePath() + "/"+document);
|
||||
|
||||
if (f.exists()) {
|
||||
InputStream is = new FileInputStream(f);
|
||||
|
||||
@@ -61,4 +61,10 @@ public class PropertiesReader {
|
||||
public String getAppiumServerStartStatus() {
|
||||
return getProperty("startAppiumServer");
|
||||
}
|
||||
|
||||
public static String getTestData()
|
||||
{
|
||||
return JsonUtil.readJsonFileText("personaData.json");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,13 +24,13 @@ public class TestDataReader {
|
||||
case "invalidOtp":
|
||||
return "666666";
|
||||
case "newuin":
|
||||
return "2492180164";
|
||||
return "2176493605";
|
||||
case "revokevid":
|
||||
return "6205860394830280";
|
||||
case "vid":
|
||||
return "8349769368792139";
|
||||
case "newaid":
|
||||
return "10001101410012320231225215314";
|
||||
return "10007100470009820240117074603";
|
||||
case "invalidpasscode":
|
||||
return "123456";
|
||||
case "invaliduin":
|
||||
@@ -66,7 +66,7 @@ public class TestDataReader {
|
||||
case "invalidenv":
|
||||
return "https://api.dev3.mosip";
|
||||
case "isDeviceFarmRun":
|
||||
return "false";
|
||||
return "true";
|
||||
default:
|
||||
return "Key not found";
|
||||
}
|
||||
|
||||
162
injitest/src/main/resources/androidRegression.txt
Normal file
@@ -0,0 +1,162 @@
|
||||
<?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.VcDownloadAndVerifyUsingUinTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingUin" />
|
||||
<include name="downloadWithEmptyUin" />
|
||||
<include name="generateMultipleVcWithSameUin" />
|
||||
<include name="downloadMultipleVcUsingDifferentUin" />
|
||||
<include name="verifyInvalidUinErrorMessage" />
|
||||
<include name="verifyOtpTimeOutAndGoBack" />
|
||||
<include name="DownloadMultipleVcAndForceStopeAndAgainInvokeApp" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VerifyWelcomePagesTest">
|
||||
<methods>
|
||||
<include name="verifyWelcomePagesContent" />
|
||||
<include name="verifyWelcomePagesFromInjiTourGuide" />
|
||||
<include name="verifyGoBackFromInjiTourGuide" />
|
||||
<include name="verifyClickOnBackFromInjiTourGuide" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VcDownloadAndVerifyUsingVidTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingVid" />
|
||||
<include name="downloadTwoVcDeleteOneUsingVid" />
|
||||
<include name="verifyInvalidVidErrorMessage" />
|
||||
<include name="downloadAndVerifyVcUsingRevokeVid" />
|
||||
<include name="DownloadMultipleVcAndForceStopeAndAgainInvokeAppViaVid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.UnlockWithPasscodeTest">
|
||||
<methods>
|
||||
<include name="logoutAndLoginWithPasscode" />
|
||||
<include name="loginWithInvalidPasscode" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VerifyHelpPageTest">
|
||||
<methods>
|
||||
<include name="verifyHelpPage" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.DeletingVcTest">
|
||||
<methods>
|
||||
<include name="deleteVcAndVerifyInHistory" />
|
||||
<include name="cancelDeleteVc" />
|
||||
<include name="DownloadingDeletedVc" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VerifyHistoryTest">
|
||||
<methods>
|
||||
<include name="downloadVcAndVerifyHistory" />
|
||||
<include name="verifyActivationFailedRecordInHistory" />
|
||||
<include name="verifyActivationFailedRecordInHistoryFromDetailedView" />
|
||||
<include name="activateVcAndVerifyInHistory" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.GenerateUinOrVidTest">
|
||||
<methods>
|
||||
<include name="generateUinOrVidUsingAid" />
|
||||
<include name="goBackToGenerateUinOrVidUsingAidFromOtpVerificationPage" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.ActivateVcTest">
|
||||
<methods>
|
||||
<include name="activateVc" />
|
||||
<include name="noPreDownloadedVCAndNoHistoryInFreshInstallation" />
|
||||
<include name="verifyInvalidOtpMessage" />
|
||||
<include name="verifyTuvaliVersion" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.PinVcTest">
|
||||
<methods>
|
||||
<include name="pinVc" />
|
||||
<include name="verifyMessageAfterDenyBluetoothPopup" />
|
||||
<include name="VerifyCameraOpenAfterPinVc" />
|
||||
<include name="downloadVcViaEsignetAndPinUnpin" />
|
||||
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.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="androidTestCases.ShareVcTest">
|
||||
<methods>
|
||||
<include name="noCardsAvailableToShare" />
|
||||
<include name="verifyReceivedCardTabPresent" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.NoNetworkAndroidTest">
|
||||
<methods>
|
||||
<include name="setupPasscodeAndDownloadCardWithoutInternet" />
|
||||
<include name="openCameraOnFlightMode" />
|
||||
<include name="activateVcWithoutInternet" />
|
||||
<include name="verifyListOfLanguagesInOfflineMode" />
|
||||
<include name="deleteDownloadedVcInOfflineMode" />
|
||||
<include name="verifyHelpPageOfflineMode" />
|
||||
<include name="openQrOffline" />
|
||||
<include name="verifyRecivedCardOffline" />
|
||||
<include name="downloadCardWithoutInternetRetryWithInternet" />
|
||||
<include name="downloadVcUsingUinViaEsignetWithoutInternate" />
|
||||
<include name="downloadVcUsingUinViaEsignetNoInternateWhileDownloading" />
|
||||
<include name="downloadVcViaEsignetAndPinUnpinWithNoNetwork" />
|
||||
<include name="downloadVcUsingUinViaEsignetNoInternateOpenScan" />
|
||||
<include name="downloadVcInOtherLanguageViaEsignetWithoutInternet" />
|
||||
<include name="changeLanguageToTamilWithoutNetwork" />
|
||||
<include name="verifyVcIssuerListWithoutNetwork" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.CredentialRegistryTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcInNewEnv" />
|
||||
<include name="cancelChangeEnvAndVerify" />
|
||||
<include name="generateUinInNewEnv" />
|
||||
<include name="downloadAndVerifyVcInInvalidEnv" />
|
||||
<include name="retrivingUinInNewEnv" />
|
||||
<include name="retrivingUinInOtherEnv" />
|
||||
<include name="downloadAndVerifyVcInTwoEnv" />
|
||||
<include name="downloadVcAndActivateItInOtherEnv" />
|
||||
<include name="downloadAndVerifyVcInNewEnvForEsignet" />
|
||||
<include name="downloadAndVerifyVcInInvalidEnvForEsignet" />
|
||||
<include name="downloadAndVerifyVcInInvalidEnvForEsignetInFillpino" />
|
||||
<include name="downloadVcInNewEnvAndVerifyInDetailedVcViewPage" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.ReceiveCardTest">
|
||||
<methods>
|
||||
<include name="verifyRecivedCardAndQrCode" />
|
||||
<include name="verifyRecivedCardAndQrCodeInFilipinoLanguage" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VcDownloadAndVerifyUsingEsignetTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingUinViaEsignet" />
|
||||
<include name="downloadAndVerifyVcUsingVidViaEsignet" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.AboutInjiTest">
|
||||
<methods>
|
||||
<include name="copyAppId" />
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
50
injitest/src/main/resources/androidSanity.txt
Normal file
@@ -0,0 +1,50 @@
|
||||
<?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" />
|
||||
<include name="loginWithInvalidPasscode" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VcDownloadAndVerifyUsingUinTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingUin" />
|
||||
<include name="downloadMultipleVcUsingDifferentUin" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VcDownloadAndVerifyUsingVidTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingVid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.GenerateUinOrVidTest">
|
||||
<methods>
|
||||
<include name="generateUinOrVidUsingAid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.ActivateVcTest">
|
||||
<methods>
|
||||
<include name="activateVc" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.ChangeLanguageTest">
|
||||
<methods>
|
||||
<include name="changeLanguageToArabic" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.PinVcTest">
|
||||
<methods>
|
||||
<include name="pinVc" />
|
||||
<include name="VerifyCameraOpenAfterPinVc" />
|
||||
<include name="downloadVcViaEsignetAndPinUnpin" />
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
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>
|
||||
49
injitest/src/main/resources/iosSanity.txt
Normal file
@@ -0,0 +1,49 @@
|
||||
<?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" />
|
||||
<include name="loginWithInvalidPasscode" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VcDownloadAndVerifyUsingUinTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingUin" />
|
||||
<include name="downloadMultipleVcUsingDifferentUin" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.VcDownloadAndVerifyUsingVidTest">
|
||||
<methods>
|
||||
<include name="downloadAndVerifyVcUsingVid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.GenerateUinOrVidTest">
|
||||
<methods>
|
||||
<include name="generateUinOrVidUsingAid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.ActivateVcTest">
|
||||
<methods>
|
||||
<include name="activateVc" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.ChangeLanguageTest">
|
||||
<methods>
|
||||
<include name="changeLanguageToArabic" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="iosTestCases.PinVcTest">
|
||||
<methods>
|
||||
<include name="pinVc" />
|
||||
<include name="downloadVcViaEsignetAndPinUnpin" />
|
||||
</methods>
|
||||
</class>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
13
injitest/src/main/resources/personaData.json
Normal file
@@ -0,0 +1,13 @@
|
||||
[
|
||||
{
|
||||
"DateOfBirth": "2005/12/01",
|
||||
"VID": "3978248315374925",
|
||||
"EmailID": "Br.Ri.7510@mailinator.com",
|
||||
"Address": "?=",
|
||||
"PhoneNumber": "+6574137633",
|
||||
"fullName": "Brecken Ritchie",
|
||||
"Gender": "MLE",
|
||||
"UIN": "2150892709",
|
||||
"ID": "24"
|
||||
}
|
||||
]
|
||||
@@ -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>
|
||||
|
||||
@@ -159,13 +159,13 @@ public class ChangeLanguageTest extends AndroidBaseTest {
|
||||
|
||||
assertEquals(addNewCardPage.verifyLanguageForAddNewCardGuideMessage(),"Mangyaring piliin ang iyong gustong tagabigay mula sa mga opsyon sa ibaba upang magdagdag ng bagong card.");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayedInFilipino(),"verify if search bar is displayed in filipino");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("uin");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("I-download ang Mga Kredensyal ng MOSIP ");
|
||||
|
||||
assertTrue(addNewCardPage.isDownloadViaUinDisplayed(),"verify if download via uin vid aid");
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
addNewCardPage.sendTextInIssuerSearchBar("e-signet");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("I-download ang Mga Kredensyal ng MOSIP");
|
||||
assertTrue(addNewCardPage.isDownloadViaEsignetDisplayed(),"verify if download via e-signet is displayed");
|
||||
}
|
||||
|
||||
@@ -202,13 +202,13 @@ public class ChangeLanguageTest extends AndroidBaseTest {
|
||||
|
||||
assertEquals(addNewCardPage.verifyLanguageForAddNewCardGuideMessage(),"Mangyaring piliin ang iyong gustong tagabigay mula sa mga opsyon sa ibaba upang magdagdag ng bagong card.");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayedInFilipino(),"verify if search bar is displayed in filipino");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("ui");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("otp");
|
||||
|
||||
assertTrue(addNewCardPage.isDownloadViaUinDisplayed(),"verify if download via uin vid aid");
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
addNewCardPage.sendTextInIssuerSearchBar("e-si");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("I-download ang");
|
||||
assertTrue(addNewCardPage.isDownloadViaEsignetDisplayed(),"verify if download via e-signet is displayed");
|
||||
}
|
||||
|
||||
@@ -245,14 +245,14 @@ public class ChangeLanguageTest extends AndroidBaseTest {
|
||||
|
||||
assertEquals(addNewCardPage.verifyLanguageForAddNewCardGuideMessage(),"नया कार्ड जोड़ने के लिए कृपया नीचे दिए गए विकल्पों में से अपना पसंदीदा जारीकर्ता चुनें।");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayedInHindi(),"verify if search bar is displayed in hindi");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("uin");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("OTP के माध्यम से MOSIP क्रेडेंशियल डाउनलोड करें");
|
||||
|
||||
assertTrue(addNewCardPage.isDownloadViaUinDisplayedInHindi(),"verify if download via uin vid aid displayed in hindi");
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
|
||||
addNewCardPage.sendTextInIssuerSearchBar("ई-हस्ताक्षर");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("MOSIP क्रेडेंशियल डाउनलोड करेंं");
|
||||
assertTrue(addNewCardPage.isDownloadViaEsignetDisplayedInHindi(),"verify if download via e-signet is displayed");
|
||||
}
|
||||
|
||||
@@ -302,6 +302,8 @@ public class ChangeLanguageTest extends AndroidBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "Walang problema sa pagpapatotoo");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "I-authenticate ang iyong sarili nang madali gamit ang nakaimbak na digital na kredensyal.");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "Ibahagi");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -350,6 +352,8 @@ public class ChangeLanguageTest extends AndroidBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "परेशानी मुक्त प्रमाणीकरण");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "संग्रहीत डिजिटल क्रेडेंशियल का उपयोग करके आसानी से स्वयं को प्रमाणित करें।");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "शेयर करना");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -398,6 +402,8 @@ public class ChangeLanguageTest extends AndroidBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "தொந்தரவு இல்லாத அங்கீகாரம்");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "சேமிக்கப்பட்ட டிஜிட்டல் நற்சான்றிதழைப் பயன்படுத்தி உங்களை எளிதாக அங்கீகரிக்கவும்.");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "பகிர்");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -446,6 +452,8 @@ public class ChangeLanguageTest extends AndroidBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "ಜಗಳ ಮುಕ್ತ ದೃಢೀಕರಣ");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "ಸಂಗ್ರಹಿಸಿದ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸುಲಭವಾಗಿ ನಿಮ್ಮನ್ನು ದೃಢೀಕರಿಸಿ.");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "ಹಂಚಿಕೊಳ್ಳಿ");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ public class CredentialRegistryTest extends AndroidBaseTest {
|
||||
assertTrue(moreOptionsPage.isVcActivatedForOnlineLogin(), "Verify if VC is activated");
|
||||
moreOptionsPage.clickOnCloseButton();
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
DetailedVcViewPage detailedVcViewPage = homePage.openDetailedVcView(TestDataReader.readData("fullName"));
|
||||
assertTrue(detailedVcViewPage.isCredentialRegistryTextDisplayed(),"Verify if is credential registry text displayed");
|
||||
assertEquals(detailedVcViewPage.getCredentialRegistryValue(), TestDataReader.readData("newEnv"), "Verify changed env is displayed in detailed vc");
|
||||
@@ -140,11 +141,7 @@ public class CredentialRegistryTest extends AndroidBaseTest {
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("invalidenv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("English"), "Verify if no internet connection is displayed");
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryErrorMessageDisplayed(), "Verify if error message is displayed");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -239,7 +236,7 @@ public class CredentialRegistryTest extends AndroidBaseTest {
|
||||
GenerateUinOrVidPage generateUinOrVidPage = retrieveIdPage.clickOnGetItNowText();
|
||||
|
||||
assertTrue(generateUinOrVidPage.isGenerateUinOrVidPageLoaded(), "Verify if generate uin or vid page page is displayed");
|
||||
OtpVerificationPage otpVerification = generateUinOrVidPage.enterApplicationID(TestDataReader.readData("aid")).clickOnGetUinOrVidButton();
|
||||
generateUinOrVidPage.enterApplicationID(TestDataReader.readData("aid")).clickOnGetUinOrVidButton();
|
||||
|
||||
assertTrue(retrieveIdPage.isAidIsNotReadyYetErrorDisplayed(), "Verify if aid is not ready displayed");
|
||||
}
|
||||
@@ -370,7 +367,7 @@ public class CredentialRegistryTest extends AndroidBaseTest {
|
||||
PleaseConfirmPopupPage pleaseConfirmPopupPage = moreOptionsPage.clickOnActivationPending();
|
||||
|
||||
assertTrue(pleaseConfirmPopupPage.isPleaseConfirmPopupPageLoaded(), "Verify if pop up page is displayed");
|
||||
OtpVerificationPage otpVerificationPage = pleaseConfirmPopupPage.clickOnConfirmButton();
|
||||
pleaseConfirmPopupPage.clickOnConfirmButton();
|
||||
|
||||
assertTrue(moreOptionsPage.isSomethingIsWrongPopupVisible(), "Verify if somthing went wrong please try again popup displayed");
|
||||
}
|
||||
@@ -469,11 +466,7 @@ public class CredentialRegistryTest extends AndroidBaseTest {
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("invalidenv")).enterUrlToEsignetHostTextBox(TestDataReader.readData("invalidenv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed(null), "Verify if no internet connection is displayed");
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryErrorMessageDisplayed(), "Verify if error message is displayed");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -507,11 +500,99 @@ public class CredentialRegistryTest extends AndroidBaseTest {
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderInFilipinoDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("invalidenv")).enterUrlToEsignetHostTextBox(TestDataReader.readData("invalidenv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoadedInFilipion(), "Verify if setting page is displayed in filipino");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryErrorMessageDisplayed(), "Verify if error message is displayed");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void downloadVcInNewEnvAndVerifyInDetailedVcViewPage() throws InterruptedException {
|
||||
ChooseLanguagePage chooseLanguagePage = new ChooseLanguagePage(driver);
|
||||
|
||||
assertTrue(chooseLanguagePage.isChooseLanguagePageLoaded(), "Verify if choose language page is displayed");
|
||||
WelcomePage welcomePage = chooseLanguagePage.clickOnSavePreference();
|
||||
|
||||
assertTrue(welcomePage.isWelcomePageLoaded(), "Verify if welcome page is loaded");
|
||||
AppUnlockMethodPage appUnlockMethodPage = welcomePage.clickOnSkipButton();
|
||||
|
||||
assertTrue(appUnlockMethodPage.isAppUnlockMethodPageLoaded(), "Verify if app unlocked page is displayed");
|
||||
SetPasscode setPasscode = appUnlockMethodPage.clickOnUsePasscode();
|
||||
|
||||
assertTrue(setPasscode.isSetPassCodePageLoaded(), "Verify if set passcode page is displayed");
|
||||
ConfirmPasscode confirmPasscode = setPasscode.enterPasscode(TestDataReader.readData("passcode"), Target.ANDROID);
|
||||
|
||||
assertTrue(confirmPasscode.isConfirmPassCodePageLoaded(), "Verify if confirm passcode page is displayed");
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.ANDROID);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
SettingsPage settingsPage = homePage.clickOnSettingIcon();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
CredentialRegistryPage credentialRegistryPage =settingsPage.clickOnCredentialRegistry();
|
||||
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("newEnv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("Filipino"), "Verify if no internet connection is displayed in filipino");
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
OtpVerificationPage otpVerification = retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("newuin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerification.enterOtp(TestDataReader.readData("otp"), Target.ANDROID);
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
MoreOptionsPage moreOptionsPage = homePage.clickOnMoreOptionsButton();
|
||||
|
||||
assertTrue(moreOptionsPage.isMoreOptionsPageLoaded(), "Verify if more options page is displayed");
|
||||
PleaseConfirmPopupPage pleaseConfirmPopupPage = moreOptionsPage.clickOnActivationPending();
|
||||
|
||||
assertTrue(pleaseConfirmPopupPage.isPleaseConfirmPopupPageLoaded(), "Verify if pop up page is displayed");
|
||||
OtpVerificationPage otpVerificationPage = pleaseConfirmPopupPage.clickOnConfirmButton();
|
||||
|
||||
assertTrue(otpVerificationPage.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerificationPage.enterOtp(TestDataReader.readData("otp"), Target.ANDROID);
|
||||
|
||||
assertTrue(moreOptionsPage.isVcActivatedForOnlineLogin(), "Verify if VC is activated");
|
||||
moreOptionsPage.clickOnCloseButton();
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
DetailedVcViewPage detailedVcViewPage = homePage.openDetailedVcView(TestDataReader.readData("fullName"));
|
||||
assertTrue(detailedVcViewPage.isCredentialRegistryTextDisplayed(),"Verify if is credential registry text displayed");
|
||||
assertEquals(detailedVcViewPage.getCredentialRegistryValue(), TestDataReader.readData("newEnv"), "Verify changed env is displayed in detailed vc");
|
||||
|
||||
detailedVcViewPage.clickOnBackArrow();
|
||||
homePage.clickOnSettingIcon();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
settingsPage.clickOnCredentialRegistry();
|
||||
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("injiEnv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
homePage.downloadCard();
|
||||
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("uin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerification.enterOtp(TestDataReader.readData("otp"), Target.ANDROID);
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
|
||||
homePage.openDetailedVcView(TestDataReader.readData("fullName"));
|
||||
assertTrue(detailedVcViewPage.isCredentialRegistryTextDisplayed(),"Verify if is credential registry text displayed");
|
||||
assertEquals(detailedVcViewPage.getCredentialRegistryValue(), TestDataReader.readData("injiEnv"), "Verify inji env is displayed in detailed vc");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ public class DeletingVcTest extends AndroidBaseTest {
|
||||
historyPage.verifyHistory(TestDataReader.readData("uin") + " Removed from wallet", Target.ANDROID);
|
||||
assertTrue(historyPage.verifyDeleteHistory(TestDataReader.readData("uin"), Target.ANDROID), "Verify if deleted history is displayed");
|
||||
|
||||
ScanPage scanPage = homePage.clickOnScanButton();
|
||||
SharePage scanPage = homePage.clickOnShareButton();
|
||||
assertTrue(scanPage.isNoShareableCardsMessageDisplayed(), "Verify if no shareable cards are available message is displayed");
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import inji.pages.*;
|
||||
import inji.utils.TestDataReader;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
import static org.testng.Assert.assertTrue;
|
||||
@@ -39,6 +40,7 @@ public class GenerateUinOrVidTest extends AndroidBaseTest {
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
assertEquals(retrieveIdPage.verifyGetItTextDisplayed(),"Get it now using your AID.");
|
||||
GenerateUinOrVidPage generateUinOrVidPage = retrieveIdPage.clickOnGetItNowText();
|
||||
|
||||
assertTrue(generateUinOrVidPage.isGenerateUinOrVidPageLoaded(), "Verify if generate uin or vid page page is displayed");
|
||||
|
||||
@@ -86,7 +86,7 @@ public class NoNetworkAndroidTest extends AndroidBaseTest {
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
|
||||
AndroidUtil.enableAirplaneMode();
|
||||
assertTrue(homePage.clickOnScanButton().acceptPermissionPopupBluetooth().isCameraOpen());
|
||||
assertTrue(homePage.clickOnShareButton().acceptPermissionPopupBluetooth().isCameraOpen());
|
||||
AndroidUtil.disableAirplaneMode();
|
||||
}
|
||||
@Test
|
||||
@@ -532,7 +532,7 @@ public class NoNetworkAndroidTest extends AndroidBaseTest {
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
AndroidUtil.enableAirplaneMode();
|
||||
|
||||
assertTrue(homePage.clickOnScanButton().acceptPermissionPopupBluetooth().isCameraOpen());
|
||||
assertTrue(homePage.clickOnShareButton().acceptPermissionPopupBluetooth().isCameraOpen());
|
||||
AndroidUtil.disableAirplaneMode();
|
||||
}
|
||||
|
||||
@@ -638,4 +638,39 @@ public class NoNetworkAndroidTest extends AndroidBaseTest {
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("Tamil"), "Verify if try again in tamil is displayed");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyVcIssuerListWithoutNetwork() throws InterruptedException {
|
||||
ChooseLanguagePage chooseLanguagePage = new ChooseLanguagePage(driver);
|
||||
|
||||
assertTrue(chooseLanguagePage.isChooseLanguagePageLoaded(), "Verify if choose language page is displayed");
|
||||
WelcomePage welcomePage = chooseLanguagePage.clickOnSavePreference();
|
||||
|
||||
assertTrue(welcomePage.isWelcomePageLoaded(), "Verify if welcome page is loaded");
|
||||
AppUnlockMethodPage appUnlockMethodPage = welcomePage.clickOnSkipButton();
|
||||
|
||||
assertTrue(appUnlockMethodPage.isAppUnlockMethodPageLoaded(), "Verify if app unlocked page is displayed");
|
||||
SetPasscode setPasscode = appUnlockMethodPage.clickOnUsePasscode();
|
||||
|
||||
assertTrue(setPasscode.isSetPassCodePageLoaded(), "Verify if set passcode page is displayed");
|
||||
ConfirmPasscode confirmPasscode = setPasscode.enterPasscode(TestDataReader.readData("passcode"), Target.ANDROID);
|
||||
|
||||
assertTrue(confirmPasscode.isConfirmPassCodePageLoaded(), "Verify if confirm passcode page is displayed");
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.ANDROID);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
AndroidUtil.enableAirplaneMode();
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionMosipDisplayed(), "Verify if issuer description mosip displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionEsignetDisplayed(), "Verify if issuer description esignet displayed");
|
||||
|
||||
AndroidUtil.disableAirplaneMode();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,9 +4,11 @@ import BaseTest.AndroidBaseTest;
|
||||
import inji.api.BaseTestCase;
|
||||
import inji.constants.Target;
|
||||
import inji.pages.*;
|
||||
import inji.utils.AndroidUtil;
|
||||
import inji.utils.TestDataReader;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
import static org.testng.Assert.assertTrue;
|
||||
@@ -99,7 +101,7 @@ public class PinVcTest extends AndroidBaseTest {
|
||||
moreOptionsPage.clickOnPinOrUnPinCard();
|
||||
|
||||
assertTrue(homePage.isPinIconDisplayed(), "Verify if pin icon on vc is displayed");
|
||||
ScanPage scanPage=homePage.clickOnScanButton();
|
||||
SharePage scanPage=homePage.clickOnShareButton();
|
||||
|
||||
scanPage.acceptPermissionPopupBluetooth();
|
||||
assertTrue(scanPage.isCameraPageLoaded(), "Verify camera page is displayed");
|
||||
@@ -177,4 +179,50 @@ public class PinVcTest extends AndroidBaseTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyMessageAfterDenyBluetoothPopup() throws InterruptedException {
|
||||
ChooseLanguagePage chooseLanguagePage = new ChooseLanguagePage(driver);
|
||||
|
||||
assertTrue(chooseLanguagePage.isChooseLanguagePageLoaded(), "Verify if choose language page is displayed");
|
||||
WelcomePage welcomePage = chooseLanguagePage.clickOnSavePreference();
|
||||
|
||||
assertTrue(welcomePage.isWelcomePageLoaded(), "Verify if welcome page is loaded");
|
||||
AppUnlockMethodPage appUnlockMethodPage = welcomePage.clickOnSkipButton();
|
||||
|
||||
assertTrue(appUnlockMethodPage.isAppUnlockMethodPageLoaded(), "Verify if app unlocked page is displayed");
|
||||
SetPasscode setPasscode = appUnlockMethodPage.clickOnUsePasscode();
|
||||
|
||||
assertTrue(setPasscode.isSetPassCodePageLoaded(), "Verify if set passcode page is displayed");
|
||||
ConfirmPasscode confirmPasscode = setPasscode.enterPasscode(TestDataReader.readData("passcode"), Target.ANDROID);
|
||||
|
||||
assertTrue(confirmPasscode.isConfirmPassCodePageLoaded(), "Verify if confirm passcode page is displayed");
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.ANDROID);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
OtpVerificationPage otpVerification = retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("uin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerification.enterOtp(BaseTestCase.getOtp(), Target.ANDROID);
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
MoreOptionsPage moreOptionsPage = homePage.clickOnMoreOptionsButton();
|
||||
|
||||
assertTrue(moreOptionsPage.isMoreOptionsPageLoaded(), "Verify if more options page is displayed");
|
||||
moreOptionsPage.clickOnPinOrUnPinCard();
|
||||
|
||||
assertTrue(homePage.isPinIconDisplayed(), "Verify if pin icon on vc is displayed");
|
||||
SharePage scanPage=homePage.clickOnShareButton();
|
||||
AndroidUtil.disableBluetooth();
|
||||
|
||||
scanPage.denyPermissionPopupBluetooth();
|
||||
assertEquals(scanPage.isBluetoothIsTurnedOffMessageDisplayed(),"bluetooth is turned off, please turn it ON from quick settings menu");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,8 @@ public class ReceiveCardTest extends AndroidBaseTest {
|
||||
SettingsPage settingsPage = homePage.clickOnSettingIcon();
|
||||
|
||||
ReceiveCardPage receiveCardPage = settingsPage.clickOnReceiveCard();
|
||||
|
||||
receiveCardPage.clickOnAllowButton();
|
||||
assertTrue(receiveCardPage.isReceiveCardHeaderDisplayed(), "Verify if QR code header is displayed");
|
||||
assertTrue(receiveCardPage.isWaitingForConnectionDisplayed(), "Verify if waiting for connection displayed");
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public class ShareVcTest extends AndroidBaseTest {
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.ANDROID);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
ScanPage scanPage = homePage.clickOnScanButton();
|
||||
SharePage scanPage = homePage.clickOnShareButton();
|
||||
assertTrue(scanPage.isNoShareableCardsMessageDisplayed(), "Verify if no shareable cards are available message is displayed");
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public class VcDownloadAndVerifyUsingEsignetTest extends AndroidBaseTest {
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionMosipDisplayed(), "Verify if issuer description mosip displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionEsignetDisplayed(), "Verify if issuer description esignet displayed");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayed(), "Verify if issuer search bar displayed");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("e-signet");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("Download MOSIP Credentials");
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
assertTrue(addNewCardPage.isAddNewCardPageGuideMessageForEsignetDisplayed(), "Verify if add new card guide message displayed");
|
||||
assertTrue(addNewCardPage.isDownloadViaEsignetDisplayed(), "Verify if download via uin displayed");
|
||||
|
||||
@@ -5,12 +5,24 @@ import inji.api.BaseTestCase;
|
||||
import inji.constants.Target;
|
||||
import inji.pages.*;
|
||||
import inji.utils.AndroidUtil;
|
||||
import inji.utils.IosUtil;
|
||||
import inji.utils.TestDataReader;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.Dimension;
|
||||
import org.openqa.selenium.JavascriptExecutor;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
|
||||
public class VcDownloadAndVerifyUsingUinTest extends AndroidBaseTest {
|
||||
@Test
|
||||
@@ -39,10 +51,15 @@ public class VcDownloadAndVerifyUsingUinTest extends AndroidBaseTest {
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionMosipDisplayed(), "Verify if issuer description mosip displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionEsignetDisplayed(), "Verify if issuer description esignet displayed");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayed(), "Verify if issuer search bar displayed");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("uin");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("Download MOSIP Credentials");
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
assertEquals(retrieveIdPage.getRetrieveIdPageHeader(),"Download your ID");
|
||||
assertTrue(retrieveIdPage.verifyDownloadIdPageGuideMessage(), "Verify if retrieve id page guide message is displayed");
|
||||
assertTrue(retrieveIdPage.isInfoIconDisplayed(), "Verify if info icon is displayed");
|
||||
//retrieveIdPage.clickInfoIcon();
|
||||
|
||||
OtpVerificationPage otpVerification = retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("uin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
@@ -264,7 +281,9 @@ public class VcDownloadAndVerifyUsingUinTest extends AndroidBaseTest {
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
assertTrue(otpVerification.verifyOtpVerificationTimerCompleted(), "Verify timer has stop for otp verification");
|
||||
assertTrue(otpVerification.verifyResendCodeButtonDisplayed(), "Verify if resend code is displayed");
|
||||
assertTrue(otpVerification.verifyResendCodeButtonDisplayedEnabled(), "Verify if resend code is enabled");
|
||||
otpVerification.clickOnResendButton();
|
||||
assertTrue(otpVerification.verifyOtpVerificationTimerDisplayedAfterClickOnResend(), "verify is You can resend the code displayed again after click on resend button ");
|
||||
|
||||
otpVerification.clickOnCrossIcon();
|
||||
assertTrue(otpVerification.confirmPopupHeaderDisplayed(), "Verify if comfirm popup displayed");
|
||||
@@ -295,10 +314,7 @@ public class VcDownloadAndVerifyUsingUinTest extends AndroidBaseTest {
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionMosipDisplayed(), "Verify if issuer description mosip displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionEsignetDisplayed(), "Verify if issuer description esignet displayed");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayed(), "Verify if issuer search bar displayed");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("uin");
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
|
||||
@@ -4,10 +4,18 @@ import BaseTest.AndroidBaseTest;
|
||||
import inji.constants.Target;
|
||||
import inji.pages.*;
|
||||
import inji.utils.TestDataReader;
|
||||
import io.appium.java_client.PerformsTouchActions;
|
||||
import io.appium.java_client.TouchAction;
|
||||
import io.appium.java_client.touch.offset.PointOption;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
import org.openqa.selenium.JavascriptExecutor;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
public class VerifyHelpPageTest extends AndroidBaseTest {
|
||||
@@ -36,13 +44,10 @@ public class VerifyHelpPageTest extends AndroidBaseTest {
|
||||
HelpPage helpPage = homePage.clickOnHelpIcon();
|
||||
|
||||
assertEquals(helpPage.isHelpPageContentEmpty(),false,"verifying text is not empty");
|
||||
// helpPage.scrollPerformInHelpPage();
|
||||
// assertTrue(helpPage.isBiometricIsChangeTextDescription(), "Verify if biometric is text change displayed");
|
||||
|
||||
|
||||
assertTrue(helpPage.isHelpPageLoaded(), "Verify if help page is displayed");
|
||||
helpPage.exitHelpPage();
|
||||
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
}
|
||||
|
||||
|
||||
@@ -159,13 +159,13 @@ public class ChangeLanguageTest extends IosBaseTest {
|
||||
|
||||
assertEquals(addNewCardPage.verifyLanguageForAddNewCardGuideMessage(),"Mangyaring piliin ang iyong gustong tagabigay mula sa mga opsyon sa ibaba upang magdagdag ng bagong card.");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayedInFilipino(),"verify if search bar is displayed in filipino");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("uin");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("I-download ang Mga Kredensyal ng MOSIP ");
|
||||
|
||||
assertTrue(addNewCardPage.isDownloadViaUinDisplayed(),"verify if download via uin vid aid");
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
addNewCardPage.sendTextInIssuerSearchBar("e-signet");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("I-download ang Mga Kredensyal ng MOSIP");
|
||||
assertTrue(addNewCardPage.isDownloadViaEsignetDisplayed(),"verify if download via e-signet is displayed");
|
||||
}
|
||||
|
||||
@@ -202,13 +202,13 @@ public class ChangeLanguageTest extends IosBaseTest {
|
||||
|
||||
assertEquals(addNewCardPage.verifyLanguageForAddNewCardGuideMessage(),"Mangyaring piliin ang iyong gustong tagabigay mula sa mga opsyon sa ibaba upang magdagdag ng bagong card.");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayedInFilipino(),"verify if search bar is displayed in filipino");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("ui");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("otp");
|
||||
|
||||
assertTrue(addNewCardPage.isDownloadViaUinDisplayed(),"verify if download via uin vid aid");
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
addNewCardPage.sendTextInIssuerSearchBar("e-si");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("I-download ang");
|
||||
assertTrue(addNewCardPage.isDownloadViaEsignetDisplayed(),"verify if download via e-signet is displayed");
|
||||
}
|
||||
|
||||
@@ -245,14 +245,14 @@ public class ChangeLanguageTest extends IosBaseTest {
|
||||
|
||||
assertEquals(addNewCardPage.verifyLanguageForAddNewCardGuideMessage(),"नया कार्ड जोड़ने के लिए कृपया नीचे दिए गए विकल्पों में से अपना पसंदीदा जारीकर्ता चुनें।");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayedInHindi(),"verify if search bar is displayed in hindi");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("uin");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("OTP के माध्यम से MOSIP क्रेडेंशियल डाउनलोड करें");
|
||||
|
||||
assertTrue(addNewCardPage.isDownloadViaUinDisplayedInHindi(),"verify if download via uin vid aid displayed in hindi");
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
|
||||
addNewCardPage.sendTextInIssuerSearchBar("ई-हस्ताक्षर");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("MOSIP क्रेडेंशियल डाउनलोड करेंं");
|
||||
assertTrue(addNewCardPage.isDownloadViaEsignetDisplayedInHindi(),"verify if download via e-signet is displayed");
|
||||
}
|
||||
|
||||
@@ -302,6 +302,8 @@ public class ChangeLanguageTest extends IosBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "Walang problema sa pagpapatotoo");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "I-authenticate ang iyong sarili nang madali gamit ang nakaimbak na digital na kredensyal.");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "Ibahagi");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -350,6 +352,8 @@ public class ChangeLanguageTest extends IosBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "परेशानी मुक्त प्रमाणीकरण");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "संग्रहीत डिजिटल क्रेडेंशियल का उपयोग करके आसानी से स्वयं को प्रमाणित करें।");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "शेयर करना");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -398,6 +402,9 @@ public class ChangeLanguageTest extends IosBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "தொந்தரவு இல்லாத அங்கீகாரம்");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "சேமிக்கப்பட்ட டிஜிட்டல் நற்சான்றிதழைப் பயன்படுத்தி உங்களை எளிதாக அங்கீகரிக்கவும்.");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "பகிர்");
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -446,6 +453,8 @@ public class ChangeLanguageTest extends IosBaseTest {
|
||||
HassleFreeAuthenticationPage hassleFreeAuthenticationPage = new HassleFreeAuthenticationPage(driver);
|
||||
assertEquals(hassleFreeAuthenticationPage.verifyLanguageforHassleFreeAuthenticationPageLoaded(), "ಜಗಳ ಮುಕ್ತ ದೃಢೀಕರಣ");
|
||||
assertEquals(hassleFreeAuthenticationPage.getHassleFreeAuthenticationDescription(), "ಸಂಗ್ರಹಿಸಿದ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸುಲಭವಾಗಿ ನಿಮ್ಮನ್ನು ದೃಢೀಕರಿಸಿ.");
|
||||
hassleFreeAuthenticationPage.clickOnGoBack();
|
||||
assertEquals(homePage.getShareButton(), "ಹಂಚಿಕೊಳ್ಳಿ");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ public class CredentialRegistryTest extends IosBaseTest {
|
||||
assertTrue(moreOptionsPage.isVcActivatedForOnlineLogin(), "Verify if VC is activated");
|
||||
moreOptionsPage.clickOnCloseButton();
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
DetailedVcViewPage detailedVcViewPage = homePage.openDetailedVcView(TestDataReader.readData("fullName"));
|
||||
assertTrue(detailedVcViewPage.isCredentialRegistryTextDisplayed(),"Verify if is credential registry text displayed");
|
||||
assertEquals(detailedVcViewPage.getCredentialRegistryValue(), TestDataReader.readData("newEnv"), "Verify changed env is displayed in detailed vc");
|
||||
@@ -139,11 +140,7 @@ public class CredentialRegistryTest extends IosBaseTest {
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("invalidenv")).clickOnSaveButton().clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("English"), "Verify if no internet connection is displayed");
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryErrorMessageDisplayed(), "Verify if error message is displayed");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -468,11 +465,7 @@ public class CredentialRegistryTest extends IosBaseTest {
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("invalidenv")).enterUrlToEsignetHostTextBox(TestDataReader.readData("invalidenv")).clickOnSaveButton().clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("English"), "Verify if no internet connection is displayed");
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryErrorMessageDisplayed(), "Verify if error message is displayed");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -517,11 +510,98 @@ public class CredentialRegistryTest extends IosBaseTest {
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderInFilipinoDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("invalidenv")).enterUrlToEsignetHostTextBox(TestDataReader.readData("invalidenv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoadedInFilipion(), "Verify if setting page is displayed in filipino");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryErrorMessageDisplayed(), "Verify if error message is displayed");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void downloadVcInNewEnvAndVerifyInDetailedVcViewPage() throws InterruptedException {
|
||||
ChooseLanguagePage chooseLanguagePage = new ChooseLanguagePage(driver);
|
||||
|
||||
assertTrue(chooseLanguagePage.isChooseLanguagePageLoaded(), "Verify if choose language page is displayed");
|
||||
WelcomePage welcomePage = chooseLanguagePage.clickOnSavePreference();
|
||||
|
||||
assertTrue(welcomePage.isWelcomePageLoaded(), "Verify if welcome page is loaded");
|
||||
AppUnlockMethodPage appUnlockMethodPage = welcomePage.clickOnSkipButton();
|
||||
|
||||
assertTrue(appUnlockMethodPage.isAppUnlockMethodPageLoaded(), "Verify if app unlocked page is displayed");
|
||||
SetPasscode setPasscode = appUnlockMethodPage.clickOnUsePasscode();
|
||||
|
||||
assertTrue(setPasscode.isSetPassCodePageLoaded(), "Verify if set passcode page is displayed");
|
||||
ConfirmPasscode confirmPasscode = setPasscode.enterPasscode(TestDataReader.readData("passcode"), Target.IOS);
|
||||
|
||||
assertTrue(confirmPasscode.isConfirmPassCodePageLoaded(), "Verify if confirm passcode page is displayed");
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.IOS);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
SettingsPage settingsPage = homePage.clickOnSettingIcon();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
CredentialRegistryPage credentialRegistryPage =settingsPage.clickOnCredentialRegistry();
|
||||
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("newEnv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("Filipino"), "Verify if no internet connection is displayed in filipino");
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
OtpVerificationPage otpVerification = retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("newuin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerification.enterOtp(TestDataReader.readData("otp"), Target.IOS);
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
MoreOptionsPage moreOptionsPage = homePage.clickOnMoreOptionsButton();
|
||||
|
||||
assertTrue(moreOptionsPage.isMoreOptionsPageLoaded(), "Verify if more options page is displayed");
|
||||
PleaseConfirmPopupPage pleaseConfirmPopupPage = moreOptionsPage.clickOnActivationPending();
|
||||
|
||||
assertTrue(pleaseConfirmPopupPage.isPleaseConfirmPopupPageLoaded(), "Verify if pop up page is displayed");
|
||||
OtpVerificationPage otpVerificationPage = pleaseConfirmPopupPage.clickOnConfirmButton();
|
||||
|
||||
assertTrue(otpVerificationPage.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerificationPage.enterOtp(TestDataReader.readData("otp"), Target.IOS);
|
||||
|
||||
assertTrue(moreOptionsPage.isVcActivatedForOnlineLogin(), "Verify if VC is activated");
|
||||
moreOptionsPage.clickOnCloseButton();
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
DetailedVcViewPage detailedVcViewPage = homePage.openDetailedVcView(TestDataReader.readData("fullName"));
|
||||
assertTrue(detailedVcViewPage.isCredentialRegistryTextDisplayed(),"Verify if is credential registry text displayed");
|
||||
assertEquals(detailedVcViewPage.getCredentialRegistryValue(), TestDataReader.readData("newEnv"), "Verify changed env is displayed in detailed vc");
|
||||
|
||||
detailedVcViewPage.clickOnBackArrow();
|
||||
homePage.clickOnSettingIcon();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
settingsPage.clickOnCredentialRegistry();
|
||||
|
||||
assertTrue(credentialRegistryPage.isCredentialRegistryTextBoxHeaderDisplayed(), "Verify if CredentialRegistry page is displayed");
|
||||
credentialRegistryPage.setEnterIdTextBox(TestDataReader.readData("injiEnv")).clickOnSaveButton();
|
||||
|
||||
assertTrue(settingsPage.isSettingPageLoaded(), "Verify if setting page is displayed");
|
||||
credentialRegistryPage.clickOnBackArrow();
|
||||
homePage.downloadCard();
|
||||
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("uin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerification.enterOtp(TestDataReader.readData("otp"), Target.IOS);
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
|
||||
homePage.openDetailedVcView(TestDataReader.readData("fullName"));
|
||||
assertTrue(detailedVcViewPage.isCredentialRegistryTextDisplayed(),"Verify if is credential registry text displayed");
|
||||
assertEquals(detailedVcViewPage.getCredentialRegistryValue(), TestDataReader.readData("injiEnv"), "Verify inji env is displayed in detailed vc");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import inji.pages.*;
|
||||
import inji.utils.TestDataReader;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
public class GenerateUinOrVidTest extends IosBaseTest {
|
||||
@@ -37,6 +38,7 @@ public class GenerateUinOrVidTest extends IosBaseTest {
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
assertEquals(retrieveIdPage.verifyGetItTextDisplayed(),"Get it now using your AID.");
|
||||
GenerateUinOrVidPage generateUinOrVidPage = retrieveIdPage.clickOnGetItNowText();
|
||||
|
||||
assertTrue(generateUinOrVidPage.isGenerateUinOrVidPageLoaded(), "Verify if generate uin or vid page page is displayed");
|
||||
|
||||
@@ -4,10 +4,12 @@ import BaseTest.IosBaseTest;
|
||||
import inji.api.BaseTestCase;
|
||||
import inji.constants.Target;
|
||||
import inji.pages.*;
|
||||
import inji.utils.AndroidUtil;
|
||||
import inji.utils.IosUtil;
|
||||
import inji.utils.TestDataReader;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
public class NoNetworkIosTest extends IosBaseTest {
|
||||
@@ -46,7 +48,7 @@ public class NoNetworkIosTest extends IosBaseTest {
|
||||
assertTrue(homePage.verifyLanguageForTryAgainButtonDisplayed("English"), "Verify if Try again button displayed");
|
||||
|
||||
addNewCardPage.clickOnBack();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("English"), "Verify if VC is removed");
|
||||
assertEquals(homePage.verifyLanguageForNoVCDownloadedPageLoaded(), "Bring your digital identity");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -82,9 +84,9 @@ public class NoNetworkIosTest extends IosBaseTest {
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
|
||||
IosUtil.enableAirplaneMode();
|
||||
assertTrue(homePage.clickOnScanButton().acceptPermissionPopupBluetooth().isCameraOpen());
|
||||
IosUtil.disableAirplaneMode();
|
||||
AndroidUtil.enableAirplaneMode();
|
||||
assertTrue(homePage.clickOnShareButton().acceptPermissionPopupBluetooth().isCameraOpen());
|
||||
AndroidUtil.disableAirplaneMode();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -238,8 +240,9 @@ public class NoNetworkIosTest extends IosBaseTest {
|
||||
|
||||
pleaseConfirmPopupPage.clickOnConfirmButton();
|
||||
|
||||
IosUtil.disableAirplaneMode();
|
||||
assertTrue(homePage.verifyLanguageForNoInternetConnectionDisplayed("English"), "Verify if VC is removed");
|
||||
AndroidUtil.disableAirplaneMode();
|
||||
assertEquals(homePage.verifyLanguageForNoVCDownloadedPageLoaded(), "Bring your digital identity");
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -350,4 +353,39 @@ public class NoNetworkIosTest extends IosBaseTest {
|
||||
homePage.clickOnTryAgainButton();
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyVcIssuerListWithoutNetwork() throws InterruptedException {
|
||||
ChooseLanguagePage chooseLanguagePage = new ChooseLanguagePage(driver);
|
||||
|
||||
assertTrue(chooseLanguagePage.isChooseLanguagePageLoaded(), "Verify if choose language page is displayed");
|
||||
WelcomePage welcomePage = chooseLanguagePage.clickOnSavePreference();
|
||||
|
||||
assertTrue(welcomePage.isWelcomePageLoaded(), "Verify if welcome page is loaded");
|
||||
AppUnlockMethodPage appUnlockMethodPage = welcomePage.clickOnSkipButton();
|
||||
|
||||
assertTrue(appUnlockMethodPage.isAppUnlockMethodPageLoaded(), "Verify if app unlocked page is displayed");
|
||||
SetPasscode setPasscode = appUnlockMethodPage.clickOnUsePasscode();
|
||||
|
||||
assertTrue(setPasscode.isSetPassCodePageLoaded(), "Verify if set passcode page is displayed");
|
||||
ConfirmPasscode confirmPasscode = setPasscode.enterPasscode(TestDataReader.readData("passcode"), Target.IOS);
|
||||
|
||||
assertTrue(confirmPasscode.isConfirmPassCodePageLoaded(), "Verify if confirm passcode page is displayed");
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.IOS);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
AndroidUtil.enableAirplaneMode();
|
||||
addNewCardPage.clickOnBack();
|
||||
|
||||
homePage.downloadCard();
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionMosipDisplayed(), "Verify if issuer description mosip displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionEsignetDisplayed(), "Verify if issuer description esignet displayed");
|
||||
|
||||
AndroidUtil.disableAirplaneMode();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,11 @@ import BaseTest.IosBaseTest;
|
||||
import inji.api.BaseTestCase;
|
||||
import inji.constants.Target;
|
||||
import inji.pages.*;
|
||||
import inji.utils.AndroidUtil;
|
||||
import inji.utils.TestDataReader;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
public class PinVcTest extends IosBaseTest {
|
||||
@@ -94,8 +96,9 @@ public class PinVcTest extends IosBaseTest {
|
||||
moreOptionsPage.clickOnPinOrUnPinCard();
|
||||
|
||||
assertTrue(homePage.isPinIconDisplayed(), "Verify if pin icon on vc is displayed");
|
||||
ScanPage scanPage=homePage.clickOnScanButton();
|
||||
|
||||
SharePage scanPage=homePage.clickOnShareButton();
|
||||
|
||||
assertTrue(scanPage.isCameraPageLoaded(), "Verify camera page is displayed");
|
||||
assertTrue(scanPage.isFlipCameraClickable(),"Verify if flip camera is enabled");
|
||||
}
|
||||
@@ -171,4 +174,50 @@ public class PinVcTest extends IosBaseTest {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void verifyMessageAfterDenyBluetoothPopup() throws InterruptedException {
|
||||
ChooseLanguagePage chooseLanguagePage = new ChooseLanguagePage(driver);
|
||||
|
||||
assertTrue(chooseLanguagePage.isChooseLanguagePageLoaded(), "Verify if choose language page is displayed");
|
||||
WelcomePage welcomePage = chooseLanguagePage.clickOnSavePreference();
|
||||
|
||||
assertTrue(welcomePage.isWelcomePageLoaded(), "Verify if welcome page is loaded");
|
||||
AppUnlockMethodPage appUnlockMethodPage = welcomePage.clickOnSkipButton();
|
||||
|
||||
assertTrue(appUnlockMethodPage.isAppUnlockMethodPageLoaded(), "Verify if app unlocked page is displayed");
|
||||
SetPasscode setPasscode = appUnlockMethodPage.clickOnUsePasscode();
|
||||
|
||||
assertTrue(setPasscode.isSetPassCodePageLoaded(), "Verify if set passcode page is displayed");
|
||||
ConfirmPasscode confirmPasscode = setPasscode.enterPasscode(TestDataReader.readData("passcode"), Target.IOS);
|
||||
|
||||
assertTrue(confirmPasscode.isConfirmPassCodePageLoaded(), "Verify if confirm passcode page is displayed");
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.IOS);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
AddNewCardPage addNewCardPage = homePage.downloadCard();
|
||||
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
OtpVerificationPage otpVerification = retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("uin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
otpVerification.enterOtp(BaseTestCase.getOtp(), Target.IOS);
|
||||
|
||||
assertTrue(homePage.isNameDisplayed(TestDataReader.readData("fullName")), "Verify if full name is displayed");
|
||||
MoreOptionsPage moreOptionsPage = homePage.clickOnMoreOptionsButton();
|
||||
|
||||
assertTrue(moreOptionsPage.isMoreOptionsPageLoaded(), "Verify if more options page is displayed");
|
||||
moreOptionsPage.clickOnPinOrUnPinCard();
|
||||
|
||||
assertTrue(homePage.isPinIconDisplayed(), "Verify if pin icon on vc is displayed");
|
||||
SharePage scanPage=homePage.clickOnShareButton();
|
||||
AndroidUtil.disableBluetooth();
|
||||
|
||||
scanPage.denyPermissionPopupBluetooth();
|
||||
assertEquals(scanPage.isBluetoothIsTurnedOffMessageDisplayed(),"bluetooth is turned off, please turn it on from quick settings menu");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public class ShareVcTest extends IosBaseTest {
|
||||
HomePage homePage = confirmPasscode.enterPasscodeInConfirmPasscodePage(TestDataReader.readData("passcode"), Target.IOS);
|
||||
|
||||
assertTrue(homePage.isHomePageLoaded(), "Verify if home page is displayed");
|
||||
ScanPage scanPage = homePage.clickOnScanButton();
|
||||
SharePage scanPage = homePage.clickOnShareButton();
|
||||
assertTrue(scanPage.isNoShareableCardsMessageDisplayed(), "Verify if no shareable cards are available message is displayed");
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public class VcDownloadAndVerifyUsingEsignetTest extends IosBaseTest {
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionMosipDisplayed(), "Verify if issuer description mosip displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionEsignetDisplayed(), "Verify if issuer description esignet displayed");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayed(), "Verify if issuer search bar displayed");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("e-signet");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("Download MOSIP Credentials");
|
||||
assertTrue(addNewCardPage.isAddNewCardPageLoaded(), "Verify if add new card page is displayed");
|
||||
assertEquals(addNewCardPage.verifyLanguageForAddNewCardGuideMessage(), "Please choose your preferred issuer from the options below to add a new card.");
|
||||
assertTrue(addNewCardPage.isDownloadViaUinDisplayed(), "Verify if download via uin displayed");
|
||||
|
||||
@@ -37,13 +37,15 @@ public class VcDownloadAndVerifyUsingUinTest extends IosBaseTest {
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionMosipDisplayed(), "Verify if issuer description mosip displayed");
|
||||
assertTrue(addNewCardPage.isIssuerDescriptionEsignetDisplayed(), "Verify if issuer description esignet displayed");
|
||||
assertTrue(addNewCardPage.isIssuerSearchBarDisplayed(), "Verify if issuer search bar displayed");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("uin");
|
||||
addNewCardPage.sendTextInIssuerSearchBar("Download MOSIP Credentials");
|
||||
RetrieveIdPage retrieveIdPage = addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
//we will remove below line once bug is fixed https://mosip.atlassian.net/browse/INJI-712
|
||||
addNewCardPage.clickOnDownloadViaUin();
|
||||
|
||||
assertTrue(retrieveIdPage.isRetrieveIdPageLoaded(), "Verify if retrieve id page is displayed");
|
||||
assertEquals(retrieveIdPage.getRetrieveIdPageHeader(),"Download your ID");
|
||||
assertTrue(retrieveIdPage.verifyDownloadIdPageGuideMessage(), "Verify if retrieve id page guide message is displayed");
|
||||
OtpVerificationPage otpVerification = retrieveIdPage.setEnterIdTextBox(TestDataReader.readData("uin")).clickOnGenerateCardButton();
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
@@ -265,7 +267,7 @@ public class VcDownloadAndVerifyUsingUinTest extends IosBaseTest {
|
||||
|
||||
assertTrue(otpVerification.isOtpVerificationPageLoaded(), "Verify if otp verification page is displayed");
|
||||
assertTrue(otpVerification.verifyOtpVerificationTimerCompleted(), "Verify timer has stop for otp verification");
|
||||
assertTrue(otpVerification.verifyResendCodeButtonDisplayed(), "Verify if resend code is displayed");
|
||||
assertTrue(otpVerification.verifyOtpVerificationTimerDisplayedAfterClickOnResend(), "Verify if resend code is displayed");
|
||||
|
||||
otpVerification.clickOnCrossIcon();
|
||||
assertTrue(otpVerification.confirmPopupHeaderDisplayed(), "Verify if comfirm popup displayed");
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite name="All Test Suite" parallel="tests" thread-count="2">
|
||||
<suite name="All Test Suite">
|
||||
<listeners>
|
||||
<listener class-name="inji.listeners.Listeners" />
|
||||
</listeners>
|
||||
<test verbose="2" preserve-order="true" name="android">
|
||||
<parameter name="platformName" value="ANDROID" />
|
||||
<classes>
|
||||
<class name="androidTestCases.VcDownloadAndVerifyUsingUinTest">
|
||||
<methods>
|
||||
@@ -15,6 +14,7 @@
|
||||
<include name="downloadMultipleVcUsingDifferentUin" />
|
||||
<include name="verifyInvalidUinErrorMessage" />
|
||||
<include name="verifyOtpTimeOutAndGoBack" />
|
||||
<include name="DownloadMultipleVcAndForceStopeAndAgainInvokeApp" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.VerifyWelcomePagesTest">
|
||||
@@ -31,6 +31,7 @@
|
||||
<include name="downloadTwoVcDeleteOneUsingVid" />
|
||||
<include name="verifyInvalidVidErrorMessage" />
|
||||
<include name="downloadAndVerifyVcUsingRevokeVid" />
|
||||
<include name="DownloadMultipleVcAndForceStopeAndAgainInvokeAppViaVid" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.UnlockWithPasscodeTest">
|
||||
@@ -76,8 +77,10 @@
|
||||
<class name="androidTestCases.PinVcTest">
|
||||
<methods>
|
||||
<include name="pinVc" />
|
||||
<include name="verifyMessageAfterDenyBluetoothPopup" />
|
||||
<include name="VerifyCameraOpenAfterPinVc" />
|
||||
<include name="downloadVcViaEsignetAndPinUnpin" />
|
||||
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.ChangeLanguageTest">
|
||||
@@ -101,7 +104,7 @@
|
||||
<include name="verifyReceivedCardTabPresent" />
|
||||
</methods>
|
||||
</class>
|
||||
<!--<class name="androidTestCases.NoNetworkAndroidTest">
|
||||
<class name="androidTestCases.NoNetworkAndroidTest">
|
||||
<methods>
|
||||
<include name="setupPasscodeAndDownloadCardWithoutInternet" />
|
||||
<include name="openCameraOnFlightMode" />
|
||||
@@ -118,6 +121,7 @@
|
||||
<include name="downloadVcUsingUinViaEsignetNoInternateOpenScan" />
|
||||
<include name="downloadVcInOtherLanguageViaEsignetWithoutInternet" />
|
||||
<include name="changeLanguageToTamilWithoutNetwork" />
|
||||
<include name="verifyVcIssuerListWithoutNetwork" />
|
||||
</methods>
|
||||
</class>
|
||||
<class name="androidTestCases.CredentialRegistryTest">
|
||||
@@ -133,8 +137,9 @@
|
||||
<include name="downloadAndVerifyVcInNewEnvForEsignet" />
|
||||
<include name="downloadAndVerifyVcInInvalidEnvForEsignet" />
|
||||
<include name="downloadAndVerifyVcInInvalidEnvForEsignetInFillpino" />
|
||||
<include name="downloadVcInNewEnvAndVerifyInDetailedVcViewPage" />
|
||||
</methods>
|
||||
</class>-->
|
||||
</class>
|
||||
<class name="androidTestCases.ReceiveCardTest">
|
||||
<methods>
|
||||
<include name="verifyRecivedCardAndQrCode" />
|
||||
|
||||
@@ -271,12 +271,14 @@
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Inji/Pods-Inji-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -557,4 +559,4 @@
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,12 @@ PODS:
|
||||
- ExpoModulesCore
|
||||
- Expo (49.0.16):
|
||||
- ExpoModulesCore
|
||||
- ExpoAdapterGoogleSignIn (10.1.1):
|
||||
- ExpoModulesCore
|
||||
- GoogleSignIn (~> 7.0)
|
||||
- React-Core
|
||||
- ExpoCrypto (12.6.0):
|
||||
- ExpoModulesCore
|
||||
- ExpoKeepAwake (12.3.0):
|
||||
- ExpoModulesCore
|
||||
- ExpoLocalAuthentication (13.3.0):
|
||||
@@ -53,6 +59,8 @@ PODS:
|
||||
- React-Core
|
||||
- React-RCTAppDelegate
|
||||
- ReactCommon/turbomodule/core
|
||||
- ExpoWebBrowser (12.5.0):
|
||||
- ExpoModulesCore
|
||||
- EXSplashScreen (0.22.0):
|
||||
- ExpoModulesCore
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
@@ -79,6 +87,14 @@ PODS:
|
||||
- ReactCommon/turbomodule/core (= 0.71.8)
|
||||
- fmt (6.2.1)
|
||||
- glog (0.3.5)
|
||||
- GoogleSignIn (7.0.0):
|
||||
- AppAuth (~> 1.5)
|
||||
- GTMAppAuth (< 3.0, >= 1.3)
|
||||
- GTMSessionFetcher/Core (< 4.0, >= 1.1)
|
||||
- GTMAppAuth (2.0.0):
|
||||
- AppAuth/Core (~> 1.6)
|
||||
- GTMSessionFetcher/Core (< 4.0, >= 1.5)
|
||||
- GTMSessionFetcher/Core (3.2.0)
|
||||
- GzipSwift (5.1.1)
|
||||
- hermes-engine (0.71.8):
|
||||
- hermes-engine/Pre-built (= 0.71.8)
|
||||
@@ -350,6 +366,9 @@ PODS:
|
||||
- react-native-app-auth (7.0.0):
|
||||
- AppAuth (~> 1.6)
|
||||
- React-Core
|
||||
- react-native-cloud-storage (1.2.2):
|
||||
- RCT-Folly (= 2021.07.22.00)
|
||||
- React-Core
|
||||
- react-native-location (2.5.0):
|
||||
- React
|
||||
- react-native-mmkv-storage (0.9.1):
|
||||
@@ -470,6 +489,9 @@ PODS:
|
||||
- React-Core
|
||||
- RNGestureHandler (2.9.0):
|
||||
- React-Core
|
||||
- RNGoogleSignin (10.1.1):
|
||||
- GoogleSignIn (~> 7.0)
|
||||
- React-Core
|
||||
- RNKeychain (8.0.0):
|
||||
- React-Core
|
||||
- RNLocalize (3.0.2):
|
||||
@@ -490,7 +512,7 @@ PODS:
|
||||
- RNZipArchive/Core (6.1.0):
|
||||
- React-Core
|
||||
- SSZipArchive (~> 2.2)
|
||||
- secure-keystore (0.1.5):
|
||||
- secure-keystore (0.1.6):
|
||||
- React-Core
|
||||
- SSZipArchive (2.4.3)
|
||||
- TensorFlowLiteC (2.12.0):
|
||||
@@ -527,10 +549,13 @@ DEPENDENCIES:
|
||||
- EXJSONUtils (from `../node_modules/expo-json-utils/ios`)
|
||||
- EXManifests (from `../node_modules/expo-manifests/ios`)
|
||||
- Expo (from `../node_modules/expo`)
|
||||
- "ExpoAdapterGoogleSignIn (from `../node_modules/@react-native-google-signin/google-signin/expo/ios`)"
|
||||
- ExpoCrypto (from `../node_modules/expo-crypto/ios`)
|
||||
- ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`)
|
||||
- ExpoLocalAuthentication (from `../node_modules/expo-local-authentication/ios`)
|
||||
- ExpoLocalization (from `../node_modules/expo-localization/ios`)
|
||||
- ExpoModulesCore (from `../node_modules/expo-modules-core`)
|
||||
- ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`)
|
||||
- EXSplashScreen (from `../node_modules/expo-splash-screen/ios`)
|
||||
- EXStructuredHeaders (from `../node_modules/expo-structured-headers/ios`)
|
||||
- EXUpdates (from `../node_modules/expo-updates/ios`)
|
||||
@@ -560,6 +585,7 @@ DEPENDENCIES:
|
||||
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
|
||||
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
|
||||
- react-native-app-auth (from `../node_modules/react-native-app-auth`)
|
||||
- react-native-cloud-storage (from `../node_modules/react-native-cloud-storage`)
|
||||
- react-native-location (from `../node_modules/react-native-location`)
|
||||
- react-native-mmkv-storage (from `../node_modules/react-native-mmkv-storage`)
|
||||
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
|
||||
@@ -588,6 +614,7 @@ DEPENDENCIES:
|
||||
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
|
||||
- RNFS (from `../node_modules/react-native-fs`)
|
||||
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
|
||||
- "RNGoogleSignin (from `../node_modules/@react-native-google-signin/google-signin`)"
|
||||
- RNKeychain (from `../node_modules/react-native-keychain`)
|
||||
- RNLocalize (from `../node_modules/react-native-localize`)
|
||||
- RNPermissions (from `../node_modules/react-native-permissions`)
|
||||
@@ -607,6 +634,9 @@ SPEC REPOS:
|
||||
- CatCrypto
|
||||
- CrcSwift
|
||||
- fmt
|
||||
- GoogleSignIn
|
||||
- GTMAppAuth
|
||||
- GTMSessionFetcher
|
||||
- GzipSwift
|
||||
- libevent
|
||||
- MMKV
|
||||
@@ -648,6 +678,10 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/expo-manifests/ios"
|
||||
Expo:
|
||||
:path: "../node_modules/expo"
|
||||
ExpoAdapterGoogleSignIn:
|
||||
:path: "../node_modules/@react-native-google-signin/google-signin/expo/ios"
|
||||
ExpoCrypto:
|
||||
:path: "../node_modules/expo-crypto/ios"
|
||||
ExpoKeepAwake:
|
||||
:path: "../node_modules/expo-keep-awake/ios"
|
||||
ExpoLocalAuthentication:
|
||||
@@ -656,6 +690,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/expo-localization/ios"
|
||||
ExpoModulesCore:
|
||||
:path: "../node_modules/expo-modules-core"
|
||||
ExpoWebBrowser:
|
||||
:path: "../node_modules/expo-web-browser/ios"
|
||||
EXSplashScreen:
|
||||
:path: "../node_modules/expo-splash-screen/ios"
|
||||
EXStructuredHeaders:
|
||||
@@ -710,6 +746,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/logger"
|
||||
react-native-app-auth:
|
||||
:path: "../node_modules/react-native-app-auth"
|
||||
react-native-cloud-storage:
|
||||
:path: "../node_modules/react-native-cloud-storage"
|
||||
react-native-location:
|
||||
:path: "../node_modules/react-native-location"
|
||||
react-native-mmkv-storage:
|
||||
@@ -766,6 +804,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-fs"
|
||||
RNGestureHandler:
|
||||
:path: "../node_modules/react-native-gesture-handler"
|
||||
RNGoogleSignin:
|
||||
:path: "../node_modules/@react-native-google-signin/google-signin"
|
||||
RNKeychain:
|
||||
:path: "../node_modules/react-native-keychain"
|
||||
RNLocalize:
|
||||
@@ -808,10 +848,13 @@ SPEC CHECKSUMS:
|
||||
EXJSONUtils: 6802be4282d42b97c51682468ddc1026a06f8276
|
||||
EXManifests: cf66451b11b2c2f6464917528d792759f7fd6ce0
|
||||
Expo: fcfd60c1ed6806dee5103b210335ae0c72f675ed
|
||||
ExpoAdapterGoogleSignIn: 6c55782832b7fbdc2c27dac05ef00445c103b8f3
|
||||
ExpoCrypto: 42485127a5968dda6f67ac5f2b42d3c0af31d7db
|
||||
ExpoKeepAwake: be4cbd52d9b177cde0fd66daa1913afa3161fc1d
|
||||
ExpoLocalAuthentication: 32919307c66fb3661caefa07e7811a95a7539d7b
|
||||
ExpoLocalization: f26cd431ad9ea3533c5b08c4fabd879176a794bb
|
||||
ExpoModulesCore: d9d45dcbb86a5dba2ec62253267720cb58516f75
|
||||
ExpoWebBrowser: b6e56949734089d75f758f21cfe93fad02bd828c
|
||||
EXSplashScreen: 5ed09ea490155ef603d007d9f194c9e04a4b7980
|
||||
EXStructuredHeaders: 324cc3130571d2696357fafd8be7fd9a0b5fdf6e
|
||||
EXUpdates: 8f03b362414e8f9f0998f8a6d6c9fc00f2a9d2f2
|
||||
@@ -820,6 +863,9 @@ SPEC CHECKSUMS:
|
||||
FBReactNativeSpec: 0d9a4f4de7ab614c49e98c00aedfd3bfbda33d59
|
||||
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
|
||||
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
|
||||
GoogleSignIn: b232380cf495a429b8095d3178a8d5855b42e842
|
||||
GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae
|
||||
GTMSessionFetcher: 41b9ef0b4c08a6db4b7eb51a21ae5183ec99a2c8
|
||||
GzipSwift: 893f3e48e597a1a4f62fafcb6514220fcf8287fa
|
||||
hermes-engine: 47986d26692ae75ee7a17ab049caee8864f855de
|
||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||
@@ -845,6 +891,7 @@ SPEC CHECKSUMS:
|
||||
React-jsinspector: c712f9e3bb9ba4122d6b82b4f906448b8a281580
|
||||
React-logger: 342f358b8decfbf8f272367f4eacf4b6154061be
|
||||
react-native-app-auth: 1d12b6874a24152715a381d8e9149398ce7c2c95
|
||||
react-native-cloud-storage: 3af86738f814201ddaede5ce2b01b90e6eca867b
|
||||
react-native-location: 5a40ec1cc6abf2f6d94df979f98ec76c3a415681
|
||||
react-native-mmkv-storage: cfb6854594cfdc5f7383a9e464bb025417d1721c
|
||||
react-native-netinfo: 2517ad504b3d303e90d7a431b0fcaef76d207983
|
||||
@@ -873,6 +920,7 @@ SPEC CHECKSUMS:
|
||||
RNDeviceInfo: aad3c663b25752a52bf8fce93f2354001dd185aa
|
||||
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
|
||||
RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39
|
||||
RNGoogleSignin: aac5c1ec73422109dec1da770247a1e410dcc620
|
||||
RNKeychain: 4f63aada75ebafd26f4bc2c670199461eab85d94
|
||||
RNLocalize: dbea38dcb344bf80ff18a1757b1becf11f70cae4
|
||||
RNPermissions: f1b49dd05fa9b83993cd05a9ee115247944d8f1a
|
||||
@@ -880,7 +928,7 @@ SPEC CHECKSUMS:
|
||||
RNSecureRandom: 07efbdf2cd99efe13497433668e54acd7df49fef
|
||||
RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2
|
||||
RNZipArchive: ef9451b849c45a29509bf44e65b788829ab07801
|
||||
secure-keystore: 21c03ba81520aefa99621383770ce00b3e306c72
|
||||
secure-keystore: 78bf735f42b9d19418568dadbb92712c19a5812e
|
||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||
TensorFlowLiteC: 20785a69299185a379ba9852b6625f00afd7984a
|
||||
TensorFlowLiteObjC: 9a46a29a76661c513172cfffd3bf712b11ef25c3
|
||||
@@ -890,4 +938,4 @@ SPEC CHECKSUMS:
|
||||
|
||||
PODFILE CHECKSUM: 01f58b130fa221dabb14b2d82d981ef24dcaba53
|
||||
|
||||
COCOAPODS: 1.12.1
|
||||
COCOAPODS: 1.14.2
|
||||
|
||||
@@ -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
|
||||
|
||||
116
locales/ara.json
@@ -189,24 +189,41 @@
|
||||
},
|
||||
"HelpScreen": {
|
||||
"header": "يساعد",
|
||||
"whatIsDigitalCredential?": "ما هو الاعتماد الرقمي؟",
|
||||
"here": " هنا. ",
|
||||
"whatIsaDigitalCredential?": "ما هو الاعتماد الرقمي؟",
|
||||
"detail-1": "بيانات الاعتماد الرقمية هي النسخة الرقمية لبطاقة الهوية الفعلية الخاصة بك",
|
||||
"whatCanDoWithDigitalCredential?": "ماذا يمكننا أن نفعل ببيانات الاعتماد الرقمية؟",
|
||||
"whatCanWeDoWithDigitalCredential?": "ماذا يمكننا أن نفعل ببيانات الاعتماد الرقمية؟",
|
||||
"detail-2": "يمكنك الاستفادة من مختلف الخدمات الحكومية والخاصة باستخدام بيانات الاعتماد الرقمية الخاصة بك.",
|
||||
"howToAddCard?": "كيف تضيف بطاقة؟",
|
||||
"detail-3": "لإضافة بطاقة ، انقر فوق الزر '+' في الصفحة الرئيسية وحدد الخيار المناسب.",
|
||||
"howToRemoveCardFromWallet?": "كيف تشارك البطاقة؟",
|
||||
"detail-4": "اسحب لليسار على البطاقة> انقر فوق المزيد> إزالة من المحفظة",
|
||||
"canWeAddMultipleCards?": "هل يمكننا إضافة عدة بطاقات؟",
|
||||
"detail-3": "يمكن تنزيل المعرفات إلى محفظة إنجي المتنقلة كبيانات اعتماد يمكن التحقق منها. لمعرفة كيفية تنزيل VCs بمعرفات مختلفة، يرجى القراءة",
|
||||
"howToRemoveACardFromTheWallet?": "كيفية إزالة البطاقة من المحفظة؟",
|
||||
"detail-4a": "يمكنك الضغط على...(قائمة كرات اللحم) الموجودة على البطاقة في الصفحة الرئيسية واختيار خيار إزالة من المحفظة لإزالة البطاقة من المحفظة. لمعرفة المزيد، يرجى القراءة",
|
||||
"detail-4b": "يرجى ملاحظة أنه يمكن تنزيل نفس البطاقة مرة أخرى.",
|
||||
"canIAddMultipleCards?": "هل يمكنني إضافة بطاقات متعددة؟",
|
||||
"detail-5": "نعم ، يمكنك إضافة عدة بطاقات إلى المحفظة بالنقر فوق الزر '+' في الصفحة الرئيسية.",
|
||||
"howToShareCard?": "كيف تشارك البطاقة؟",
|
||||
"howToShareACard?": "كيف تشارك البطاقة؟",
|
||||
"detail-6": "انقر فوق الزر 'مشاركة' وقم بمسح رمز الاستجابة السريعة ضوئيًا من الطرف الطالب. بمجرد إنشاء الاتصال ، ستتم مشاركة البطاقة.",
|
||||
"howToActivateCardForOnlineLogin?": "كيف يتم تفعيل البطاقة لتسجيل الدخول عبر الإنترنت؟",
|
||||
"howToActivateACardForOnlineLogin?": "كيف يتم تفعيل البطاقة لتسجيل الدخول عبر الإنترنت؟",
|
||||
"detail-7": "بعد إضافة بطاقة إلى المحفظة بنجاح ، انقر فوق 'تعليق التنشيط لتسجيل الدخول عبر الإنترنت' على البطاقة. عند النقر فوق 'تنشيط' ، ستكون البطاقة جاهزة للاستخدام لتسجيل الدخول عبر الإنترنت.",
|
||||
"howToViewActivity?": "كيفية عرض سجلات النشاط؟",
|
||||
"howToViewActivityLogs?": "كيفية عرض سجلات النشاط؟",
|
||||
"detail-8": "في الصفحة الرئيسية ، انقر فوق 'المحفوظات' لعرض تفاصيل نشاط المستخدم.",
|
||||
"whatCanDoBiometricsChanged?": "ماذا يحدث عندما يتم تغيير المقاييس الحيوية لمخزن مفاتيح ذكري المظهر؟",
|
||||
"detail-9": "يحتوي ملف تخزين مفاتيح ذكري المظهر على معلومات مهمة مثل المفاتيح الخاصة لإثباتات الهوية. عندما تقوم بتغيير القياسات الحيوية الخاصة بك ، فإن المفاتيح القديمة لم تعد آمنة. للحفاظ على أمان الأشياء ، نقوم بإزالة إثبات الهوية الموقعة بواسطة تلك المفاتيح القديمة. يمكنك ببساطة تنزيل إثباتات هويتك مرة أخرى ، وسيتم توقيعها بأحدث المفاتيح وأكثرها أمانًا."
|
||||
"whatHappensWhenAndroidKeystoreBiometricIsChanged?": "ماذا يحدث عندما يتم تغيير المقاييس الحيوية لمخزن مفاتيح ذكري المظهر؟",
|
||||
"detail-9": "يحتوي ملف تخزين مفاتيح ذكري المظهر على معلومات مهمة مثل المفاتيح الخاصة لإثباتات الهوية. عندما تقوم بتغيير القياسات الحيوية الخاصة بك ، فإن المفاتيح القديمة لم تعد آمنة. للحفاظ على أمان الأشياء ، نقوم بإزالة إثبات الهوية الموقعة بواسطة تلك المفاتيح القديمة. يمكنك ببساطة تنزيل إثباتات هويتك مرة أخرى ، وسيتم توقيعها بأحدث المفاتيح وأكثرها أمانًا.",
|
||||
"whatIsAnId?":"ما هو المعرف؟",
|
||||
"detail-10":"الهوية هي أي وثيقة يمكن أن تثبت هوية الشخص. في سياق MOSIP، المعرفات هي مقابض رقمية أبجدية رقمية للهويات في النظام. في حين يتم تمثيل هوية الشخص كمجموعة من سمات السيرة الذاتية والبيومترية التي يمكنها تحديد هوية الشخص بشكل فريد، تتم الإشارة إلى الهوية باستخدام المعرفات.",
|
||||
"whatAreTheDifferentTypesOfId?": "ما هي أنواع مختلفة من معرف؟",
|
||||
"detail-11":"في سياق MOSIP، المعرفات المختلفة هي UIN وVID وAID. اقرأ المزيد عنهم",
|
||||
"whereCanIFindTheseIds?":"أين يمكنني أن أجد هذه المعرفات؟",
|
||||
"detail-12a": "كجزء من عملية التسجيل (التسجيل)، عند تسجيل المعلومات الديموغرافية والقياسات الحيوية للمقيم بنجاح، يتم تخصيص معرف التسجيل (AID) للمقيم. يتم أيضًا إصدار (طباعة) قسيمة إقرار تحتوي على التفاصيل التي تم التقاطها وبطاقة الهوية للمقيم كدليل على التسجيل.",
|
||||
"detail-12b": "عند المعالجة الناجحة، يتم تخصيص رقم تعريف فريد (UIN) للمقيم ويتم إرسال إشعار إلى المقيم على رقم الهاتف المسجل و/أو البريد الإلكتروني.",
|
||||
"detail-12c": "VID / Virtual ID هو معرف اسم مستعار تم تكوينه للاستخدام مرة واحدة وغير قابل للربط. نظرًا لاستخدامها في معاملات المصادقة، يجب أن تكون هذه المعرفات معروفة للمستخدم فقط أو يتم إنشاؤها بمشاركته.",
|
||||
"whyDoesMyVcSayActivationIsPending?":"لماذا يقول VC الخاص بي أن التنشيط معلق؟",
|
||||
"detail-13": "بمجرد تنزيل عملة VC إلى محفظتك، فهي غير مرتبطة بعد بهوية المستخدم ولهذا السبب يقول VC الخاص بك أن التنشيط معلق. يعد ربط عملة VC الخاصة بك بمحفظتك (باستخدام رمز المرور أو القياسات الحيوية) أمرًا ضروريًا لضمان أعلى مستوى من الأمان. لتفعيل VC الخاص بك، يرجى اتباع الخطوات",
|
||||
"whatDoYouMeanByActivatedForOnlineLogin?": "ماذا تقصد بتفعيل تسجيل الدخول عبر الإنترنت؟",
|
||||
"detail-14a": "1. بمجرد ربط VC بالمحفظة بنجاح، يمكنك أن ترى أنه تم تنشيطه لتسجيل الدخول عبر الإنترنت مما يعني أنه يمكن الآن استخدام VC هذا في عملية تسجيل الدخول QR. لمعرفة المزيد حول تسجيل الدخول باستخدام رمز الاستجابة السريعة، يرجى القراءة",
|
||||
"detail-14b": "2. يجب أن تكون الأسئلة والأجوبة قابلة للقراءة والفهم حتى عندما يقوم المستخدم بتغيير اللغة في تطبيق INJI.",
|
||||
"whatIsAVerifiableCredential?": "ما هي بيانات الاعتماد التي يمكن التحقق منها؟",
|
||||
"detail-15": "بيانات الاعتماد التي يمكن التحقق منها عبارة عن معلومات موقعة رقميًا تمثل بيانًا أدلى به المُصدر حول موضوع ما ويتضمن عادةً تفاصيل ديموغرافية. تعتبر شركات رأس المال الاستثماري آمنة وجديرة بالثقة في مختلف التفاعلات عبر الإنترنت."
|
||||
},
|
||||
"AddVcModal": {
|
||||
"requestingCredential": "جارٍ طلب بيانات الاعتماد...",
|
||||
@@ -322,14 +339,16 @@
|
||||
}
|
||||
},
|
||||
"OnboardingOverlay": {
|
||||
"stepOneTitle": "مشاركة آمنة!",
|
||||
"stepOneText": "احتفظ ببيانات الاعتماد الرقمية الخاصة بك معك في جميع الأوقات. يساعدك Inji على إدارتها واستخدامها بشكل فعال. للبدء ، أضف بطاقات إلى ملف التعريف الخاص بك.",
|
||||
"stepTwoTitle": "المحفظة الرقمية الموثوقة",
|
||||
"stepTwoText": "قم بتخزين وحمل جميع بطاقاتك المهمة في محفظة واحدة موثوق بها.",
|
||||
"stepThreeTitle": "مشاركة آمنة",
|
||||
"stepThreeText": "شارك بطاقاتك بأمان وبطريقة خالية من المتاعب واستفد من الخدمات المتنوعة.",
|
||||
"stepFourTitle": "مصادقة خالية من المتاعب",
|
||||
"stepFourText": "قم بمصادقة نفسك بسهولة باستخدام بيانات الاعتماد الرقمية المخزنة.",
|
||||
"stepOneTitle": "مرحباً!",
|
||||
"stepOneText": "احتفظ ببيانات اعتمادك الرقمية معك في جميع الأوقات. ",
|
||||
"stepTwoTitle": "المشاركة الآمنة",
|
||||
"stepTwoText": "شارك بطاقاتك بأمان وبطريقة خالية من المتاعب واستفد من الخدمات المتنوعة.",
|
||||
"stepThreeTitle": "المحفظة الرقمية الموثوقة",
|
||||
"stepThreeText": "قم بتخزين وحمل جميع بطاقاتك المهمة في محفظة واحدة موثوقة.",
|
||||
"stepFourTitle": "الوصول السريع",
|
||||
"stepFourText": "قم بالمصادقة على نفسك بسهولة باستخدام بيانات الاعتماد الرقمية المخزنة.",
|
||||
"stepFiveTitle": "نسخ إحتياطي للبيانات",
|
||||
"stepFiveText": "قم بحماية بياناتك بسهولة باستخدام النسخة الاحتياطية لدينا",
|
||||
"getStarted": "البدء",
|
||||
"goBack": "عُد",
|
||||
"back": "خلف",
|
||||
@@ -579,6 +598,63 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"DataBackupScreen": {
|
||||
"dataBackupAndRestore": "اسنرجاع البيانات",
|
||||
"new": "جديد",
|
||||
"loadingTitle": "جارٍ تحميل الإعداد",
|
||||
"loadingSubtitle": "تحميل...",
|
||||
"errors": {
|
||||
"permissionDenied": {
|
||||
"title": "تم رفض الإذن!",
|
||||
"message": "لقد لاحظنا أنك قمت بإلغاء إنشاء إعدادات النسخ الاحتياطي للبيانات. نوصي بشدة بإعادة النظر في إعدادات النسخ الاحتياطي للبيانات لضمان توفر البيانات الخاصة بك.",
|
||||
"helpText": "انقر فوق \"تكوين الإعدادات\" لإعداد النسخ الاحتياطي للبيانات الآن، أو \"إلغاء\" للعودة إلى شاشة الإعدادات."
|
||||
},
|
||||
"noInternetConnection": {
|
||||
"title": "لا يوجد اتصال بالإنترنت",
|
||||
"message": "الرجاء التحقق من اتصالك وإعادة المحاولة"
|
||||
}
|
||||
}
|
||||
},
|
||||
"BackupAndRestoreBanner": {
|
||||
"backupSuccessful": "تمت عملية النسخ الاحتياطي الخاصة بك بنجاح!",
|
||||
"backupFailure": {
|
||||
"networkError": "بسبب <الاتصال غير المستقر>، لم نتمكن من إجراء النسخ الاحتياطي للبيانات. الرجاء معاودة المحاولة في وقت لاحق.",
|
||||
"technicalError": "بسبب خطأ فني، لم نتمكن من إجراء النسخ الاحتياطي للبيانات. الرجاء معاودة المحاولة في وقت لاحق.",
|
||||
"noDataForBackup": "عذرًا، ولكن لا توجد بيانات متاحة لإجراء نسخ احتياطي في الوقت الحالي.",
|
||||
"storageLimitReached": "يتعذر علينا إكمال عملية النسخ الاحتياطي نظرًا لعدم توفر مساحة تخزين كافية على جهازك. يرجى تحرير مساحة عن طريق حذف الملفات أو التطبيقات غير الضرورية، ثم حاول مرة أخرى."
|
||||
},
|
||||
"restoreSuccessful": "تمت عملية الاستعادة بنجاح!",
|
||||
"restoreFailure": {
|
||||
"networkError": "بسبب الاتصال غير المستقر، لم نتمكن من استعادة البيانات. الرجاء معاودة المحاولة في وقت لاحق.",
|
||||
"technicalError": "بسبب خطأ فني، لم نتمكن من استعادة البيانات. الرجاء معاودة المحاولة في وقت لاحق."
|
||||
}
|
||||
},
|
||||
"AccountSelection": {
|
||||
"backupProcessInfo": "أنت على بعد خطوات قليلة من إجراء نسخ احتياطي لبياناتك",
|
||||
"cloudInfo": "To initiate the data backup, please tap on the “Proceed” button to link your Google Drive with Inji.",
|
||||
"googleDriveTitle": "جوجل درايف",
|
||||
"loadingSubtitle": "تحميل...",
|
||||
"proceed": "يتابع",
|
||||
"goBack": "عُد",
|
||||
"associatedAccount": "الحساب المرتبط"
|
||||
},
|
||||
"BackupAndRestore": {
|
||||
"title": "اسنرجاع البيانات",
|
||||
"backupProgressState": "جاري النسخ الاحتياطي...",
|
||||
"lastBackupDetails": "تفاصيل النسخ الاحتياطي الأخير",
|
||||
"backupInProgress": "لا يزال بإمكانك استخدام التطبيق أثناء إجراء النسخ الاحتياطي للبيانات. سيؤدي إغلاق التطبيق إلى إنهاء عملية النسخ الاحتياطي للبيانات.",
|
||||
"noBackup": "قم بعمل نسخة احتياطية لبياناتك على Google Drive. يمكنك استعادتها عند إعادة تثبيت INJI.",
|
||||
"storage": "سيتم تخزين النسخة الاحتياطية في Google Drive المرتبط بحساب Gmail الذي اخترته.",
|
||||
"backup": "دعم",
|
||||
"size": "مقاس:",
|
||||
"restore": "يعيد",
|
||||
"restoreInProgress": "نحن نستعيد بياناتك، يرجى عدم إغلاق التطبيق. قد يستغرق هذا ما يصل إلى <X> دقيقة بناءً على بياناتك.",
|
||||
"restoreInfo": "استعادة بياناتك من Google Drive",
|
||||
"driveSettings": "إعدادات جوجل درايف",
|
||||
"successBanner": "تمت عملية النسخ الاحتياطي الخاصة بك بنجاح!",
|
||||
"backupFailed": "فشل النسخ الاحتياطي",
|
||||
"ok": "نعم"
|
||||
},
|
||||
"WelcomeScreen": {
|
||||
"title": "حل هوية مفتوحة المصدر",
|
||||
"unlockApplication": "فتح التطبيق",
|
||||
@@ -625,4 +701,4 @@
|
||||
"description": "يرجى استخدام بصمة الإصبع لفتح التطبيق"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
112
locales/en.json
@@ -190,24 +190,41 @@
|
||||
},
|
||||
"HelpScreen": {
|
||||
"header": "Help",
|
||||
"whatIsDigitalCredential?": "What is a digital credential?",
|
||||
"here":" here. ",
|
||||
"whatIsaDigitalCredential?": "What is a digital credential?",
|
||||
"detail-1": "A digital credential is the digital version of your physical Identity card",
|
||||
"whatCanDoWithDigitalCredential?": "What can we do with digital credentials?",
|
||||
"whatCanWeDoWithDigitalCredential?": "What can we do with digital credentials?",
|
||||
"detail-2": "You can avail various Government and private services using your digital credentials.",
|
||||
"howToAddCard?": "How to add a card?",
|
||||
"detail-3": "To add a card, click on '+' button on the Home page and select the appropriate option.",
|
||||
"howToRemoveCardFromWallet?": "How to share a card?",
|
||||
"detail-4": "Swipe left on the card > click on More > Remove from Wallet",
|
||||
"canWeAddMultipleCards?": "Can we add multiple cards?",
|
||||
"detail-3": "IDs can be downloaded to INJI Mobile Wallet as Verifiable Credentials. To know how to download VCs with various IDs please read",
|
||||
"howToRemoveACardFromTheWallet?": "How to remove a card from the wallet?",
|
||||
"detail-4a": "You can click on ...(meatballs menu) on a card in the Home page and choose Remove from Wallet option to remove a card from the wallet. To know more, please read",
|
||||
"detail-4b": " Please note that, the same card can be downloaded again.",
|
||||
"canIAddMultipleCards?": "Can I add multiple cards?",
|
||||
"detail-5": "Yes, you can add multiple cards to the wallet by clicking on '+' button on the Home page.",
|
||||
"howToShareCard?": "How to share a card?",
|
||||
"howToShareACard?": "How to share a card?",
|
||||
"detail-6": "Click on 'Share' button and scan the QR code from the requesting party. Once the connection is established, the card will be shared.",
|
||||
"howToActivateCardForOnlineLogin?": "How to activate a card for online login?",
|
||||
"howToActivateACardForOnlineLogin?": "How to activate a card for online login?",
|
||||
"detail-7": "After successfully adding a card to the wallet, click on 'Activation pending for Online login' on the card. On clicking on 'Activate', the card will be ready to be used for online login.",
|
||||
"howToViewActivity?": "How to view activity logs?",
|
||||
"howToViewActivityLogs?": "How to view activity logs?",
|
||||
"detail-8": "On the Home page, click on 'History' to view the details of the user's activitie.",
|
||||
"whatCanDoBiometricsChanged?": "What happens when Android keystore biometric is changed?",
|
||||
"detail-9": "The Android keystore holds important information like private keys for identity proofs. When you change your biometrics, old keys are no longer safe. To keep things secure, we remove identity proofs signed by those old keys. You can simply download your identity proofs again, and they will be signed with the latest, safer keys."
|
||||
"whatHappensWhenAndroidKeystoreBiometricIsChanged?": "What happens when Android keystore biometric is changed?",
|
||||
"detail-9": "The Android keystore holds important information like private keys for identity proofs. When you change your biometrics, old keys are no longer safe. To keep things secure, we remove identity proofs signed by those old keys. You can simply download your identity proofs again, and they will be signed with the latest, safer keys.",
|
||||
"whatIsAnId?":"What is an ID?",
|
||||
"detail-10":"An ID is any document that can prove a person’s identity. In the context of MOSIP, identifiers are alphanumeric digital handles for identities in the system. While a person's identity is represented as a collection of biographic and biometric attributes that can uniquely identify the person, the identity is referred to using identifiers.",
|
||||
"whatAreTheDifferentTypesOfId?": "What are the different types of ID?",
|
||||
"detail-11":"In the context of MOSIP, different IDs are UIN, VID, and AID. Read more about them",
|
||||
"whereCanIFindTheseIds?":"Where can I find these IDs?",
|
||||
"detail-12a": "As part of the enrolment (registration) process, upon registering the demographic information and biometrics of the resident successfully, a registration ID (AID) is allocated to the resident. An acknowledgment slip containing the captured details and the AID is also issued (printed) to the resident as proof of registration.",
|
||||
"detail-12b": "Upon successful processing, a Unique Identification Number (UIN) is allocated to the resident and a notification is sent to the resident on the registered phone number and/or email.",
|
||||
"detail-12c": "VID / Virtual ID is an alias identifier configured for one-time usage and is not linkable. Since these are used for authentication transactions, such identifiers are to be known to the user only or generated with their participation.",
|
||||
"whyDoesMyVcSayActivationIsPending?":"Why does my VC say Activation is pending?",
|
||||
"detail-13": "Once VC is downloaded to your wallet, it is not yet bound with the user’s identity which is why your VC says Activation Pending. Binding your VC to your wallet (with your passcode or biometrics) is crucial to ensure the highest level of security. To activate your VC, please follow the steps",
|
||||
"whatDoYouMeanByActivatedForOnlineLogin?": "What do you mean by Activated for Online login?",
|
||||
"detail-14a": "1. Once the VC is successfully binded with the wallet, you can see that it is Activated for Online login which means this VC can now be used for the QR login process. To know more about QR code login, please read",
|
||||
"detail-14b": "2. The Q&A should be readable and understandable even when the user changes the language in the INJI app.",
|
||||
"whatIsAVerifiableCredential?": "What is a Verifiable Credential?",
|
||||
"detail-15": "A Verifiable Credential is a digitally signed piece of information that represents a statement made by the issuer about a subject and typically includes demographic details. VCs are secure and trustworthy in various online interactions."
|
||||
},
|
||||
"AddVcModal": {
|
||||
"requestingCredential": "Requesting credential...",
|
||||
@@ -325,12 +342,14 @@
|
||||
"OnboardingOverlay": {
|
||||
"stepOneTitle": "Welcome!",
|
||||
"stepOneText": "Keep your digital credential with you at all times. Inji helps you manage and use them effectively. To get started, add cards to your profile.",
|
||||
"stepTwoTitle": "Trusted Digital Wallet",
|
||||
"stepTwoText": "Store and carry all your important cards in a single trusted wallet.",
|
||||
"stepThreeTitle": "Secure Sharing",
|
||||
"stepThreeText": "Share your cards securely in a hassle free way and avail various services.",
|
||||
"stepFourTitle": "Hassle free authentication",
|
||||
"stepTwoTitle": "Secure Sharing",
|
||||
"stepTwoText": "Share your cards securely in a hassle free way and avail various services.",
|
||||
"stepThreeTitle": "Trusted Digital Wallet",
|
||||
"stepThreeText": "Store and carry all your important cards in a single trusted wallet.",
|
||||
"stepFourTitle": "Quick Access",
|
||||
"stepFourText": "Authenticate yourself with ease using the stored digital credential.",
|
||||
"stepFiveTitle": "Backup Data",
|
||||
"stepFiveText": "Protect your data with ease using our Backup & Restore feature. Safely store your VCs against loss or accidents by creating regular backups and recover it effortlessly whenever needed for seamless continuity.",
|
||||
"getStarted": "Get Started",
|
||||
"goBack": "Go Back",
|
||||
"back": "Back",
|
||||
@@ -583,6 +602,63 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"DataBackupScreen": {
|
||||
"dataBackupAndRestore": "Backup & Restore",
|
||||
"new": "New",
|
||||
"loadingTitle": "Loading setting up",
|
||||
"loadingSubtitle": "Loading...",
|
||||
"errors": {
|
||||
"permissionDenied": {
|
||||
"title": "Permission Denied!",
|
||||
"message": "We noticed that you've cancelled the creation of data backup settings. We strongly recommend revisiting the data backup settings to ensure your data availability. ",
|
||||
"helpText": "Click “Configure Settings” to set up data backup now, or “Cancel” to go back to settings screen."
|
||||
},
|
||||
"noInternetConnection": {
|
||||
"title": "No internet connection",
|
||||
"message": "Please check your connection and retry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"BackupAndRestoreBanner": {
|
||||
"backupSuccessful": "Your backup was successful!",
|
||||
"backupFailure": {
|
||||
"networkError": "Due to Unstable Connection, we were unable to perform data backup. Please try again later.",
|
||||
"technicalError": "Due to Technical Error, we were unable to perform data backup. Please try again later.",
|
||||
"noDataForBackup": "We're sorry, but there is no data available to back up at the moment.",
|
||||
"storageLimitReached": "We're unable to complete the backup process due to insufficient storage space on your device. Please free up space by deleting unnecessary files or apps, and try again."
|
||||
},
|
||||
"restoreSuccessful": "Your restore was successful!",
|
||||
"restoreFailure": {
|
||||
"networkError": "Due to Unstable Connection, we were unable to restore data. Please try again later.",
|
||||
"technicalError": "Due to Technical Error, we were unable to restore the data. Please try again later."
|
||||
}
|
||||
},
|
||||
"AccountSelection": {
|
||||
"backupProcessInfo": "You’re just a few steps away from backing up your data",
|
||||
"cloudInfo": "To initiate the data backup, please tap on the “Proceed” button to link your Google Drive with Inji.",
|
||||
"googleDriveTitle": "Google Drive",
|
||||
"loadingSubtitle": "Loading...",
|
||||
"proceed": "Proceed",
|
||||
"goBack": "Go Back",
|
||||
"associatedAccount": "Associated account"
|
||||
},
|
||||
"BackupAndRestore": {
|
||||
"title": "Backup & Restore",
|
||||
"backupProgressState": "Backup in progress...",
|
||||
"lastBackupDetails": "Last Backup Details",
|
||||
"backupInProgress": "You can still use the application while data backup is in progress. Closing the app will terminate the data backup process.",
|
||||
"noBackup": "Backup your Data to Google Drive. You can restore them when you reinstall INJI.",
|
||||
"storage": "The backup will be stored in the Google Drive associated to your chosen gmail account.",
|
||||
"backup": "Backup",
|
||||
"size": "Size: ",
|
||||
"restore": "Restore",
|
||||
"restoreInProgress": "We’re restoring your data, please do not close the application. This might take upto <X> minutes based on your data.",
|
||||
"restoreInfo": "Restore your data from Google Drive",
|
||||
"driveSettings": "Google Drive Settings",
|
||||
"successBanner": "Your backup was successful!",
|
||||
"backupFailed": "Backup Failed",
|
||||
"ok": "OK"
|
||||
},
|
||||
"WelcomeScreen": {
|
||||
"title": "Open Source Identity Solution",
|
||||
"unlockApplication": "Unlock Application",
|
||||
@@ -610,6 +686,8 @@
|
||||
"dismiss": "Dismiss",
|
||||
"editLabel": "Edit {{label}}",
|
||||
"tryAgain": "Try again",
|
||||
"goBack": "Go Back",
|
||||
"configureSettings": "Configure Settings",
|
||||
"ignore": "Ignore",
|
||||
"camera": {
|
||||
"errors": {
|
||||
@@ -629,4 +707,4 @@
|
||||
"description": "Please use fingerprint to unlock the app"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
116
locales/fil.json
@@ -188,24 +188,41 @@
|
||||
},
|
||||
"HelpScreen": {
|
||||
"header": "Tulong",
|
||||
"whatIsDigitalCredential?": "Ano ang isang digital na kredensyal?",
|
||||
"here": " dito. ",
|
||||
"whatIsaDigitalCredential?": "Ano ang isang digital na kredensyal?",
|
||||
"detail-1": "Ang digital na kredensyal ay ang digital na bersyon ng iyong pisikal na Identity card",
|
||||
"whatCanDoWithDigitalCredential?": "Ano ang maaari nating gawin sa mga digital na kredensyal?",
|
||||
"whatCanWeDoWithDigitalCredential?": "Ano ang maaari nating gawin sa mga digital na kredensyal?",
|
||||
"detail-2": "Maaari kang makakuha ng iba't ibang serbisyo ng Pamahalaan at pribadong gamit ang iyong mga digital na kredensyal.",
|
||||
"howToAddCard?": "Paano magdagdag ng card?",
|
||||
"detail-3": "Upang magdagdag ng card, mag-click sa '+' na button sa Home page at piliin ang naaangkop na opsyon.",
|
||||
"howToRemoveCardFromWallet?": "Paano magbahagi ng card?",
|
||||
"detail-4": "Mag-swipe pakaliwa sa card > mag-click sa Higit pa > Alisin sa Wallet",
|
||||
"canWeAddMultipleCards?": "Maaari ba tayong magdagdag ng maraming card?",
|
||||
"detail-3": "Maaaring ma-download ang mga ID sa INJI Mobile Wallet bilang Mga Nabe-verify na Kredensyal. Para malaman kung paano mag-download ng mga VC na may iba't ibang ID mangyaring basahin ",
|
||||
"howToRemoveACardFromTheWallet?": "Paano mag-alis ng card mula sa wallet?",
|
||||
"detail-4a": "Maaari kang mag-click sa ...(meatballs menu) sa isang card sa Home page at piliin ang Remove from Wallet na opsyon para mag-alis ng card mula sa wallet. Upang malaman ang higit pa, mangyaring basahin",
|
||||
"detail-4b": "Pakitandaan na, maaaring i-download muli ang parehong card.",
|
||||
"canIAddMultipleCards?": "Maaari ba akong magdagdag ng maraming card?",
|
||||
"detail-5": "Oo, maaari kang magdagdag ng maraming card sa wallet sa pamamagitan ng pag-click sa '+' na button sa Home page.",
|
||||
"howToShareCard?": "Paano magbahagi ng card?",
|
||||
"howToShareACard?": "Paano magbahagi ng card?",
|
||||
"detail-6": "Mag-click sa pindutang 'Ibahagi' at i-scan ang QR code mula sa humihiling na partido. Kapag naitatag na ang koneksyon, ibabahagi ang card.",
|
||||
"howToActivateCardForOnlineLogin?": "Paano i-activate ang isang card para sa online na pag-login?",
|
||||
"howToActivateACardForOnlineLogin?": "Paano i-activate ang isang card para sa online na pag-login?",
|
||||
"detail-7": "Matapos matagumpay na magdagdag ng card sa wallet, mag-click sa 'Activation pending for Online login' sa card. Sa pag-click sa 'I-activate', ang card ay handa nang gamitin para sa online na pag-login.",
|
||||
"howToViewActivity?": "Paano tingnan ang mga log ng aktibidad?",
|
||||
"howToViewActivityLogs?": "Paano tingnan ang mga log ng aktibidad?",
|
||||
"detail-8": "Sa Home page, mag-click sa 'Kasaysayan' upang tingnan ang mga detalye ng aktibidad ng user.",
|
||||
"whatCanDoBiometricsChanged?": "Ano ang mangyayari kapag binago ang biometric ng Android keystore?",
|
||||
"detail-9": "Ang Android keystore ay nagtataglay ng mahalagang impormasyon tulad ng mga pribadong key para sa mga patunay ng pagkakakilanlan. Kapag binago mo ang iyong biometrics, hindi na ligtas ang mga lumang key. Upang panatilihing secure ang mga bagay, inaalis namin ang mga patunay ng pagkakakilanlan na nilagdaan ng mga lumang key na iyon. Maaari mo lamang i-download muli ang iyong mga patunay ng pagkakakilanlan, at lalagdaan ang mga ito gamit ang pinakabago, mas ligtas na mga susi."
|
||||
"whatHappensWhenAndroidKeystoreBiometricIsChanged?": "Ano ang mangyayari kapag binago ang biometric ng Android keystore?",
|
||||
"detail-9": "Ang Android keystore ay nagtataglay ng mahalagang impormasyon tulad ng mga pribadong key para sa mga patunay ng pagkakakilanlan. Kapag binago mo ang iyong biometrics, hindi na ligtas ang mga lumang key. Upang panatilihing secure ang mga bagay, inaalis namin ang mga patunay ng pagkakakilanlan na nilagdaan ng mga lumang key na iyon. Maaari mo lamang i-download muli ang iyong mga patunay ng pagkakakilanlan, at lalagdaan ang mga ito gamit ang pinakabago, mas ligtas na mga susi.",
|
||||
"whatIsAnId?":"Ano ang ID?",
|
||||
"detail-10":"Ang ID ay anumang dokumento na maaaring patunayan ang pagkakakilanlan ng isang tao. Sa konteksto ng MOSIP, ang mga identifier ay alphanumeric digital handle para sa mga pagkakakilanlan sa system. Habang ang pagkakakilanlan ng isang tao ay kinakatawan bilang isang koleksyon ng mga biographic at biometric na katangian na maaaring natatanging makilala ang tao, ang pagkakakilanlan ay tinutukoy gamit ang mga identifier.",
|
||||
"whatAreTheDifferentTypesOfId?": "Ano ang iba't ibang uri ng ID?",
|
||||
"detail-11":"Sa konteksto ng MOSIP, ang iba't ibang ID ay UIN, VID, at AID. Magbasa pa tungkol sa kanila",
|
||||
"whereCanIFindTheseIds?":"Saan ko mahahanap ang mga ID na ito?",
|
||||
"detail-12a": "Bilang bahagi ng proseso ng pagpapatala (pagpaparehistro), kapag matagumpay na nairehistro ang demograpikong impormasyon at biometrics ng residente, isang registration ID (AID) ang inilalaan sa residente. Ang isang acknowledgement slip na naglalaman ng mga nakuhang detalye at ang AID ay ibinibigay din (naka-print) sa residente bilang patunay ng pagpaparehistro.",
|
||||
"detail-12b": "Sa matagumpay na pagproseso, ang isang Unique Identification Number (UIN) ay ilalaan sa residente at isang abiso ang ipapadala sa residente sa nakarehistrong numero ng telepono at/o email.",
|
||||
"detail-12c": "Ang VID / Virtual ID ay isang alias identifier na na-configure para sa isang beses na paggamit at hindi nali-link. Dahil ginagamit ang mga ito para sa mga transaksyon sa pagpapatotoo, ang mga naturang identifier ay dapat malaman lamang ng user o bubuo sa kanilang paglahok.",
|
||||
"whyDoesMyVcSayActivationIsPending?":"Bakit sinasabi ng aking VC na nakabinbin ang Activation?",
|
||||
"detail-13": "Kapag na-download na ang VC sa iyong wallet, hindi pa ito nakatali sa pagkakakilanlan ng user kung kaya't sinasabi ng iyong VC na Nakabinbin ang Aktibidad. Ang pagbubuklod ng iyong VC sa iyong wallet (kasama ang iyong passcode o biometrics) ay napakahalaga upang matiyak ang pinakamataas na antas ng seguridad. Upang i-activate ang iyong VC, mangyaring sundin ang mga hakbang",
|
||||
"whatDoYouMeanByActivatedForOnlineLogin?": "Ano ang ibig mong sabihin sa Activated for Online login?",
|
||||
"detail-14a": "1. Kapag matagumpay na na-binded ang VC sa wallet, makikita mo na ito ay Activated for Online login which means itong VC ay magagamit na para sa QR login process. Upang malaman ang higit pa tungkol sa pag-login sa QR code, mangyaring basahin",
|
||||
"detail-14b": "2. Ang Q&A ay dapat na nababasa at naiintindihan kahit na binago ng user ang wika sa INJI app.",
|
||||
"whatIsAVerifiableCredential?": "Ano ang isang Napapatunayang Kredensyal?",
|
||||
"detail-15": "Ang Nabe-verify na Kredensyal ay isang digitally sign na piraso ng impormasyon na kumakatawan sa isang pahayag na ginawa ng nagbigay tungkol sa isang paksa at kadalasang kinabibilangan ng mga detalye ng demograpiko. Ang mga VC ay ligtas at mapagkakatiwalaan sa iba't ibang online na pakikipag-ugnayan."
|
||||
},
|
||||
"AddVcModal": {
|
||||
"requestingCredential": "Humihiling ng kredensyal...",
|
||||
@@ -321,16 +338,18 @@
|
||||
}
|
||||
},
|
||||
"OnboardingOverlay": {
|
||||
"stepOneTitle": "Ligtas na Pagbabahagi!",
|
||||
"stepOneText": "Ibahagi at tumanggap ng card nang mabilis gamit ang camera ng iyong telepono upang mag-scan ng mga QR code",
|
||||
"stepTwoTitle": "Pinagkakatiwalaang Digital Wallet",
|
||||
"stepTwoText": "Panatilihin ang iyong digital na kredensyal sa iyo sa lahat ng oras",
|
||||
"stepThreeTitle": "Mabilis na pagpasok",
|
||||
"stepThreeText": "Kapag nabuo na, ang card ay ligtas na iniimbak sa iyong mobile.",
|
||||
"stepFourTitle": "Walang problema sa pagpapatotoo",
|
||||
"stepOneTitle": "Maligayang pagdating!",
|
||||
"stepOneText": "Panatilihin ang iyong digital na kredensyal sa iyo sa lahat ng oras. ",
|
||||
"stepTwoTitle": "Ligtas na Pagbabahagi",
|
||||
"stepTwoText": "Ibahagi ang iyong mga card nang ligtas sa isang walang problemang paraan at mag-avail ng iba't ibang serbisyo.",
|
||||
"stepThreeTitle": "Pinagkakatiwalaang Digital Wallet",
|
||||
"stepThreeText": "Itabi at dalhin ang lahat ng iyong mahahalagang card sa isang pinagkakatiwalaang wallet.",
|
||||
"stepFourTitle": "Mabilis na pagpasok",
|
||||
"stepFourText": "I-authenticate ang iyong sarili nang madali gamit ang nakaimbak na digital na kredensyal.",
|
||||
"stepFiveTitle": "Backup na Data",
|
||||
"stepFiveText": "Protektahan ang iyong data nang madali gamit ang aming Backup",
|
||||
"getStarted": "Magsimula",
|
||||
"goBack": "bumalik ka",
|
||||
"goBack": "Bumalik ka",
|
||||
"back": "Bumalik",
|
||||
"skip": "Laktawan",
|
||||
"next": "Susunod"
|
||||
@@ -582,6 +601,63 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"DataBackupScreen": {
|
||||
"dataBackupAndRestore": "I-backup at I-restore",
|
||||
"new": "Bago",
|
||||
"loadingTitle": "Nilo-load ang pag-set up",
|
||||
"loadingSubtitle": "Naglo-load...",
|
||||
"errors": {
|
||||
"permissionDenied": {
|
||||
"title": "Tinanggihan ang Pahintulot!",
|
||||
"message": "Napansin namin na kinansela mo ang paggawa ng mga setting ng backup ng data. Lubos naming inirerekumenda na muling bisitahin ang mga setting ng pag-back up ng data upang matiyak ang availability ng iyong data.",
|
||||
"helpText": "I-click ang \"I-configure ang Mga Setting\" upang i-set up ang pag-backup ng data ngayon, o \"Kanselahin\" upang bumalik sa screen ng mga setting."
|
||||
},
|
||||
"noInternetConnection": {
|
||||
"title": "Pakisuri ang iyong koneksyon at subukang muli",
|
||||
"message": "Mangyaring kumonekta sa internet at subukang muli."
|
||||
}
|
||||
}
|
||||
},
|
||||
"BackupAndRestoreBanner": {
|
||||
"backupSuccessful": "Ang iyong backup ay matagumpay!",
|
||||
"backupFailure": {
|
||||
"networkError": "Dahil sa Hindi Matatag na Koneksyon, hindi namin nagawang isagawa ang pag-backup ng data. Pakisubukang muli sa ibang pagkakataon.",
|
||||
"technicalError": "Dahil sa Technical Error, hindi namin nagawang magsagawa ng pag-backup ng data. Subukang muli mamaya.",
|
||||
"noDataForBackup": "Ikinalulungkot namin, ngunit walang data na magagamit upang i-back up sa ngayon.",
|
||||
"storageLimitReached":"Hindi namin makumpleto ang proseso ng pag-backup dahil sa hindi sapat na espasyo sa storage sa iyong device. Mangyaring magbakante ng espasyo sa pamamagitan ng pagtanggal ng mga hindi kinakailangang file o app, at subukang muli."
|
||||
},
|
||||
"restoreSuccessful": "Ang iyong pag-restore ay matagumpay!",
|
||||
"restoreFailure": {
|
||||
"networkError": "Dahil sa Hindi Matatag na Koneksyon, hindi namin naibalik ang data. Subukang muli mamaya.",
|
||||
"technicalError": "Dahil sa Technical Error, hindi namin naibalik ang data. Subukang muli mamaya."
|
||||
}
|
||||
},
|
||||
"AccountSelection": {
|
||||
"backupProcessInfo": "Ilang hakbang ka na lang mula sa pag-back up ng iyong data",
|
||||
"cloudInfo": "Upang simulan ang pag-backup ng data, mangyaring mag-tap sa button na `Magpatuloy` upang i-link ang iyong Google Drive sa Inji.",
|
||||
"googleDriveTitle": "Google Drive",
|
||||
"loadingSubtitle": "Naglo-load...",
|
||||
"proceed": "Magpatuloy",
|
||||
"goBack": "Bumalik ka",
|
||||
"associatedAccount": "Kaugnay na account"
|
||||
},
|
||||
"BackupAndRestore": {
|
||||
"title": "Backup at Restore",
|
||||
"backupProgressState": "Isinasagawa ang pag-backup...",
|
||||
"lastBackupDetails": "Mga Detalye ng Huling Backup",
|
||||
"backupInProgress": "Maaari mo pa ring gamitin ang application habang isinasagawa ang pag-backup ng data. Ang pagsasara ng app ay magwawakas sa proseso ng pag-backup ng data.",
|
||||
"noBackup": "I-backup ang iyong Data sa Google Drive. Maaari mong ibalik ang mga ito kapag na-install mong muli ang INJI.",
|
||||
"storage": "Ang backup ay maiimbak sa Google Drive na nauugnay sa iyong napiling gmail account.",
|
||||
"backup": "Backup",
|
||||
"size": "Size: ",
|
||||
"restore": "Ibalik",
|
||||
"restoreInProgress": "Ibinabalik namin ang iyong data, mangyaring huwag isara ang application. Maaaring tumagal ito ng hanggang <X> minuto batay sa iyong data.",
|
||||
"restoreInfo": "Ibalik ang iyong data mula sa Google Drive",
|
||||
"driveSettings": "Mga Setting ng Google Drive",
|
||||
"successBanner": "Ang iyong backup ay matagumpay!",
|
||||
"backupFailed": "Nabigo ang pag-backup",
|
||||
"ok": "OK"
|
||||
},
|
||||
"WelcomeScreen": {
|
||||
"title": "Open Source Identity Solution",
|
||||
"unlockApplication": "I-unlock ang Application",
|
||||
@@ -628,4 +704,4 @@
|
||||
"description": "Mangyaring gumamit ng fingerprint upang i-unlock ang app"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
114
locales/hin.json
@@ -186,24 +186,41 @@
|
||||
},
|
||||
"HelpScreen": {
|
||||
"header": "मदद",
|
||||
"whatIsDigitalCredential?": "डिजिटल क्रेडेंशियल क्या है?",
|
||||
"here": " यहाँ। ",
|
||||
"whatIsaDigitalCredential?": "डिजिटल क्रेडेंशियल क्या है?",
|
||||
"detail-1": "डिजिटल क्रेडेंशियल आपके भौतिक पहचान पत्र का डिजिटल संस्करण है",
|
||||
"whatCanDoWithDigitalCredential?": "हम डिजिटल क्रेडेंशियल्स के साथ क्या कर सकते हैं?",
|
||||
"whatCanWeDoWithDigitalCredential?": "हम डिजिटल क्रेडेंशियल्स के साथ क्या कर सकते हैं?",
|
||||
"detail-2": "आप अपने डिजिटल क्रेडेंशियल्स का उपयोग करके विभिन्न सरकारी और निजी सेवाओं का लाभ उठा सकते हैं।",
|
||||
"howToAddCard?": "कार्ड कैसे जोड़ें?",
|
||||
"detail-3": "कार्ड जोड़ने के लिए होम पेज पर '+' बटन पर क्लिक करें और उचित विकल्प चुनें।",
|
||||
"howToRemoveCardFromWallet?": "कार्ड कैसे साझा करें?",
|
||||
"detail-4": "कार्ड पर बाईं ओर स्वाइप करें > अधिक > वॉलेट से निकालें पर क्लिक करें",
|
||||
"canWeAddMultipleCards?": "क्या हम अनेक कार्ड जोड़ सकते हैं?",
|
||||
"detail-3": "आईडी को INJI मोबाइल वॉलेट में सत्यापन योग्य क्रेडेंशियल के रूप में डाउनलोड किया जा सकता है। विभिन्न आईडी के साथ वीसी डाउनलोड करने का तरीका जानने के लिए कृपया पढ़ें ",
|
||||
"howToRemoveACardFromTheWallet?": "वॉलेट से कार्ड कैसे निकालें?",
|
||||
"detail-4a": "आप होम पेज में कार्ड पर ...(मीटबॉल मेनू) पर क्लिक कर सकते हैं और वॉलेट से कार्ड हटाने के लिए वॉलेट से निकालें विकल्प चुन सकते हैं। अधिक जानने के लिए कृपया पढ़ें",
|
||||
"detail-4b": "कृपया ध्यान दें कि, उसी कार्ड को दोबारा डाउनलोड किया जा सकता है।",
|
||||
"canIAddMultipleCards?": "क्या मैं एकाधिक कार्ड जोड़ सकता हूँ?",
|
||||
"detail-5": "हां, आप होम पेज पर '+' बटन पर क्लिक करके वॉलेट में कई कार्ड जोड़ सकते हैं।",
|
||||
"howToShareCard?": "कार्ड कैसे साझा करें?",
|
||||
"howToShareACard?": "कार्ड कैसे साझा करें?",
|
||||
"detail-6": "'शेयर' बटन पर क्लिक करें और अनुरोध करने वाले पक्ष से क्यूआर कोड स्कैन करें। एक बार कनेक्शन स्थापित हो जाने पर, कार्ड साझा किया जाएगा।",
|
||||
"howToActivateCardForOnlineLogin?": "ऑनलाइन लॉगिन के लिए कार्ड कैसे सक्रिय करें?",
|
||||
"howToActivateACardForOnlineLogin?": "ऑनलाइन लॉगिन के लिए कार्ड कैसे सक्रिय करें?",
|
||||
"detail-7": "वॉलेट में सफलतापूर्वक कार्ड जोड़ने के बाद, कार्ड पर 'ऑनलाइन लॉगिन के लिए सक्रियण लंबित' पर क्लिक करें। 'एक्टिवेट' पर क्लिक करने पर, कार्ड ऑनलाइन लॉगिन के लिए उपयोग के लिए तैयार हो जाएगा।",
|
||||
"howToViewActivity?": "गतिविधि लॉग कैसे देखें?",
|
||||
"howToViewActivityLogs?": "गतिविधि लॉग कैसे देखें?",
|
||||
"detail-8": "होम पेज पर, उपयोगकर्ता की गतिविधि का विवरण देखने के लिए 'इतिहास' पर क्लिक करें।",
|
||||
"whatCanDoBiometricsChanged?": "क्या होता है जब एंड्रॉइड कीस्टोर बायोमेट्रिक बदल दिया जाता है?",
|
||||
"detail-9": "एंड्रॉइड कीस्टोर में पहचान प्रमाण के लिए निजी कुंजी जैसी महत्वपूर्ण जानकारी होती है। जब आप अपना बायोमेट्रिक्स बदलते हैं, तो पुरानी चाबियाँ सुरक्षित नहीं रह जाती हैं। चीजों को सुरक्षित रखने के लिए, हम उन पुरानी चाबियों द्वारा हस्ताक्षरित पहचान प्रमाण हटा देते हैं। आप बस अपने पहचान प्रमाण दोबारा डाउनलोड कर सकते हैं, और उन पर नवीनतम, सुरक्षित कुंजी के साथ हस्ताक्षर किए जाएंगे।"
|
||||
"whatHappensWhenAndroidKeystoreBiometricIsChanged?": "क्या होता है जब एंड्रॉइड कीस्टोर बायोमेट्रिक बदल दिया जाता है?",
|
||||
"detail-9": "एंड्रॉइड कीस्टोर में पहचान प्रमाण के लिए निजी कुंजी जैसी महत्वपूर्ण जानकारी होती है। जब आप अपना बायोमेट्रिक्स बदलते हैं, तो पुरानी चाबियाँ सुरक्षित नहीं रह जाती हैं। चीजों को सुरक्षित रखने के लिए, हम उन पुरानी चाबियों द्वारा हस्ताक्षरित पहचान प्रमाण हटा देते हैं। आप बस अपने पहचान प्रमाण दोबारा डाउनलोड कर सकते हैं, और उन पर नवीनतम, सुरक्षित कुंजी के साथ हस्ताक्षर किए जाएंगे।",
|
||||
"whatIsAnId?":"आईडी क्या है?",
|
||||
"detail-10":"आईडी कोई भी दस्तावेज़ है जो किसी व्यक्ति की पहचान साबित कर सकता है। एमओएसआईपी के संदर्भ में, पहचानकर्ता सिस्टम में पहचान के लिए अल्फ़ान्यूमेरिक डिजिटल हैंडल हैं। जबकि किसी व्यक्ति की पहचान को जीवनी और बायोमेट्रिक विशेषताओं के संग्रह के रूप में दर्शाया जाता है जो विशिष्ट रूप से व्यक्ति की पहचान कर सकता है, पहचान को पहचानकर्ताओं का उपयोग करने के लिए संदर्भित किया जाता है।",
|
||||
"whatAreTheDifferentTypesOfId?": "आईडी के विभिन्न प्रकार क्या हैं?",
|
||||
"detail-11":"मोसिप के संदर्भ में, अलग-अलग आईडी UIN, VID और AID हैं। उनके बारे में और पढ़ें",
|
||||
"whereCanIFindTheseIds?":"मुझे ये आईडी कहां मिल सकती हैं?",
|
||||
"detail-12a": "नामांकन (पंजीकरण) प्रक्रिया के भाग के रूप में, निवासी की जनसांख्यिकीय जानकारी और बायोमेट्रिक्स को सफलतापूर्वक पंजीकृत करने पर, निवासी को एक पंजीकरण आईडी (एआईडी) आवंटित की जाती है। पंजीकरण के प्रमाण के रूप में निवासी को एक पावती पर्ची भी जारी (मुद्रित) की जाती है जिसमें कैप्चर किए गए विवरण और एआईडी शामिल होते हैं।",
|
||||
"detail-12b": "सफल प्रसंस्करण पर, निवासी को एक विशिष्ट पहचान संख्या (यूआईएन) आवंटित की जाती है और निवासी को पंजीकृत फोन नंबर और/या ईमेल पर एक अधिसूचना भेजी जाती है।",
|
||||
"detail-12c": "वीआईडी/वर्चुअल आईडी एक उपनाम पहचानकर्ता है जिसे एक बार उपयोग के लिए कॉन्फ़िगर किया गया है और यह लिंक करने योग्य नहीं है। चूंकि इनका उपयोग प्रमाणीकरण लेनदेन के लिए किया जाता है, इसलिए ऐसे पहचानकर्ताओं को केवल उपयोगकर्ता को ही पता होना चाहिए या उनकी भागीदारी से उत्पन्न किया जाना चाहिए।",
|
||||
"whyDoesMyVcSayActivationIsPending?":"मेरा वीसी यह क्यों कहता है कि सक्रियण लंबित है?",
|
||||
"detail-13": "एक बार वीसी आपके वॉलेट में डाउनलोड हो जाने के बाद, यह अभी तक उपयोगकर्ता की पहचान से बंधा नहीं है, यही कारण है कि आपका वीसी सक्रियण लंबित कहता है। उच्चतम स्तर की सुरक्षा सुनिश्चित करने के लिए अपने वीसी को अपने वॉलेट (पासकोड या बायोमेट्रिक्स के साथ) से जोड़ना महत्वपूर्ण है। अपने वीसी को सक्रिय करने के लिए, कृपया चरणों का पालन करें",
|
||||
"whatDoYouMeanByActivatedForOnlineLogin?": "ऑनलाइन लॉगिन के लिए सक्रिय से आपका क्या तात्पर्य है?",
|
||||
"detail-14a": "1. एक बार जब वीसी सफलतापूर्वक वॉलेट से जुड़ जाता है, तो आप देख सकते हैं कि यह ऑनलाइन लॉगिन के लिए सक्रिय है, जिसका अर्थ है कि इस वीसी का उपयोग अब क्यूआर लॉगिन प्रक्रिया के लिए किया जा सकता है। क्यूआर कोड लॉगिन के बारे में अधिक जानने के लिए कृपया पढ़ें",
|
||||
"detail-14b": "2. उपयोगकर्ता द्वारा INJI ऐप में भाषा बदलने पर भी प्रश्नोत्तर पठनीय और समझने योग्य होना चाहिए।",
|
||||
"whatIsAVerifiableCredential?": "सत्यापन योग्य क्रेडेंशियल क्या है?",
|
||||
"detail-15": "सत्यापन योग्य क्रेडेंशियल डिजिटल रूप से हस्ताक्षरित जानकारी का एक टुकड़ा है जो किसी विषय के बारे में जारीकर्ता द्वारा दिए गए बयान का प्रतिनिधित्व करता है और इसमें आम तौर पर जनसांख्यिकीय विवरण शामिल होते हैं। वीसी विभिन्न ऑनलाइन इंटरैक्शन में सुरक्षित और भरोसेमंद हैं।"
|
||||
},
|
||||
"AddVcModal": {
|
||||
"requestingCredential": "क्रेडेंशियल का अनुरोध कर रहा है...",
|
||||
@@ -320,14 +337,16 @@
|
||||
}
|
||||
},
|
||||
"OnboardingOverlay": {
|
||||
"stepOneTitle": "सुरक्षित साझाकरण!",
|
||||
"stepOneText": "अपना डिजिटल क्रेडेंशियल हर समय अपने पास रखें। इंजी आपको उन्हें प्रभावी ढंग से प्रबंधित करने और उपयोग करने में मदद करता है। आरंभ करने के लिए, अपनी प्रोफ़ाइल में कार्ड जोड़ें।",
|
||||
"stepTwoTitle": "विश्वसनीय डिजिटल वॉलेट",
|
||||
"stepTwoText": "अपने सभी महत्वपूर्ण कार्डों को एक ही विश्वसनीय वॉलेट में रखें और रखें।",
|
||||
"stepThreeTitle": "सुरक्षित साझाकरण",
|
||||
"stepThreeText": "परेशानी मुक्त तरीके से अपने कार्ड सुरक्षित रूप से साझा करें और विभिन्न सेवाओं का लाभ उठाएं।",
|
||||
"stepFourTitle": "परेशानी मुक्त प्रमाणीकरण",
|
||||
"stepOneTitle": "स्वागत!",
|
||||
"stepOneText": "अपना डिजिटल क्रेडेंशियल हर समय अपने पास रखें। ",
|
||||
"stepTwoTitle": "सुरक्षित साझाकरण",
|
||||
"stepTwoText": "परेशानी मुक्त तरीके से अपने कार्ड सुरक्षित रूप से साझा करें और विभिन्न सेवाओं का लाभ उठाएं।",
|
||||
"stepThreeTitle": "विश्वसनीय डिजिटल वॉलेट",
|
||||
"stepThreeText": "अपने सभी महत्वपूर्ण कार्डों को एक ही विश्वसनीय वॉलेट में रखें और रखें।",
|
||||
"stepFourTitle": "त्वरित ऐक्सेस",
|
||||
"stepFourText": "संग्रहीत डिजिटल क्रेडेंशियल का उपयोग करके आसानी से स्वयं को प्रमाणित करें।",
|
||||
"stepFiveTitle": "बैकअप डेटा",
|
||||
"stepFiveText": "हमारे बैकअप का उपयोग करके आसानी से अपने डेटा को सुरक्षित रखें",
|
||||
"getStarted": "शुरू हो जाओ",
|
||||
"goBack": "वापस जाओ",
|
||||
"back": "पीछे",
|
||||
@@ -579,6 +598,63 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"DataBackupScreen": {
|
||||
"dataBackupAndRestore": "बैकअप बहाल",
|
||||
"new": "नया",
|
||||
"loadingTitle": "सेटिंग लोड हो रही है",
|
||||
"loadingSubtitle": "लोड हो रहा है...",
|
||||
"errors": {
|
||||
"permissionDenied": {
|
||||
"title": "अनुमति नहीं मिली!",
|
||||
"message": "हमने देखा है कि आपने डेटा बैकअप सेटिंग्स का निर्माण रद्द कर दिया है। हम आपके डेटा की उपलब्धता सुनिश्चित करने के लिए डेटा बैकअप सेटिंग्स पर दोबारा गौर करने की दृढ़ता से अनुशंसा करते हैं।",
|
||||
"helpText": "अभी डेटा बैकअप सेट करने के लिए \"कॉन्फ़िगर सेटिंग्स\" पर क्लिक करें, या सेटिंग्स स्क्रीन पर वापस जाने के लिए \"रद्द करें\" पर क्लिक करें।"
|
||||
},
|
||||
"noInternetConnection": {
|
||||
"title": "कोई इंटरनेट कनेक्शन नहीं",
|
||||
"message": "कृपया अपना कनेक्शन जांचें और पुनः प्रयास करें"
|
||||
}
|
||||
}
|
||||
},
|
||||
"BackupAndRestoreBanner": {
|
||||
"backupSuccessful": "आपका बैकअप सफल रहा!",
|
||||
"backupFailure": {
|
||||
"networkError": "अस्थिर कनेक्शन के कारण, हम डेटा बैकअप करने में असमर्थ थे। कृपया बाद में पुनः प्रयास करें।",
|
||||
"technicalError": "तकनीकी त्रुटि के कारण, हम डेटा बैकअप करने में असमर्थ थे। कृपया बाद में पुन: प्रयास करें।",
|
||||
"noDataForBackup": "हमें खेद है, लेकिन इस समय बैकअप के लिए कोई डेटा उपलब्ध नहीं है।",
|
||||
"storageLimitReached": "आपके डिवाइस पर अपर्याप्त संग्रहण स्थान के कारण हम बैकअप प्रक्रिया पूरी करने में असमर्थ हैं। कृपया अनावश्यक फ़ाइलें या ऐप्स हटाकर स्थान खाली करें और पुनः प्रयास करें।"
|
||||
},
|
||||
"restoreSuccessful": "आपका पुनर्स्थापना सफल रहा!",
|
||||
"restoreFailure": {
|
||||
"networkError": "अस्थिर कनेक्शन के कारण, हम डेटा पुनर्स्थापित करने में असमर्थ थे। कृपया बाद में पुन: प्रयास करें।",
|
||||
"technicalError": "तकनीकी त्रुटि के कारण, हम डेटा को पुनर्स्थापित करने में असमर्थ थे। कृपया बाद में पुन: प्रयास करें।"
|
||||
}
|
||||
},
|
||||
"AccountSelection": {
|
||||
"backupProcessInfo": "आप अपने डेटा का बैकअप लेने से बस कुछ ही कदम दूर हैं",
|
||||
"cloudInfo": "डेटा बैकअप शुरू करने के लिए, कृपया अपने Google ड्राइव को Inji से लिंक करने के लिए `आगे बढ़ें` बटन पर टैप करें।",
|
||||
"googleDriveTitle": "गूगल हाँकना",
|
||||
"loadingSubtitle": "लोड हो रहा है...",
|
||||
"proceed": "आगे बढ़ना",
|
||||
"goBack": "वापस जाओ",
|
||||
"associatedAccount": "संबद्ध खाता"
|
||||
},
|
||||
"BackupAndRestore": {
|
||||
"title": "बैकअप और पुनर्स्थापना",
|
||||
"backupProgressState": "बैकअप प्रगति पर है...",
|
||||
"lastBackupDetails": "अंतिम बैकअप विवरण",
|
||||
"backupInProgress": "जब डेटा बैकअप चल रहा हो तब भी आप एप्लिकेशन का उपयोग कर सकते हैं। ऐप बंद करने से डेटा बैकअप प्रक्रिया समाप्त हो जाएगी।",
|
||||
"noBackup": "अपने डेटा का Google ड्राइव पर बैकअप लें। INJI को पुनः इंस्टॉल करने पर आप उन्हें पुनर्स्थापित कर सकते हैं।",
|
||||
"storage": "बैकअप आपके चुने हुए जीमेल खाते से जुड़े Google ड्राइव में संग्रहीत किया जाएगा।",
|
||||
"backup": "बैकअप",
|
||||
"size": "आकार: ",
|
||||
"restore": "पुनर्स्थापित करें",
|
||||
"restoreInProgress": "हम आपका डेटा पुनर्स्थापित कर रहे हैं, कृपया एप्लिकेशन को बंद न करें। आपके डेटा के आधार पर इसमें <X> मिनट तक का समय लग सकता है।",
|
||||
"restoreInfo": "Google ड्राइव से अपना डेटा पुनर्स्थापित करें",
|
||||
"driveSettings": "Google ड्राइव सेटिंग्स",
|
||||
"successBanner": "आपका बैकअप सफल रहा!",
|
||||
"backupFailed": "बैकअप विफल",
|
||||
"ok": "ठीक है"
|
||||
},
|
||||
"WelcomeScreen": {
|
||||
"title": "ओपन सोर्स आइडेंटिटी सॉल्यूशन",
|
||||
"unlockApplication": "एप्लिकेशन अनलॉक करें",
|
||||
@@ -623,4 +699,4 @@
|
||||
"description": "कृपया ऐप को अनलॉक करने के लिए फिंगरप्रिंट का उपयोग करें"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
138
locales/kan.json
@@ -90,7 +90,7 @@
|
||||
"offlineAuthDisabledMessage": "ಆನ್ಲೈನ್ ದೃಢೀಕರಣಕ್ಕಾಗಿ ಬಳಸಲು ಈ ರುಜುವಾತುಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ.",
|
||||
"viewActivityLog": "ಚಟುವಟಿಕೆ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಿ",
|
||||
"removeFromWallet": "ಕೈಚೀಲದಿಂದ ತೆಗೆದುಹಾಕಿ",
|
||||
"revokeId": "ID ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ",
|
||||
"revokeId": "ಐಡಿ ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ",
|
||||
"revokeMessage": "ಈ ಪ್ರೊಫೈಲ್ಗಾಗಿ ವರ್ಚುವಲ್ ಐಡಿಯನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ"
|
||||
},
|
||||
"WalletBinding": {
|
||||
@@ -185,24 +185,41 @@
|
||||
},
|
||||
"HelpScreen": {
|
||||
"header": "ಸಹಾಯ",
|
||||
"whatIsDigitalCredential?": "ಡಿಜಿಟಲ್ ರುಜುವಾತು ಎಂದರೇನು?",
|
||||
"here": " ಇಲ್ಲಿ. ",
|
||||
"whatIsaDigitalCredential?": "ಡಿಜಿಟಲ್ ರುಜುವಾತು ಎಂದರೇನು?",
|
||||
"detail-1": "ಡಿಜಿಟಲ್ ರುಜುವಾತು ನಿಮ್ಮ ಭೌತಿಕ ಗುರುತಿನ ಚೀಟಿಯ ಡಿಜಿಟಲ್ ಆವೃತ್ತಿಯಾಗಿದೆ",
|
||||
"whatCanDoWithDigitalCredential?": "ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳೊಂದಿಗೆ ನಾವು ಏನು ಮಾಡಬಹುದು?",
|
||||
"whatCanWeDoWithDigitalCredential?": "ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳೊಂದಿಗೆ ನಾವು ಏನು ಮಾಡಬಹುದು?",
|
||||
"detail-2": "ನಿಮ್ಮ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ವಿವಿಧ ಸರ್ಕಾರಿ ಮತ್ತು ಖಾಸಗಿ ಸೇವೆಗಳನ್ನು ಪಡೆಯಬಹುದು.",
|
||||
"howToAddCard?": "ಕಾರ್ಡ್ ಅನ್ನು ಹೇಗೆ ಸೇರಿಸುವುದು?",
|
||||
"detail-3": "ಕಾರ್ಡ್ ಸೇರಿಸಲು, ಮುಖಪುಟದಲ್ಲಿ '+' ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು ಸೂಕ್ತವಾದ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ.",
|
||||
"howToRemoveCardFromWallet?": "ಕಾರ್ಡ್ ಹಂಚಿಕೊಳ್ಳುವುದು ಹೇಗೆ?",
|
||||
"detail-4": "ಕಾರ್ಡ್ನಲ್ಲಿ ಎಡಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ > ಇನ್ನಷ್ಟು ಕ್ಲಿಕ್ ಮಾಡಿ > ವಾಲೆಟ್ನಿಂದ ತೆಗೆದುಹಾಕಿ",
|
||||
"canWeAddMultipleCards?": "ನಾವು ಬಹು ಕಾರ್ಡ್ಗಳನ್ನು ಸೇರಿಸಬಹುದೇ?",
|
||||
"detail-3": "ಐಡಿಗಳನ್ನು ಪರಿಶೀಲಿಸಬಹುದಾದ ರುಜುವಾತುಗಳಂತೆ INJI ಮೊಬೈಲ್ ವಾಲೆಟ್ಗೆ ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು. ವಿವಿಧ ಐಡಿ ಗಳೊಂದಿಗೆ VC ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುವುದು ಹೇಗೆ ಎಂದು ತಿಳಿಯಲು ದಯವಿಟ್ಟು ಓದಿ ",
|
||||
"howToRemoveACardFromTheWallet?": "ವ್ಯಾಲೆಟ್ನಿಂದ ಕಾರ್ಡ್ ಅನ್ನು ಹೇಗೆ ತೆಗೆದುಹಾಕುವುದು?",
|
||||
"detail-4a": "ನೀವು ಮುಖಪುಟದಲ್ಲಿ ಕಾರ್ಡ್ನಲ್ಲಿ ...(ಮೀಟ್ಬಾಲ್ಸ್ ಮೆನು) ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಬಹುದು ಮತ್ತು ವ್ಯಾಲೆಟ್ನಿಂದ ಕಾರ್ಡ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲು ವಾಲೆಟ್ನಿಂದ ತೆಗೆದುಹಾಕಿ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ. ಇನ್ನಷ್ಟು ತಿಳಿಯಲು, ದಯವಿಟ್ಟು ಓದಿ",
|
||||
"detail-4b": "ಅದೇ ಕಾರ್ಡ್ ಅನ್ನು ಮತ್ತೆ ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ.",
|
||||
"canIAddMultipleCards?": "ನಾನು ಬಹು ಕಾರ್ಡ್ಗಳನ್ನು ಸೇರಿಸಬಹುದೇ?",
|
||||
"detail-5": "ಹೌದು, ಮುಖಪುಟದಲ್ಲಿ '+' ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ನೀವು ಬಹು ಕಾರ್ಡ್ಗಳನ್ನು ವ್ಯಾಲೆಟ್ಗೆ ಸೇರಿಸಬಹುದು.",
|
||||
"howToShareCard?": "ಕಾರ್ಡ್ ಹಂಚಿಕೊಳ್ಳುವುದು ಹೇಗೆ?",
|
||||
"howToShareACard?": "ಕಾರ್ಡ್ ಹಂಚಿಕೊಳ್ಳುವುದು ಹೇಗೆ?",
|
||||
"detail-6": "'ಹಂಚಿಕೊಳ್ಳಿ' ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು ವಿನಂತಿಸಿದ ಪಕ್ಷದಿಂದ QR ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ. ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ, ಕಾರ್ಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.",
|
||||
"howToActivateCardForOnlineLogin?": "ಆನ್ಲೈನ್ ಲಾಗಿನ್ಗಾಗಿ ಕಾರ್ಡ್ ಅನ್ನು ಹೇಗೆ ಸಕ್ರಿಯಗೊಳಿಸುವುದು?",
|
||||
"howToActivateACardForOnlineLogin?": "ಆನ್ಲೈನ್ ಲಾಗಿನ್ಗಾಗಿ ಕಾರ್ಡ್ ಅನ್ನು ಹೇಗೆ ಸಕ್ರಿಯಗೊಳಿಸುವುದು?",
|
||||
"detail-7": "ವ್ಯಾಲೆಟ್ಗೆ ಕಾರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಿದ ನಂತರ, ಕಾರ್ಡ್ನಲ್ಲಿರುವ 'ಆನ್ಲೈನ್ ಲಾಗಿನ್ಗಾಗಿ ಆಕ್ಟಿವೇಶನ್ ಪೆಂಡಿಂಗ್' ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. 'ಸಕ್ರಿಯಗೊಳಿಸು' ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ, ಕಾರ್ಡ್ ಆನ್ಲೈನ್ ಲಾಗಿನ್ಗೆ ಬಳಸಲು ಸಿದ್ಧವಾಗುತ್ತದೆ.",
|
||||
"howToViewActivity?": "ಚಟುವಟಿಕೆ ಲಾಗ್ಗಳನ್ನು ವೀಕ್ಷಿಸುವುದು ಹೇಗೆ?",
|
||||
"howToViewActivityLogs?": "ಚಟುವಟಿಕೆ ಲಾಗ್ಗಳನ್ನು ವೀಕ್ಷಿಸುವುದು ಹೇಗೆ?",
|
||||
"detail-8": "ಮುಖಪುಟದಲ್ಲಿ, ಬಳಕೆದಾರರ ಚಟುವಟಿಕೆಯ ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಲು 'ಇತಿಹಾಸ' ಕ್ಲಿಕ್ ಮಾಡಿ.",
|
||||
"whatCanDoBiometricsChanged?": "ಆಂಡ್ರಾಯ್ಡ್ ಕೀಸ್ಟೋರ್ ಬಯೋಮೆಟ್ರಿಕ್ ಅನ್ನು ಬದಲಾಯಿಸಿದಾಗ ಏನಾಗುತ್ತದೆ?",
|
||||
"detail-9": "ಆಂಡ್ರಾಯ್ಡ್ ಕೀಸ್ಟೋರ್ ಗುರುತಿನ ಪುರಾವೆಗಳಿಗಾಗಿ ಖಾಸಗಿ ಕೀಗಳಂತಹ ಪ್ರಮುಖ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿದೆ. ನಿಮ್ಮ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅನ್ನು ನೀವು ಬದಲಾಯಿಸಿದಾಗ, ಹಳೆಯ ಕೀಗಳು ಇನ್ನು ಮುಂದೆ ಸುರಕ್ಷಿತವಾಗಿರುವುದಿಲ್ಲ. ವಿಷಯಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು, ಆ ಹಳೆಯ ಕೀಗಳಿಂದ ಸಹಿ ಮಾಡಿದ ಗುರುತಿನ ಪುರಾವೆಗಳನ್ನು ನಾವು ತೆಗೆದುಹಾಕುತ್ತೇವೆ. ನಿಮ್ಮ ಗುರುತಿನ ಪುರಾವೆಗಳನ್ನು ನೀವು ಸರಳವಾಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಇತ್ತೀಚಿನ, ಸುರಕ್ಷಿತ ಕೀಗಳೊಂದಿಗೆ ಸಹಿ ಮಾಡಲಾಗುತ್ತದೆ."
|
||||
"whatHappensWhenAndroidKeystoreBiometricIsChanged?": "ಆಂಡ್ರಾಯ್ಡ್ ಕೀಸ್ಟೋರ್ ಬಯೋಮೆಟ್ರಿಕ್ ಅನ್ನು ಬದಲಾಯಿಸಿದಾಗ ಏನಾಗುತ್ತದೆ?",
|
||||
"detail-9": "ಆಂಡ್ರಾಯ್ಡ್ ಕೀಸ್ಟೋರ್ ಗುರುತಿನ ಪುರಾವೆಗಳಿಗಾಗಿ ಖಾಸಗಿ ಕೀಗಳಂತಹ ಪ್ರಮುಖ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿದೆ. ನಿಮ್ಮ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅನ್ನು ನೀವು ಬದಲಾಯಿಸಿದಾಗ, ಹಳೆಯ ಕೀಗಳು ಇನ್ನು ಮುಂದೆ ಸುರಕ್ಷಿತವಾಗಿರುವುದಿಲ್ಲ. ವಿಷಯಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು, ಆ ಹಳೆಯ ಕೀಗಳಿಂದ ಸಹಿ ಮಾಡಿದ ಗುರುತಿನ ಪುರಾವೆಗಳನ್ನು ನಾವು ತೆಗೆದುಹಾಕುತ್ತೇವೆ. ನಿಮ್ಮ ಗುರುತಿನ ಪುರಾವೆಗಳನ್ನು ನೀವು ಸರಳವಾಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಇತ್ತೀಚಿನ, ಸುರಕ್ಷಿತ ಕೀಗಳೊಂದಿಗೆ ಸಹಿ ಮಾಡಲಾಗುತ್ತದೆ.",
|
||||
"whatIsAnId?":"ಐಡಿ ಎಂದರೇನು?",
|
||||
"detail-10":"ಐಡಿ ಎನ್ನುವುದು ವ್ಯಕ್ತಿಯ ಗುರುತನ್ನು ಸಾಬೀತುಪಡಿಸುವ ಯಾವುದೇ ದಾಖಲೆಯಾಗಿದೆ. MOSIP ನ ಸಂದರ್ಭದಲ್ಲಿ, ಗುರುತಿಸುವಿಕೆಗಳು ವ್ಯವಸ್ಥೆಯಲ್ಲಿನ ಗುರುತುಗಳಿಗಾಗಿ ಆಲ್ಫಾನ್ಯೂಮರಿಕ್ ಡಿಜಿಟಲ್ ಹ್ಯಾಂಡಲ್ಗಳಾಗಿವೆ. ವ್ಯಕ್ತಿಯ ಗುರುತನ್ನು ವ್ಯಕ್ತಿಯನ್ನು ಅನನ್ಯವಾಗಿ ಗುರುತಿಸಬಲ್ಲ ಜೀವನಚರಿತ್ರೆಯ ಮತ್ತು ಬಯೋಮೆಟ್ರಿಕ್ ಗುಣಲಕ್ಷಣಗಳ ಸಂಗ್ರಹವಾಗಿ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ಗುರುತನ್ನು ಗುರುತಿಸುವಿಕೆಗಳನ್ನು ಬಳಸುವುದನ್ನು ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತದೆ.",
|
||||
"whatAreTheDifferentTypesOfId?": "ಐಡಿ ಯ ವಿವಿಧ ಪ್ರಕಾರಗಳು ಯಾವುವು?",
|
||||
"detail-11":"MOSIP ನ ಸಂದರ್ಭದಲ್ಲಿ, ವಿಭಿನ್ನ ಐಡಿ ಗಳು UIN, VID ಮತ್ತು AID. ಅವರ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಓದಿ",
|
||||
"whereCanIFindTheseIds?":"ನಾನು ಈ ಐಡಿಗಳನ್ನು ಎಲ್ಲಿ ಹುಡುಕಬಹುದು?",
|
||||
"detail-12a": "ನೋಂದಣಿ (ನೋಂದಣಿ) ಪ್ರಕ್ರಿಯೆಯ ಭಾಗವಾಗಿ, ಜನಸಂಖ್ಯಾ ಮಾಹಿತಿ ಮತ್ತು ನಿವಾಸಿಗಳ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನೋಂದಾಯಿಸಿದ ನಂತರ, ನೋಂದಣಿ ಐಡಿ (AID) ಅನ್ನು ನಿವಾಸಿಗೆ ಹಂಚಲಾಗುತ್ತದೆ. ಸೆರೆಹಿಡಿಯಲಾದ ವಿವರಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಸ್ವೀಕೃತಿ ಚೀಟಿ ಮತ್ತು AID ಅನ್ನು ನೋಂದಣಿಯ ಪುರಾವೆಯಾಗಿ ನಿವಾಸಿಗೆ ನೀಡಲಾಗುತ್ತದೆ (ಮುದ್ರಿತ).",
|
||||
"detail-12b": "ಯಶಸ್ವಿ ಪ್ರಕ್ರಿಯೆಯ ನಂತರ, ನಿವಾಸಿಗೆ ವಿಶಿಷ್ಟ ಗುರುತಿನ ಸಂಖ್ಯೆ (UIN) ಅನ್ನು ಹಂಚಲಾಗುತ್ತದೆ ಮತ್ತು ನೋಂದಾಯಿತ ಫೋನ್ ಸಂಖ್ಯೆ ಮತ್ತು/ಅಥವಾ ಇಮೇಲ್ನಲ್ಲಿ ನಿವಾಸಿಗೆ ಅಧಿಸೂಚನೆಯನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತದೆ.",
|
||||
"detail-12c": "VID/ ವರ್ಚುವಲ್ ಐಡಿ ಒಂದು-ಬಾರಿ ಬಳಕೆಗಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಅಲಿಯಾಸ್ ಐಡೆಂಟಿಫೈಯರ್ ಆಗಿದೆ ಮತ್ತು ಲಿಂಕ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಇವುಗಳನ್ನು ದೃಢೀಕರಣ ವಹಿವಾಟುಗಳಿಗಾಗಿ ಬಳಸಲಾಗುವುದರಿಂದ, ಅಂತಹ ಗುರುತಿಸುವಿಕೆಗಳು ಬಳಕೆದಾರರಿಗೆ ಮಾತ್ರ ತಿಳಿದಿರಬೇಕು ಅಥವಾ ಅವರ ಭಾಗವಹಿಸುವಿಕೆಯೊಂದಿಗೆ ರಚಿಸಲ್ಪಡುತ್ತವೆ.",
|
||||
"whyDoesMyVcSayActivationIsPending?":"ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ಬಾಕಿಯಿದೆ ಎಂದು ನನ್ನ VC ಏಕೆ ಹೇಳುತ್ತಾರೆ?",
|
||||
"detail-13": "ಒಮ್ಮೆ VC ಅನ್ನು ನಿಮ್ಮ ವ್ಯಾಲೆಟ್ಗೆ ಡೌನ್ಲೋಡ್ ಮಾಡಿದರೆ, ಅದು ಇನ್ನೂ ಬಳಕೆದಾರರ ಗುರುತಿನೊಂದಿಗೆ ಬದ್ಧವಾಗಿಲ್ಲ, ಅದಕ್ಕಾಗಿಯೇ ನಿಮ್ಮ VC ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ಬಾಕಿಯಿದೆ ಎಂದು ಹೇಳುತ್ತದೆ. ನಿಮ್ಮ ವ್ಯಾಲೆಟ್ಗೆ (ನಿಮ್ಮ ಪಾಸ್ಕೋಡ್ ಅಥವಾ ಬಯೋಮೆಟ್ರಿಕ್ಸ್ನೊಂದಿಗೆ) ನಿಮ್ಮ VC ಅನ್ನು ಬಂಧಿಸುವುದು ಅತ್ಯುನ್ನತ ಮಟ್ಟದ ಭದ್ರತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ನಿಮ್ಮ VC ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ದಯವಿಟ್ಟು ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ",
|
||||
"whatDoYouMeanByActivatedForOnlineLogin?": "ಆನ್ಲೈನ್ ಲಾಗಿನ್ಗಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಎಂಬುದರ ಅರ್ಥವೇನು?",
|
||||
"detail-14a": "1. VC ಅನ್ನು ವ್ಯಾಲೆಟ್ನೊಂದಿಗೆ ಯಶಸ್ವಿಯಾಗಿ ಬಂಧಿಸಿದ ನಂತರ, ಅದನ್ನು ಆನ್ಲೈನ್ ಲಾಗಿನ್ಗಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ನೀವು ನೋಡಬಹುದು ಅಂದರೆ ಈ VC ಅನ್ನು ಈಗ QR ಲಾಗಿನ್ ಪ್ರಕ್ರಿಯೆಗೆ ಬಳಸಬಹುದು. QR ಕೋಡ್ ಲಾಗಿನ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿದುಕೊಳ್ಳಲು, ದಯವಿಟ್ಟು ಓದಿ",
|
||||
"detail-14b": "2. ಇಂಜಿ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಬಳಕೆದಾರರು ಭಾಷೆಯನ್ನು ಬದಲಾಯಿಸಿದಾಗಲೂ ಪ್ರಶ್ನೋತ್ತರವು ಓದಬಲ್ಲ ಮತ್ತು ಅರ್ಥವಾಗುವಂತಿರಬೇಕು.",
|
||||
"whatIsAVerifiableCredential?": "ಪರಿಶೀಲಿಸಬಹುದಾದ ರುಜುವಾತು ಎಂದರೇನು?",
|
||||
"detail-15": "ಪರಿಶೀಲಿಸಬಹುದಾದ ರುಜುವಾತು ಎನ್ನುವುದು ಡಿಜಿಟಲ್ ಸಹಿ ಮಾಡಿದ ಮಾಹಿತಿಯಾಗಿದ್ದು ಅದು ವಿಷಯದ ಬಗ್ಗೆ ನೀಡುವವರು ಮಾಡಿದ ಹೇಳಿಕೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಜನಸಂಖ್ಯಾ ವಿವರಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ವಿವಿಧ ಆನ್ಲೈನ್ ಸಂವಹನಗಳಲ್ಲಿ VC ಗಳು ಸುರಕ್ಷಿತ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿವೆ."
|
||||
},
|
||||
"AddVcModal": {
|
||||
"requestingCredential": "ರುಜುವಾತುಗಳನ್ನು ವಿನಂತಿಸಲಾಗುತ್ತಿದೆ...",
|
||||
@@ -215,18 +232,18 @@
|
||||
"invalidOtp": "OTP ಅಮಾನ್ಯವಾಗಿದೆ",
|
||||
"expiredOtp": "OTP ಅವಧಿ ಮುಗಿದಿದೆ",
|
||||
"invalidUin": "UIN ಅಮಾನ್ಯವಾಗಿದೆ",
|
||||
"invalidVid": "VID ಅಮಾನ್ಯವಾಗಿದೆ",
|
||||
"invalidVid": "VIDಅಮಾನ್ಯವಾಗಿದೆ",
|
||||
"missingUin": "ನಮೂದಿಸಿದ UIN ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ/ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಮುಂದುವರಿಯಲು ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ UIN ಅನ್ನು ನಮೂದಿಸಿ",
|
||||
"missingVid": "VID ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ",
|
||||
"missingVid": "VIDಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲ",
|
||||
"noMessageAvailable": "ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಪ್ರಯತ್ನಿಸಿ",
|
||||
"whileGeneratingOtpErrorIsOccured": "OTP ರಚಿಸುವಾಗ ದೋಷ ಸಂಭವಿಸಿದೆ",
|
||||
"networkRequestFailed": "ನೆಟ್ವರ್ಕ್ ವಿನಂತಿ ವಿಫಲವಾಗಿದೆ",
|
||||
"deactivatedVid": "ನಮೂದಿಸಿದ VID ನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ/ಅವಧಿ ಮೀರಿದೆ. ಮುಂದುವರೆಯಲು ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ VID ಅನ್ನು ನಮೂದಿಸಿ"
|
||||
"deactivatedVid": "ನಮೂದಿಸಿದ VIDನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ/ಅವಧಿ ಮೀರಿದೆ. ಮುಂದುವರೆಯಲು ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ VIDಅನ್ನು ನಮೂದಿಸಿ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GetVcModal": {
|
||||
"retrievingId": "ID ಮರುಪಡೆಯಲಾಗುತ್ತಿದೆ",
|
||||
"retrievingId": "ಐಡಿ ಮರುಪಡೆಯಲಾಗುತ್ತಿದೆ",
|
||||
"errors": {
|
||||
"input": {
|
||||
"empty": "ಇನ್ಪುಟ್ ಖಾಲಿ ಇರುವಂತಿಲ್ಲ",
|
||||
@@ -254,12 +271,12 @@
|
||||
"enterApplicationId": "შეიყვანეთ განაცხადის ID",
|
||||
"requestingOTP": "OTP-ის მოთხოვნა...",
|
||||
"toolTipTitle": "Რა ვთქვი?",
|
||||
"toolTipDescription": "განაცხადის ID (AID) ეხება უნიკალურ იდენტიფიკატორს, რომელიც მიცემულია რეზიდენტს პირადობის მოწმობის სასიცოცხლო ციკლის ნებისმიერი მოვლენის დროს, როგორიცაა პირადობის მოწმობის გაცემა, ID განახლება ან დაკარგული პირადობის მოძიება, რეგისტრაციის ცენტრში. ",
|
||||
"toolTipDescription": "განაცხადის ಐಡಿ (AID) ეხება უნიკალურ იდენტიფიკატორს, რომელიც მიცემულია რეზიდენტს პირადობის მოწმობის სასიცოცხლო ციკლის ნებისმიერი მოვლენის დროს, როგორიცაა პირადობის მოწმობის გაცემა, ಐಡಿ განახლება ან დაკარგული პირადობის მოძიება, რეგისტრაციის ცენტრში. ",
|
||||
"getUIN": "მიიღეთ UIN/VID"
|
||||
},
|
||||
"IdInputModal": {
|
||||
"header": "ჩამოტვირთეთ თქვენი ID",
|
||||
"guideLabel": "აირჩიეთ ID ტიპი და შეიყვანეთ MOSIP მოწოდებული UIN ან VID, რომლის ჩამოტვირთვაც გსურთ. ",
|
||||
"guideLabel": "აირჩიეთ ಐಡಿ ტიპი და შეიყვანეთ MOSIP მოწოდებული UIN ან VID, რომლის ჩამოტვირთვაც გსურთ. ",
|
||||
"generateVc": "ბარათის გენერირება",
|
||||
"downloadID": "ჩამოტვირთვის ID",
|
||||
"enterId": "შედი {{idType}}",
|
||||
@@ -268,7 +285,7 @@
|
||||
"requestingOTP": "OTP-ის მოთხოვნა...",
|
||||
"toolTipTitle": "Რა არის {{idType}}?",
|
||||
"toolTipUINDescription": "უნიკალური საიდენტიფიკაციო ნომერი (UIN), როგორც სახელიდან ჩანს, არის უნიკალური ნომერი, რომელიც ენიჭება რეზიდენტს. ",
|
||||
"toolTipVIDDescription": "VID / ვირტუალური ID არის ალიას იდენტიფიკატორი, რომელიც შეიძლება გამოყენებულ იქნას ავთენტიფიკაციის ტრანზაქციებისთვის. "
|
||||
"toolTipVIDDescription": "VID/ ვირტუალური ಐಡಿ არის ალიას იდენტიფიკატორი, რომელიც შეიძლება გამოყენებულ იქნას ავთენტიფიკაციის ტრანზაქციებისთვის. "
|
||||
},
|
||||
"OtpVerificationModal": {
|
||||
"title": "OTP ಪರಿಶೀಲನೆ",
|
||||
@@ -312,14 +329,16 @@
|
||||
}
|
||||
},
|
||||
"OnboardingOverlay": {
|
||||
"stepOneTitle": "ಸುರಕ್ಷಿತ ಹಂಚಿಕೆ!",
|
||||
"stepOneText": "ನಿಮ್ಮ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಯಾವಾಗಲೂ ನಿಮ್ಮೊಂದಿಗೆ ಇರಿಸಿಕೊಳ್ಳಿ. ಅವುಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸಲು ಮತ್ತು ಬಳಸಲು ಇಂಜಿ ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಪ್ರಾರಂಭಿಸಲು, ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ಗೆ ಕಾರ್ಡ್ಗಳನ್ನು ಸೇರಿಸಿ.",
|
||||
"stepTwoTitle": "ವಿಶ್ವಾಸಾರ್ಹ ಡಿಜಿಟಲ್ ವಾಲೆಟ್",
|
||||
"stepTwoText": "ನಿಮ್ಮ ಎಲ್ಲಾ ಪ್ರಮುಖ ಕಾರ್ಡ್ಗಳನ್ನು ಒಂದೇ ವಿಶ್ವಾಸಾರ್ಹ ವ್ಯಾಲೆಟ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ಒಯ್ಯಿರಿ.",
|
||||
"stepThreeTitle": "ಸುರಕ್ಷಿತ ಹಂಚಿಕೆ",
|
||||
"stepThreeText": "ನಿಮ್ಮ ಕಾರ್ಡ್ಗಳನ್ನು ಜಗಳ ಮುಕ್ತ ರೀತಿಯಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಿ ಮತ್ತು ವಿವಿಧ ಸೇವೆಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.",
|
||||
"stepFourTitle": "ಜಗಳ ಮುಕ್ತ ದೃಢೀಕರಣ",
|
||||
"stepOneTitle": "ಸ್ವಾಗತ!",
|
||||
"stepOneText": "ನಿಮ್ಮ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಯಾವಾಗಲೂ ನಿಮ್ಮೊಂದಿಗೆ ಇರಿಸಿಕೊಳ್ಳಿ. ",
|
||||
"stepTwoTitle": "ಸುರಕ್ಷಿತ ಹಂಚಿಕೆ",
|
||||
"stepTwoText": "ನಿಮ್ಮ ಕಾರ್ಡ್ಗಳನ್ನು ಜಗಳ ಮುಕ್ತ ರೀತಿಯಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಹಂಚಿಕೊಳ್ಳಿ ಮತ್ತು ವಿವಿಧ ಸೇವೆಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.",
|
||||
"stepThreeTitle": "ವಿಶ್ವಾಸಾರ್ಹ ಡಿಜಿಟಲ್ ವಾಲೆಟ್",
|
||||
"stepThreeText": "ನಿಮ್ಮ ಎಲ್ಲಾ ಪ್ರಮುಖ ಕಾರ್ಡ್ಗಳನ್ನು ಒಂದೇ ವಿಶ್ವಾಸಾರ್ಹ ವ್ಯಾಲೆಟ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ಒಯ್ಯಿರಿ.",
|
||||
"stepFourTitle": "ತ್ವರಿತ ಪ್ರವೇಶ",
|
||||
"stepFourText": "ಸಂಗ್ರಹಿಸಿದ ಡಿಜಿಟಲ್ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸುಲಭವಾಗಿ ನಿಮ್ಮನ್ನು ದೃಢೀಕರಿಸಿ.",
|
||||
"stepFiveTitle": "ಬ್ಯಾಕಪ್ ಡೇಟಾ",
|
||||
"stepFiveText": "ನಮ್ಮ ಬ್ಯಾಕಪ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸುಲಭವಾಗಿ ರಕ್ಷಿಸಿ",
|
||||
"getStarted": "ಪ್ರಾರಂಭಿಸಿ",
|
||||
"goBack": "ಹಿಂದೆ ಹೋಗು",
|
||||
"back": "ಹಿಂದೆ",
|
||||
@@ -333,7 +352,7 @@
|
||||
"noReceivedVcsText": "ಕಾರ್ಡ್ ಸ್ವೀಕರಿಸಲು ಕೆಳಗಿನ ವಿನಂತಿಯ ಮೇಲೆ ಟ್ಯಾಪ್ ಮಾಡಿ"
|
||||
},
|
||||
"ViewVcModal": {
|
||||
"title": "ID ವಿವರಗಳು",
|
||||
"title": "ಐಡಿ ವಿವರಗಳು",
|
||||
"inProgress": "ಪ್ರಗತಿಯಲ್ಲಿದೆ",
|
||||
"cancel": "ರದ್ದುಮಾಡು",
|
||||
"lock": "ಲಾಕ್",
|
||||
@@ -341,14 +360,14 @@
|
||||
"rename": "ಮರುಹೆಸರಿಸು",
|
||||
"delete": "ಅಳಿಸು",
|
||||
"revoke": "ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ",
|
||||
"revoking": "ನಿಮ್ಮ ವ್ಯಾಲೆಟ್ VID {{vid}} ಜೊತೆಗೆ ರುಜುವಾತುಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಇದನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವುದರಿಂದ ಅದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವ್ಯಾಲೆಟ್ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ನೀವು ಮುಂದುವರೆಯಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?",
|
||||
"revoking": "ನಿಮ್ಮ ವ್ಯಾಲೆಟ್ VID{{vid}} ಜೊತೆಗೆ ರುಜುವಾತುಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಇದನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವುದರಿಂದ ಅದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವ್ಯಾಲೆಟ್ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ನೀವು ಮುಂದುವರೆಯಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?",
|
||||
"requestingOtp": "ಒಟಿಪಿಯನ್ನು ವಿನಂತಿಸಲಾಗುತ್ತಿದೆ...",
|
||||
"activated": "ಆನ್ಲೈನ್ ದೃಢೀಕರಣಕ್ಕಾಗಿ ರುಜುವಾತುಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.",
|
||||
"redirecting": "ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ...",
|
||||
"success": {
|
||||
"unlocked": "ಕಾರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅನ್ಲಾಕ್ ಮಾಡಲಾಗಿದೆ",
|
||||
"locked": "ಕಾರ್ಡ್ ಯಶಸ್ವಿಯಾಗಿ ಲಾಕ್ ಆಗಿದೆ",
|
||||
"revoked": "VID {{vid}} ಅನ್ನು ಹಿಂಪಡೆಯಲಾಗಿದೆ. ಅದೇ ಒಳಗೊಂಡಿರುವ ಯಾವುದೇ ರುಜುವಾತುಗಳನ್ನು ವ್ಯಾಲೆಟ್ನಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ"
|
||||
"revoked": "VID{{vid}} ಅನ್ನು ಹಿಂಪಡೆಯಲಾಗಿದೆ. ಅದೇ ಒಳಗೊಂಡಿರುವ ಯಾವುದೇ ರುಜುವಾತುಗಳನ್ನು ವ್ಯಾಲೆಟ್ನಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ"
|
||||
}
|
||||
},
|
||||
"MainLayout": {
|
||||
@@ -371,7 +390,7 @@
|
||||
"confirmation": "ದೃಢೀಕರಣ",
|
||||
"checkDomain": "ಅಲ್ಲದೆ, ವಿಳಾಸ ಪಟ್ಟಿಯಲ್ಲಿ ಲಾಕ್ ಐಕಾನ್ ಇದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.",
|
||||
"domainHead": "https://",
|
||||
"selectId": "ID ಆಯ್ಕೆಮಾಡಿ",
|
||||
"selectId": "ಐಡಿ ಆಯ್ಕೆಮಾಡಿ",
|
||||
"noBindedVc": "ಪರಿಶೀಲಿಸಲು ಯಾವುದೇ ಬೈಂಡೆಡ್ ಕಾರ್ಡ್ ಲಭ್ಯವಿಲ್ಲ",
|
||||
"back": "ಹಿಂದೆ ಹೋಗು",
|
||||
"confirm": "ದೃಢೀಕರಿಸಿ",
|
||||
@@ -571,6 +590,63 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"DataBackupScreen": {
|
||||
"dataBackupAndRestore": "ಬ್ಯಾಕಪ್ ಮತ್ತು ಮರುಸ್ಥಾಪಿಸಿ",
|
||||
"new": "ಹೊಸದು",
|
||||
"loadingTitle": "ಸ್ಥಾಪನೆಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ",
|
||||
"loadingSubtitle": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...",
|
||||
"errors": {
|
||||
"permissionDenied": {
|
||||
"title": "ಅವಕಾಶ ನೀಡಲಾಗಿಲ್ಲ!",
|
||||
"message": "ಡೇಟಾ ಬ್ಯಾಕಪ್ ಸೆಟ್ಟಿಂಗ್ಗಳ ರಚನೆಯನ್ನು ನೀವು ರದ್ದುಗೊಳಿಸಿರುವುದನ್ನು ನಾವು ಗಮನಿಸಿದ್ದೇವೆ. ನಿಮ್ಮ ಡೇಟಾ ಲಭ್ಯತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಡೇಟಾ ಬ್ಯಾಕಪ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮರುಪರಿಶೀಲಿಸುವಂತೆ ನಾವು ಬಲವಾಗಿ ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.",
|
||||
"helpText": "ಇದೀಗ ಡೇಟಾ ಬ್ಯಾಕಪ್ ಅನ್ನು ಹೊಂದಿಸಲು \"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ\" ಅಥವಾ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪರದೆಗೆ ಹಿಂತಿರುಗಲು \"ರದ್ದುಮಾಡು\" ಕ್ಲಿಕ್ ಮಾಡಿ."
|
||||
},
|
||||
"noInternetConnection": {
|
||||
"title": "ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವಿಲ್ಲ",
|
||||
"message": "ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಮರುಪ್ರಯತ್ನಿಸಿ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"BackupAndRestoreBanner": {
|
||||
"backupSuccessful": "ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಯಶಸ್ವಿಯಾಗಿದೆ!",
|
||||
"backupFailure": {
|
||||
"networkError": "ಅಸ್ಥಿರ ಸಂಪರ್ಕ ಕಾರಣ, ನಮಗೆ ಡೇಟಾ ಬ್ಯಾಕಪ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
|
||||
"technicalError": "ತಾಂತ್ರಿಕ ದೋಷದಿಂದಾಗಿ, ಡೇಟಾ ಬ್ಯಾಕಪ್ ಮಾಡಲು ನಮಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
|
||||
"noDataForBackup": "ನಮ್ಮನ್ನು ಕ್ಷಮಿಸಿ, ಆದರೆ ಸದ್ಯಕ್ಕೆ ಬ್ಯಾಕಪ್ ಮಾಡಲು ಯಾವುದೇ ಡೇಟಾ ಲಭ್ಯವಿಲ್ಲ.",
|
||||
"storageLimitReached": "ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಸಾಕಷ್ಟು ಸಂಗ್ರಹಣೆ ಸ್ಥಳಾವಕಾಶವಿಲ್ಲದ ಕಾರಣ ಬ್ಯಾಕಪ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ದಯವಿಟ್ಟು ಅನಗತ್ಯ ಫೈಲ್ಗಳು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಳಿಸುವ ಮೂಲಕ ಜಾಗವನ್ನು ಮುಕ್ತಗೊಳಿಸಿ ಮತ್ತು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."
|
||||
},
|
||||
"restoreSuccessful": "ನಿಮ್ಮ ಮರುಸ್ಥಾಪನೆ ಯಶಸ್ವಿಯಾಗಿದೆ!",
|
||||
"restoreFailure": {
|
||||
"networkError": "ಅಸ್ಥಿರ ಸಂಪರ್ಕದ ಕಾರಣ, ನಮಗೆ ಡೇಟಾವನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.",
|
||||
"technicalError": "ತಾಂತ್ರಿಕ ದೋಷದಿಂದಾಗಿ, ಡೇಟಾವನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ನಮಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."
|
||||
}
|
||||
},
|
||||
"AccountSelection": {
|
||||
"backupProcessInfo": "ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಲು ನೀವು ಕೆಲವೇ ಹಂತಗಳ ದೂರದಲ್ಲಿರುವಿರಿ",
|
||||
"cloudInfo": "ಡೇಟಾ ಬ್ಯಾಕಪ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು, Inji ಜೊತೆಗೆ ನಿಮ್ಮ Google ಡ್ರೈವ್ ಅನ್ನು ಲಿಂಕ್ ಮಾಡಲು `ಮುಂದುವರಿಯಿರಿ` ಬಟನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.",
|
||||
"googleDriveTitle": "ಗೂಗಲ್ ಡ್ರೈವ್",
|
||||
"loadingSubtitle": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...",
|
||||
"proceed": "ಮುಂದುವರೆಯಲು",
|
||||
"goBack": "ಹಿಂದೆ ಹೋಗು",
|
||||
"associatedAccount": "ಸಂಬಂಧಿತ ಖಾತೆ"
|
||||
},
|
||||
"BackupAndRestore": {
|
||||
"title": "ಬ್ಯಾಕಪ್ ಮತ್ತು ಮರುಸ್ಥಾಪನೆ",
|
||||
"backupProgressState": "ಬ್ಯಾಕಪ್ ಪ್ರಗತಿಯಲ್ಲಿದೆ...",
|
||||
"lastBackupDetails": "ಕೊನೆಯ ಬ್ಯಾಕಪ್ ವಿವರಗಳು",
|
||||
"backupInProgress": "ಡೇಟಾ ಬ್ಯಾಕಪ್ ಪ್ರಗತಿಯಲ್ಲಿರುವಾಗಲೂ ನೀವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಳಸಬಹುದು. ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮುಚ್ಚುವುದರಿಂದ ಡೇಟಾ ಬ್ಯಾಕಪ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕೊನೆಗೊಳಿಸುತ್ತದೆ.",
|
||||
"noBackup": "Google ಡ್ರೈವ್ಗೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿ. ನೀವು INJI ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಿದಾಗ ನೀವು ಅವುಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸಬಹುದು.",
|
||||
"storage": "ನಿಮ್ಮ ಆಯ್ಕೆಮಾಡಿದ gmail ಖಾತೆಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ Google ಡ್ರೈವ್ನಲ್ಲಿ ಬ್ಯಾಕಪ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.",
|
||||
"backup": "ಬ್ಯಾಕಪ್",
|
||||
"size": "ಗಾತ್ರ: ",
|
||||
"restore": "ಮರುಸ್ಥಾಪಿಸು",
|
||||
"restoreInProgress": "ನಾವು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತಿದ್ದೇವೆ, ದಯವಿಟ್ಟು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಮುಚ್ಚಬೇಡಿ. ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಆಧರಿಸಿ <X> ನಿಮಿಷಗಳವರೆಗೆ ತೆಗೆದುಕೊಳ್ಳಬಹುದು.",
|
||||
"restoreInfo": "Google ಡ್ರೈವ್ನಿಂದ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮರುಸ್ಥಾಪಿಸಿ",
|
||||
"driveSettings": "Google Drive Settings",
|
||||
"successBanner": "ನಿಮ್ಮ ಬ್ಯಾಕಪ್ ಯಶಸ್ವಿಯಾಗಿದೆ!",
|
||||
"backupFailed": "ಬ್ಯಾಕಪ್ ವಿಫಲವಾಗಿದೆ",
|
||||
"ok": "ಸರಿ"
|
||||
},
|
||||
"WelcomeScreen": {
|
||||
"title": "ಓಪನ್ ಸೋರ್ಸ್ ಐಡೆಂಟಿಟಿ ಸೊಲ್ಯೂಷನ್",
|
||||
"unlockApplication": "ಅಪ್ಲಿಕೇಶನ್ ಅನ್ಲಾಕ್ ಮಾಡಿ",
|
||||
@@ -617,4 +693,4 @@
|
||||
"description": "ಅಪ್ಲಿಕೇಶನ್ ಅನ್ಲಾಕ್ ಮಾಡಲು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಬಳಸಿ"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
110
locales/spa.json
@@ -187,24 +187,41 @@
|
||||
},
|
||||
"HelpScreen": {
|
||||
"header": "Ayuda",
|
||||
"whatIsDigitalCredential?": "¿Qué es una credencial digital?",
|
||||
"here": " aquí. ",
|
||||
"whatIsaDigitalCredential?": "¿Qué es una credencial digital?",
|
||||
"detail-1": "Una credencial digital es la versión digital de su cédula de identidad física.",
|
||||
"whatCanDoWithDigitalCredential?": "¿Qué podemos hacer con las credenciales digitales?",
|
||||
"whatCanWeDoWithDigitalCredential?": "¿Qué podemos hacer con las credenciales digitales?",
|
||||
"detail-2": "Puede aprovechar varios servicios gubernamentales y privados utilizando sus credenciales digitales.",
|
||||
"howToAddCard?": "¿Cómo agregar una tarjeta?",
|
||||
"detail-3": "Para agregar una tarjeta, haga clic en el botón ' ' en la página de inicio y seleccione la opción adecuada.",
|
||||
"howToRemoveCardFromWallet?": "¿Cómo compartir una tarjeta?",
|
||||
"detail-4": "Desliza la tarjeta hacia la izquierda > haz clic en Más > Eliminar de Wallet",
|
||||
"canWeAddMultipleCards?": "¿Podemos agregar varias tarjetas?",
|
||||
"detail-3": "Las identificaciones se pueden descargar a INJI Mobile Wallet como credenciales verificables. Para saber cómo descargar VC con varios ID, lea ",
|
||||
"howToRemoveACardFromTheWallet?": "¿Cómo sacar una tarjeta de la billetera?",
|
||||
"detail-4a": "Puede hacer clic en... (menú de albóndigas) en una tarjeta en la página de inicio y elegir la opción Eliminar de la billetera para eliminar una tarjeta de la billetera. Para saber más, por favor lea",
|
||||
"detail-4b": "Tenga en cuenta que la misma tarjeta se puede descargar nuevamente.",
|
||||
"canIAddMultipleCards?": "¿Puedo agregar varias tarjetas?",
|
||||
"detail-5": "Sí, puede agregar varias tarjetas a la billetera haciendo clic en el botón ' ' en la página de inicio.",
|
||||
"howToShareCard?": "¿Cómo compartir una tarjeta?",
|
||||
"howToShareACard?": "¿Cómo compartir una tarjeta?",
|
||||
"detail-6": "Haga clic en el botón 'Compartir' y escanee el código QR del solicitante. ",
|
||||
"howToActivateCardForOnlineLogin?": "¿Cómo activar una tarjeta para iniciar sesión en línea?",
|
||||
"howToActivateACardForOnlineLogin?": "¿Cómo activar una tarjeta para iniciar sesión en línea?",
|
||||
"detail-7": "Después de agregar exitosamente una tarjeta a la billetera, haga clic en 'Activación pendiente para inicio de sesión en línea' en la tarjeta. ",
|
||||
"howToViewActivity?": "¿Cómo ver los registros de actividad?",
|
||||
"howToViewActivityLogs?": "¿Cómo ver los registros de actividad?",
|
||||
"detail-8": "En la página de inicio, haga clic en 'Historial' para ver los detalles de la actividad del usuario.",
|
||||
"whatCanDoBiometricsChanged?": "¿Qué sucede cuando se cambia la biometría del almacén de claves de Android?",
|
||||
"detail-9": "El almacén de claves de Android contiene información importante, como claves privadas para pruebas de identidad. "
|
||||
"whatHappensWhenAndroidKeystoreBiometricIsChanged?": "¿Qué sucede cuando se cambia la biometría del almacén de claves de Android?",
|
||||
"detail-9": "El almacén de claves de Android contiene información importante, como claves privadas para pruebas de identidad.",
|
||||
"whatIsAnId?":"¿Qué es una identificación?",
|
||||
"detail-10":"Un documento de identidad es cualquier documento que pueda acreditar la identidad de una persona. En el contexto de MOSIP, los identificadores son identificadores digitales alfanuméricos para identidades en el sistema. Si bien la identidad de una persona se representa como una colección de atributos biográficos y biométricos que pueden identificar de forma única a la persona, se hace referencia a la identidad mediante identificadores.",
|
||||
"whatAreTheDifferentTypesOfId?": "¿Cuáles son los diferentes tipos de identificación?",
|
||||
"detail-11":"En el contexto de MOSIP, diferentes ID son UIN, VI y AID. Leer más sobre ellos",
|
||||
"whereCanIFindTheseIds?":"¿Dónde puedo encontrar estas identificaciones?",
|
||||
"detail-12a": "Como parte del proceso de inscripción (registro), al registrar exitosamente la información demográfica y biométrica del residente, se le asigna una identificación de registro (AID). También se emite (imprime) al residente un comprobante de acuse de recibo que contiene los detalles capturados y la AID como prueba de registro.",
|
||||
"detail-12b": "Tras el procesamiento exitoso, se asigna un Número de identificación único (UIN) al residente y se le envía una notificación al número de teléfono y/o correo electrónico registrado.",
|
||||
"detail-12c": "VID/ID virtual es un identificador de alias configurado para uso único y no se puede vincular. Dado que se utilizan para transacciones de autenticación, dichos identificadores deben ser conocidos únicamente por el usuario o generarse con su participación.",
|
||||
"whyDoesMyVcSayActivationIsPending?":"¿Por qué mi VC dice que la activación está pendiente?",
|
||||
"detail-13": "Una vez que se descarga el VC en su billetera, aún no está vinculado a la identidad del usuario, por lo que su VC dice Activación pendiente. Vincular su VC a su billetera (con su contraseña o datos biométricos) es crucial para garantizar el más alto nivel de seguridad. Para activar su VC, siga los pasos",
|
||||
"whatDoYouMeanByActivatedForOnlineLogin?": "¿Qué quiere decir con Activado para iniciar sesión en línea?",
|
||||
"detail-14a": "1. Una vez que el VC se vincule exitosamente con la billetera, podrá ver que está activado para iniciar sesión en línea, lo que significa que este VC ahora se puede usar para el proceso de inicio de sesión QR. Para saber más sobre el inicio de sesión con código QR, lea",
|
||||
"detail-14b": "2. Las preguntas y respuestas deben ser legibles y comprensibles incluso cuando el usuario cambia el idioma en la aplicación INJI.",
|
||||
"whatIsAVerifiableCredential?": "¿Qué es una credencial verificable?",
|
||||
"detail-15": "Una credencial verificable es una pieza de información firmada digitalmente que representa una declaración hecha por el emisor sobre un tema y generalmente incluye detalles demográficos. Los capitalistas de riesgo son seguros y confiables en diversas interacciones en línea."
|
||||
},
|
||||
"AddVcModal": {
|
||||
"requestingCredential": "Solicitando credencial...",
|
||||
@@ -322,12 +339,14 @@
|
||||
"OnboardingOverlay": {
|
||||
"stepOneTitle": "¡Bienvenido!",
|
||||
"stepOneText": "Lleva contigo tu credencial digital en todo momento. ",
|
||||
"stepTwoTitle": "Monedero digital confiable",
|
||||
"stepTwoText": "Guarde y lleve todas sus tarjetas importantes en una única billetera de confianza.",
|
||||
"stepThreeTitle": "Compartir de forma segura",
|
||||
"stepThreeText": "Comparta sus tarjetas de forma segura y sin complicaciones y aproveche varios servicios.",
|
||||
"stepFourTitle": "Autenticación sin problemas",
|
||||
"stepTwoTitle": "Compartir de forma segura",
|
||||
"stepTwoText": "Comparta sus tarjetas de forma segura y sin complicaciones y aproveche varios servicios.",
|
||||
"stepThreeTitle": "Monedero digital confiable",
|
||||
"stepThreeText": "Almacene y lleve todas sus tarjetas importantes en una única billetera de confianza.",
|
||||
"stepFourTitle": "Acceso rapido",
|
||||
"stepFourText": "Autentíquese fácilmente utilizando la credencial digital almacenada.",
|
||||
"stepFiveTitle": "Los datos de copia de seguridad",
|
||||
"stepFiveText": "Proteja sus datos con facilidad utilizando nuestra copia de seguridad",
|
||||
"getStarted": "Empezar",
|
||||
"goBack": "Regresa",
|
||||
"back": "Atrás",
|
||||
@@ -577,6 +596,63 @@
|
||||
},
|
||||
"ignore": "Ignorar"
|
||||
},
|
||||
"DataBackupScreen": {
|
||||
"dataBackupAndRestore": "Copia de seguridad de restauracion",
|
||||
"new": "Nueva",
|
||||
"loadingTitle": "Cargando configuración",
|
||||
"loadingSubtitle": "Cargando...",
|
||||
"errors": {
|
||||
"permissionDenied": {
|
||||
"title": "¡Permiso denegado!",
|
||||
"message": "Notamos que canceló la creación de la configuración de copia de seguridad de datos. Recomendamos encarecidamente revisar la configuración de la copia de seguridad de datos para garantizar la disponibilidad de sus datos.",
|
||||
"helpText": "Haga clic en \"Configurar ajustes\" para configurar la copia de seguridad de datos ahora, o \"Cancelar\" para volver a la pantalla de configuración."
|
||||
},
|
||||
"noInternetConnection": {
|
||||
"title": "Sin conexión a Internet",
|
||||
"message": "Por favor verifique su conexión y vuelva a intentarlo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"BackupAndRestoreBanner": {
|
||||
"backupSuccessful": "¡Su copia de seguridad fue exitosa!",
|
||||
"backupFailure": {
|
||||
"networkError": "Debido a Conexión inestable, no pudimos realizar la copia de seguridad de los datos. Vuelve a intentarlo más tarde.",
|
||||
"technicalError": "Debido a un error técnico, no pudimos realizar una copia de seguridad de los datos. Por favor, inténtelo de nuevo más tarde.",
|
||||
"noDataForBackup": "Lo sentimos, pero no hay datos disponibles para realizar una copia de seguridad en este momento.",
|
||||
"storageLimitReached": "No podemos completar el proceso de copia de seguridad debido a que no hay suficiente espacio de almacenamiento en su dispositivo. Libere espacio eliminando archivos o aplicaciones innecesarios y vuelva a intentarlo."
|
||||
},
|
||||
"restoreSuccessful": "¡Tu restauración fue exitosa!",
|
||||
"restoreFailure": {
|
||||
"networkError": "Debido a una conexión inestable, no pudimos restaurar los datos. Por favor, inténtelo de nuevo más tarde.",
|
||||
"technicalError": "Debido a un error técnico, no pudimos restaurar los datos. Por favor, inténtelo de nuevo más tarde."
|
||||
}
|
||||
},
|
||||
"AccountSelection": {
|
||||
"backupProcessInfo": "Estás a solo unos pasos de hacer una copia de seguridad de tus datos",
|
||||
"cloudInfo": "Para iniciar la copia de seguridad de los datos, toque el botón `Continuar` para vincular su Google Drive con Inji.",
|
||||
"googleDriveTitle": "Google Drive",
|
||||
"loadingSubtitle": "Cargando...",
|
||||
"proceed": "Proceder",
|
||||
"goBack": "Regresa",
|
||||
"associatedAccount": "Cuenta asociada"
|
||||
},
|
||||
"BackupAndRestore": {
|
||||
"title": "Copia de seguridad y restauración",
|
||||
"backupProgressState": "Copia de seguridad en progreso...",
|
||||
"lastBackupDetails": "Detalles de la última copia de seguridad",
|
||||
"backupInProgress": "Aún puedes usar la aplicación mientras se realiza la copia de seguridad de los datos. Cerrar la aplicación finalizará el proceso de copia de seguridad de los datos.",
|
||||
"noBackup": "Haga una copia de seguridad de sus datos en Google Drive. Puede restaurarlos cuando reinstale INJI.",
|
||||
"storage": "La copia de seguridad se almacenará en Google Drive asociado a su cuenta de Gmail elegida.",
|
||||
"backup": "Copia de seguridad",
|
||||
"size": "Tamaño: ",
|
||||
"restore": "Restaurar",
|
||||
"restoreInProgress": "Estamos restaurando tus datos, no cierres la aplicación. Esto puede tardar hasta <X> minutos según tus datos.",
|
||||
"restoreInfo": "Restaura tus datos desde Google Drive",
|
||||
"driveSettings": "Configuración de Google Drive",
|
||||
"successBanner": "¡Su copia de seguridad fue exitosa!",
|
||||
"backupFailed": "Copia de seguridad fallida",
|
||||
"ok": "bien"
|
||||
},
|
||||
"SetupLanguage": {
|
||||
"header": "Elige lengua",
|
||||
"description": "Selecciona tu idioma preferido",
|
||||
@@ -609,4 +685,4 @@
|
||||
"description": "Utilice la huella digital para desbloquear la aplicación."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
118
locales/tam.json
@@ -185,24 +185,41 @@
|
||||
},
|
||||
"HelpScreen": {
|
||||
"header": "உதவி",
|
||||
"whatIsDigitalCredential?": "டிஜிட்டல் நற்சான்றிதழ் என்றால் என்ன?",
|
||||
"here": " இங்கே. ",
|
||||
"whatIsaDigitalCredential?": "டிஜிட்டல் நற்சான்றிதழ் என்றால் என்ன?",
|
||||
"detail-1": "டிஜிட்டல் நற்சான்றிதழ் என்பது உங்கள் உடல் அடையாள அட்டையின் டிஜிட்டல் பதிப்பாகும்",
|
||||
"whatCanDoWithDigitalCredential?": "டிஜிட்டல் சான்றுகளை வைத்து நாம் என்ன செய்ய முடியும்?",
|
||||
"whatCanWeDoWithDigitalCredential?": "டிஜிட்டல் சான்றுகளை வைத்து நாம் என்ன செய்ய முடியும்?",
|
||||
"detail-2": "உங்கள் டிஜிட்டல் சான்றுகளைப் பயன்படுத்தி பல்வேறு அரசு மற்றும் தனியார் சேவைகளைப் பெறலாம்.",
|
||||
"howToAddCard?": "அட்டையை எவ்வாறு சேர்ப்பது?",
|
||||
"detail-3": "கார்டைச் சேர்க்க, முகப்புப் பக்கத்தில் உள்ள '+' பொத்தானைக் கிளிக் செய்து, பொருத்தமான விருப்பத்தைத் தேர்ந்தெடுக்கவும்.",
|
||||
"howToRemoveCardFromWallet?": "ஒரு அட்டையை எவ்வாறு பகிர்வது?",
|
||||
"detail-4": "கார்டில் இடதுபுறமாக ஸ்வைப் செய்யவும் > மேலும் என்பதைக் கிளிக் செய்யவும் > வாலட்டில் இருந்து அகற்று",
|
||||
"canWeAddMultipleCards?": "பல அட்டைகளைச் சேர்க்கலாமா?",
|
||||
"detail-3": "ஐடிகளை சரிபார்க்கக்கூடிய சான்றுகளாக INJI மொபைல் வாலட்டில் பதிவிறக்கம் செய்யலாம். பல்வேறு ஐடிகளைக் கொண்ட VCகளை எவ்வாறு பதிவிறக்குவது என்பதை அறிய, தயவுசெய்து படிக்கவும் ",
|
||||
"howToRemoveACardFromTheWallet?": "பணப்பையில் இருந்து அட்டையை எவ்வாறு அகற்றுவது?",
|
||||
"detail-4a": "முகப்புப் பக்கத்தில் உள்ள கார்டில் ...(மீட்பால்ஸ் மெனு) என்பதைக் கிளிக் செய்து, பணப்பையிலிருந்து அட்டையை அகற்ற, வாலட்டில் இருந்து அகற்று விருப்பத்தைத் தேர்வுசெய்யலாம். மேலும் அறிய, படிக்கவும்",
|
||||
"detail-4b": "அதே அட்டையை மீண்டும் பதிவிறக்கம் செய்யலாம் என்பதை நினைவில் கொள்ளவும்.",
|
||||
"canIAddMultipleCards?": "நான் பல அட்டைகளைச் சேர்க்கலாமா?",
|
||||
"detail-5": "ஆம், முகப்புப் பக்கத்தில் உள்ள '+' பொத்தானைக் கிளிக் செய்வதன் மூலம் பல அட்டைகளை வாலட்டில் சேர்க்கலாம்.",
|
||||
"howToShareCard?": "ஒரு அட்டையை எவ்வாறு பகிர்வது?",
|
||||
"howToShareACard?": "ஒரு அட்டையை எவ்வாறு பகிர்வது?",
|
||||
"detail-6": "'பகிர்' பொத்தானைக் கிளிக் செய்து, கோரும் தரப்பினரிடமிருந்து QR குறியீட்டை ஸ்கேன் செய்யவும். இணைப்பு நிறுவப்பட்டதும், அட்டை பகிரப்படும்.",
|
||||
"howToActivateCardForOnlineLogin?": "ஆன்லைன் உள்நுழைவுக்கான அட்டையை எவ்வாறு செயல்படுத்துவது?",
|
||||
"howToActivateACardForOnlineLogin?": "ஆன்லைன் உள்நுழைவுக்கான அட்டையை எவ்வாறு செயல்படுத்துவது?",
|
||||
"detail-7": "வாலட்டில் கார்டை வெற்றிகரமாகச் சேர்த்த பிறகு, கார்டில் உள்ள 'ஆன்லைன் உள்நுழைவுக்கான ஆக்டிவேஷன் பெண்டிங்' என்பதைக் கிளிக் செய்யவும். 'செயல்படுத்து' என்பதைக் கிளிக் செய்தால், ஆன்லைன் உள்நுழைவுக்கு கார்டு தயாராக இருக்கும்.",
|
||||
"howToViewActivity?": "செயல்பாட்டுப் பதிவுகளை எவ்வாறு பார்ப்பது?",
|
||||
"howToViewActivityLogs?": "செயல்பாட்டுப் பதிவுகளை எவ்வாறு பார்ப்பது?",
|
||||
"detail-8": "முகப்புப் பக்கத்தில், பயனரின் செயல்பாட்டின் விவரங்களைப் பார்க்க, 'வரலாறு' என்பதைக் கிளிக் செய்யவும்.",
|
||||
"whatCanDoBiometricsChanged?": "ஆண்ட்ராய்டு கீஸ்டோர் பயோமெட்ரிக் மாற்றப்பட்டால் என்ன நடக்கும்?",
|
||||
"detail-9": "அடையாளச் சான்றுகளுக்கான தனிப்பட்ட விசைகள் போன்ற முக்கியமான தகவல்களை ஆண்ட்ராய்டு கீஸ்டோர் வைத்திருக்கிறது. உங்கள் பயோமெட்ரிக்ஸை மாற்றினால், பழைய விசைகள் இனி பாதுகாப்பாக இருக்காது. விஷயங்களைப் பாதுகாப்பாக வைத்திருக்க, அந்தப் பழைய சாவிகளால் கையொப்பமிடப்பட்ட அடையாளச் சான்றுகளை அகற்றுவோம். உங்கள் அடையாளச் சான்றுகளை மீண்டும் பதிவிறக்கம் செய்யலாம், மேலும் அவை சமீபத்திய, பாதுகாப்பான விசைகளுடன் கையொப்பமிடப்படும்."
|
||||
"whatHappensWhenAndroidKeystoreBiometricIsChanged?": "ஆண்ட்ராய்டு கீஸ்டோர் பயோமெட்ரிக் மாற்றப்பட்டால் என்ன நடக்கும்?",
|
||||
"detail-9": "அடையாளச் சான்றுகளுக்கான தனிப்பட்ட விசைகள் போன்ற முக்கியமான தகவல்களை ஆண்ட்ராய்டு கீஸ்டோர் வைத்திருக்கிறது. உங்கள் பயோமெட்ரிக்ஸை மாற்றினால், பழைய விசைகள் இனி பாதுகாப்பாக இருக்காது. விஷயங்களைப் பாதுகாப்பாக வைத்திருக்க, அந்தப் பழைய சாவிகளால் கையொப்பமிடப்பட்ட அடையாளச் சான்றுகளை அகற்றுவோம். உங்கள் அடையாளச் சான்றுகளை மீண்டும் பதிவிறக்கம் செய்யலாம், மேலும் அவை சமீபத்திய, பாதுகாப்பான விசைகளுடன் கையொப்பமிடப்படும்.",
|
||||
"whatIsAnId?":"ஐடி என்றால் என்ன?",
|
||||
"detail-10":"ஐடி என்பது ஒரு நபரின் அடையாளத்தை நிரூபிக்கக்கூடிய எந்த ஆவணமாகும். MOSIP இன் சூழலில், அடையாளங்காட்டிகள் அமைப்பில் உள்ள அடையாளங்களுக்கான எண்ணெழுத்து டிஜிட்டல் கைப்பிடிகள் ஆகும். ஒரு நபரின் அடையாளம் தனிப்பட்ட முறையில் நபரை அடையாளம் காணக்கூடிய சுயசரிதை மற்றும் பயோமெட்ரிக் பண்புக்கூறுகளின் தொகுப்பாக குறிப்பிடப்பட்டாலும், அடையாளம் அடையாளங்காட்டிகளைப் பயன்படுத்துவதாகக் குறிப்பிடப்படுகிறது.",
|
||||
"whatAreTheDifferentTypesOfId?": "பல்வேறு வகையான ஐடி என்ன?",
|
||||
"detail-11":"MOSIP இன் சூழலில், வெவ்வேறு ஐடிகள் UIN, VID மற்றும் AID ஆகும். அவர்களைப் பற்றி மேலும் படிக்கவும்",
|
||||
"whereCanIFindTheseIds?":"இந்த ஐடிகளை நான் எங்கே காணலாம்?",
|
||||
"detail-12a": "பதிவுசெய்தல் (பதிவு) செயல்முறையின் ஒரு பகுதியாக, வசிப்பவரின் மக்கள்தொகைத் தகவல் மற்றும் பயோமெட்ரிக்ஸை வெற்றிகரமாகப் பதிவுசெய்த பிறகு, குடியிருப்பாளருக்கு ஒரு பதிவு ஐடி (AID) ஒதுக்கப்படுகிறது. கைப்பற்றப்பட்ட விவரங்கள் மற்றும் எய்ட் அடங்கிய ஒப்புகை சீட்டு, பதிவு செய்யப்பட்டதற்கான ஆதாரமாக குடியிருப்பாளருக்கு வழங்கப்படுகிறது (அச்சிடப்பட்டது).",
|
||||
"detail-12b": "வெற்றிகரமான செயலாக்கத்தில், குடியிருப்பாளருக்கு ஒரு தனித்துவ அடையாள எண் (UIN) ஒதுக்கப்பட்டு, பதிவு செய்யப்பட்ட தொலைபேசி எண் மற்றும்/அல்லது மின்னஞ்சலில் குடியிருப்பாளருக்கு ஒரு அறிவிப்பு அனுப்பப்படும்.",
|
||||
"detail-12c": "விஐடி / விர்ச்சுவல் ஐடி என்பது ஒரு முறை பயன்பாட்டிற்காக கட்டமைக்கப்பட்ட மாற்று அடையாளங்காட்டியாகும் மற்றும் இணைக்க முடியாது. இவை அங்கீகார பரிவர்த்தனைகளுக்குப் பயன்படுத்தப்படுவதால், அத்தகைய அடையாளங்காட்டிகள் பயனருக்கு மட்டுமே தெரிந்திருக்க வேண்டும் அல்லது அவர்களின் பங்கேற்புடன் உருவாக்கப்பட வேண்டும்.",
|
||||
"whyDoesMyVcSayActivationIsPending?":"செயல்படுத்தல் நிலுவையில் இருப்பதாக எனது VC ஏன் கூறுகிறார்?",
|
||||
"detail-13": "உங்கள் வாலட்டில் VC பதிவிறக்கம் செய்யப்பட்டவுடன், அது இன்னும் பயனரின் அடையாளத்துடன் பிணைக்கப்படவில்லை, அதனால்தான் உங்கள் VC செயல்படுத்தல் நிலுவையில் உள்ளது எனக் கூறுகிறது. உங்கள் பணப்பையுடன் (உங்கள் கடவுக்குறியீடு அல்லது பயோமெட்ரிக்ஸுடன்) உங்கள் VC ஐ பிணைப்பது மிக உயர்ந்த அளவிலான பாதுகாப்பை உறுதிசெய்ய முக்கியமானது. உங்கள் VC ஐச் செயல்படுத்த, படிகளைப் பின்பற்றவும்",
|
||||
"whatDoYouMeanByActivatedForOnlineLogin?": "ஆன்லைன் உள்நுழைவுக்காக செயல்படுத்தப்பட்டது என்பதன் அர்த்தம் என்ன?",
|
||||
"detail-14a": "1. VC வெற்றிகரமாக பணப்பையுடன் பிணைக்கப்பட்டவுடன், அது ஆன்லைன் உள்நுழைவுக்காக செயல்படுத்தப்பட்டிருப்பதை நீங்கள் பார்க்கலாம், அதாவது இந்த VC இப்போது QR உள்நுழைவு செயல்முறைக்கு பயன்படுத்தப்படலாம். QR குறியீடு உள்நுழைவு பற்றி மேலும் அறிய, தயவுசெய்து படிக்கவும்",
|
||||
"detail-14b": "2. INJI பயன்பாட்டில் பயனர் மொழியை மாற்றும்போது கூட கேள்வி பதில் படிக்கக்கூடியதாகவும் புரிந்துகொள்ளக்கூடியதாகவும் இருக்க வேண்டும்.",
|
||||
"whatIsAVerifiableCredential?": "சரிபார்க்கக்கூடிய நற்சான்றிதழ் என்றால் என்ன?",
|
||||
"detail-15": "சரிபார்க்கக்கூடிய நற்சான்றிதழ் என்பது டிஜிட்டல் கையொப்பமிடப்பட்ட தகவலாகும், இது ஒரு விஷயத்தைப் பற்றி வழங்குபவரின் அறிக்கையைப் பிரதிபலிக்கிறது மற்றும் பொதுவாக மக்கள்தொகை விவரங்களை உள்ளடக்கியது. பல்வேறு ஆன்லைன் தொடர்புகளில் VCகள் பாதுகாப்பானவை மற்றும் நம்பகமானவை."
|
||||
},
|
||||
"AddVcModal": {
|
||||
"requestingCredential": "நற்சான்றிதழைக் கோருகிறது...",
|
||||
@@ -318,16 +335,18 @@
|
||||
}
|
||||
},
|
||||
"OnboardingOverlay": {
|
||||
"stepOneTitle": "பாதுகாப்பான பகிர்வு!",
|
||||
"stepOneText": "உங்கள் டிஜிட்டல் நற்சான்றிதழை எப்போதும் உங்களுடன் வைத்திருக்கவும். அவற்றை திறம்பட நிர்வகிக்கவும் பயன்படுத்தவும் இன்ஜி உதவுகிறது. தொடங்குவதற்கு, உங்கள் சுயவிவரத்தில் கார்டுகளைச் சேர்க்கவும்.",
|
||||
"stepTwoTitle": "நம்பகமான டிஜிட்டல் வாலட்",
|
||||
"stepTwoText": "உங்கள் முக்கியமான கார்டுகளை ஒரே நம்பகமான பணப்பையில் சேமித்து எடுத்துச் செல்லுங்கள்.",
|
||||
"stepThreeTitle": "பாதுகாப்பான பகிர்வு",
|
||||
"stepThreeText": "தொந்தரவு இல்லாத வகையில் உங்கள் கார்டுகளைப் பாதுகாப்பாகப் பகிர்ந்து, பல்வேறு சேவைகளைப் பெறுங்கள்.",
|
||||
"stepFourTitle": "தொந்தரவு இல்லாத அங்கீகாரம்",
|
||||
"stepOneTitle": "வரவேற்பு!",
|
||||
"stepOneText": "உங்கள் டிஜிட்டல் நற்சான்றிதழை எப்போதும் உங்களுடன் வைத்திருக்கவும். ",
|
||||
"stepTwoTitle": "பாதுகாப்பான பகிர்வு",
|
||||
"stepTwoText": "தொந்தரவு இல்லாத வகையில் உங்கள் கார்டுகளைப் பாதுகாப்பாகப் பகிர்ந்து, பல்வேறு சேவைகளைப் பெறுங்கள்.",
|
||||
"stepThreeTitle": "நம்பகமான டிஜிட்டல் வாலட்",
|
||||
"stepThreeText": "உங்கள் முக்கியமான கார்டுகளை ஒரே நம்பகமான பணப்பையில் சேமித்து எடுத்துச் செல்லுங்கள்.",
|
||||
"stepFourTitle": "விரைவான அணுகல்",
|
||||
"stepFourText": "சேமிக்கப்பட்ட டிஜிட்டல் நற்சான்றிதழைப் பயன்படுத்தி உங்களை எளிதாக அங்கீகரிக்கவும்.",
|
||||
"getStarted": "தொடங்கு",
|
||||
"goBack": "திரும்பி போ",
|
||||
"stepFiveTitle": "காப்பு தரவு",
|
||||
"stepFiveText": "எங்கள் காப்புப்பிரதியைப் பயன்படுத்தி உங்கள் தரவை எளிதாகப் பாதுகாக்கவும்",
|
||||
"getStarted": "தொடங்குங்கள்",
|
||||
"goBack": "திரும்பி செல்",
|
||||
"back": "மீண்டும்",
|
||||
"skip": "தவிர்க்கவும்",
|
||||
"next": "அடுத்தது"
|
||||
@@ -577,6 +596,63 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"DataBackupScreen": {
|
||||
"dataBackupAndRestore": "காப்புப்பிரதி & மீட்டமை",
|
||||
"new": "புதியது",
|
||||
"loadingTitle": "அமைவை ஏற்றுகிறது",
|
||||
"loadingSubtitle": "ஏற்றுகிறது...",
|
||||
"errors": {
|
||||
"permissionDenied": {
|
||||
"title": "அனுமதி மறுக்கப்பட்டது!",
|
||||
"message": "தரவு காப்புப் பிரதி அமைப்புகளை உருவாக்குவதை நீங்கள் ரத்து செய்துவிட்டதை நாங்கள் கவனித்தோம். உங்கள் தரவு கிடைப்பதை உறுதிசெய்ய, தரவு காப்புப்பிரதி அமைப்புகளை மீண்டும் பார்வையிடுமாறு கடுமையாகப் பரிந்துரைக்கிறோம்.",
|
||||
"helpText": "இப்போது தரவு காப்புப்பிரதியை அமைக்க `அமைப்புகளை உள்ளமை` என்பதைக் கிளிக் செய்யவும் அல்லது அமைப்புகள் திரைக்குச் செல்ல `ரத்துசெய்` என்பதைக் கிளிக் செய்யவும்."
|
||||
},
|
||||
"noInternetConnection": {
|
||||
"title": "இணைய இணைப்பு இல்லை",
|
||||
"message": "உங்கள் இணைப்பைச் சரிபார்த்து மீண்டும் முயற்சிக்கவும்"
|
||||
}
|
||||
}
|
||||
},
|
||||
"BackupAndRestoreBanner": {
|
||||
"backupSuccessful": "உங்கள் காப்புப்பிரதி வெற்றிகரமாக இருந்தது!",
|
||||
"backupFailure": {
|
||||
"networkError": "நிலையற்ற இணைப்பு காரணமாக, தரவு காப்புப்பிரதியை எங்களால் செய்ய முடியவில்லை. பிறகு முயற்சிக்கவும்.",
|
||||
"technicalError": "தொழில்நுட்பப் பிழை காரணமாக, தரவு காப்புப் பிரதி எடுக்க முடியவில்லை. பிறகு முயற்சிக்கவும்.",
|
||||
"noDataForBackup": "மன்னிக்கவும், தற்போது காப்புப் பிரதி எடுக்க தரவு எதுவும் இல்லை.",
|
||||
"storageLimitReached": "உங்கள் சாதனத்தில் போதுமான சேமிப்பிடம் இல்லாததால், காப்புப் பிரதி செயல்முறையை எங்களால் முடிக்க முடியவில்லை. தேவையற்ற கோப்புகள் அல்லது பயன்பாடுகளை நீக்கி இடத்தை காலி செய்து, மீண்டும் முயற்சிக்கவும்."
|
||||
},
|
||||
"restoreSuccessful": "உங்கள் மீட்டெடுப்பு வெற்றிகரமாக இருந்தது!",
|
||||
"restoreFailure": {
|
||||
"networkError": "நிலையற்ற இணைப்பு காரணமாக, எங்களால் தரவை மீட்டெடுக்க முடியவில்லை. பிறகு முயற்சிக்கவும்.",
|
||||
"technicalError": "தொழில்நுட்பப் பிழை காரணமாக, தரவை மீட்டெடுக்க முடியவில்லை. பிறகு முயற்சிக்கவும்."
|
||||
}
|
||||
},
|
||||
"AccountSelection": {
|
||||
"backupProcessInfo": "உங்கள் தரவை காப்புப் பிரதி எடுக்க இன்னும் சில படிகள் உள்ளன",
|
||||
"cloudInfo": "தரவு காப்புப்பிரதியைத் தொடங்க, உங்கள் கூகிள் இயக்ககத்தை Inji உடன் இணைக்க, `தொடரவும்' பொத்தானைத் தட்டவும்.",
|
||||
"googleDriveTitle": "கூகிள் இயக்ககம்",
|
||||
"loadingSubtitle": "ஏற்றுகிறது...",
|
||||
"proceed": "தொடரவும்",
|
||||
"goBack": "திரும்பி செல்",
|
||||
"associatedAccount": "தொடர்புடைய கணக்கு"
|
||||
},
|
||||
"BackupAndRestore": {
|
||||
"title": "காப்புப்பிரதி & மீட்டமை",
|
||||
"backupProgressState": "காப்புப்பிரதி செயலில் உள்ளது...",
|
||||
"lastBackupDetails": "கடைசி காப்பு விவரங்கள்",
|
||||
"backupInProgress": "தரவு காப்புப்பிரதி செயலில் இருக்கும்போது நீங்கள் பயன்பாட்டைப் பயன்படுத்தலாம். பயன்பாட்டை மூடுவது தரவு காப்புப்பிரதி செயல்முறையை நிறுத்தும்.",
|
||||
"noBackup": "உங்கள் தரவை Google இயக்ககத்தில் காப்புப் பிரதி எடுக்கவும். நீங்கள் INJI ஐ மீண்டும் நிறுவும் போது அவற்றை மீட்டெடுக்கலாம்.",
|
||||
"storage": "நீங்கள் தேர்ந்தெடுத்த ஜிமெயில் கணக்குடன் தொடர்புடைய Google இயக்ககத்தில் காப்புப்பிரதி சேமிக்கப்படும்.",
|
||||
"backup": "காப்புப்பிரதி",
|
||||
"size": "அளவு: ",
|
||||
"restore": "மீட்டமை",
|
||||
"restoreInProgress": "உங்கள் தரவை மீட்டெடுக்கிறோம், தயவுசெய்து பயன்பாட்டை மூட வேண்டாம். இதற்கு உங்கள் தரவின் அடிப்படையில் <X> நிமிடங்கள் ஆகலாம்.",
|
||||
"restoreInfo": "Google இயக்ககத்திலிருந்து உங்கள் தரவை மீட்டெடுக்கவும்",
|
||||
"driveSettings": "Google இயக்கக அமைப்புகள்",
|
||||
"successBanner": "உங்கள் காப்புப்பிரதி வெற்றிகரமாக இருந்தது!",
|
||||
"backupFailed": "காப்புப்பிரதி தோல்வியடைந்தது",
|
||||
"ok": "சரி"
|
||||
},
|
||||
"WelcomeScreen": {
|
||||
"title": "திறந்த மூல அடையாள தீர்வு",
|
||||
"unlockApplication": "பயன்பாட்டைத் திறக்கவும்",
|
||||
@@ -623,4 +699,4 @@
|
||||
"description": "பயன்பாட்டைத் திறக்க கைரேகையைப் பயன்படுத்தவும்"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import NetInfo, {NetInfoStateType} from '@react-native-community/netinfo';
|
||||
import {AppState, AppStateStatus, Platform} from 'react-native';
|
||||
import {AppState, AppStateStatus} from 'react-native';
|
||||
import {getDeviceId, getDeviceName} from 'react-native-device-info';
|
||||
import {assign, EventFrom, send, spawn, StateFrom} from 'xstate';
|
||||
import {createModel} from 'xstate/lib/model';
|
||||
@@ -25,7 +25,11 @@ import {
|
||||
SETTINGS_STORE_KEY,
|
||||
} from '../shared/constants';
|
||||
import {logState} from '../shared/commonUtil';
|
||||
import {backupMachine, createBackupMachine} from './backup';
|
||||
import {backupMachine, createBackupMachine} from './backupAndRestore/backup';
|
||||
import {
|
||||
backupRestoreMachine,
|
||||
createBackupRestoreMachine,
|
||||
} from './backupRestore';
|
||||
|
||||
const model = createModel(
|
||||
{
|
||||
@@ -266,6 +270,11 @@ export const appMachine = model.createMachine(
|
||||
backupMachine.id,
|
||||
);
|
||||
|
||||
serviceRefs.backupRestore = spawn(
|
||||
createBackupRestoreMachine(serviceRefs),
|
||||
backupRestoreMachine.id,
|
||||
);
|
||||
|
||||
serviceRefs.activityLog = spawn(
|
||||
createActivityLogMachine(serviceRefs),
|
||||
activityLogMachine.id,
|
||||
@@ -300,6 +309,7 @@ export const appMachine = model.createMachine(
|
||||
context.serviceRefs.activityLog.subscribe(logState);
|
||||
context.serviceRefs.scan.subscribe(logState);
|
||||
context.serviceRefs.backup.subscribe(logState);
|
||||
context.serviceRefs.backupRestore.subscribe(logState);
|
||||
|
||||
if (isAndroid()) {
|
||||
context.serviceRefs.request.subscribe(logState);
|
||||
|
||||