// // TabNavigationTests.swift // SportsTimeUITests // // Verifies navigation through all 5 tabs. // QA Sheet: F-008, F-009 // import XCTest final class TabNavigationTests: BaseUITestCase { /// F-008: Switch to all 5 tabs — each loads without crash. @MainActor func testF008_TabNavigationCycle() { let home = HomeScreen(app: app) home.waitForLoad() // Schedule tab home.switchToTab(home.scheduleTab) let schedule = ScheduleScreen(app: app) schedule.assertLoaded() // My Trips tab home.switchToTab(home.myTripsTab) let myTrips = MyTripsScreen(app: app) myTrips.assertEmpty() // Progress tab (Pro-gated, but UI test mode forces Pro) home.switchToTab(home.progressTab) let progress = ProgressScreen(app: app) progress.assertLoaded() // Settings tab home.switchToTab(home.settingsTab) let settings = SettingsScreen(app: app) settings.assertLoaded() // Return home home.switchToTab(home.homeTab) XCTAssertTrue(home.startPlanningButton.waitForExistence(timeout: BaseUITestCase.shortTimeout), "Should return to Home tab") captureScreenshot(named: "F008-TabNavigation-ReturnHome") } /// F-009: Tab state preserved — Schedule filters survive tab switch. @MainActor func testF009_TabStatePreservedOnSwitch() { let home = HomeScreen(app: app) home.waitForLoad() // Go to Schedule tab and select a sport filter home.switchToTab(home.scheduleTab) let schedule = ScheduleScreen(app: app) schedule.assertLoaded() let mlbChip = schedule.sportChip("mlb") XCTAssertTrue(mlbChip.waitForExistence(timeout: BaseUITestCase.defaultTimeout), "MLB chip should exist") mlbChip.tap() // Switch to Home tab home.switchToTab(home.homeTab) home.startPlanningButton.waitForExistenceOrFail( timeout: BaseUITestCase.shortTimeout, "Home tab should load" ) // Switch back to Schedule — filter state should be preserved home.switchToTab(home.scheduleTab) // All sports start SELECTED; tapping deselects. So MLB should still be "Not selected". XCTAssertEqual(mlbChip.value as? String, "Not selected", "MLB chip should still be deselected after switching tabs") captureScreenshot(named: "F009-TabStatePreserved") } }