- Replace removePersistentDomain with key-by-key removal in resetAppState
(removePersistentDomain is unreliable on app group UserDefaults suites)
- Add explicit cache clearing in IAPManager.resetForTesting() to prevent
stale cachedSubscriptionExpiration from restoring .subscribed state
- Use descendants(matching: .any) for upgrade_banner and subscribe_button
queries (VStack may not match otherElements in SwiftUI)
- Add multiple swipe attempts for icon pack horizontal scroll
- Use coordinate-based drag for onboarding paged TabView advancement
- Add longer wait for Day view refresh after theme change
- Add multiple scroll attempts to find clear data button in Settings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- IAPManager: add resetForTesting() to discard stale cached subscription state
- UITestMode: call resetForTesting() after clearing defaults (fixes 5 banner tests)
- StabilityTests: use NSPredicate wait for isSelected (iOS 26 Liquid Glass)
- SettingsActionTests: use coordinate tap for clear data and analytics toggle
- IconPackTests: add horizontal scroll fallback for off-screen icon packs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 8 new test files: HeaderMoodLogging (TC-002), DayViewGrouping (TC-019),
AllDayViewStyles (TC-021), MonthViewInteraction (TC-030), PaywallGate
(TC-032/039/048), AppTheme (TC-070), IconPack (TC-072),
PremiumCustomization (TC-075)
- Add accessibility IDs for paywall overlays, icon packs, app theme cards,
and day view section headers
- Add --expire-trial launch argument to UITestMode for paywall gate testing
- Update QA test plan spreadsheet with XCUITest names for 14 test cases
- Include existing test infrastructure: screen objects, helpers, base class,
and 19 previously written test files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>