# Starter pipeline # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml resources: pipelines: - pipeline: etude-apium-android source: etude-android-test-auto (1) project: CommonsCheck trigger: true pool: vmImage: macOS-latest variables: ANDROID_EMU_NAME: test ANDROID_SDK_ID: system-images;android-28;google_apis_playstore;x86 steps: - task: DownloadPipelineArtifact@2 inputs: buildType: 'specific' project: 'CommonsCheck' definition: 73 buildVersionToDownload: 'latest' branchName: 'refs/heads/main' downloadPath: '$(System.ArtifactsDirectory)/apk' - task: CopyFiles@2 displayName: "Copy Apk" inputs: SourceFolder: $(System.ArtifactsDirectory)/apk/drop/app/build/outputs/apk/debug Contents: '**' TargetFolder: $(Build.Repository.LocalPath)/apks_downloaded - script: java -version env: JAVA_HOME: $(JAVA_HOME_17_X64) PATH: $(JAVA_HOME_17_X64)/bin:$(PATH) - task: CmdLine@2 displayName: 'Configure Appium and Android SDK' inputs: script: | echo "Configuring Environment" export PATH=$PATH:$JAVA_HOME/bin echo export "ANDROID_HOME=\$ANDROID_HOME" >> ~/.bash_profile export PATH=$PATH:$ANDROID_HOME echo "ANDROID_HOME: ${ANDROID_HOME}" echo "JAVA_HOME: ${JAVA_HOME}" echo "PATH: ${PATH}" echo "y" | $ANDROID_HOME/tools/bin/sdkmanager "$(ANDROID_SDK_ID)" echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd -n "$(ANDROID_EMU_NAME)" -k "$(ANDROID_SDK_ID)" -f $ANDROID_HOME/emulator/emulator -list-avds echo "Starting emulator" nohup $ANDROID_HOME/emulator/emulator -avd "$(ANDROID_EMU_NAME)" -gpu swiftshader_indirect -noaudio -no-boot-anim -no-snapshot > /dev/null 2>&1 & $ANDROID_HOME/platform-tools/adb wait-for-device while [[ $? -ne 0 ]]; do sleep 1; $ANDROID_HOME/platform-tools/adb shell pm list packages; done; $ANDROID_HOME/platform-tools/adb devices echo "Emulator started" echo "Installing Appium" npm install -g appium@next ln -fs /usr/local/lib/node_modules/appium/build/lib/main.js /usr/local/bin/appium chmod +x /usr/local/bin/appium export PATH=$PATH:/usr/local/bin/appium appium --version echo "Appium installed" echo "Installing UIA2 driver" appium driver install uiautomator2 appium driver list echo "UIA2 driver installed" echo "Installing and Running Appium doctor" npm install -g request@2.34.0 npm install @appium/doctor -g ln -fs /usr/local/lib/node_modules/appium-doctor/appium-doctor.js /usr/local/bin/appium-doctor chmod +x /usr/local/bin/appium-doctor export PATH=$PATH:/usr/local/bin/appium-doctor appium-doctor echo "Appium doctor installed and executed" #sudo xcode-select -s /Applications/Xcode_$(XCODE_VERSION).app/Contents/Developer #xcrun simctl list - task: CmdLine@2 displayName: 'Start Appium server' inputs: script: | appium & echo "Appium server started" - bash: | echo $(System.ArtifactsDirectory)/apk/drop/build/app/outputs/apk/release ls $(System.ArtifactsDirectory)/apk/drop/build/app/outputs/apk/release echo $(Build.Repository.LocalPath)/apks_downloaded echo " JDK VERSION" - task: Maven@3 displayName: 'Testing' inputs: mavenPomFile: 'pom.xml' goals: 'clean test' publishJUnitResults: true testResultsFiles: '**/surefire-reports/TEST-*.xml' javaHomeOption: 'JDKVersion' mavenVersionOption: 'Default' mavenAuthenticateFeed: false effectivePomSkip: false sonarQubeRunAnalysis: false continueOnError: true - task: PublishTestResults@2 displayName: "Publish Test Results" condition: always() inputs: testResultsFormat: 'JUnit' testResultsFiles: './test-output/junitreports/TEST-org.example.formTesting.xml' searchFolder: '$(System.DefaultWorkingDirectory)'