Skip to content

Commit

Permalink
Merge branch 'master' into PIA-675_tvOS_compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
kp-said-rehouni committed Nov 20, 2023
2 parents b49f439 + cc600bd commit 52a6825
Show file tree
Hide file tree
Showing 12 changed files with 325 additions and 28 deletions.
12 changes: 12 additions & 0 deletions PIA VPN.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@
35EDD63E2AE76A3B007B9ACB /* WaitHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35EDD63D2AE76A3B007B9ACB /* WaitHelper.swift */; };
35EDD6422AE7A83D007B9ACB /* WelcomeScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35EDD6412AE7A83D007B9ACB /* WelcomeScreen.swift */; };
35EDD6442AE7B480007B9ACB /* Common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35EDD6432AE7B480007B9ACB /* Common.swift */; };
35EDD65A2B035B51007B9ACB /* SideMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35EDD6592B035B51007B9ACB /* SideMenuScreen.swift */; };
35EDD65C2B047839007B9ACB /* QuickSettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35EDD65B2B047839007B9ACB /* QuickSettingsTests.swift */; };
35EDD65E2B048C68007B9ACB /* QuickSettingsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35EDD65D2B048C68007B9ACB /* QuickSettingsScreen.swift */; };
6924831A2AB045A5002A0407 /* PIAWidgetAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692483192AB045A5002A0407 /* PIAWidgetAttributes.swift */; };
6924831B2AB045A5002A0407 /* PIAWidgetAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692483192AB045A5002A0407 /* PIAWidgetAttributes.swift */; };
6924831C2AB045A5002A0407 /* PIAWidgetAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 692483192AB045A5002A0407 /* PIAWidgetAttributes.swift */; };
Expand Down Expand Up @@ -783,6 +786,9 @@
35EDD63D2AE76A3B007B9ACB /* WaitHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitHelper.swift; sourceTree = "<group>"; };
35EDD6412AE7A83D007B9ACB /* WelcomeScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeScreen.swift; sourceTree = "<group>"; };
35EDD6432AE7B480007B9ACB /* Common.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Common.swift; sourceTree = "<group>"; };
35EDD6592B035B51007B9ACB /* SideMenuScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideMenuScreen.swift; sourceTree = "<group>"; };
35EDD65B2B047839007B9ACB /* QuickSettingsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSettingsTests.swift; sourceTree = "<group>"; };
35EDD65D2B048C68007B9ACB /* QuickSettingsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSettingsScreen.swift; sourceTree = "<group>"; };
692483192AB045A5002A0407 /* PIAWidgetAttributes.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = PIAWidgetAttributes.swift; sourceTree = "<group>"; tabWidth = 4; };
6924831D2AB04FFD002A0407 /* PIAWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PIAWidgetBundle.swift; sourceTree = "<group>"; };
6924831F2AB05F18002A0407 /* PIAConnectionView.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = PIAConnectionView.swift; sourceTree = "<group>"; tabWidth = 4; };
Expand Down Expand Up @@ -1503,6 +1509,7 @@
69C587FC2AD00C6300B95EF9 /* PIAExampleWithAuthenticatedAppTest.swift */,
35EDD6292ADE5F08007B9ACB /* SignInTests.swift */,
35EDD6322ADE7281007B9ACB /* OnboardingTests.swift */,
35EDD65B2B047839007B9ACB /* QuickSettingsTests.swift */,
);
path = Tests;
sourceTree = "<group>";
Expand All @@ -1516,6 +1523,7 @@
35EDD6362ADE761A007B9ACB /* HomeScreen.swift */,
35EDD6412AE7A83D007B9ACB /* WelcomeScreen.swift */,
35EDD6432AE7B480007B9ACB /* Common.swift */,
35EDD6592B035B51007B9ACB /* SideMenuScreen.swift */,
);
path = Screens;
sourceTree = "<group>";
Expand Down Expand Up @@ -1546,6 +1554,7 @@
699F23AF2AFBA66000EBC5E6 /* ProtocolsSettingsScreen.swift */,
699F23B02AFBA66000EBC5E6 /* GeneralSettingsScreen.swift */,
699F23B12AFBA66000EBC5E6 /* PrivacySettingsScreen.swift */,
35EDD65D2B048C68007B9ACB /* QuickSettingsScreen.swift */,
);
path = Settings;
sourceTree = "<group>";
Expand Down Expand Up @@ -2809,6 +2818,8 @@
35EDD6442AE7B480007B9ACB /* Common.swift in Sources */,
35EDD63E2AE76A3B007B9ACB /* WaitHelper.swift in Sources */,
35EDD6282ADE5D31007B9ACB /* BaseTest.swift in Sources */,
35EDD65E2B048C68007B9ACB /* QuickSettingsScreen.swift in Sources */,
35EDD65A2B035B51007B9ACB /* SideMenuScreen.swift in Sources */,
35EDD6352ADE7424007B9ACB /* VPNPermissionScreen.swift in Sources */,
699F23B32AFBA66000EBC5E6 /* HelpSettingsScreen.swift in Sources */,
69B70ABC2ACBF8300072A09D /* CredentialsUtil.swift in Sources */,
Expand All @@ -2821,6 +2832,7 @@
699F23B42AFBA66000EBC5E6 /* AutomationSettingsScreen.swift in Sources */,
35EDD62A2ADE5F08007B9ACB /* SignInTests.swift in Sources */,
69B70AB52ACBF51C0072A09D /* LoginScreen.swift in Sources */,
35EDD65C2B047839007B9ACB /* QuickSettingsTests.swift in Sources */,
35EDD6332ADE7281007B9ACB /* OnboardingTests.swift in Sources */,
699F23B52AFBA66000EBC5E6 /* ProtocolsSettingsScreen.swift in Sources */,
69B70AC02ACC2CFE0072A09D /* AccessibilityId.swift in Sources */,
Expand Down
1 change: 1 addition & 0 deletions PIA VPN/Tiles/QuickSettingsTileCollectionViewCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class QuickSettingsTileCollectionViewCell: UICollectionViewCell, TileableCell {
}

func setupCellForStatus(_ status: TileStatus) {
self.accessibilityIdentifier = "QuickSettingsTileCollectionViewCell"
Theme.current.applyPrincipalBackground(self)
Theme.current.applyPrincipalBackground(self.contentView)
self.accessoryImageRight.image = Theme.current.dragDropImage()
Expand Down
19 changes: 16 additions & 3 deletions PIA-VPN_E2E_Tests/Core/BaseTest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,33 @@
import Quick
import Nimble
import XCTest
import Foundation

class BaseTest: QuickSpec {
static var app: XCUIApplication!

override class func spec() {
beforeEach {
beforeSuite {
app = XCUIApplication()
app.launch()
app.logOut()
app.navigateToLoginScreen()
if(!app.connectionButton.waitForExistence(timeout: app.defaultTimeout)) {
app.navigateToLoginScreen()
app.logIn(with: CredentialsUtil.credentials(type: .valid))
app.acceptVPNPermission()
}
}

beforeEach {
app.launch()

}

afterEach {
app.terminate()
}

afterSuite {
app.terminate()
}
}
}
6 changes: 5 additions & 1 deletion PIA-VPN_E2E_Tests/Helpers/ElementHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ extension XCUIApplication {
var defaultTimeout: TimeInterval { 10.0 }
var shortTimeout: TimeInterval { 5.0 }

func navigationbar(with id: String) -> XCUIElement {
func navigationBar(with id: String) -> XCUIElement {
return navigationBars[id]
}

Expand Down Expand Up @@ -55,5 +55,9 @@ extension XCUIApplication {
func switches(with id: String) -> XCUIElement {
return switches[id]
}

func dialog(with id: String) -> XCUIElement {
return switches[id]
}
}

58 changes: 51 additions & 7 deletions PIA-VPN_E2E_Tests/Screens/HomeScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,29 @@ extension XCUIApplication {
button(with: PIALibraryAccessibility.Id.Dialog.destructive)
}

var logOutButton: XCUIElement {
staticText(with: "Log out")
var quickSettingsButton: XCUIElement {
cell(with: "QuickSettingsTileCollectionViewCell")
}

var settingsButton: XCUIElement {
staticText(with: "Settings")
var privateBrowserButton: XCUIElement {
button(with: "Private Browser")
}

var settingsBackButton: XCUIElement {
button(with: "Settings")
var enableNetworkManagementButton: XCUIElement {
button(with: "Enable Network Management")
}

var disableNetworkManagementButton: XCUIElement {
button(with: "Disable Network Management")
}

var enableVPNKillSwitchButton: XCUIElement {
button(with: "Enable VPN Kill Switch")
}

var disableVPNKillSwitchButton: XCUIElement {
button(with: "Disable VPN Kill Switch")
}

func logOut() {
guard dashboardMenuButton.exists else { return }
Expand All @@ -56,10 +67,43 @@ extension XCUIApplication {
}
}

func navigateToHomeScreenFromSettings() {
func navigateToHomeFromSettings() {
if settingsBackButton.waitForExistence(timeout: defaultTimeout) {
settingsBackButton.tap()
navigateToHome()
}
}

func navigateToQuickSettings() {
quickSettingsButton.staticTexts["QUICK SETTINGS"].tap()
}

func navigateToHome() {
closeButton.tap()
dashboardMenuButton.waitForExistence(timeout: defaultTimeout)
}

func enableVPNKillSwitchOnHome() {
if(enableVPNKillSwitchButton.exists) {
enableVPNKillSwitchButton.tap()
}
}

func disableVPNKillSwitchOnHome() {
if(disableVPNKillSwitchButton.exists) {
disableVPNKillSwitchButton.tap()
}
}

func enableNetworkManagementOnHome() {
if(enableNetworkManagementButton.exists) {
enableNetworkManagementButton.tap()
}
}

func disableNetworkManagementOnHome() {
if(disableNetworkManagementButton.exists) {
disableNetworkManagementButton.tap()
}
}
}
59 changes: 59 additions & 0 deletions PIA-VPN_E2E_Tests/Screens/Settings/QuickSettingsScreen.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//
// QuickSettingsScreen.swift
// PIA-VPN_E2E_Tests
//
// Created by Geneva Parayno on 15/11/23.
// Copyright © 2023 Private Internet Access Inc. All rights reserved.
//

import XCTest

extension XCUIApplication {
var vpnKillSwitchQuickSettings: XCUIElement {
cells.containing(.staticText, identifier: "VPN Kill Switch").firstMatch.switches.firstMatch
}

var networkManagementQuickSettings: XCUIElement {
cells.containing(.staticText, identifier: "Network Management").firstMatch.switches.firstMatch
}

var privateBrowserQuickSettings: XCUIElement {
cells.containing(.staticText, identifier: "Private Browser").firstMatch.switches.firstMatch
}

func enableVPNKillSwitchQuickSetting() {
if(vpnKillSwitchQuickSettings.value as! String == "0"){
vpnKillSwitchQuickSettings.tap()
}
}

func disableVPNKillSwitchQuickSetting() {
if(vpnKillSwitchQuickSettings.value as! String == "1"){
vpnKillSwitchQuickSettings.tap()
}
}

func enableNetworkManagementQuickSetting() {
if(networkManagementQuickSettings.value as! String == "0"){
networkManagementQuickSettings.tap()
}
}

func disableNetworkManagementQuickSetting() {
if(networkManagementQuickSettings.value as! String == "1"){
networkManagementQuickSettings.tap()
}
}

func enablePrivateBrowserQuickSetting() {
if(privateBrowserQuickSettings.value as! String == "0"){
privateBrowserQuickSettings.tap()
}
}

func disablePrivateBrowserQuickSetting() {
if(privateBrowserQuickSettings.value as! String == "1"){
privateBrowserQuickSettings.tap()
}
}
}
4 changes: 4 additions & 0 deletions PIA-VPN_E2E_Tests/Screens/Settings/SettingsScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,8 @@ extension XCUIApplication {
var closeButton: XCUIElement {
button(with: "Close")
}

var settingsBackButton: XCUIElement {
button(with: "Settings")
}
}
19 changes: 19 additions & 0 deletions PIA-VPN_E2E_Tests/Screens/SideMenuScreen.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// SideMenuScreen.swift
// PIA-VPN_E2E_Tests
//
// Created by Geneva Parayno on 14/11/23.
// Copyright © 2023 Private Internet Access Inc. All rights reserved.
//

import XCTest

extension XCUIApplication {
var logOutButton: XCUIElement {
staticText(with: "Log out")
}

var settingsButton: XCUIElement {
staticText(with: "Settings")
}
}
5 changes: 4 additions & 1 deletion PIA-VPN_E2E_Tests/Tests/OnboardingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ class OnboardingTests:BaseTest {
describe("onboarding vpn permission tests") {
context("vpn profile installation permission") {
it("should display the home screen after allowing vpn profile installation"){
app.logOut()
app.navigateToLoginScreen()

app.logIn(with: CredentialsUtil.credentials(type: .valid))
app.acceptVPNPermission()

app.vpnPermissionAlertText.waitForExistence(timeout: app.defaultTimeout)
app.vpnAllowButton.waitForExistence(timeout: app.defaultTimeout)
app.swipeUp()

expect(app.dashboardMenuButton.waitForExistence(timeout: app.defaultTimeout))
expect(app.dashboardMenuButton.waitForExistence(timeout: app.defaultTimeout)).to(beTrue())
expect(app.vpnPermissionScreen.exists).to(beFalse())
}
}
Expand Down
Loading

0 comments on commit 52a6825

Please sign in to comment.