Skip to content

Commit 1dc2185

Browse files
authored
Merge pull request #7548 from woocommerce/fix-skipped-login-tests
[UI Tests] - Re-enable skipped login test cases
2 parents 1833027 + 7e14865 commit 1dc2185

File tree

8 files changed

+44
-59
lines changed

8 files changed

+44
-59
lines changed

WooCommerce/Classes/ViewRelated/Hub Menu/HubMenu.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,18 @@ struct HubMenu: View {
160160
Text(storeTitle)
161161
.headlineStyle()
162162
.lineLimit(1)
163+
.accessibilityIdentifier("store-title")
163164
if let storeURL = storeURL {
164165
Text(storeURL)
165166
.subheadlineStyle()
166167
.lineLimit(1)
168+
.accessibilityIdentifier("store-url")
167169
}
168170
Button(Localization.switchStore) {
169171
switchStoreHandler?()
170172
}
171173
.linkStyle()
174+
.accessibilityIdentifier("switch-store-button")
172175
}
173176
Spacer()
174177
VStack {

WooCommerce/UITestsFoundation/Screens/Login/LoginEpilogueScreen.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public final class LoginEpilogueScreen: BaseScreen {
1111
private let displayNameField: XCUIElement
1212
private let siteUrlField: XCUIElement
1313

14-
init() {
14+
public init() {
1515
let app = XCUIApplication()
1616
displayNameField = app.staticTexts[ElementStringIDs.displayNameField]
1717
siteUrlField = app.staticTexts[ElementStringIDs.siteUrlField]
@@ -20,6 +20,7 @@ public final class LoginEpilogueScreen: BaseScreen {
2020
super.init(element: continueButton)
2121
}
2222

23+
@discardableResult
2324
public func continueWithSelectedSite() throws -> MyStoreScreen {
2425
continueButton.tap()
2526
return try MyStoreScreen()

WooCommerce/UITestsFoundation/Screens/Login/PasswordScreen.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@ public final class PasswordScreen: BaseScreen {
2121
super.init(element: passwordTextField)
2222
}
2323

24-
public func proceedWith(password: String) -> LoginEpilogueScreen {
24+
public func proceedWith(password: String) {
2525
_ = tryProceed(password: password)
26-
27-
return LoginEpilogueScreen()
2826
}
2927

3028
public func tryProceed(password: String) -> PasswordScreen {

WooCommerce/UITestsFoundation/Screens/Login/PrologueScreen.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,10 @@ public final class PrologueScreen: ScreenObject {
2121

2222
return LoginSiteAddressScreen()
2323
}
24+
25+
@discardableResult
26+
public func verifyPrologueScreenLoaded() throws -> Self {
27+
XCTAssertTrue(isLoaded)
28+
return self
29+
}
2430
}

WooCommerce/UITestsFoundation/Screens/Menu/MenuScreen.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ public final class MenuScreen: ScreenObject {
1414
$0.buttons["menu-view-store"]
1515
}
1616

17+
private let selectedStoreTitleGetter: (XCUIApplication) -> XCUIElement = {
18+
$0.staticTexts["store-title"]
19+
}
20+
21+
private let selectedStoreUrlGetter: (XCUIApplication) -> XCUIElement = {
22+
$0.staticTexts["store-url"]
23+
}
24+
1725
/// Button to open the Reviews section
1826
///
1927
private var reviewsButton: XCUIElement { reviewsButtonGetter(app) }
@@ -39,4 +47,14 @@ public final class MenuScreen: ScreenObject {
3947
app.buttons["dashboard-settings-button"].tap()
4048
return try SettingsScreen()
4149
}
50+
51+
@discardableResult
52+
public func verifySelectedStoreDisplays(storeTitle expectedStoreTitle: String, storeURL expectedStoreUrl: String) -> Self {
53+
let actualStoreTitle = selectedStoreTitleGetter(app).label
54+
let actualStoreUrl = selectedStoreUrlGetter(app).label
55+
56+
XCTAssertEqual(expectedStoreTitle, actualStoreTitle)
57+
XCTAssertEqual(expectedStoreUrl, actualStoreUrl)
58+
return self
59+
}
4260
}

WooCommerce/UITestsFoundation/Screens/Settings/SettingsScreen.swift

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@ import ScreenObject
22
import XCTest
33

44
public final class SettingsScreen: ScreenObject {
5-
6-
private let selectedStoreNameGetter: (XCUIApplication) -> XCUIElement = {
7-
$0.cells.staticTexts["headline-label"]
8-
}
9-
10-
private let selectedSiteUrlGetter: (XCUIApplication) -> XCUIElement = {
11-
$0.cells.staticTexts["body-label"]
12-
}
13-
145
private let betaFeaturesGetter: (XCUIApplication) -> XCUIElement = {
156
$0.cells["settings-beta-features-button"]
167
}
@@ -60,19 +51,3 @@ public final class SettingsScreen: ScreenObject {
6051
return try BetaFeaturesScreen()
6152
}
6253
}
63-
64-
/// Assertions
65-
extension SettingsScreen {
66-
67-
public func verifySelectedStoreDisplays(storeName expectedStoreName: String, siteUrl expectedSiteUrl: String) -> SettingsScreen {
68-
let actualStoreName = selectedStoreNameGetter(app).label
69-
let expectedSiteUrl = expectedSiteUrl.replacingOccurrences(of: "http://", with: "")
70-
let actualSiteUrl = selectedSiteUrlGetter(app).label
71-
72-
XCTAssertEqual(expectedStoreName, actualStoreName,
73-
"Expected display name '\(expectedStoreName)' but '\(actualStoreName)' was displayed instead.")
74-
XCTAssertEqual(expectedSiteUrl, actualSiteUrl,
75-
"Expected site URL \(expectedSiteUrl) but \(actualSiteUrl) was displayed instead.")
76-
return self
77-
}
78-
}

WooCommerce/WooCommerceUITests/Flows/LoginFlow.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ class LoginFlow {
55

66
@discardableResult
77
static func logInWithWPcom() throws -> MyStoreScreen {
8-
return try PrologueScreen().selectContinueWithWordPress()
8+
try PrologueScreen().selectContinueWithWordPress()
99
.proceedWith(email: TestCredentials.emailAddress)
1010
.proceedWith(password: TestCredentials.password)
11+
12+
return try LoginEpilogueScreen()
1113
.verifyEpilogueDisplays(displayName: TestCredentials.displayName, siteUrl: TestCredentials.siteUrl)
1214
.continueWithSelectedSite()
1315
}

WooCommerce/WooCommerceUITests/Tests/LoginTests.swift

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,51 +6,42 @@ final class LoginTests: XCTestCase {
66
override func setUp() {
77
continueAfterFailure = false
88

9-
// UI tests must launch the application that they test.
109
let app = XCUIApplication()
1110
app.launchArguments = ["logout-at-launch", "disable-animations", "mocked-wpcom-api", "-ui_testing"]
1211
app.launch()
1312
}
1413

15-
// Login with Store Address and log out.
16-
func skipped_test_site_address_login_logout() throws {
17-
try skipTillSettingsFixed()
18-
19-
let prologue = try PrologueScreen().selectSiteAddress()
14+
func test_site_address_login_logout() throws {
15+
try PrologueScreen()
16+
.selectSiteAddress()
2017
.proceedWith(siteUrl: TestCredentials.siteUrl)
2118
.proceedWith(email: TestCredentials.emailAddress)
2219
.proceedWith(password: TestCredentials.password)
23-
.verifyEpilogueDisplays(displayName: TestCredentials.displayName, siteUrl: TestCredentials.siteUrl)
24-
.continueWithSelectedSite()
2520

26-
// Log out
2721
try TabNavComponent()
2822
.goToMenuScreen()
23+
.verifySelectedStoreDisplays(storeTitle: TestCredentials.storeName, storeURL: TestCredentials.siteUrl)
2924
.openSettingsPane()
30-
.verifySelectedStoreDisplays(storeName: TestCredentials.storeName, siteUrl: TestCredentials.siteUrl)
3125
.logOut()
32-
33-
XCTAssert(prologue.isLoaded)
26+
.verifyPrologueScreenLoaded()
3427
}
3528

36-
// Login with WordPress.com account and log out
37-
func skipped_test_WordPress_login_logout() throws {
38-
try skipTillSettingsFixed()
29+
func test_WordPress_login_logout() throws {
3930

40-
let prologue = try PrologueScreen().selectContinueWithWordPress()
31+
try PrologueScreen().selectContinueWithWordPress()
4132
.proceedWith(email: TestCredentials.emailAddress)
4233
.proceedWith(password: TestCredentials.password)
34+
35+
try LoginEpilogueScreen()
4336
.verifyEpilogueDisplays(displayName: TestCredentials.displayName, siteUrl: TestCredentials.siteUrl)
4437
.continueWithSelectedSite()
4538

46-
// Log out
4739
try TabNavComponent()
4840
.goToMenuScreen()
41+
.verifySelectedStoreDisplays(storeTitle: TestCredentials.storeName, storeURL: TestCredentials.siteUrl)
4942
.openSettingsPane()
50-
.verifySelectedStoreDisplays(storeName: TestCredentials.storeName, siteUrl: TestCredentials.siteUrl)
5143
.logOut()
52-
53-
XCTAssert(prologue.isLoaded)
44+
.verifyPrologueScreenLoaded()
5445
}
5546

5647
func test_WordPress_unsuccessfull_login() throws {
@@ -59,13 +50,4 @@ final class LoginTests: XCTestCase {
5950
.tryProceed(password: "invalidPswd")
6051
.verifyLoginError()
6152
}
62-
63-
func skipTillSettingsFixed(file: StaticString = #file, line: UInt = #line) throws {
64-
try XCTSkipIf(true,
65-
"""
66-
Skipping test because settings icon was moved from My Store to Hub Menu,
67-
the icon no longer have an accessibilityIdentifier,
68-
so test will fail during logout.
69-
""", file: file, line: line)
70-
}
7153
}

0 commit comments

Comments
 (0)