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..44197851f33f 100644 --- a/.github/workflows/ios-end-to-end-tests-settings-migration.yml +++ b/.github/workflows/ios-end-to-end-tests-settings-migration.yml @@ -5,23 +5,34 @@ concurrency: cancel-in-progress: false permissions: contents: read + issues: write + pull-requests: write on: - workflow_dispatch: + workflow_dispatch: null schedule: - # At midnight every day. - # Notifications for scheduled workflows are sent to the user who last modified the cron - # syntax in the workflow file. If you update this you must have notifications for - # 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 * * *' + - cron: 0 0 * * * env: TEST_DEVICE_UDID: 00008130-0019181022F3803A + OLD_APP_COMMIT_HASH: 895b7d98825e678f5d7023d5ea3c9b7beee89280 jobs: - test: - name: Settings migration end to end tests - runs-on: [self-hosted, macOS, ios-test] - env: - OLD_APP_COMMIT_HASH: 895b7d98825e678f5d7023d5ea3c9b7beee89280 + checkout_old_version: + name: Checkout Old Repository Version + runs-on: + - self-hosted + - macOS + - ios-test + steps: + - name: Checkout old repository version + uses: actions/checkout@v4 + with: + ref: ${{ env.OLD_APP_COMMIT_HASH }} + configure_rust: + name: Configure Rust + runs-on: + - self-hosted + - macOS + - ios-test + needs: checkout_old_version steps: - name: Configure Rust uses: actions-rs/toolchain@v1.0.6 @@ -29,98 +40,46 @@ jobs: toolchain: stable override: true target: aarch64-apple-ios - - - name: Uninstall app + uninstall_app: + name: Uninstall Old App + runs-on: + - self-hosted + - macOS + - ios-test + needs: checkout_old_version + steps: + - name: Uninstall old app 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 - - - name: Checkout repository to get the current app version - uses: actions/checkout@v4 - - - 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' - - - 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 + run: ios-deploy --id ${{ env.TEST_DEVICE_UDID }} --uninstall_only --bundle_id + net.mullvad.MullvadVPN + change_dns_settings: + name: Change DNS Settings on Old App Version + needs: + - checkout_old_version + - configure_rust + - uninstall_app + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@main + with: + arg_tests_json_key: "MullvadVPNUITestsChangeDNSSettings" + secrets: inherit + verify_dns_settings: + name: Verify DNS Settings Still Changed on Current App Version + needs: change_dns_settings + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@main + with: + arg_tests_json_key: "MullvadVPNUITestsVerifyDNSSettingsChanged" + secrets: inherit + change_other_settings: + name: Change All Other Settings on Old App Version + needs: verify_dns_settings + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@main + with: + arg_tests_json_key: "MullvadVPNUITestsChangeSettings" + secrets: inherit + verify_other_settings: + name: Verify All Other Settings Still Changed on Current App Version + needs: change_other_settings + uses: mullvad/mullvadvpn-app/.github/workflows/ios-end-to-end-tests.yml@main + with: + arg_tests_json_key: "MullvadVPNUITestsVerifySettingsChanged" + secrets: inherit diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj index 85fb90063280..1a32710e108e 100644 --- a/ios/MullvadVPN.xcodeproj/project.pbxproj +++ b/ios/MullvadVPN.xcodeproj/project.pbxproj @@ -630,10 +630,6 @@ 8529693A2B4F0238007EAD4C /* TermsOfServicePage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852969392B4F0238007EAD4C /* TermsOfServicePage.swift */; }; 8529693C2B4F0257007EAD4C /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8529693B2B4F0257007EAD4C /* Alert.swift */; }; 852A26462BA9C9CB006EB9C8 /* DNSSettingsPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852A26452BA9C9CB006EB9C8 /* DNSSettingsPage.swift */; }; - 852BC66F2BAB44F500A47558 /* MullvadVPNUITestsVerifySettingsChanged.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = 852BC66C2BAB44F500A47558 /* MullvadVPNUITestsVerifySettingsChanged.xctestplan */; }; - 852BC6702BAB44F500A47558 /* MullvadVPNUITestsChangeSettings.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = 852BC66D2BAB44F500A47558 /* MullvadVPNUITestsChangeSettings.xctestplan */; }; - 852BC6712BAB44F500A47558 /* MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = 852BC66E2BAB44F500A47558 /* MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan */; }; - 852BC6732BAB450B00A47558 /* MullvadVPNUITestsChangeDNSSettings.xctestplan in Resources */ = {isa = PBXBuildFile; fileRef = 852BC6722BAB450B00A47558 /* MullvadVPNUITestsChangeDNSSettings.xctestplan */; }; 852D054D2BC3DE3A008578D2 /* APIAccessPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852D054C2BC3DE3A008578D2 /* APIAccessPage.swift */; }; 852D054F2BC43DF7008578D2 /* AddAccessMethodPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852D054E2BC43DF7008578D2 /* AddAccessMethodPage.swift */; }; 8532E6872B8CCED600ACECD1 /* ProblemReportSubmittedPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8532E6862B8CCED600ACECD1 /* ProblemReportSubmittedPage.swift */; }; @@ -1949,10 +1945,6 @@ 852969392B4F0238007EAD4C /* TermsOfServicePage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServicePage.swift; sourceTree = ""; }; 8529693B2B4F0257007EAD4C /* Alert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Alert.swift; sourceTree = ""; }; 852A26452BA9C9CB006EB9C8 /* DNSSettingsPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DNSSettingsPage.swift; sourceTree = ""; }; - 852BC66C2BAB44F500A47558 /* MullvadVPNUITestsVerifySettingsChanged.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MullvadVPNUITestsVerifySettingsChanged.xctestplan; sourceTree = ""; }; - 852BC66D2BAB44F500A47558 /* MullvadVPNUITestsChangeSettings.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MullvadVPNUITestsChangeSettings.xctestplan; sourceTree = ""; }; - 852BC66E2BAB44F500A47558 /* MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan; sourceTree = ""; }; - 852BC6722BAB450B00A47558 /* MullvadVPNUITestsChangeDNSSettings.xctestplan */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MullvadVPNUITestsChangeDNSSettings.xctestplan; sourceTree = ""; }; 852D054C2BC3DE3A008578D2 /* APIAccessPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIAccessPage.swift; sourceTree = ""; }; 852D054E2BC43DF7008578D2 /* AddAccessMethodPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAccessMethodPage.swift; sourceTree = ""; }; 8532E6862B8CCED600ACECD1 /* ProblemReportSubmittedPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProblemReportSubmittedPage.swift; sourceTree = ""; }; @@ -2799,7 +2791,6 @@ isa = PBXGroup; children = ( 7A9FA1432A2E3FE5000B728D /* CheckableSettingsCell.swift */, - F041BE4E2C983C2B0083EC28 /* DAITASettingsPromptItem.swift */, 7A1A264A2A29D65E00B978AA /* SelectableSettingsCell.swift */, 5819C2162729595500D6EC38 /* SettingsAddDNSEntryCell.swift */, 582BB1AE229566420055B6EF /* SettingsCell.swift */, @@ -2813,7 +2804,7 @@ 7A42DEC82A05164100B209BE /* SettingsInputCell.swift */, 58677711290976FB006F721F /* SettingsInteractor.swift */, 5867770F290975E8006F721F /* SettingsInteractorFactory.swift */, - F041BE4E2C983C2B0083EC28 /* SettingsPromptAlertItem.swift */, + F041BE4E2C983C2B0083EC28 /* DAITASettingsPromptItem.swift */, 58ACF64A26553C3F00ACE4B7 /* SettingsSwitchCell.swift */, 58CCA01122424D11004F3011 /* SettingsViewController.swift */, 7A27E3CA2CAE86170088BCFF /* SettingsViewModel.swift */, @@ -3849,11 +3840,7 @@ 7A83C4002A55B81A00DFB83A /* MullvadVPNCI.xctestplan */, 7A02D4EA2A9CEC7A00C19E31 /* MullvadVPNScreenshots.xctestplan */, 852969302B4D9E70007EAD4C /* MullvadVPNUITestsAll.xctestplan */, - 852BC6722BAB450B00A47558 /* MullvadVPNUITestsChangeDNSSettings.xctestplan */, - 852BC66D2BAB44F500A47558 /* MullvadVPNUITestsChangeSettings.xctestplan */, 85006A8E2B73EF67004AD8FB /* MullvadVPNUITestsSmoke.xctestplan */, - 852BC66E2BAB44F500A47558 /* MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan */, - 852BC66C2BAB44F500A47558 /* MullvadVPNUITestsVerifySettingsChanged.xctestplan */, ); path = TestPlans; sourceTree = ""; @@ -5044,10 +5031,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 852BC66F2BAB44F500A47558 /* MullvadVPNUITestsVerifySettingsChanged.xctestplan in Resources */, - 852BC6712BAB44F500A47558 /* MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan in Resources */, - 852BC6702BAB44F500A47558 /* MullvadVPNUITestsChangeSettings.xctestplan in Resources */, - 852BC6732BAB450B00A47558 /* MullvadVPNUITestsChangeDNSSettings.xctestplan in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ios/MullvadVPNUITests/tests.json b/ios/MullvadVPNUITests/tests.json index 19f5ec287a82..2a60d18d30fc 100644 --- a/ios/MullvadVPNUITests/tests.json +++ b/ios/MullvadVPNUITests/tests.json @@ -1,19 +1,30 @@ { - "tests": { - "nightly": [ - "AccountTests", - "ConnectivityTests", - "CustomListsTests", - "RelayTests", - "SettingsTests" - ], - "pr-merge-to-main": [ - "AccountTests/testLogin", - "AccountTests/testCreateAccount" - ], - "api-tests": [ - "AccountTests" - ] - } + "tests":{ + "nightly":[ + "AccountTests", + "ConnectivityTests", + "CustomListsTests", + "RelayTests", + "SettingsTests" + ], + "pr-merge-to-main":[ + "AccountTests/testLogin", + "AccountTests/testCreateAccount" + ], + "api-tests":[ + "AccountTests" + ], + "MullvadVPNUITestsChangeDNSSettings":[ + "SettingsMigrationTests/testChangeCustomDNSSettings" + ], + "MullvadVPNUITestsVerifyDNSSettingsChanged":[ + "SettingsMigrationTests/testVerifyCustomDNSSettingsStillChanged" + ], + "MullvadVPNUITestsChangeSettings":[ + "SettingsMigrationTests/testChangeVPNSettings" + ], + "MullvadVPNUITestsVerifySettingsChanged":[ + "SettingsMigrationTests/testVerifySettingsStillChanged" + ] + } } - diff --git a/ios/TestPlans/MullvadVPNUITestsAll.xctestplan b/ios/TestPlans/MullvadVPNUITestsAll.xctestplan index 475af04ab2c4..8ec7f9753eea 100644 --- a/ios/TestPlans/MullvadVPNUITestsAll.xctestplan +++ b/ios/TestPlans/MullvadVPNUITestsAll.xctestplan @@ -22,8 +22,7 @@ "LoggedInWithTimeUITestCase", "LoggedInWithoutTimeUITestCase", "LoggedOutUITestCase", - "ScreenshotTests", - "SettingsMigrationTests" + "ScreenshotTests" ], "target" : { "containerPath" : "container:MullvadVPN.xcodeproj", diff --git a/ios/TestPlans/MullvadVPNUITestsChangeDNSSettings.xctestplan b/ios/TestPlans/MullvadVPNUITestsChangeDNSSettings.xctestplan deleted file mode 100644 index 92d92d1974a6..000000000000 --- a/ios/TestPlans/MullvadVPNUITestsChangeDNSSettings.xctestplan +++ /dev/null @@ -1,28 +0,0 @@ -{ - "configurations" : [ - { - "id" : "29A4F7B5-B97B-4F31-9EB0-3C09615D0ACF", - "name" : "Configuration 1", - "options" : { - - } - } - ], - "defaultOptions" : { - "testTimeoutsEnabled" : true - }, - "testTargets" : [ - { - "selectedTests" : [ - "MigrationTests\/testChangeCustomDNSSettings()", - "SettingsMigrationTests\/testChangeCustomDNSSettings()" - ], - "target" : { - "containerPath" : "container:MullvadVPN.xcodeproj", - "identifier" : "852969242B4D9C1F007EAD4C", - "name" : "MullvadVPNUITests" - } - } - ], - "version" : 1 -} diff --git a/ios/TestPlans/MullvadVPNUITestsChangeSettings.xctestplan b/ios/TestPlans/MullvadVPNUITestsChangeSettings.xctestplan deleted file mode 100644 index 366e2e597b76..000000000000 --- a/ios/TestPlans/MullvadVPNUITestsChangeSettings.xctestplan +++ /dev/null @@ -1,28 +0,0 @@ -{ - "configurations" : [ - { - "id" : "29A4F7B5-B97B-4F31-9EB0-3C09615D0ACF", - "name" : "Configuration 1", - "options" : { - - } - } - ], - "defaultOptions" : { - "testTimeoutsEnabled" : true - }, - "testTargets" : [ - { - "selectedTests" : [ - "MigrationTests\/testChangeSettings()", - "SettingsMigrationTests\/testChangeSettings()" - ], - "target" : { - "containerPath" : "container:MullvadVPN.xcodeproj", - "identifier" : "852969242B4D9C1F007EAD4C", - "name" : "MullvadVPNUITests" - } - } - ], - "version" : 1 -} diff --git a/ios/TestPlans/MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan b/ios/TestPlans/MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan deleted file mode 100644 index 7b2c070a3d3a..000000000000 --- a/ios/TestPlans/MullvadVPNUITestsVerifyDNSSettingsChanged.xctestplan +++ /dev/null @@ -1,28 +0,0 @@ -{ - "configurations" : [ - { - "id" : "29A4F7B5-B97B-4F31-9EB0-3C09615D0ACF", - "name" : "Configuration 1", - "options" : { - - } - } - ], - "defaultOptions" : { - "testTimeoutsEnabled" : true - }, - "testTargets" : [ - { - "selectedTests" : [ - "MigrationTests\/testVerifyCustomDNSSettingsStillChanged()", - "SettingsMigrationTests\/testVerifyCustomDNSSettingsStillChanged()" - ], - "target" : { - "containerPath" : "container:MullvadVPN.xcodeproj", - "identifier" : "852969242B4D9C1F007EAD4C", - "name" : "MullvadVPNUITests" - } - } - ], - "version" : 1 -} diff --git a/ios/TestPlans/MullvadVPNUITestsVerifySettingsChanged.xctestplan b/ios/TestPlans/MullvadVPNUITestsVerifySettingsChanged.xctestplan deleted file mode 100644 index 872d198dd9da..000000000000 --- a/ios/TestPlans/MullvadVPNUITestsVerifySettingsChanged.xctestplan +++ /dev/null @@ -1,28 +0,0 @@ -{ - "configurations" : [ - { - "id" : "29A4F7B5-B97B-4F31-9EB0-3C09615D0ACF", - "name" : "Configuration 1", - "options" : { - - } - } - ], - "defaultOptions" : { - "testTimeoutsEnabled" : true - }, - "testTargets" : [ - { - "selectedTests" : [ - "MigrationTests\/testVerifySettingsStillChanged()", - "SettingsMigrationTests\/testVerifySettingsStillChanged()" - ], - "target" : { - "containerPath" : "container:MullvadVPN.xcodeproj", - "identifier" : "852969242B4D9C1F007EAD4C", - "name" : "MullvadVPNUITests" - } - } - ], - "version" : 1 -}