tests: target MealMoodUITests que recorre el onboarding completo

El bug de los pasos 5 y 6 era invisible a los tests unitarios: el contrato de
datos estaba bien, lo que fallaba era que la vista se desmontaba antes de pintar
el aha moment y el paywall. Hace falta recorrer la UI de verdad.

Anade el target MealMoodUITests (solo simulador, sin firma) y un test que hace
el onboarding entero en instalacion limpia y comprueba que Week Ready y el
paywall aparecen antes de la Home.

Los CTA del onboarding llevan ahora accessibilityIdentifier para que el test no
dependa de los textos, que estan en 6 idiomas.

Validado en los dos sentidos: pasa con el fix, y revirtiendo temporalmente
markFinished: false falla en la asercion de Week Ready. Suite completa: 27 tests.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Ks8uUcMA9mjypVK7F2Pkt
This commit is contained in:
alexandrev-tibco
2026-08-05 23:06:04 +02:00
parent 9f5db245a9
commit 79423e3511
11 changed files with 213 additions and 9 deletions
+1
View File
@@ -115,6 +115,7 @@ struct HomeView: View {
}
}
}
.accessibilityIdentifier("home_root")
.toast(isShowing: $viewModel.showToast, message: viewModel.toastMessage)
.navigationTitle("")
.navigationBarTitleDisplayMode(.inline)
@@ -137,6 +137,7 @@ struct CalendarStepView: View {
})
PrimaryButton(title: String(localized: "onboarding_continue"), action: onNext)
.accessibilityIdentifier("onboarding_cta_calendar")
}
.padding(.horizontal, 24)
.padding(.bottom, 40)
@@ -241,6 +241,7 @@ struct FirstDishesStepView: View {
},
isEnabled: true
)
.accessibilityIdentifier("onboarding_cta_first_dishes")
.padding(.horizontal, 24)
.padding(.top, 12)
.padding(.bottom, 24)
@@ -38,6 +38,7 @@ struct MealWindowsStepView: View {
.padding(.horizontal, 24)
PrimaryButton(title: String(localized: "onboarding_continue"), action: onNext)
.accessibilityIdentifier("onboarding_cta_meal_windows")
.padding(.horizontal, 24)
.padding(.top, 8)
.padding(.bottom, 40)
@@ -59,6 +59,7 @@ struct PaywallStepView: View {
.font(.mealMoodSmall)
.foregroundColor(.mealMoodTextSecondary)
}
.accessibilityIdentifier("onboarding_cta_paywall_skip")
}
.padding(.horizontal, 24)
.padding(.bottom, 24)
@@ -26,6 +26,7 @@ struct WeekReadyStepView: View {
.font(.mealMoodH1)
.foregroundColor(.mealMoodTextPrimary)
.multilineTextAlignment(.center)
.accessibilityIdentifier("onboarding_week_ready_title")
Text(subtitleText)
.font(.mealMoodBody)
@@ -81,6 +82,7 @@ struct WeekReadyStepView: View {
.foregroundColor(.mealMoodTextSecondary)
}
.buttonStyle(.plain)
.accessibilityIdentifier("onboarding_cta_week_ready_skip")
}
}
.padding(.horizontal, 24)
@@ -41,6 +41,7 @@ struct WeekendsStepView: View {
.foregroundColor(.mealMoodTextSecondary)
PrimaryButton(title: String(localized: "onboarding_continue"), action: onNext)
.accessibilityIdentifier("onboarding_cta_weekends")
.padding(.horizontal, 24)
.padding(.top, 8)
.padding(.bottom, 40)
@@ -30,6 +30,7 @@ struct WelcomeStepView: View {
Spacer()
PrimaryButton(title: String(localized: "onboarding_start"), icon: "", action: onNext)
.accessibilityIdentifier("onboarding_cta_welcome")
.padding(.horizontal, 24)
.padding(.bottom, 40)
}