Files
Reflect/Tests iOS/Screens/TabBarScreen.swift
Trey t 10581cc8fb Add Tests iOS/Screens/ page objects and fix gitignore
The screens/ gitignore rule was matching Tests iOS/Screens/ on
case-insensitive macOS. Anchored to /screens/ (repo root only) so
the 7 UI test page object files are no longer ignored.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 13:15:21 -06:00

63 lines
1.4 KiB
Swift

//
// 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")
}
}