diff --git a/.github/workflows/ios-end-to-end-tests-settings-migration.yml b/.github/workflows/ios-end-to-end-tests-settings-migration.yml index fb59434b27ef..ec4a4d5dbcb8 100644 --- a/.github/workflows/ios-end-to-end-tests-settings-migration.yml +++ b/.github/workflows/ios-end-to-end-tests-settings-migration.yml @@ -1,10 +1,13 @@ ---- name: iOS settings migration tests concurrency: group: ios-end-to-end-tests cancel-in-progress: false + permissions: contents: read + issues: write + pull-requests: write + on: workflow_dispatch: schedule: @@ -14,113 +17,74 @@ on: # Github Actions enabled, so these don't go unnoticed. # https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/notifications-for-workflow-runs - cron: '0 0 * * *' + +# Define global environment variables here to make them easy to update env: TEST_DEVICE_UDID: 00008130-0019181022F3803A + OLD_APP_COMMIT_HASH: "f82b90126441e9f8afa8c820faa0e5b2c99ecc3e" + jobs: - test: - name: Settings migration end to end tests - runs-on: [self-hosted, macOS, ios-test] - env: - OLD_APP_COMMIT_HASH: 895b7d98825e678f5d7023d5ea3c9b7beee89280 + set_commit_hash: + name: Set Commit Hash Environment Variable + runs-on: + - self-hosted + - macOS + - ios-test + outputs: + old_app_commit_hash: ${{ steps.set-hash.outputs.old_app_commit_hash }} steps: - - name: Configure Rust - uses: actions-rs/toolchain@v1.0.6 - with: - toolchain: stable - override: true - target: aarch64-apple-ios + - name: Set OLD_APP_COMMIT_HASH + id: set-hash + run: echo "::set-output name=old_app_commit_hash::${{ env.OLD_APP_COMMIT_HASH }}" - - name: Uninstall app + uninstall_app: + name: Uninstall Old App + runs-on: + - self-hosted + - macOS + - ios-test + needs: set_commit_hash + steps: + - name: Uninstall Old App from Device timeout-minutes: 5 run: ios-deploy --id ${{ env.TEST_DEVICE_UDID }} --uninstall_only --bundle_id net.mullvad.MullvadVPN - - name: Checkout old repository version - uses: actions/checkout@v4 - with: - ref: ${{ env.OLD_APP_COMMIT_HASH }} - - - name: Change DNS settings on old app version - uses: ./.github/actions/ios-end-to-end-tests - with: - ios_device_pin_code: ${{ secrets.IOS_DEVICE_PIN_CODE }} - test_device_identifier_uuid: ${{ secrets.IOS_TEST_DEVICE_IDENTIFIER_UUID }} - has_time_account_number: ${{ secrets.IOS_HAS_TIME_ACCOUNT_NUMBER_PRODUCTION }} - no_time_account_number: ${{ secrets.IOS_NO_TIME_ACCOUNT_NUMBER_PRODUCTION }} - test_device_udid: ${{ env.TEST_DEVICE_UDID }} - xcode_test_plan: 'MullvadVPNUITestsChangeDNSSettings' - partner_api_token: ${{ secrets.STAGEMOLE_PARTNER_AUTH }} - - - name: Store test report for changing DNS settings - uses: actions/upload-artifact@v4 - if: always() - with: - name: test-report-change-dns-settings - path: ios/test-report/junit.xml - - - name: Checkout repository to get the current app version - uses: actions/checkout@v4 - - - name: Verify DNS settings still changed on current app version - uses: ./.github/actions/ios-end-to-end-tests - if: always() - with: - ios_device_pin_code: ${{ secrets.IOS_DEVICE_PIN_CODE }} - test_device_identifier_uuid: ${{ secrets.IOS_TEST_DEVICE_IDENTIFIER_UUID }} - has_time_account_number: ${{ secrets.IOS_HAS_TIME_ACCOUNT_NUMBER_PRODUCTION }} - no_time_account_number: ${{ secrets.IOS_NO_TIME_ACCOUNT_NUMBER_PRODUCTION }} - test_device_udid: ${{ env.TEST_DEVICE_UDID }} - partner_api_token: ${{ secrets.STAGEMOLE_PARTNER_AUTH }} - xcode_test_plan: 'MullvadVPNUITestsVerifyDNSSettingsChanged' - - - name: Store test report for verifying DNS settings - uses: actions/upload-artifact@v4 - if: always() - with: - name: test-report-verify-dns-settings - path: ios/test-report/junit.xml - - - name: Checkout old repository version - uses: actions/checkout@v4 - with: - ref: ${{ env.OLD_APP_COMMIT_HASH }} - - - name: Change all other settings on old app version - uses: ./.github/actions/ios-end-to-end-tests - if: always() - with: - ios_device_pin_code: ${{ secrets.IOS_DEVICE_PIN_CODE }} - test_device_identifier_uuid: ${{ secrets.IOS_TEST_DEVICE_IDENTIFIER_UUID }} - has_time_account_number: ${{ secrets.IOS_HAS_TIME_ACCOUNT_NUMBER_PRODUCTION }} - no_time_account_number: ${{ secrets.IOS_NO_TIME_ACCOUNT_NUMBER_PRODUCTION }} - test_device_udid: ${{ env.TEST_DEVICE_UDID }} - partner_api_token: ${{ secrets.STAGEMOLE_PARTNER_AUTH }} - xcode_test_plan: 'MullvadVPNUITestsChangeSettings' - - - name: Store test report for changing all settings - uses: actions/upload-artifact@v4 - if: always() - with: - name: test-report-change-all-other-settings - path: ios/test-report/junit.xml + change_dns_settings: + name: Change DNS Settings on Old App Version + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@refactor-ci-script + needs: + - set_commit_hash + - uninstall_app + with: + arg_tests_json_key: "mullvadVPNUITestsChangeDNSSettings" + commit_hash: ${{ needs.set_commit_hash.outputs.old_app_commit_hash }} + secrets: inherit - - name: Checkout repository to get the current app version - uses: actions/checkout@v4 + verify_dns_settings: + name: Verify DNS Settings on Current App Version + needs: + - change_dns_settings + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@refactor-ci-script + with: + arg_tests_json_key: "mullvadVPNUITestsVerifyDNSSettingsChanged" + secrets: inherit - - name: Verify all other settings still changed on current app version - uses: ./.github/actions/ios-end-to-end-tests - if: always() - with: - ios_device_pin_code: ${{ secrets.IOS_DEVICE_PIN_CODE }} - test_device_identifier_uuid: ${{ secrets.IOS_TEST_DEVICE_IDENTIFIER_UUID }} - has_time_account_number: ${{ secrets.IOS_HAS_TIME_ACCOUNT_NUMBER_PRODUCTION }} - no_time_account_number: ${{ secrets.IOS_NO_TIME_ACCOUNT_NUMBER_PRODUCTION }} - test_device_udid: ${{ env.TEST_DEVICE_UDID }} - partner_api_token: ${{ secrets.STAGEMOLE_PARTNER_AUTH }} - xcode_test_plan: 'MullvadVPNUITestsVerifySettingsChanged' + change_other_settings: + name: Change All Other Settings on Old App Version + needs: + - set_commit_hash + - verify_dns_settings + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@refactor-ci-script + with: + arg_tests_json_key: "mullvadVPNUITestsChangeSettings" + commit_hash: ${{ needs.set_commit_hash.outputs.old_app_commit_hash }} + secrets: inherit - - name: Store test report for verifying all other settings - uses: actions/upload-artifact@v4 - if: always() - with: - name: test-report-verify-all-other-settings - path: ios/test-report/junit.xml + verify_other_settings: + name: Verify All Other Settings on Current App Version + needs: + - change_other_settings + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@refactor-ci-script + with: + arg_tests_json_key: "mullvadVPNUITestsVerifySettingsChanged" + secrets: inherit