test: use newer app for testing and drop ios 13 and lower versions #430
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Functional Tests | |
| on: | |
| # Run by manual at this time | |
| workflow_dispatch: | |
| push: | |
| branches: [ master ] | |
| paths-ignore: | |
| - '.github/**' | |
| - 'docs/**' | |
| - '*.md' | |
| pull_request: | |
| branches: [ master ] | |
| paths-ignore: | |
| - '.github/**' | |
| - 'docs/**' | |
| - '*.md' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| ios_test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| test_targets: | |
| - target: test/functional/ios/driver_test.rb,test/functional/ios/patch_test.rb | |
| name: test1 | |
| platform: ios | |
| wdaName: WebDriverAgentRunner-Runner.app | |
| - target: test/functional/ios/webdriver/create_session_test.rb,test/functional/ios/webdriver/w3c_actions_test.rb | |
| name: test2 | |
| platform: ios | |
| wdaName: WebDriverAgentRunner-Runner.app | |
| - target: test/functional/ios/webdriver/device_test.rb | |
| name: test3 | |
| platform: ios | |
| wdaName: WebDriverAgentRunner-Runner.app | |
| - target: test/functional/ios/ios/device_test.rb | |
| name: test4 | |
| platform: ios | |
| wdaName: WebDriverAgentRunner-Runner.app | |
| - target: test/functional/ios/ios/device_wda_attachment_test.rb,test/functional/ios/ios/search_context_test.rb | |
| name: test5 | |
| platform: ios | |
| wdaName: WebDriverAgentRunner-Runner.app | |
| - target: test/functional/ios/ios/image_comparison_test.rb | |
| name: test6 | |
| platform: ios | |
| wdaName: WebDriverAgentRunner-Runner.app | |
| - target: test/functional/ios/tv_driver_test.rb | |
| name: test7 | |
| platform: tvOS | |
| wdaName: WebDriverAgentRunner_tvOS-Runner.app | |
| runs-on: macos-15 | |
| # Please make sure the available Xcode versions and iOS versions | |
| # on the runner images. https://github.com/actions/runner-images | |
| env: | |
| XCODE_VERSION: 16.4 | |
| IOS_VERSION: 18.5 | |
| IOS_DEVICE_NAME: iPhone 16 Plus | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 'lts/*' | |
| - name: Select Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ env.XCODE_VERSION }} | |
| - run: defaults write com.apple.iphonesimulator PasteboardAutomaticSync -bool false | |
| - uses: futureware-tech/simulator-action@v4 | |
| with: | |
| # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md | |
| model: ${{ env.IOS_DEVICE_NAME }} | |
| os_version: ${{ env.IOS_VERSION }} | |
| # Start Appium | |
| - run: npm install -g appium | |
| - run: | | |
| appium plugin install images | |
| appium plugin install execute-driver | |
| # Workaround to keep symlink to global appium | |
| appium driver install xcuitest | |
| nohup appium --use-plugins=images,execute-driver --relaxed-security --log-timestamp --log-no-colors 2>&1 > appium.log & | |
| - run: | | |
| appium driver run xcuitest download-wda-sim --platform=${{matrix.test_targets.platform}} --outdir=${{github.workspace}}/wda | |
| name: Downloading prebuilt WDA | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: 3.2 | |
| - name: Install dependencies | |
| run: bundle install | |
| # Run tests | |
| - run: bundle exec rake test:func:ios TESTS=${{matrix.test_targets.target}} | |
| name: Run tests | |
| env: | |
| IGNORE_VERSION_SKIP: true | |
| CI: true | |
| LOCAL_PREBUILT_WDA: ${{ github.workspace }}/wda/${{matrix.test_targets.wdaName}} | |
| - name: Save server output | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@master | |
| with: | |
| name: appium-ios-${{matrix.test_targets.name}}.log | |
| path: | | |
| appium.log | |
| test/report/ | |
| ios_test_with_other_deps: | |
| runs-on: macos-15 | |
| # Please make sure the available Xcode versions and iOS versions | |
| # on the runner images. https://github.com/actions/runner-images | |
| env: | |
| XCODE_VERSION: 16.4 | |
| IOS_VERSION: 18.5 | |
| IOS_DEVICE_NAME: iPhone 16 Plus | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 'lts/*' | |
| - name: Select Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ env.XCODE_VERSION }} | |
| - run: defaults write com.apple.iphonesimulator PasteboardAutomaticSync -bool false | |
| - uses: futureware-tech/simulator-action@v4 | |
| with: | |
| # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md | |
| model: ${{ env.IOS_DEVICE_NAME }} | |
| os_version: ${{ env.IOS_VERSION }} | |
| - name: Preparing other environment | |
| run: | | |
| brew install ffmpeg | |
| brew tap wix/brew | |
| brew install applesimutils | |
| # Start Appium | |
| - run: npm root -g | |
| - name: Install appium and mjpeg-consumer | |
| run: | | |
| npm install -g appium | |
| npm install -g mjpeg-consumer | |
| - run: | | |
| appium plugin install images | |
| appium plugin install execute-driver | |
| # Workaround to keep symlink to global appium | |
| appium driver install xcuitest | |
| nohup appium --use-plugins=images,execute-driver --relaxed-security --log-timestamp --log-no-colors 2>&1 > appium.log & | |
| - run: | | |
| npx appium driver run xcuitest download-wda-sim --platform=ios --outdir=${{github.workspace}}/wda | |
| name: Downloading prebuilt WDA | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: 3.2 | |
| - name: Install dependencies | |
| run: bundle install | |
| - run: bundle exec rake test:func:ios TESTS=test/functional/ios/ios/mjpeg_server_test.rb,test/functional/ios/ios/mobile_commands_test.rb | |
| name: Run tests | |
| env: | |
| IGNORE_VERSION_SKIP: true | |
| CI: true | |
| LOCAL_PREBUILT_WDA: ${{ github.workspace }}/wda/WebDriverAgentRunner-Runner.app | |
| - name: Save server output | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@master | |
| with: | |
| name: appium-ios_test_with_other_deps.log | |
| path: | | |
| appium.log | |
| test/report/ | |
| android_test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| test_targets: | |
| - target: test/functional/android/driver_test.rb,test/functional/android/patch_test.rb,test/functional/android/android/device_test.rb,test/functional/android/android/search_context_test.rb | |
| automation_name: uiautomator2 | |
| name: test1 | |
| - target: test/functional/android/driver_test.rb,test/functional/android/patch_test.rb,test/functional/android/android/device_test.rb,test/functional/android/android/search_context_test.rb | |
| automation_name: espresso | |
| name: test2 | |
| - target: test/functional/android/webdriver/create_session_test.rb,test/functional/android/webdriver/device_test.rb,test/functional/android/webdriver/w3c_actions_test.rb | |
| automation_name: uiautomator2 | |
| name: test3 | |
| - target: test/functional/android/webdriver/create_session_test.rb,test/functional/android/webdriver/device_test.rb,test/functional/android/webdriver/w3c_actions_test.rb | |
| automation_name: espresso | |
| name: test4 | |
| - target: test/functional/android/android/mobile_commands_test.rb | |
| automation_name: uiautomator2 | |
| name: test5 | |
| - target: test/functional/android/android/mobile_commands_test.rb | |
| automation_name: espresso | |
| name: test6 | |
| - target: test/functional/android/android/device_data_test.rb | |
| automation_name: uiautomator2 | |
| name: test7 | |
| - target: test/functional/android/android/device_data_test.rb | |
| automation_name: espresso | |
| name: test8 | |
| - target: test/functional/android/android/mjpeg_server_test.rb,test/functional/android/android/image_comparison_test.rb | |
| automation_name: uiautomator2 | |
| name: test9 | |
| - target: test/functional/android/android/mjpeg_server_test.rb,test/functional/android/android/image_comparison_test.rb | |
| automation_name: espresso | |
| name: test10 | |
| - target: test/functional/android/webdriver/bidi_test.rb | |
| automation_name: uiautomator2 | |
| name: test11 | |
| - target: test/functional/android/webdriver/bidi_test.rb | |
| automation_name: espresso | |
| name: test12 | |
| env: | |
| API_LEVEL: 36 | |
| ARCH: x86_64 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 'lts/*' | |
| # Start Appium | |
| - run: npm install -g appium | |
| - run: | | |
| appium driver install ${{matrix.test_targets.automation_name}} | |
| appium plugin install images | |
| appium plugin install execute-driver | |
| nohup appium --use-plugins=images,execute-driver --relaxed-security --log-timestamp --log-no-colors 2>&1 > appium.log & | |
| - name: Enable KVM group perms | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - name: AVD cache | |
| uses: actions/cache@v4 | |
| id: avd-cache | |
| with: | |
| path: | | |
| ~/.android/avd/* | |
| ~/.android/adb* | |
| key: avd-${{ env.API_LEVEL }} | |
| - name: create AVD and generate snapshot for caching | |
| if: steps.avd-cache.outputs.cache-hit != 'true' | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: ${{ env.API_LEVEL }} | |
| arch: ${{ env.ARCH }} | |
| target: google_apis | |
| force-avd-creation: false | |
| emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
| disable-animations: false | |
| script: echo "Generated AVD snapshot for caching." | |
| - name: Set up Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: 3.2 | |
| - name: Install dependencies | |
| run: bundle install | |
| # Run tests | |
| - name: run tests | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: ${{ env.API_LEVEL }} | |
| arch: ${{ env.ARCH }} | |
| script: | | |
| bundle exec rake test:func:android TESTS=${{matrix.test_targets.target}} | |
| target: google_apis | |
| profile: Nexus 5X | |
| disable-spellchecker: true | |
| disable-animations: true | |
| env: | |
| ANDROID_SDK_VERSION: ${{ env.API_LEVEL }} | |
| APPIUM_DRIVER: ${{matrix.test_targets.automation_name}} | |
| IGNORE_VERSION_SKIP: true | |
| CI: true | |
| - name: Save server output | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@master | |
| with: | |
| name: appium-android-${{matrix.test_targets.automation_name}}-${{matrix.test_targets.name}}.log | |
| path: | | |
| appium.log | |
| test/report/ |