// // EntryDeleteTests.swift // Tests iOS // // Entry deletion tests. // import XCTest final class EntryDeleteTests: BaseUITestCase { override var seedFixture: String? { "single_mood" } /// TC-025: Delete a mood entry from the detail sheet. func testDeleteEntry_FromDetail() { // Wait for entry to appear let firstEntry = app.descendants(matching: .any) .matching(NSPredicate(format: "identifier BEGINSWITH %@", "entry_row_")) .firstMatch guard firstEntry.waitForExistence(timeout: 8) else { XCTFail("No entry row found from seeded data") return } firstEntry.tap() let detailScreen = EntryDetailScreen(app: app) detailScreen.assertVisible() captureScreenshot(name: "entry_detail_before_delete") // Delete the entry detailScreen.deleteEntry() // Detail should dismiss after delete detailScreen.assertDismissed() // The entry should no longer be visible (or empty state should show) // Give UI time to update let moodHeader = app.otherElements["mood_header"] let noDataText = app.staticTexts["empty_state_no_data"] let headerReappeared = moodHeader.waitForExistence(timeout: 5) let noDataAppeared = noDataText.waitForExistence(timeout: 2) XCTAssertTrue( headerReappeared || noDataAppeared, "After deleting the only entry, mood header or empty state should appear" ) captureScreenshot(name: "entry_deleted") } }