// // StabilityTests.swift // Tests iOS // // Full navigation stability tests — visit every screen without crash. // import XCTest final class StabilityTests: BaseUITestCase { override var seedFixture: String? { "week_of_moods" } /// TC-152: Navigate to every screen and feature without crashing. func testFullNavigation_NoCrash() { let tabBar = TabBarScreen(app: app) // 1. Day tab (default) - verify loaded XCTAssertTrue(tabBar.dayTab.isSelected, "Should start on Day tab") captureScreenshot(name: "stability_day") // 2. Open entry detail let firstEntry = app.descendants(matching: .any) .matching(NSPredicate(format: "identifier BEGINSWITH %@", "entry_row_")) .firstMatch if firstEntry.waitForExistence(timeout: 5) { firstEntry.tap() let detailScreen = EntryDetailScreen(app: app) if detailScreen.navigationTitle.waitForExistence(timeout: 3) { captureScreenshot(name: "stability_entry_detail") detailScreen.dismiss() detailScreen.assertDismissed() } } // 3. Month tab tabBar.tapMonth() XCTAssertTrue(tabBar.monthTab.isSelected, "Month tab should be selected") captureScreenshot(name: "stability_month") // 4. Year tab tabBar.tapYear() XCTAssertTrue(tabBar.yearTab.isSelected, "Year tab should be selected") captureScreenshot(name: "stability_year") // 5. Insights tab tabBar.tapInsights() XCTAssertTrue(tabBar.insightsTab.isSelected, "Insights tab should be selected") captureScreenshot(name: "stability_insights") // 6. Settings tab - Customize sub-tab tabBar.tapSettings() XCTAssertTrue(tabBar.settingsTab.isSelected, "Settings tab should be selected") captureScreenshot(name: "stability_settings_customize") // 7. Settings tab - Settings sub-tab let settingsScreen = SettingsScreen(app: app) settingsScreen.tapSettingsTab() captureScreenshot(name: "stability_settings_settings") // 8. Back to Customize sub-tab settingsScreen.tapCustomizeTab() captureScreenshot(name: "stability_settings_customize_return") // 9. Back to Day tabBar.tapDay() XCTAssertTrue(tabBar.dayTab.isSelected, "Day tab should be selected") captureScreenshot(name: "stability_full_navigation_complete") } }