2.0.2: evento de fallo de compra + analytics off en UI tests

premium_purchase_failed con reason (cancelled/pending/unverified/error) en todas
las salidas no exitosas de StoreManager.purchase. Hasta ahora un usuario que se
echaba atras y uno al que le fallaba la compra eran indistinguibles: los dos
dejaban un premium_upgrade_tapped huerfano. El caso de Aleman (6 taps en 2 dias,
cero compras) no se puede diagnosticar sin esto.

Los UI tests dejan de mandar eventos a GA4 de produccion: launch argument
UITEST_DISABLE_ANALYTICS que hace no-op logEvent y apaga la recoleccion de
Firebase, para cortar tambien los automaticos (first_open, session_start,
screen_view). Ya habian contaminado los datos: los eventos de pasos 5/6 bajo la
version 2.0 eran ejecuciones de test, no usuarios.

Detalle que costo encontrar: setAnalyticsCollectionEnabled persiste entre
lanzamientos, asi que se escribe siempre (!isDisabled) y no solo al apagar. Si
no, un unico test dejaba analytics muerto para siempre en esa instalacion.
Verificado por pares de lanzamientos: con flag acaba en disabled, sin flag
vuelve a enabled.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Ks8uUcMA9mjypVK7F2Pkt
This commit is contained in:
alexandrev-tibco
2026-08-13 14:02:35 +02:00
parent 95a1e3a133
commit cfa9769a06
4 changed files with 52 additions and 0 deletions
@@ -16,6 +16,11 @@ final class OnboardingFlowUITests: XCTestCase {
app = XCUIApplication()
// Pin the language so the run doesn't depend on the simulator's locale.
app.launchArguments += ["-AppleLanguages", "(en)", "-AppleLocale", "en_US"]
// Keep synthetic runs out of the production GA4 property. Literal on
// purpose: a UI test bundle doesn't link the app target, so it can't
// reference AnalyticsService.launchArgumentDisablingAnalytics keep the
// two in sync by hand.
app.launchArguments.append("UITEST_DISABLE_ANALYTICS")
}
func testOnboardingReachesWeekReadyAndPaywallBeforeTheHome() {