Skip to content

feat: add maestro E2E test app#708

Draft
ajpallares wants to merge 12 commits intomainfrom
e2e-tests-app
Draft

feat: add maestro E2E test app#708
ajpallares wants to merge 12 commits intomainfrom
e2e-tests-app

Conversation

@ajpallares
Copy link
Copy Markdown
Contributor

@ajpallares ajpallares commented Feb 27, 2026

Summary

Adds a Maestro E2E test app under e2e-tests/MaestroTestApp/ — a minimal Kotlin Multiplatform Compose app (Android + iOS) used by automated Maestro flows to verify the RevenueCat purchase integration.

  • Two screens: "Test Cases" list and "Purchase through paywall" (presents a RevenueCat V2 paywall and displays entitlement status)
  • App ID com.revenuecat.automatedsdktests
  • API key placeholder (MAESTRO_TESTS_REVENUECAT_API_KEY) replaced at CI time via sed
  • Local SDK resolution via Gradle project references (:purchases and :ui:revenuecatui)
  • Errors from getCustomerInfo and paywall presentation are surfaced in the UI (not just logged) for Maestro screenshot capture
  • Compose testTag modifiers for reliable Maestro element targeting
  • Includes a README

Counterpart PRs: react-native-purchases#1635, purchases-flutter#1654, purchases-capacitor#699, cordova-plugin-purchases#857, purchases-unity#836

Follow-up PRs (stacked)

  • #709 — Maestro test flows (YAML)
  • #710 — CircleCI jobs to run the tests

Co-Authored-By: Claude Opus 4.6 <[email protected]>
…ycle cleanup

- Add e2e-tests:MaestroTestApp module to settings.gradle.kts so Gradle can find it
- Create iosApp wrapper with Xcode project that embeds the KMP Compose framework
  into an installable iOS .app (bundle ID: com.revenuecat.maestro.e2e)
- Fix delegate lifecycle by using DisposableEffect with onDispose to clear the
  Purchases delegate when leaving PurchaseThroughPaywallScreen

Co-Authored-By: Claude Opus 4.6 <[email protected]>
@ajpallares ajpallares added pr:other and removed pr:feat A new feature labels Feb 27, 2026
ajpallares and others added 8 commits March 25, 2026 12:22
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Made-with: Cursor
The StoreKitConfiguration.storekit file was on disk but not registered
in the Xcode project. Added PBXFileReference and created a shared
scheme with the StoreKit configuration reference.

Made-with: Cursor
The identifier is relative to the .xcodeproj directory, so it needs
the ../ prefix to reach the sibling StoreKitConfiguration.storekit.

Made-with: Cursor
- Log errors from getCustomerInfo instead of silently ignoring them
- Add README with build/run instructions and API key setup

Made-with: Cursor
- Show getCustomerInfo errors in a visible Text(testTag="error-message")
  instead of only println, so Maestro can capture failures in screenshots
- Add testTag identifiers to entitlements label and paywall button

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant