// // SettingsActionTests.swift // Tests iOS // // Settings actions: clear data, analytics toggle. // import XCTest final class SettingsActionTests: BaseUITestCase { override var seedFixture: String? { "week_of_moods" } override var bypassSubscription: Bool { true } /// TC-063 / TC-160: Navigate to Settings, clear all data, verify app remains usable. func testClearData_RemovesAllEntries() { // Verify we have data before clearing let dayScreen = DayScreen(app: app) dayScreen.assertAnyEntryExists() // Navigate to Settings > Settings sub-tab let tabBar = TabBarScreen(app: app) let settingsScreen = tabBar.tapSettings() settingsScreen.assertVisible() settingsScreen.tapSettingsTab() // Scroll to and tap Clear All Data (tapClearData handles scrolling) settingsScreen.tapClearData() // Navigate back to Day tab tabBar.tapDay() // App should remain usable: mood header, entries, or empty state visible let moodHeader = app.element(UITestID.Day.moodHeader) let emptyState = app.element(UITestID.Day.emptyStateNoData) let entryRow = app.firstEntryRow let anyVisible = moodHeader.waitForExistence(timeout: navigationTimeout) || emptyState.waitForExistence(timeout: defaultTimeout) || entryRow.waitForExistence(timeout: defaultTimeout) XCTAssertTrue(anyVisible, "Day view should show mood header, entries, or empty state after clearing data") captureScreenshot(name: "data_cleared") } /// TC-067: Toggle analytics opt-out. func testAnalyticsToggle_Tappable() { let tabBar = TabBarScreen(app: app) let settingsScreen = tabBar.tapSettings() settingsScreen.assertVisible() settingsScreen.tapSettingsTab() // Scroll to analytics toggle and tap it (tapAnalyticsToggle handles scrolling) settingsScreen.tapAnalyticsToggle() captureScreenshot(name: "analytics_toggled") } }