// // PaywallGateTests.swift // Tests iOS // // Paywall gate tests: verify paywall overlays appear on premium views // when trial is expired and subscription is not bypassed. // TC-032, TC-039, TC-048 // import XCTest final class PaywallGateTests: BaseUITestCase { override var seedFixture: String? { "empty" } override var bypassSubscription: Bool { false } override var expireTrial: Bool { true } /// TC-032: Paywall overlay appears on Month view when trial expired. func testMonthView_PaywallOverlay_WhenTrialExpired() { TabBarScreen(app: app).tapMonth() app.element(UITestID.Paywall.monthOverlay) .waitForExistenceOrFail( timeout: navigationTimeout, message: "Month paywall overlay should appear when trial is expired" ) captureScreenshot(name: "month_paywall_overlay") } /// TC-039: Paywall overlay appears on Year view when trial expired. func testYearView_PaywallOverlay_WhenTrialExpired() { TabBarScreen(app: app).tapYear() app.element(UITestID.Paywall.yearOverlay) .waitForExistenceOrFail( timeout: navigationTimeout, message: "Year paywall overlay should appear when trial is expired" ) captureScreenshot(name: "year_paywall_overlay") } /// TC-048: Paywall overlay appears on Insights view when trial expired. func testInsightsView_PaywallOverlay_WhenTrialExpired() { TabBarScreen(app: app).tapInsights() app.element(UITestID.Paywall.insightsOverlay) .waitForExistenceOrFail( timeout: navigationTimeout, message: "Insights paywall overlay should appear when trial is expired" ) captureScreenshot(name: "insights_paywall_overlay") } }