Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PIA-865 [iOS] Quick Settings Tests #38

Merged
merged 1 commit into from
Nov 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions PIA VPN.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,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 @@ -706,6 +709,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 @@ -1301,6 +1307,7 @@
69C587FC2AD00C6300B95EF9 /* PIAExampleWithAuthenticatedAppTest.swift */,
35EDD6292ADE5F08007B9ACB /* SignInTests.swift */,
35EDD6322ADE7281007B9ACB /* OnboardingTests.swift */,
35EDD65B2B047839007B9ACB /* QuickSettingsTests.swift */,
);
path = Tests;
sourceTree = "<group>";
Expand All @@ -1314,6 +1321,7 @@
35EDD6362ADE761A007B9ACB /* HomeScreen.swift */,
35EDD6412AE7A83D007B9ACB /* WelcomeScreen.swift */,
35EDD6432AE7B480007B9ACB /* Common.swift */,
35EDD6592B035B51007B9ACB /* SideMenuScreen.swift */,
);
path = Screens;
sourceTree = "<group>";
Expand Down Expand Up @@ -1344,6 +1352,7 @@
699F23AF2AFBA66000EBC5E6 /* ProtocolsSettingsScreen.swift */,
699F23B02AFBA66000EBC5E6 /* GeneralSettingsScreen.swift */,
699F23B12AFBA66000EBC5E6 /* PrivacySettingsScreen.swift */,
35EDD65D2B048C68007B9ACB /* QuickSettingsScreen.swift */,
);
path = Settings;
sourceTree = "<group>";
Expand Down Expand Up @@ -2500,6 +2509,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 @@ -2512,6 +2523,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
Loading