Oncourse paywall retest

September 9–10, 2026 · Sequential iPhone → Android → iPad checks using Argent. Partial QA passed; not full release sign-off.

Scope and environment

Results

CheckFresh result
Plan billing-period clippingPASS on iPhone main/referral plan lists and iPad referral list. Annual, monthly and weekly billing-period labels fit. Android annual main plan also fits; full list not reached safely because accessibility discovery became stale.
Monthly trial copyPASS on iPhone main and iPad referral: selecting monthly changes the plan-list button to SUBSCRIBE. iPhone StoreKit checkout showed $9.99/month without a trial.
Monthly purchase and entitlementPASS, bounded: iPhone Xcode test purchase completed; SDK result PURCHASED and RevenueCat active entitlement oncourse_max. This was explicitly a no-charge local test, not App Store production billing or an authenticated backend entitlement check.
Existing-purchase restorePASS at SDK level: iPhone restorePurchases returned oncourse_max in 784 ms. The UI footer and app confirmation-route behavior remain unverified in this run.
Referral product bindingPASS for directly presented offering on iPhone/iPad: annual max_12_months_30_off at $54.99; monthly $9.99; weekly $1.99. No blank plan. iPad native checkout displayed the annual referral product, a 1-week free trial, then $54.99/year; checkout was canceled.
Referral shared exit linkPASS on iPhone and iPad: closing referral opens “What's holding you back?” with the shared exit choices.
14-day exit buttonPASS for tested states: iPhone trial-ineligible state showed SUBSCRIBE; fresh iPad eligible state showed START FREE TRIAL and 2 weeks free, then $89.99/year. Previously missing CTA was not reproduced on this iPad.
Three-year trial copyPASS visually on iPad: BUY 3-YEAR ACCESS, $159.99 one time, access ends after 3 years. No free-trial promise. Purchase not completed.

Remaining issues and verification gaps

  1. Referral discount badge needs review. The annual referral screen still shows “19% OFF,” identical to the main badge despite a different annual price. The reference price is not explained. This report does not dispute or change the approved APPONLY75 message, which the owner defines relative to the most expensive weekly plan. Keep existing products/messages until the badge's intended comparison is established.
  2. Empty restore is not signed off. An iPhone footer tap on the directly SDK-presented paywall produced no visible completion feedback within the observed 20-second window. Because this bypasses the app onboarding callbacks, it does not prove the original three-minute payment-confirmation defect persists or is fixed. Retest the real app route with an empty purchase account.
  3. Android final-head referral testing is pending. Preview 534 predates the APPONLY75 mapping fix. A new Android binary from a01e5f555 is required before validating that entry path.
  4. Android automation blocked. Argent repeatedly returned the previous “Review your plan” accessibility tree while the screenshot showed “Choose a Plan,” including after transport restart. Testing stopped rather than guessing coordinates. This is a QA-tooling limitation, not a confirmed customer-facing bug.
  5. Development reload crash observed. iPhone dev-client reload after Metro reconnection hit EXC_BAD_ACCESS in JSI Pointer destruction. A clean Xcode Run Without Building with Metro ready recovered. Scope is a development-build reload; production impact is not established.
  6. Coverage still incomplete. APPONLY75 through the authenticated app path, empty restore confirmation routing, Pro checkout, completed three-year checkout, genuine store-account purchase/restore and backend entitlement propagation still need dedicated verification. iPad main offering catalog loaded, but its visual flow was not separately rerun.
  7. Minor tablet design observation. The referral detail screen has a large empty vertical area between the testimonial and purchase panel. All tested controls fit, but a more tablet-specific composition could use that space better. Not a checkout blocker.

Recording

iPhone main plan switching. This recording is layout/CTA evidence, not the completed-purchase evidence.

Download recording

Screenshot evidence

iPhone main annual plan list
iPhone main: annual and billing periods.
iPhone monthly subscribe button
iPhone monthly: SUBSCRIBE, no trial promise.
iPhone referral plans
iPhone referral: populated plan list.
Referral annual 19 percent badge
Remaining review: referral still shows 19% OFF.
Android annual main plan
Android preview 534: annual label fits.
iPad annual referral plans
iPad referral: all periods fit; eligible annual trial.
iPad monthly referral subscribe
iPad monthly: SUBSCRIBE, no trial.
Xcode test checkout for referral annual
iPad referral native checkout, test environment; canceled.
iPad eligible exit trial button
iPad 14-day exit: START FREE TRIAL is visible.
iPhone ineligible exit subscribe button
iPhone ineligible exit: SUBSCRIBE is visible.
iPad three year access offer
iPad three-year: one-time purchase, no trial copy.

Cleanup and handoff

Removed regenerable npm, pnpm, CocoaPods, Xcode index/module and browser caches; preserved source, credentials, installed app artifacts, simulator data and recordings. Free space reached 7.9 GiB after the first cleanup, then shrank during testing. Stopped Oncourse test devices and Xcode indexing and cleared regenerated indexes again. No code changes in this retest. PR #1796 remains the implementation PR; this report is not authorization to merge.