// // InsightsEmptyStateTests.swift // Tests iOS // // TC-043: Insights with no data shows empty state message. // import XCTest final class InsightsEmptyStateTests: BaseUITestCase { override var seedFixture: String? { "empty" } /// TC-043: Navigate to Insights with no data — should show "No Data Yet" or similar message. func testInsights_EmptyState_ShowsNoDataMessage() { let tabBar = TabBarScreen(app: app) tabBar.tapInsights() // Wait for insights content to load let insightsHeader = app.element(UITestID.Insights.header) XCTAssertTrue( insightsHeader.waitForExistence(timeout: 10), "Insights header should be visible" ) captureScreenshot(name: "insights_empty_state") // Look for empty state text — either "No Data Yet" or "AI Unavailable" // (Both are valid on simulator with no data) let noDataText = app.staticTexts.matching( NSPredicate(format: "label CONTAINS[cd] %@", "No Data") ).firstMatch let aiUnavailable = app.staticTexts.matching( NSPredicate(format: "label CONTAINS[cd] %@", "Unavailable") ).firstMatch let startLogging = app.staticTexts.matching( NSPredicate(format: "label CONTAINS[cd] %@", "Start logging") ).firstMatch let hasEmptyMessage = noDataText.waitForExistence(timeout: 10) || aiUnavailable.waitForExistence(timeout: 3) || startLogging.waitForExistence(timeout: 3) XCTAssertTrue( hasEmptyMessage, "Insights should show an empty state or unavailable message when no data exists" ) captureScreenshot(name: "insights_empty_message") } }