// // TabBarScreen.swift // Tests iOS // // Screen object for the main tab bar navigation. // import XCTest struct TabBarScreen { let app: XCUIApplication // MARK: - Tab Buttons (using localized labels) var dayTab: XCUIElement { app.tabBars.buttons["Day"] } var monthTab: XCUIElement { app.tabBars.buttons["Month"] } var yearTab: XCUIElement { app.tabBars.buttons["Year"] } var insightsTab: XCUIElement { app.tabBars.buttons["Insights"] } var settingsTab: XCUIElement { app.tabBars.buttons["Settings"] } // MARK: - Actions @discardableResult func tapDay() -> DayScreen { dayTab.tapWhenReady() return DayScreen(app: app) } @discardableResult func tapMonth() -> TabBarScreen { monthTab.tapWhenReady() return self } @discardableResult func tapYear() -> TabBarScreen { yearTab.tapWhenReady() return self } @discardableResult func tapInsights() -> TabBarScreen { insightsTab.tapWhenReady() return self } @discardableResult func tapSettings() -> SettingsScreen { settingsTab.tapWhenReady() return SettingsScreen(app: app) } // MARK: - Assertions func assertDayTabSelected() { XCTAssertTrue(dayTab.isSelected, "Day tab should be selected") } func assertTabBarVisible() { XCTAssertTrue(dayTab.waitForExistence(timeout: 5), "Tab bar should be visible") } }