Skip to content

Commit

Permalink
Adds the functionality of in-app message for user survey and point to…
Browse files Browse the repository at this point in the history
… new commit sha on PIALibary module

Corrects a module rename and points to new commit

Code cleanup on weak self.

Code cleanup on weak self.

Refactors the survey control logic into a UserSurveyManager.

This also changes responsibility of incrementing successConnections and moves it to AppPreferences. Small refactoring of RatingManager.

Refactors showRating method

Fixes the > issue with take a survey CTA text

Code refactor for handling connection success on rating and survey managers

Revert to accidentally committing swiftgen file

Removes more unwanted swiftgen changes

Moves the string extension to private scope and applies a code refactor

Moves the string extension to private scope and applies a code refactor

Update for an edge case where user has to interact with the survey message

Update for an edge case where user has to interact with the survey message

Points to correct commit sha for PIAKPI and PIALibrary modules

Adds UI Test target

Adds a UI test for invalid user

Code refactor and adds PIALibrary to UITests target for accessibility identifiers

Code refactor and adds PIALibrary to UITests target for accessibility identifiers

Fixes a keyboard typing issue

Adds a user credentials json file for testing different users

Use credentials from plist

Use credentials from plist

Refactor invalid user test to reuse it other tests

Update PIALibrary commit, refactor and add valid user UI Test with updated accessibility identifiers

Update PIALibrary commit, refactor and add valid user UI Test with updated accessibility identifiers

Fix the environment and UI test target selection issues

Remove XCTAssert as a function

Remove unnecessary sleeps

Update commit sha PIALibrary

Updates the commit for wrong ip fix

Updates commit sha

Update for KPI module and new commit sha for client-library-apple.

Updates PIALibrary commit sha

Updates commit sha

Updates commit sha and time_to_connect collection logic

Code refactor and updates commit sha

Code refactor

Updates commit sha

Updates to correct commit sha for KPI library

Updates KPI commit sha

Adds functionality to have a separate connections-counter for UserSurvey message banner logic

Code refactor for User survey's separate counter

Refactor on successConnectionUntilSurvey

Refactor on successConnectionUntilSurvey

Updates commit sha after merging client-library-apple for timeToConnect MR

Update PIA Library commit & accessibility strings and code improvements

Rename conversion bool

Point to PIALibrary release/2.15.0

Bump version to 3.15.0

Download translations and new en placeholders

Update commit sha for PIALibrary

Update PIALibrary commit sha to avoid conflicts on closing release

Update checksum

Convert rating alert UI to use default iOS UX widgets

Bump commit sha for feature flag

Add control logic for showing default UX of rating alert

Code cleaning

Flag rename and bump PIALibrary commit sha

Code refactor

Add translations for rating alert and DIP retry message

Add translations for rating alert and DIP retry message

Bump PIALibrary to 2.16.0 commit sha

Bump version to 3.16.0

Bump the version to 3.16.1

Bump commit sha for token migration hotfix

Update PIALibrary commit sha

Bump commit sha for based PIALibrary

Code clean

Bump CSI to v1.1.1 and update support for Last Know Exception category on PIALibrary

Add deviceType and DNS info in user setting for CSI (wip)

Update integration with CSI V1.0.2

Fix setting's delegate reference for updating DNS info in app preferences

Update pod file commit sha

Refactor code for device type

Bump commit sha

Bump PIALibrary to latest commit

Remove redundant deviceInfo key and bump PIALibrary to whitelist user_setting commit

Remove redundant deviceInfo key and bump PIALibrary to whitelist user_setting commit

Bump to the fixed commit sha of file references fixes in PIALibrary

Bump commit for PIALibrary

Refactor dip header view cell to move the network request code out of it

Refactor fatalError to NSException for better CSI reports

Rename user preference flag stopInAppMessages to showServiceMessages and bump the commit sha of PIALibrary

This is to make UI menu name consistent with flag name

Fix the logic when API call should be made based on flag

Bump PIALibrary to v2.17.0

Bump version to 3.17.0

Bump PIARegions to v1.3.2

Fix a bug where rating alert was re-presented when app was updated

Refactor if into a guard statement

Bump PIALibrary to 2.18.0 commit sha

Bump version 3.18.0

Merge `release/3.19.0` into `master` (#1131)

* Fix develop branch for an issue where commit sha does not exist on client-library-apple

* Fix CSI and KPI dependencies

* Migrate to SPM

* Widget Cleanup

* Update to wireguard-apple `1.0.15-26`

* Add workflow pia-mobile/ios/vpn-ios

* Sync OpenVPN TunnelKit to version 4.0.3 (#1128)

* wip

* wip

* update dep

* bump version

* bump build number

* Fix signup storyboard crash (#1129)

* fix signup storyboard crash

* update to client-library-apple merged revision

* bump build version number to 20030 (#1130)

---------

Co-authored-by: Waleed Mahmood <[email protected]>
Co-authored-by: Juan Docal <[email protected]>
Co-authored-by: Bogdan Danila <[email protected]>

remove messages logic (#1133)

bump version to 3.20.0 (#1134)

bump version to 3.20.0 (#1134)

bump version to 3.21.0 (#1135)

update openssl to version 3.0.2 (#1136)

update openssl to version 3.0.2 (#1136)

bump version to 3.22.0 (#1137)

bump version to 3.22.0 (#1137)

bump version to 3.23.0 (#1138)

CXAPP-3160: Add feature flag feetching for leak protection

CXAPP-3161: Show leak protection toggles on privacy settings

CXAPP-3231: Add leak protections UI behind feature flag

CXAPP-3231: Add leak protections UI behind feature flag

CXAPP-3162: Add logic to show and hide leak protection toggles

CXAPP-3162: Add logic to show and hide leak protection toggles

CXAPP-3165: Add alert for leak protection changes when VPN is connected

CXAPP-3165: Update PIA iOS Library to the latest version

PIA-68: Add Network monitor to identify non-compliant Wifi

PIA-68: Add Network monitor to identify non-compliant Wifi

PIA-68: Integrate network monitor on HospotHelper

PIA-54: Migrate currentRFC1918VulnerableWifi to Client preferences

PIA-54: Migrate currentRFC1918VulnerableWifi to Client preferences

PIA-54: Add english localization for non compliant alert

PIA-54: Add logic to show the non compliant WIFI alert

PIA-54: Add logic to disable and reconnect CTA

PIA-57: Update feature flags on dev builds from debug menu

PIA-57: Skip updating feature flag values when pulling from CSI server on dev builds

PIA-57: Show leak protection local notification
when connected to a non-compliant Wi-Fi network

PIA-57: Show leak protection local notification
when connected to a non-compliant Wi-Fi network

PIA-61: Remove leak protection notification when the device connects to a compliant wifi

PIA-62: Remove leak protection local notification when VPN is disconnected

PIA-62: Remove leak protection local notification when VPN is disconnected

PIA-325: Add logic to make sure we reconnect after disconnection was completed

PIA-326: Show alert whencurrent vpn status is not connected

PIA-56: Handle learn more action on leak protection alert

PIA-63: Handle 'More info' action from the Leak Protection settings description

PIA-314: Add non-compliant check for current WIFI

PIA-314: Add non-compliant check for current WIFI

PIA-337: Show leak protection content in English if no translations are available in other languages

PIA-335: Dismiss leak protection alert when disconnecting from quick action

PIA-62: Remove leak proteciton notification when vpn is disconnected and app in the foreground

PIA-350: Show leak protection local notification in English when untranslated

PIA-362: Remove leak protection alert when user connects to a compliant Wi-Fi

Bump version to 3.23.1

PIA-65: Hide leak protection settings when Wireguard is selected

PIA-454: Disable UI tests and failing tests from target

PIA-454: Disable UI tests and failing tests from target

PIA-454: Add Fastlane setup

PIA-454: Add CI congifuration

PIA-66: Add strings for non IKEV2 protocol alert

PIA-66: Show non compliant alert for non IKEV2 protocol

PIA-66: Enable leak protection and disable allow local devices

PIA-66: Enable leak protection and disable allow local devices

PIA-415: Connection Live Activity and Dynamic Island POC

PIA-490: Set feature flag for Dynamic Island Live Activity

PIA-509: Execute pending actions when switching to IKEV2

PIA-504: Update connection live activity and dynamic islanc UI

PIA-504: Update connection live activity and dynamic islanc UI

Bump version to 3.23.2

PIA-417: Hook Connection state to Live Activity and Dynamic Island

PIA-417: Hook Connection state to Live Activity and Dynamic Island

PIA-438: Bump version

PIA-438: Bump version

PIA-438: Add uploading to Testflight action

PIA-438: Update CI to sign and upload builds

PIA-438: Automate build number increase

PIA-620: Update PIAAccount framework

PIA-504: Update disconnected button and icon on Live Activity widget and Dynamic Island

PIA-504: Localize text displayed on Live Activity and Dynamic Island

PIA-540: PIA e2e testing setup
Login screen e2e tests

PIA-540: Remove legacy ui testing target

PIA-540: Set user credentials from ENV variables

PIA-540: Set user credentials from ENV variables

PIA-556: Update translations

PIA-541: Allow VPN Profile installation e2e test
And add e2e example test on how to launch the app on authenticated state
and with the VPN Profile installation complete

PIA-680: Add e2e workflow on CI

- Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories

- Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories
- Added Tests

-  Enhanced based on PR Comments

PIA-566: Update UI on regions cell to accomodate full text on smaller devices and different languages

PIA-675: Moved UI related code from PIALibrary

will be removed: Change branch for PIALibrary dependency

Update application

Update application

PIA-809: Update iOS application (#31)

* Adds the functionality of in-app message for user survey and point to new commit sha on PIALibary module

* Corrects a module rename and points to new commit

* Code cleanup on weak self.

* Refactors the survey control logic into a UserSurveyManager.

This also changes responsibility of incrementing successConnections and moves it to AppPreferences. Small refactoring of RatingManager.

* Update for KPI module and new commit sha for client-library-apple.

* Refactors showRating method

* Fixes the > issue with take a survey CTA text

* Code refactor for handling connection success on rating and survey managers

* Revert to accidentally committing swiftgen file

* Removes more unwanted swiftgen changes

* Moves the string extension to private scope and applies a code refactor

* Update for an edge case where user has to interact with the survey message

* Points to correct commit sha for PIAKPI and PIALibrary modules

* Updates PIALibrary commit sha

* Updates commit sha

* Adds functionality to have a separate connections-counter for UserSurvey message banner logic

* Code refactor for User survey's separate counter

* Refactor on successConnectionUntilSurvey

* Updates commit sha and time_to_connect collection logic

* Code refactor and updates commit sha

* Code refactor

* Updates commit sha

* Updates to correct commit sha for KPI library

* Updates KPI commit sha

* Updates the commit for wrong ip fix

* Adds UI Test target

* Updates commit sha after merging client-library-apple for timeToConnect MR

* Adds a UI test for invalid user

* Updates commit sha

* Code refactor and adds PIALibrary to UITests target for accessibility identifiers

* Fixes a keyboard typing issue

* Adds a user credentials json file for testing different users

* Point to PIALibrary release/2.15.0

* Bump version to 3.15.0

* Use credentials from plist

* Refactor invalid user test to reuse it other tests

* Update PIALibrary commit, refactor and add valid user UI Test with updated accessibility identifiers

* Fix the environment and UI test target selection issues

* Remove XCTAssert as a function

* Remove unnecessary sleeps

* Update commit sha PIALibrary

* Update PIA Library commit & accessibility strings and code improvements

* Rename conversion bool

* Download translations and new en placeholders

* Update commit sha for PIALibrary

* Add deviceType and DNS info in user setting for CSI (wip)

* Update PIALibrary commit sha to avoid conflicts on closing release

* Update checksum

* Update integration with CSI V1.0.2

* Fix setting's delegate reference for updating DNS info in app preferences

* Update pod file commit sha

* Refactor code for device type

* Bump PIALibrary to 2.16.0 commit sha

* Bump version to 3.16.0

* Convert rating alert UI to use default iOS UX widgets

* Bump commit sha for feature flag

* Add control logic for showing default UX of rating alert

* Code cleaning

* Bump the version to 3.16.1

* Bump commit sha for token migration hotfix

* Flag rename and bump PIALibrary commit sha

* Code refactor

* Add translations for rating alert and DIP retry message

* Bump commit sha

* Update PIALibrary commit sha

* Bump commit sha for based PIALibrary

* Code clean

* Bump PIALibrary to v2.17.0

* Bump version to 3.17.0

* Bump PIARegions to v1.3.2

* Bump CSI to v1.1.1 and update support for Last Know Exception category on PIALibrary

* Bump PIALibrary to latest commit

* Refactor dip header view cell to move the network request code out of it

* Fix a bug where rating alert was re-presented when app was updated

* Refactor if into a guard statement

* Remove redundant deviceInfo key and bump PIALibrary to whitelist user_setting commit

* Bump to the fixed commit sha of file references fixes in PIALibrary

* Bump commit for PIALibrary

* Refactor fatalError to NSException for better CSI reports

* Rename user preference flag stopInAppMessages to showServiceMessages and bump the commit sha of PIALibrary

This is to make UI menu name consistent with flag name

* Fix the logic when API call should be made based on flag

* Bump PIALibrary to 2.18.0 commit sha

* Bump version 3.18.0

* Merge `release/3.19.0` into `master` (#1131)

* Fix develop branch for an issue where commit sha does not exist on client-library-apple

* Fix CSI and KPI dependencies

* Migrate to SPM

* Widget Cleanup

* Update to wireguard-apple `1.0.15-26`

* Add workflow pia-mobile/ios/vpn-ios

* Sync OpenVPN TunnelKit to version 4.0.3 (#1128)

* wip

* wip

* update dep

* bump version

* bump build number

* Fix signup storyboard crash (#1129)

* fix signup storyboard crash

* update to client-library-apple merged revision

* bump build version number to 20030 (#1130)

---------

Co-authored-by: Waleed Mahmood <[email protected]>
Co-authored-by: Juan Docal <[email protected]>
Co-authored-by: Bogdan Danila <[email protected]>

* remove messages logic (#1133)

* bump version to 3.20.0 (#1134)

* bump version to 3.21.0 (#1135)

* update openssl to version 3.0.2 (#1136)

* bump version to 3.22.0 (#1137)

* bump version to 3.23.0 (#1138)

* CXAPP-3161: Show leak protection toggles on privacy settings

* CXAPP-3160: Add feature flag feetching for leak protection

* CXAPP-3231: Add leak protections UI behind feature flag

* CXAPP-3162: Add logic to show and hide leak protection toggles

* CXAPP-3162: Add logic to show and hide leak protection toggles

* CXAPP-3165: Add alert for leak protection changes when VPN is connected

* CXAPP-3165: Update PIA iOS Library to the latest version

* PIA-68: Add Network monitor to identify non-compliant Wifi

* PIA-68: Integrate network monitor on HospotHelper

* PIA-54: Migrate currentRFC1918VulnerableWifi to Client preferences

* PIA-54: Add english localization for non compliant alert

* PIA-54: Add logic to show the non compliant WIFI alert

* PIA-54: Add logic to disable and reconnect CTA

* PIA-57: Update feature flags on dev builds from debug menu

* PIA-57: Skip updating feature flag values when pulling from CSI server on dev builds

* PIA-57: Show leak protection local notification
when connected to a non-compliant Wi-Fi network

* PIA-61: Remove leak protection notification when the device connects to a compliant wifi

* PIA-62: Remove leak protection local notification when VPN is disconnected

* PIA-325: Add logic to make sure we reconnect after disconnection was completed

* PIA-326: Show alert whencurrent vpn status is not connected

* PIA-56: Handle learn more action on leak protection alert

* PIA-63: Handle 'More info' action from the Leak Protection settings description

* PIA-337: Show leak protection content in English if no translations are available in other languages

* PIA-314: Add non-compliant check for current WIFI

* PIA-62: Remove leak proteciton notification when vpn is disconnected and app in the foreground

* PIA-335: Dismiss leak protection alert when disconnecting from quick action

* PIA-350: Show leak protection local notification in English when untranslated

* PIA-362: Remove leak protection alert when user connects to a compliant Wi-Fi

* Bump version to 3.23.1

* PIA-454: Disable UI tests and failing tests from target

* PIA-65: Hide leak protection settings when Wireguard is selected

* PIA-454: Add Fastlane setup

* PIA-454: Add CI congifuration

* PIA-415: Connection Live Activity and Dynamic Island POC

* PIA-490: Set feature flag for Dynamic Island Live Activity

* PIA-66: Add strings for non IKEV2 protocol alert

* PIA-66: Show non compliant alert for non IKEV2 protocol

* PIA-66: Enable leak protection and disable allow local devices

* Bump version to 3.23.2

* PIA-509: Execute pending actions when switching to IKEV2

* PIA-504: Update connection live activity and dynamic islanc UI

* PIA-417: Hook Connection state to Live Activity and Dynamic Island

* PIA-438: Bump version

* PIA-438: Add uploading to Testflight action

* PIA-438: Update CI to sign and upload builds

* PIA-438: Automate build number increase

* PIA-620: Update PIAAccount framework

* PIA-504: Update disconnected button and icon on Live Activity widget and Dynamic Island

* PIA-504: Localize text displayed on Live Activity and Dynamic Island

* PIA-540: PIA e2e testing setup
Login screen e2e tests

* PIA-540: Remove legacy ui testing target

* PIA-540: Set user credentials from ENV variables

* PIA-556: Update translations

* PIA-541: Allow VPN Profile installation e2e test
And add e2e example test on how to launch the app on authenticated state
and with the VPN Profile installation complete

* PIA-680: Add e2e workflow on CI

* - Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories

* - Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories
- Added Tests

* -  Enhanced based on PR Comments

* PIA-566: Update UI on regions cell to accomodate full text on smaller devices and different languages

* Enhanced FW by adding screens, helpers and rearranged structure

* PIA-560: Handle first region button from Quick Connect section

* PIA-832: Update app version to 3.23.4

* PIA-809: Update XCode on CI pipeline

---------

Co-authored-by: Waleed Mahmood <[email protected]>
Co-authored-by: Miguel Berrocal <[email protected]>
Co-authored-by: Helge Becker <[email protected]>
Co-authored-by: kp-juan-docal <[email protected]>
Co-authored-by: Juan Docal <[email protected]>
Co-authored-by: Bogdan Danila <[email protected]>
Co-authored-by: Said Rehouni <[email protected]>
Co-authored-by: kp-said-rehouni <[email protected]>
Co-authored-by: xv-laura-sempere <[email protected]>
Co-authored-by: Geneva Parayno <[email protected]>
Co-authored-by: xv-geneva-parayno <[email protected]>

PIA-809: Update iOS app (#33)

* Update application

* PIA-809: Update ruby version on CI pipelines

PIA-809: Update iOS app (#33)

* Update application

* PIA-809: Update ruby version on CI pipelines

PIA-865: Updaete e2e ci pipeline workflow (#35)

PIA-865: Updaete e2e ci pipeline workflow (#35)

Added Quick Settings Tests, Enhanced existing screens and tests (#38)

Refactor if into a guard statement

Bump PIALibrary to 2.18.0 commit sha

Bump version 3.18.0

Merge `release/3.19.0` into `master` (#1131)

* Fix develop branch for an issue where commit sha does not exist on client-library-apple

* Fix CSI and KPI dependencies

* Migrate to SPM

* Widget Cleanup

* Update to wireguard-apple `1.0.15-26`

* Add workflow pia-mobile/ios/vpn-ios

* Sync OpenVPN TunnelKit to version 4.0.3 (#1128)

* wip

* wip

* update dep

* bump version

* bump build number

* Fix signup storyboard crash (#1129)

* fix signup storyboard crash

* update to client-library-apple merged revision

* bump build version number to 20030 (#1130)

---------

Co-authored-by: Waleed Mahmood <[email protected]>
Co-authored-by: Juan Docal <[email protected]>
Co-authored-by: Bogdan Danila <[email protected]>

remove messages logic (#1133)

bump version to 3.20.0 (#1134)

bump version to 3.20.0 (#1134)

bump version to 3.21.0 (#1135)

update openssl to version 3.0.2 (#1136)

update openssl to version 3.0.2 (#1136)

bump version to 3.22.0 (#1137)

bump version to 3.22.0 (#1137)

bump version to 3.23.0 (#1138)

CXAPP-3160: Add feature flag feetching for leak protection

CXAPP-3161: Show leak protection toggles on privacy settings

CXAPP-3231: Add leak protections UI behind feature flag

CXAPP-3231: Add leak protections UI behind feature flag

CXAPP-3162: Add logic to show and hide leak protection toggles

CXAPP-3162: Add logic to show and hide leak protection toggles

CXAPP-3165: Add alert for leak protection changes when VPN is connected

CXAPP-3165: Update PIA iOS Library to the latest version

PIA-68: Add Network monitor to identify non-compliant Wifi

PIA-68: Add Network monitor to identify non-compliant Wifi

PIA-68: Integrate network monitor on HospotHelper

PIA-54: Migrate currentRFC1918VulnerableWifi to Client preferences

PIA-54: Migrate currentRFC1918VulnerableWifi to Client preferences

PIA-54: Add english localization for non compliant alert

PIA-54: Add logic to show the non compliant WIFI alert

PIA-54: Add logic to disable and reconnect CTA

PIA-57: Update feature flags on dev builds from debug menu

PIA-57: Skip updating feature flag values when pulling from CSI server on dev builds

PIA-57: Show leak protection local notification
when connected to a non-compliant Wi-Fi network

PIA-57: Show leak protection local notification
when connected to a non-compliant Wi-Fi network

PIA-61: Remove leak protection notification when the device connects to a compliant wifi

PIA-62: Remove leak protection local notification when VPN is disconnected

PIA-62: Remove leak protection local notification when VPN is disconnected

PIA-325: Add logic to make sure we reconnect after disconnection was completed

PIA-326: Show alert whencurrent vpn status is not connected

PIA-56: Handle learn more action on leak protection alert

PIA-63: Handle 'More info' action from the Leak Protection settings description

PIA-314: Add non-compliant check for current WIFI

PIA-314: Add non-compliant check for current WIFI

PIA-337: Show leak protection content in English if no translations are available in other languages

PIA-335: Dismiss leak protection alert when disconnecting from quick action

PIA-62: Remove leak proteciton notification when vpn is disconnected and app in the foreground

PIA-350: Show leak protection local notification in English when untranslated

PIA-362: Remove leak protection alert when user connects to a compliant Wi-Fi

Bump version to 3.23.1

PIA-65: Hide leak protection settings when Wireguard is selected

PIA-454: Disable UI tests and failing tests from target

PIA-454: Disable UI tests and failing tests from target

PIA-454: Add Fastlane setup

PIA-454: Add CI congifuration

PIA-66: Add strings for non IKEV2 protocol alert

PIA-66: Show non compliant alert for non IKEV2 protocol

PIA-66: Enable leak protection and disable allow local devices

PIA-66: Enable leak protection and disable allow local devices

PIA-415: Connection Live Activity and Dynamic Island POC

PIA-490: Set feature flag for Dynamic Island Live Activity

PIA-509: Execute pending actions when switching to IKEV2

PIA-504: Update connection live activity and dynamic islanc UI

PIA-504: Update connection live activity and dynamic islanc UI

Bump version to 3.23.2

PIA-417: Hook Connection state to Live Activity and Dynamic Island

PIA-417: Hook Connection state to Live Activity and Dynamic Island

PIA-438: Bump version

PIA-438: Bump version

PIA-438: Add uploading to Testflight action

PIA-438: Update CI to sign and upload builds

PIA-438: Automate build number increase

PIA-620: Update PIAAccount framework

PIA-504: Update disconnected button and icon on Live Activity widget and Dynamic Island

PIA-504: Localize text displayed on Live Activity and Dynamic Island

PIA-540: PIA e2e testing setup
Login screen e2e tests

PIA-540: Remove legacy ui testing target

PIA-540: Set user credentials from ENV variables

PIA-540: Set user credentials from ENV variables

PIA-556: Update translations

PIA-541: Allow VPN Profile installation e2e test
And add e2e example test on how to launch the app on authenticated state
and with the VPN Profile installation complete

PIA-680: Add e2e workflow on CI

- Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories

- Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories
- Added Tests

-  Enhanced based on PR Comments

PIA-566: Update UI on regions cell to accomodate full text on smaller devices and different languages

PIA-675: Moved UI related code from PIALibrary

will be removed: Change branch for PIALibrary dependency

Update application

Update application

PIA-809: Update iOS application (#31)

* Adds the functionality of in-app message for user survey and point to new commit sha on PIALibary module

* Corrects a module rename and points to new commit

* Code cleanup on weak self.

* Refactors the survey control logic into a UserSurveyManager.

This also changes responsibility of incrementing successConnections and moves it to AppPreferences. Small refactoring of RatingManager.

* Update for KPI module and new commit sha for client-library-apple.

* Refactors showRating method

* Fixes the > issue with take a survey CTA text

* Code refactor for handling connection success on rating and survey managers

* Revert to accidentally committing swiftgen file

* Removes more unwanted swiftgen changes

* Moves the string extension to private scope and applies a code refactor

* Update for an edge case where user has to interact with the survey message

* Points to correct commit sha for PIAKPI and PIALibrary modules

* Updates PIALibrary commit sha

* Updates commit sha

* Adds functionality to have a separate connections-counter for UserSurvey message banner logic

* Code refactor for User survey's separate counter

* Refactor on successConnectionUntilSurvey

* Updates commit sha and time_to_connect collection logic

* Code refactor and updates commit sha

* Code refactor

* Updates commit sha

* Updates to correct commit sha for KPI library

* Updates KPI commit sha

* Updates the commit for wrong ip fix

* Adds UI Test target

* Updates commit sha after merging client-library-apple for timeToConnect MR

* Adds a UI test for invalid user

* Updates commit sha

* Code refactor and adds PIALibrary to UITests target for accessibility identifiers

* Fixes a keyboard typing issue

* Adds a user credentials json file for testing different users

* Point to PIALibrary release/2.15.0

* Bump version to 3.15.0

* Use credentials from plist

* Refactor invalid user test to reuse it other tests

* Update PIALibrary commit, refactor and add valid user UI Test with updated accessibility identifiers

* Fix the environment and UI test target selection issues

* Remove XCTAssert as a function

* Remove unnecessary sleeps

* Update commit sha PIALibrary

* Update PIA Library commit & accessibility strings and code improvements

* Rename conversion bool

* Download translations and new en placeholders

* Update commit sha for PIALibrary

* Add deviceType and DNS info in user setting for CSI (wip)

* Update PIALibrary commit sha to avoid conflicts on closing release

* Update checksum

* Update integration with CSI V1.0.2

* Fix setting's delegate reference for updating DNS info in app preferences

* Update pod file commit sha

* Refactor code for device type

* Bump PIALibrary to 2.16.0 commit sha

* Bump version to 3.16.0

* Convert rating alert UI to use default iOS UX widgets

* Bump commit sha for feature flag

* Add control logic for showing default UX of rating alert

* Code cleaning

* Bump the version to 3.16.1

* Bump commit sha for token migration hotfix

* Flag rename and bump PIALibrary commit sha

* Code refactor

* Add translations for rating alert and DIP retry message

* Bump commit sha

* Update PIALibrary commit sha

* Bump commit sha for based PIALibrary

* Code clean

* Bump PIALibrary to v2.17.0

* Bump version to 3.17.0

* Bump PIARegions to v1.3.2

* Bump CSI to v1.1.1 and update support for Last Know Exception category on PIALibrary

* Bump PIALibrary to latest commit

* Refactor dip header view cell to move the network request code out of it

* Fix a bug where rating alert was re-presented when app was updated

* Refactor if into a guard statement

* Remove redundant deviceInfo key and bump PIALibrary to whitelist user_setting commit

* Bump to the fixed commit sha of file references fixes in PIALibrary

* Bump commit for PIALibrary

* Refactor fatalError to NSException for better CSI reports

* Rename user preference flag stopInAppMessages to showServiceMessages and bump the commit sha of PIALibrary

This is to make UI menu name consistent with flag name

* Fix the logic when API call should be made based on flag

* Bump PIALibrary to 2.18.0 commit sha

* Bump version 3.18.0

* Merge `release/3.19.0` into `master` (#1131)

* Fix develop branch for an issue where commit sha does not exist on client-library-apple

* Fix CSI and KPI dependencies

* Migrate to SPM

* Widget Cleanup

* Update to wireguard-apple `1.0.15-26`

* Add workflow pia-mobile/ios/vpn-ios

* Sync OpenVPN TunnelKit to version 4.0.3 (#1128)

* wip

* wip

* update dep

* bump version

* bump build number

* Fix signup storyboard crash (#1129)

* fix signup storyboard crash

* update to client-library-apple merged revision

* bump build version number to 20030 (#1130)

---------

Co-authored-by: Waleed Mahmood <[email protected]>
Co-authored-by: Juan Docal <[email protected]>
Co-authored-by: Bogdan Danila <[email protected]>

* remove messages logic (#1133)

* bump version to 3.20.0 (#1134)

* bump version to 3.21.0 (#1135)

* update openssl to version 3.0.2 (#1136)

* bump version to 3.22.0 (#1137)

* bump version to 3.23.0 (#1138)

* CXAPP-3161: Show leak protection toggles on privacy settings

* CXAPP-3160: Add feature flag feetching for leak protection

* CXAPP-3231: Add leak protections UI behind feature flag

* CXAPP-3162: Add logic to show and hide leak protection toggles

* CXAPP-3162: Add logic to show and hide leak protection toggles

* CXAPP-3165: Add alert for leak protection changes when VPN is connected

* CXAPP-3165: Update PIA iOS Library to the latest version

* PIA-68: Add Network monitor to identify non-compliant Wifi

* PIA-68: Integrate network monitor on HospotHelper

* PIA-54: Migrate currentRFC1918VulnerableWifi to Client preferences

* PIA-54: Add english localization for non compliant alert

* PIA-54: Add logic to show the non compliant WIFI alert

* PIA-54: Add logic to disable and reconnect CTA

* PIA-57: Update feature flags on dev builds from debug menu

* PIA-57: Skip updating feature flag values when pulling from CSI server on dev builds

* PIA-57: Show leak protection local notification
when connected to a non-compliant Wi-Fi network

* PIA-61: Remove leak protection notification when the device connects to a compliant wifi

* PIA-62: Remove leak protection local notification when VPN is disconnected

* PIA-325: Add logic to make sure we reconnect after disconnection was completed

* PIA-326: Show alert whencurrent vpn status is not connected

* PIA-56: Handle learn more action on leak protection alert

* PIA-63: Handle 'More info' action from the Leak Protection settings description

* PIA-337: Show leak protection content in English if no translations are available in other languages

* PIA-314: Add non-compliant check for current WIFI

* PIA-62: Remove leak proteciton notification when vpn is disconnected and app in the foreground

* PIA-335: Dismiss leak protection alert when disconnecting from quick action

* PIA-350: Show leak protection local notification in English when untranslated

* PIA-362: Remove leak protection alert when user connects to a compliant Wi-Fi

* Bump version to 3.23.1

* PIA-454: Disable UI tests and failing tests from target

* PIA-65: Hide leak protection settings when Wireguard is selected

* PIA-454: Add Fastlane setup

* PIA-454: Add CI congifuration

* PIA-415: Connection Live Activity and Dynamic Island POC

* PIA-490: Set feature flag for Dynamic Island Live Activity

* PIA-66: Add strings for non IKEV2 protocol alert

* PIA-66: Show non compliant alert for non IKEV2 protocol

* PIA-66: Enable leak protection and disable allow local devices

* Bump version to 3.23.2

* PIA-509: Execute pending actions when switching to IKEV2

* PIA-504: Update connection live activity and dynamic islanc UI

* PIA-417: Hook Connection state to Live Activity and Dynamic Island

* PIA-438: Bump version

* PIA-438: Add uploading to Testflight action

* PIA-438: Update CI to sign and upload builds

* PIA-438: Automate build number increase

* PIA-620: Update PIAAccount framework

* PIA-504: Update disconnected button and icon on Live Activity widget and Dynamic Island

* PIA-504: Localize text displayed on Live Activity and Dynamic Island

* PIA-540: PIA e2e testing setup
Login screen e2e tests

* PIA-540: Remove legacy ui testing target

* PIA-540: Set user credentials from ENV variables

* PIA-556: Update translations

* PIA-541: Allow VPN Profile installation e2e test
And add e2e example test on how to launch the app on authenticated state
and with the VPN Profile installation complete

* PIA-680: Add e2e workflow on CI

* - Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories

* - Integrated framework with Quick and Nimble
- Added Tests using Quick and Nimble
- Started the restructuring of directories
- Added Tests

* -  Enhanced based on PR Comments

* PIA-566: Update UI on regions cell to accomodate full text on smaller devices and different languages

* Enhanced FW by adding screens, helpers and rearranged structure

* PIA-560: Handle first region button from Quick Connect section

* PIA-832: Update app version to 3.23.4

* PIA-809: Update XCode on CI pipeline

---------

Co-authored-by: Waleed Mahmood <[email protected]>
Co-authored-by: Miguel Berrocal <[email protected]>
Co-authored-by: Helge Becker <[email protected]>
Co-authored-by: kp-juan-docal <[email protected]>
Co-authored-by: Juan Docal <[email protected]>
Co-authored-by: Bogdan Danila <[email protected]>
Co-authored-by: Said Rehouni <[email protected]>
Co-authored-by: kp-said-rehouni <[email protected]>
Co-authored-by: xv-laura-sempere <[email protected]>
Co-authored-by: Geneva Parayno <[email protected]>
Co-authored-by: xv-geneva-parayno <[email protected]>

PIA-809: Update iOS app (#33)

* Update application

* PIA-809: Update ruby version on CI pipelines

PIA-809: Update iOS app (#33)

* Update application

* PIA-809: Update ruby version on CI pipelines

PIA-865: Updaete e2e ci pipeline workflow (#35)

PIA-865: Updaete e2e ci pipeline workflow (#35)

Added Quick Settings Tests, Enhanced existing screens and tests (#38)
  • Loading branch information
Waleed Mahmood authored and kp-said-rehouni committed Nov 21, 2023
1 parent cbd67de commit 2eb9b3e
Show file tree
Hide file tree
Showing 898 changed files with 52,045 additions and 3,786 deletions.
39 changes: 39 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: build_and_test
on:
pull_request:
workflow_dispatch:
concurrency:
group: "${{ github.ref }}"
cancel-in-progress: true
jobs:
build:
runs-on: macos-13
env:
TEST_RUNNER_PIA_TEST_USER: ${{ secrets.PIA_ACCOUNT_USERNAME}}
TEST_RUNNER_PIA_TEST_PASSWORD: ${{ secrets.PIA_ACCOUNT_PASSWORD }}

steps:
- name: Setup Git credentials
run: |
git config --global url."https://${{ secrets.ORG_GITHUB_USERNAME }}:${{ secrets.ORG_GITHUB_TOKEN }}@github.com/".insteadOf "[email protected]:"
- uses: actions/checkout@v3

- name: Select XCode version
run: sudo xcode-select -s /Applications/Xcode_15.0.app

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0.2

- name: Install Fastlane
run: gem install fastlane

- name: Run unit tests
run: bundle exec fastlane tests

- name: Run e2e tests
run: bundle exec fastlane e2e_tests


51 changes: 51 additions & 0 deletions .github/workflows/testflight_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: testflight_deploy
on:
push:
branches:
- master

workflow_dispatch:
concurrency:
group: "${{ github.ref }}"
cancel-in-progress: true
jobs:
build:
runs-on: macos-13
env:
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
KEYCHAIN_NAME: ${{ secrets.KEYCHAIN_NAME }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}

steps:
- name: Setup Git credentials
run: |
git config --global url."https://${{ secrets.ORG_GITHUB_USERNAME }}:${{ secrets.ORG_GITHUB_TOKEN }}@github.com/".insteadOf "[email protected]:"
- uses: actions/checkout@v3

- name: Select XCode version
run: sudo xcode-select -s /Applications/Xcode_15.0.app

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0.2

- name: Install Fastlane
run: gem install fastlane

- name: Decode Certificates
run: echo "${{ secrets.IOS_CERTIFICATE }}" | base64 --decode > ./fastlane/Certificate.p12

- name: Run tests
run: bundle exec fastlane tests

- name: Set up certificates and profiles
run: bundle exec fastlane get_profiles > /dev/null 2>&1

- name: Upload version to TestFlight
run: bundle exec fastlane testflight_build

3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source "https://rubygems.org"

gem "fastlane"
2 changes: 1 addition & 1 deletion PIA VPN Tunnel/PacketTunnelProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
// Internet Access iOS Client. If not, see <https://www.gnu.org/licenses/>.
//

import TunnelKit
import TunnelKitOpenVPNAppExtension

class PacketTunnelProvider: OpenVPNTunnelProvider {
}
17 changes: 17 additions & 0 deletions PIA VPN UITests/Credentials.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>expired</key>
<dict/>
<key>valid</key>
<dict/>
<key>invalid</key>
<dict>
<key>username</key>
<string>random.username</string>
<key>password</key>
<string>passWord@533</string>
</dict>
</dict>
</plist>
47 changes: 47 additions & 0 deletions PIA VPN UITests/CredentialsUtil.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//
// CredentialsUtil.swift
// PIA VPN
//
// Created by Waleed Mahmood on 08.03.22.
// Copyright © 2022 Private Internet Access Inc. All rights reserved.
//

import Foundation

public enum CredentialsType: String {
case valid = "valid"
case expired = "expired"
case invalid = "invalid"
}

public struct Credentials: Codable {
let username: String
let password: String

init(from dictionary: Any) throws {
let data = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)
let decoder = JSONDecoder()
self = try decoder.decode(Self.self, from: data)
}
}

public class CredentialsUtil {
public static func credentials(type: CredentialsType) -> Credentials {
let bundle = Bundle(for: CredentialsUtil.self)
guard let filePath = bundle.path(forResource: "Credentials", ofType: "plist") else {
fatalError("Couldn't find file 'Credentials.plist'")
}

let plist = NSDictionary(contentsOfFile: filePath)
guard let dictionary = plist?.object(forKey: type.rawValue) as? [String: String] else {
fatalError("Couldn't find key '\(type.rawValue)' in 'Credentials.plist'")
}

do {
return try Credentials(from: dictionary)
}
catch {
  fatalError("Credential file does not contain required information")
}
}
}
33 changes: 33 additions & 0 deletions PIA VPN UITests/PIALaunchTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//
// PIALaunchTests.swift
// PIA VPN UITests
//
// Created by Waleed Mahmood on 01.03.22.
// Copyright © 2022 Private Internet Access Inc. All rights reserved.
//

import XCTest

class PIALaunchTests: XCTestCase {

override class var runsForEachTargetApplicationUIConfiguration: Bool {
true
}

override func setUpWithError() throws {
continueAfterFailure = false
}

func testLaunch() throws {
let app = XCUIApplication()
app.launch()

// Insert steps here to perform after app launch but before taking a screenshot,
// such as logging into a test account or navigating somewhere in the app

let attachment = XCTAttachment(screenshot: app.screenshot())
attachment.name = "Launch Screen"
attachment.lifetime = .keepAlways
add(attachment)
}
}
145 changes: 145 additions & 0 deletions PIA VPN UITests/PIALoginTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
//
// PIALoginTests.swift
// PIA VPN UITests
//
// Created by Waleed Mahmood on 01.03.22.
// Copyright © 2022 Private Internet Access Inc. All rights reserved.
//

import XCTest
import PIALibrary
import Pods_PIA_VPN_dev

class PIALoginTests: XCTestCase {

static let timeoutUIOps: TimeInterval = 10.0
let app = XCUIApplication()

override func setUpWithError() throws {
continueAfterFailure = false
app.launch()
navigateToGetStartedViewController()
}

override func tearDownWithError() throws {
// when test finishes logout
navigateToGetStartedViewController()
}

private func navigateToGetStartedViewController() {
// check if we have a side menu
if app.navigationBars.buttons[Accessibility.Id.Dashboard.menu].exists {
openSideMenuAndTapLogout()
}
}

private func openSideMenuAndTapLogout() {
app.navigationBars.buttons[Accessibility.Id.Dashboard.menu].tap()

if app.cells[Accessibility.Id.Menu.logout].waitForExistence(timeout: PIALoginTests.timeoutUIOps) {
app.cells[Accessibility.Id.Menu.logout].tap()
} else {
XCTAssert(false, "PIALoginTests:: A side menu is found but no logout cell is found")
}
if app.buttons[Accessibility.Id.Dialog.destructive].waitForExistence(timeout: PIALoginTests.timeoutUIOps) {
app.buttons[Accessibility.Id.Dialog.destructive].tap()
} else {
XCTAssert(false, "PIALoginTests:: Logout alert destructive button is not found")
}
}

private func navigateToLoginViewController() {
var conversionSubviewVisible = false

// wait for feature flags
var submitButtonExists = app.buttons[Accessibility.Id.Login.submit].waitForExistence(timeout: PIALoginTests.timeoutUIOps)

// check if new button should be used
if !submitButtonExists {
submitButtonExists = app.buttons[Accessibility.Id.Login.submitNew].waitForExistence(timeout: PIALoginTests.timeoutUIOps)
conversionSubviewVisible = true
}

if submitButtonExists {
if submitButtonExists && !conversionSubviewVisible {
app.buttons[Accessibility.Id.Login.submit].tap()
} else {
app.buttons[Accessibility.Id.Login.submitNew].tap()
}

} else {
XCTAssert(false, "PIALoginTests:: One of the Login buttons on GetStartedViewController is either not identifiable or have been moved")
}
}

private func fillLoginScreen(with credentials: Credentials) {
let usernameTextField = app.textFields[Accessibility.Id.Login.username]
let passwordTextField = app.secureTextFields[Accessibility.Id.Login.password]

if usernameTextField.exists && passwordTextField.exists {
// Type username
usernameTextField.tap()
usernameTextField.typeText(credentials.username)

// Type password
passwordTextField.tap()
passwordTextField.typeText(credentials.password)
} else {
XCTAssert(false, "PIALoginTests:: Username and Password text fields on LoginViewController are either not identifiable or are moved")
}
}

private func loginUser(ofType: CredentialsType) {
navigateToLoginViewController()
switch ofType {
case .valid:
fillLoginScreen(with: CredentialsUtil.credentials(type: .valid))
case .expired:
fillLoginScreen(with: CredentialsUtil.credentials(type: .expired))
case .invalid:
fillLoginScreen(with: CredentialsUtil.credentials(type: .invalid))
}

let loginButton = app.buttons[Accessibility.Id.Login.submit]
loginButton.tap()
}

func testInvalidUserLogin() throws {
loginUser(ofType: .invalid)

let bannerViewExists = app.staticTexts["Your username or password is incorrect."].waitForExistence(timeout: PIALoginTests.timeoutUIOps)
XCTAssertTrue(bannerViewExists, "PIALoginTests::testInvalidUserLogin() failed")
}

func testExpiredUserLogin() throws {
app.switchEnvironment(to: .staging)
loginUser(ofType: .expired)

let bannerViewExists = app.staticTexts["Your username or password is incorrect."].waitForExistence(timeout: PIALoginTests.timeoutUIOps)
XCTAssertTrue(bannerViewExists, "PIALoginTests::testExpiredUserLogin() failed")
}

func testValidUserLogin() throws {
app.switchEnvironment(to: .production)
loginUser(ofType: .valid)

let viewTitleExists = app.staticTexts["PIA needs access to your VPN profiles to secure your traffic"].waitForExistence(timeout: PIALoginTests.timeoutUIOps)
let okButtonExist = app.buttons[Accessibility.Id.Permissions.submit].waitForExistence(timeout: PIALoginTests.timeoutUIOps)
XCTAssertTrue(viewTitleExists && okButtonExist, "PIALoginTests::testActiveUserLogin() failed")
}
}

private extension XCUIApplication {

func switchEnvironment(to environment: Client.Environment) {
// wait until the button is available
_ = self.buttons[Accessibility.Id.Welcome.environment].waitForExistence(timeout: PIALoginTests.timeoutUIOps)
let environmentButton = self.buttons[Accessibility.Id.Welcome.environment]

if environmentButton.label.lowercased() != environment.rawValue.lowercased() {

// then click it to switch environment
environmentButton.tap()
}
}
}
43 changes: 43 additions & 0 deletions PIA VPN UITests/PIAUITests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//
// PIAUITests.swift
// PIA VPN UITests
//
// Created by Waleed Mahmood on 01.03.22.
// Copyright © 2022 Private Internet Access Inc. All rights reserved.
//

import XCTest

class PIAUITests: XCTestCase {

override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.

// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false

// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}

override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}

func testExample() throws {
// UI tests must launch the application that they test.
let app = XCUIApplication()
app.launch()

// Use recording to get started writing UI tests.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}

func testLaunchPerformance() throws {
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
// This measures how long it takes to launch your application.
measure(metrics: [XCTApplicationLaunchMetric()]) {
XCUIApplication().launch()
}
}
}
}
Binary file not shown.
Binary file added PIA VPN dev.app/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added PIA VPN dev.app/AppIcon76x76@2x~ipad.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added PIA VPN dev.app/Assets.car
Binary file not shown.
Binary file added PIA VPN dev.app/Components.plist
Binary file not shown.
Binary file added PIA VPN dev.app/ConnectionTile.nib
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added PIA VPN dev.app/DNS.plist
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added PIA VPN dev.app/DedicatedIpRowViewCell.nib
Binary file not shown.
Binary file added PIA VPN dev.app/FavoriteServersTile.nib
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added PIA VPN dev.app/Flags-dev.plist
Binary file not shown.
Loading

0 comments on commit 2eb9b3e

Please sign in to comment.