// // OnboardingTests.swift // Tests iOS // // Onboarding flow completion and non-repetition tests. // import XCTest final class OnboardingTests: BaseUITestCase { override var seedFixture: String? { "empty" } override var skipOnboarding: Bool { false } /// TC-120: Complete the full onboarding flow. func testOnboarding_CompleteFlow() { let onboarding = OnboardingScreen(app: app) onboarding.assertVisible() captureScreenshot(name: "onboarding_welcome") onboarding.completeOnboarding() onboarding.assertDismissed() captureScreenshot(name: "onboarding_complete") } /// TC-121: After completing onboarding, relaunch should go directly to Day view. func testOnboarding_DoesNotRepeatAfterCompletion() { let onboarding = OnboardingScreen(app: app) onboarding.assertVisible() onboarding.completeOnboarding() onboarding.assertDismissed() // Relaunch preserving state -- onboarding should not repeat relaunchPreservingState() // Tab bar should appear immediately (no onboarding) let tabBar = TabBarScreen(app: app) tabBar.assertVisible() // Welcome screen should NOT appear let welcomeAgain = app.element(UITestID.Onboarding.welcome) XCTAssertFalse( welcomeAgain.waitForExistence(timeout: defaultTimeout), "Onboarding should not appear on second launch" ) captureScreenshot(name: "no_onboarding_on_relaunch") } }