diff --git a/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift b/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift index a277b851bd41..f683d92bd4b6 100644 --- a/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift +++ b/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift @@ -59,6 +59,7 @@ public enum AccessibilityIdentifier: String { case listCustomListDoneButton case selectLocationFilterButton case relayFilterChipCloseButton + case openPortSelectorMenuButton // Cells case deviceCell diff --git a/ios/MullvadVPN/View controllers/Settings/SelectableSettingsDetailsCell.swift b/ios/MullvadVPN/View controllers/Settings/SelectableSettingsDetailsCell.swift index 8f68c7d5ad22..8869d7f0cfee 100644 --- a/ios/MullvadVPN/View controllers/Settings/SelectableSettingsDetailsCell.swift +++ b/ios/MullvadVPN/View controllers/Settings/SelectableSettingsDetailsCell.swift @@ -22,6 +22,7 @@ class SelectableSettingsDetailsCell: SelectableSettingsCell { .withRenderingMode(.alwaysOriginal) .withTintColor(.white) actionButton.configuration = actionButtonConfiguration + actionButton.accessibilityIdentifier = .openPortSelectorMenuButton actionButton.addTarget( self, diff --git a/ios/MullvadVPNUITests/Pages/VPNSettingsPage.swift b/ios/MullvadVPNUITests/Pages/VPNSettingsPage.swift index a6bdb6aeb25d..c47897c41b36 100644 --- a/ios/MullvadVPNUITests/Pages/VPNSettingsPage.swift +++ b/ios/MullvadVPNUITests/Pages/VPNSettingsPage.swift @@ -14,15 +14,26 @@ class VPNSettingsPage: Page { super.init(app) } - private func cellExpandButton(_ cellAccessiblityIdentifier: AccessibilityIdentifier) -> XCUIElement { + private func cellSubButton( + _ cellAccessiblityIdentifier: AccessibilityIdentifier, + _ subButtonAccessibilityIdentifier: AccessibilityIdentifier + ) -> XCUIElement { let tableView = app.tables[AccessibilityIdentifier.vpnSettingsTableView] let matchingCells = tableView.otherElements[cellAccessiblityIdentifier.rawValue] - let expandButton = matchingCells.buttons[AccessibilityIdentifier.expandButton] + let expandButton = matchingCells.buttons[subButtonAccessibilityIdentifier] let lastCell = tableView.cells.allElementsBoundByIndex.last! tableView.scrollDownToElement(element: lastCell) return expandButton } + private func cellExpandButton(_ cellAccessiblityIdentifier: AccessibilityIdentifier) -> XCUIElement { + return cellSubButton(cellAccessiblityIdentifier, .expandButton) + } + + private func cellPortSelectorButton(_ cellAccessiblityIdentifier: AccessibilityIdentifier) -> XCUIElement { + return cellSubButton(cellAccessiblityIdentifier, .openPortSelectorMenuButton) + } + @discardableResult func tapBackButton() -> Self { // Workaround for setting accessibility identifier on navigation bar button being non-trivial app.buttons.matching(identifier: "Settings").allElementsBoundByIndex.last?.tap() @@ -48,24 +59,40 @@ class VPNSettingsPage: Page { return self } + @discardableResult func tapUDPOverTCPPortSelectorButton() -> Self { + cellPortSelectorButton(AccessibilityIdentifier.wireGuardObfuscationUdpOverTcp).tap() + + return self + } + + @discardableResult func tapShadowsocksPortSelectorButton() -> Self { + cellPortSelectorButton(AccessibilityIdentifier.wireGuardObfuscationShadowsocks).tap() + + return self + } + + // this button no longer exists @discardableResult func tapUDPOverTCPPortExpandButton() -> Self { cellExpandButton(AccessibilityIdentifier.udpOverTCPPortCell).tap() return self } + // this button no longer exists @discardableResult func tapUDPOverTCPPortAutomaticCell() -> Self { app.cells["\(AccessibilityIdentifier.wireGuardObfuscationPort)Automatic"] .tap() return self } + // this button no longer exists @discardableResult func tapUDPOverTCPPort80Cell() -> Self { app.cells["\(AccessibilityIdentifier.wireGuardObfuscationPort)80"] .tap() return self } + // this button no longer exists @discardableResult func tapUDPOverTCPPort5001Cell() -> Self { app.cells["\(AccessibilityIdentifier.wireGuardObfuscationPort)5001"] .tap()