App-side changes: - Added "Get Started" / "Continue" next buttons to all onboarding pages (Welcome, Day, Time, Style) with onboarding_next_button accessibility ID - Added onNext callback plumbing from OnboardingMain to each page - OnboardingMain now uses TabView(selection:) for programmatic page navigation - Added .accessibilityElement(children: .contain) to all onboarding pages to fix iOS 26 paged TabView not exposing child elements - Added settings_segmented_picker accessibility ID to Settings Picker - Reduced padding on onboarding pages to keep buttons in visible area Test-side changes: - OnboardingScreen: replaced unreliable swipeToNext() with tapNext() that taps the accessibility-identified next button - OnboardingScreen: multi-strategy skip button detection for subscription page - SettingsScreen: scoped segment tap to picker element to avoid tab bar collision - CustomizeScreen: simplified horizontal scroll to plain app.swipeLeft() - OnboardingVotingTests: uses tapNext() to advance to Day page Passing: OnboardingTests.CompleteFlow, OnboardingVotingTests Remaining: OnboardingTests.DoesNotRepeat (session state issue), Settings scroll (deep elements), Customize horizontal pickers Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
43 lines
1.3 KiB
Swift
43 lines
1.3 KiB
Swift
//
|
|
// OnboardingVotingTests.swift
|
|
// Tests iOS
|
|
//
|
|
// TC-122: Onboarding day voting -- Today vs Yesterday selection.
|
|
//
|
|
|
|
import XCTest
|
|
|
|
final class OnboardingVotingTests: BaseUITestCase {
|
|
override var seedFixture: String? { "empty" }
|
|
override var skipOnboarding: Bool { false }
|
|
|
|
/// TC-122: Tapping Yesterday and Today buttons toggles the selection.
|
|
func testOnboarding_DayVoting_TodayAndYesterday() {
|
|
let onboarding = OnboardingScreen(app: app)
|
|
onboarding.assertVisible()
|
|
|
|
// Advance from Welcome to Day page
|
|
onboarding.tapNext()
|
|
|
|
// Tap Yesterday via accessibility ID
|
|
let yesterdayButton = app.element(UITestID.Onboarding.dayYesterday)
|
|
yesterdayButton.waitUntilHittableOrFail(
|
|
timeout: navigationTimeout,
|
|
message: "Yesterday button should be hittable on the Day screen"
|
|
)
|
|
yesterdayButton.forceTap()
|
|
|
|
captureScreenshot(name: "onboarding_day_yesterday_tapped")
|
|
|
|
// Tap Today via accessibility ID
|
|
let todayButton = app.element(UITestID.Onboarding.dayToday)
|
|
todayButton.waitUntilHittableOrFail(
|
|
timeout: defaultTimeout,
|
|
message: "Today button should be hittable on the Day screen"
|
|
)
|
|
todayButton.forceTap()
|
|
|
|
captureScreenshot(name: "onboarding_day_today_tapped")
|
|
}
|
|
}
|