fix(uitests): stop logging out after every authenticated test
All 7 authenticated-flow XCTestCase classes logged out for real in tearDown, forcing a real OTP round trip against the production backend on the next authenticated test. Under CI's back-to-back suite run this produced ~9 real logins to the same QA phone number in ~9 minutes - the first few succeeded (~30-40s each) but every one after that failed to complete within timeout, cascading into 'Login never completed' across CartCheckoutFlowTests, HomeFiltersFlowTests, OrderDetailsFlowTests, SavedCardsFlowTests, UserProfileFlowTests. Removed the per-test logout so the QA account's Keychain-backed session persists across the whole suite (ensureLoggedIn already no-ops when already authenticated). Moved the 'must start logged out' guarantee to the two classes that actually need it - HomeGuestFlowTests and ProfileLoggedOutFlowTests now force logout themselves right after app.launch() via a small launch helper, instead of relying on whichever authenticated class happened to run last. See decisions/2026-09-11-ui-test-shared-login-session.md.
This commit is contained in:
@@ -7,9 +7,19 @@ final class ProfileLoggedOutFlowTests: XCTestCase {
|
||||
continueAfterFailure = false
|
||||
}
|
||||
|
||||
func testLoggedOutProfileShowsLoginPrompt() throws {
|
||||
/// Authenticated-flow tests no longer log out after themselves (see
|
||||
/// decisions/2026-09-11-ui-test-shared-login-session.md), so
|
||||
/// logged-out tests must force a clean state themselves right after
|
||||
/// launch, rather than assume one.
|
||||
private func launchLoggedOutApp() -> XCUIApplication {
|
||||
let app = XCUIApplication()
|
||||
app.launch()
|
||||
app.logoutIfAuthenticated()
|
||||
return app
|
||||
}
|
||||
|
||||
func testLoggedOutProfileShowsLoginPrompt() throws {
|
||||
let app = launchLoggedOutApp()
|
||||
XCTAssertTrue(app.reachLoggedOutProfile(), "Never reached the logged-out profile screen")
|
||||
|
||||
XCTAssertTrue(app.staticTexts["Entre na sua conta"].exists)
|
||||
@@ -22,8 +32,7 @@ final class ProfileLoggedOutFlowTests: XCTestCase {
|
||||
/// a working way back out (its `LCENavigationView` back button, which
|
||||
/// sets `root = .main`).
|
||||
func testAuthIntroScreenShowsChoicesAndCanGoBack() throws {
|
||||
let app = XCUIApplication()
|
||||
app.launch()
|
||||
let app = launchLoggedOutApp()
|
||||
XCTAssertTrue(app.reachLoggedOutProfile())
|
||||
|
||||
app.buttons["Entrar ou Cadastrar"].tap()
|
||||
@@ -45,8 +54,7 @@ final class ProfileLoggedOutFlowTests: XCTestCase {
|
||||
/// app's standard `AppBackButtonIcon` via `LCENavigationView`, not the
|
||||
/// oversized iOS 26 system glass back button.
|
||||
func testPushedAuthScreensUseAppBackButton() throws {
|
||||
let app = XCUIApplication()
|
||||
app.launch()
|
||||
let app = launchLoggedOutApp()
|
||||
XCTAssertTrue(app.reachLoggedOutProfile())
|
||||
app.buttons["Entrar ou Cadastrar"].tap()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user