Skip to content

ci: run shared Maestro paywall tests with SwiftPM - #1999

Draft
ajpallares wants to merge 2 commits into
codex/spm-app-cifrom
codex/spm-maestro-ci
Draft

ajpallares wants to merge 2 commits into
codex/spm-app-cifrom
codex/spm-maestro-ci

Conversation

@ajpallares

@ajpallares ajpallares commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

SwiftPM CI currently checks compilation and linking, but does not exercise purchases or paywalls at runtime. This adds a separate iOS Maestro job that runs the existing RevenueCat Test Store paywall purchase flow against a Debug build of SPMTestApp with freshly packed SDKs.

Stacked on #1997, which builds on the SwiftPM support in #1907. The PR targets codex/spm-app-ci.

  • Share the React Native UI between the existing CocoaPods/Android host and the SPM host using normal imports and Metro configuration. Configure Purchases before mounting the purchase screen, and use React state for the test menu without adding native navigation dependencies to SPM.
  • Parameterize the existing flow's app ID, preserving its default for current jobs. Keep Test Store purchase/paywall coverage; add no restore tests.
  • Reuse the SPM package preparation command, build Debug with bundled JavaScript (Test Store keys are blocked in Release), and run Maestro directly from CircleCI. Run on branch builds and the existing schedule, upload results/artifacts, and require the job before release tagging.
  • Document the required consolidation after December 2, 2026: retain one MaestroTestApp with SPM iOS and Gradle Android, move the shared UI into it, repoint CI, and delete SPMTestApp and the old CocoaPods setup in the removal PR.

Validated locally:

  • SPM Debug/Release builds, bridge/view-manager linking checks, and autolinking resync/rebuild checks.
  • The SPM Debug app loads its bundled JavaScript without Metro and renders the shared UI under Maestro 2.5.0 and Java 17.
  • Existing app's iOS and Android release bundles, SPM release bundle, and host-local React/RN/SDK resolution.
  • Existing app's TypeScript check, CircleCI config validation/compilation, compiled shell syntax, both Maestro flow syntax checks, and API-key injection handling.

All 14 latest CircleCI checks pass on commit 5385d776, including the SPM compile/link/resync job, CocoaPods iOS build and Maestro flow, and Android Maestro flow. The full SPM Test Store paywall purchase flow passes with its pro entitlement assertion (JUnit: one test, zero failures). The Android ads example build passed on retry after its first attempt downloaded an invalid Android SDK Build Tools ZIP. The job uses RC_E2E_TEST_API_KEY_PRODUCTION_TEST_STORE from the existing e2e-tests context and fails early if it is missing or is not a Test Store key.

@ajpallares ajpallares added the pr:other A code change that improves performance label Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:other A code change that improves performance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant