Commit Graph
159 Commits
Author SHA1 Message Date
RevenueCat Git Bot 4360d5d590 [AUTOMATIC] Release/5.52.1 (#5983)
* Version bump for 5.52.1

* Update RevenueCat-Swift.h for version 5.52.1
2025-12-31 16:12:46 +01:00
RevenueCat Git Bot 3ba39f0768 [AUTOMATIC] Release/5.52.0 (#5966)
* Version bump for 5.52.0

* Update RevenueCat-Swift.h for version 5.52.0
2025-12-24 15:32:40 +01:00
RevenueCat Git Bot 2a999f5496 Version bump for 5.51.1 (#5953) 2025-12-22 20:56:03 +01:00
RevenueCat Git Bot 745c247e23 [AUTOMATIC] Release/5.51.0 (#5942)
* Version bump for 5.51.0

* Update RevenueCat-Swift.h for version 5.51.0
2025-12-19 09:42:25 +01:00
Antonio PallaresandToni Rico d74cc36447 Improve flakiness of some tests + add extra logs for easier debugging (#5919)
* Reduce flakiness of test

Recent failure: https://app.circleci.com/pipelines/github/RevenueCat/purchases-ios/32195/workflows/fda6c174-617d-44bd-a997-ad2a9a36de4d/jobs/421143/tests

* Try this for maestro flaky tests

* TEMP: Maestro tests only workflow

* Try workaround for failure-to-sync StoreKit after removing transactions from SKTestSession

Trying to reduce the flakiness of failed tests in https://app.circleci.com/pipelines/github/RevenueCat/purchases-ios/32195/workflows/fda6c174-617d-44bd-a997-ad2a9a36de4d/jobs/421143/tests (`testDoesNotSyncExistingSK2Purchases()` and `testObservingTransactionUnlocksEntitlement()`)

* Revert "TEMP: Maestro tests only workflow"

This reverts commit 040446a754.

* TEMP: for testing flaky tests of this branch

* Add log from StoreKitIntegrationTests when purchasing a product to identify the transaction id and the source of that purchase

This could help debugging flaky tests as sometimes we get a "Finishing transaction" log in a test that is actually finishing the transaction generated in a different test

* Fix OS version compatibility

* Fix compilation

* try this

* Fix lint

* Improve flakiness of `PurchasesFallbackURLBackendStoreKit2IntegrationTests`' `testPostsPurchasePerformedOnFallbackURLWhenRecoveringAfterRestartToMainServer()`

By asserting the Finishing transaction log only against the actual expected transaction

* Reduce flakiness of `OfflineStoreKit1IntegrationTests`' `testPurchasingMultipleProductsWhileServerIsDownHandlesAllTransactionsWhenForegroundingApp()`

* Revert "TEMP: for testing flaky tests of this branch"

This reverts commit c11e904a18.

* Simplification

* Fix lint

* Improve logs of external SK purchases made in tests

* Revert "Try workaround for failure-to-sync StoreKit after removing transactions from SKTestSession"

This reverts commit eab98f696c.

# Conflicts:
#	Tests/StoreKitUnitTests/TestHelpers/StoreKitTestHelpers.swift

* Apply suggestions from code review

Co-authored-by: Toni Rico <toni.rico.diez@revenuecat.com>

* Remove unnecessary prints

---------

Co-authored-by: Toni Rico <toni.rico.diez@revenuecat.com>
2025-12-12 17:20:55 +01:00
RevenueCat Git Bot 29c05d880f Version bump for 5.50.1 (#5925) 2025-12-11 12:13:18 +01:00
RevenueCat Git Bot df10cbcd37 [AUTOMATIC] Release/5.50.0 (#5915)
* Version bump for 5.50.0

* Update RevenueCat-Swift.h for version 5.50.0
2025-12-08 10:49:22 -06:00
RevenueCat Git Bot 7643d02aac Version bump for 5.49.3 (#5904) 2025-12-04 13:11:28 +01:00
RevenueCat Git Bot d479ed1d06 Version bump for 5.49.2 (#5886) 2025-11-27 16:50:46 -03:00
Antonio Pallares b556b44f96 Automated E2E tests for the Test Store (#5859)
* Add Maestro E2E test

* Add confirm purchase flow

* Fix

* Add some documentation to maestro e2e tests flows

* Remove comment

* Add missing case for error message

* Add missing `fallback` environment to All CI backend integration test plan

* Remove comment

* Remove `production_test_store` from Slack message environment for `BackendIntegrationTests-All-CI`

* Make `store` a separate parameter for Maestro E2E tests

* Improve naming

* Do not configure StoreKit config file for test store

* Code cleanup

* More cleanup

* Temp for testing

* Fix context

* Fix temp for testing

* Revert temporal changes for quick testing

* Remove leftover `production_test_store` from fastfile
2025-11-27 13:27:34 +01:00
RevenueCat Git Bot 4b501e5b2b Version bump for 5.49.1 (#5880) 2025-11-26 15:39:43 -03:00
RevenueCat Git Bot 703e030a1b Version bump for 5.49.0 (#5851) 2025-11-23 11:58:28 -06:00
RevenueCat Git Bot b14cd8cc4e Version bump for 5.48.0 (#5803) 2025-11-17 09:03:33 +01:00
RevenueCat Git Bot 75165b2f14 Version bump for 5.47.1 (#5789) 2025-11-13 07:42:34 +01:00
Rick 9d7330c98a Add backend source and entitlement assertions to E2E tests (#5778)
* Move the setup_xcconfig logic from circleCI config to Fastfile, added assertions on entitlement active and backend source

* Implemented StoreKit config file watcher in Fastlane in order to support clean installing app and re-installing SK config file on the fly

* Exposing expected verification result and customer info source to assert on in Maestro

* Implemented PR feedback

* Implemented PR feedback
2025-11-12 14:19:48 +01:00
Rick 20cea87fec Automated E2E Tests on all backend environments (#5712)
* Testing maestro e2e

* Testing e2e

* Testing e2e

* Testing e2e

* Testing e2e

* Testing e2e

* Testing e2e

* Implemented Fastlane action for installing the right StoreKit config file to the simulator that will be used for maestro testing

* Made the setup simulator storekit config action a lot more stable by updating the code finding the storekit shared app group container

* Added script for generating CI.xcconfig file to be used by the CI runs

* Updated config.yml

* Updated maestro flows path

* Made the e2e test lane reusable with a test_environment argument, added storekit config file for load shedder. Setup CircleCI job for all 3 test_environments

* Fix passing load shedder api key to command

* Updated storing of test output

* Added test environment name to the e2e test runs

* Restore missing install_dependencies call

* Also store test output as artifacts

* Allow setting force_server_error_strategy from env variable, using it in the fallback e2e tests.

* Using CircleCI matrix for test_environments

* Added support for showing different E2E flows in the app depending on which maestro flow is run to avoid tests breaking if changes are made

* Using new automated sdk project. Using a single test flow and the environment is now soley based on API key and server error strategy environment variables

* Updated context and environment variables for e2e tests

* Only generate maestro workspace

* Test

* Fixed incorrect env variables being used

* Fix formatting

* Simplified env var -> xcconfig logic to avoid using wrong values

* Fix config

* Updated maestro screenshot names

* Fixed forceServerErrorStrategy

* Reusing maestro e2e test all environments

* Added fortress 2 as load_shedder_secondary test environment

* Rename test_environment to backend_environment

* use default value for force_server_error_strategy

* Updated flow names

* Added daily e2e test schedule

* Removed unused parameter

* Revert to original build and test step after testing

* Passing the api_host to the maestro test app for the load shedder backends, using the normal API key

* Renamed load_shedder_primary and load_shedder_secondary

* Renamed forceServerErrorStrategy case and removed protocl from api_host

* Small code changes

* Rename parameter target to query to align with Tuist terminology

* Small code changes to address PR feedback
2025-11-10 11:25:29 +01:00
RevenueCat Git Bot d7d901408a Version bump for 5.47.0 (#5773) 2025-11-07 17:28:10 -06:00
RevenueCat Git Bot 2e799a28be Version bump for 5.46.3 (#5768) 2025-11-07 14:15:05 +01:00
RevenueCat Git Bot 09302f508a [AUTOMATIC] Release/5.46.2 (#5763)
* Version bump for 5.46.2

* Update RevenueCat-Swift.h for version 5.46.2
2025-11-06 21:37:58 +01:00
RevenueCat Git Bot 33cc4297bd Version bump for 5.46.1 (#5759) 2025-11-06 17:44:23 +01:00
RevenueCat Git Bot 773442400e [AUTOMATIC] Release/5.46.0 (#5733)
* Version bump for 5.46.0

* Update RevenueCat-Swift.h for version 5.46.0
2025-10-31 13:58:50 -05:00
RevenueCat Git Bot 848dcaaa12 [AUTOMATIC] Release/5.45.1 (#5725)
* Version bump for 5.45.1

* Update RevenueCat-Swift.h for version 5.45.1
2025-10-30 15:55:47 +01:00
RevenueCat Git Bot a70ed09455 [AUTOMATIC] Release/5.45.0 (#5698)
* Version bump for 5.45.0

* Update RevenueCat-Swift.h for version 5.45.0
2025-10-24 18:44:06 +02:00
RevenueCat Git Bot e3dfe548d6 [AUTOMATIC] Release/5.44.1 (#5681) 2025-10-17 19:10:00 -05:00
Antonio Pallares 9e64ea2ac4 Update SampleCat SDK dependency version on SDK releases (#5677)
* Do not update SampleCat in `update_swift_package_commit` lane

* Change Dependency Rule of purchases-ios in SampleCat to use Up to Next Major Version, set to 5.44.0 (latest release as of now)

* Replace SDK version number in Sample Cat
2025-10-17 16:57:58 +00:00
Facundo MenzellaandAntonio Pallares db76b9a133 feat: Introduce CustomerCenterExternalActions to CustomerCenter (#5576)
* feat: Introduce CustomerCenterExternalActions

* remove nested test

* nits

* fixed broken project

* nits

* Update RevenueCatUI/CustomerCenter/Views/UIKit Compatibility/CustomerCenterViewController.swift

Co-authored-by: Antonio Pallares <ajpallares@users.noreply.github.com>

---------

Co-authored-by: Antonio Pallares <ajpallares@users.noreply.github.com>
2025-09-23 03:22:31 -07:00
Facundo Menzella 0c9d3055a4 Update automated tests for customer center (#5518) 2025-09-08 18:37:15 +02:00
Facundo Menzella 834032cdee git rm -r testCustomEntitlementsComputation.xcodeproj (#5514) 2025-09-01 18:15:46 +02:00
Facundo Menzella c735850af5 Extend appTarget settings to pass custom settings (#5470) 2025-09-01 17:41:58 +02:00
Facundo Menzella d2cf48f577 Introduce custom actions to customer center (#5407)
* Introduce custom actions to customer center

* tests

* fixed test

* fixed broken tests

* fixed concurrent mutation

* add missing case

* paywall compiling

* nits

* remove lgeacy action

* remove claude

* Removed activePurchaseId refernce

* fixed tests
2025-07-29 10:46:41 +02:00
Facundo Menzella e450b62fe9 Add fallback for change plans id and only display selected (#5422)
* Add fallback for change plans id, and only display selected

* only selected
2025-07-28 11:06:20 +02:00
Alejandra WetschandAntonio Pallares 16e2b1e608 Magic Weather Example App - Files reference correction (#5397)
* Magic Weather Example App - Files reference correction

* fix xcodeproj for non-SwiftUI MagicWeather example app

---------

Co-authored-by: Antonio Pallares <antonio.pallares@revenuecat.com>
2025-07-21 14:17:17 +02:00
Antonio Pallares 05b5de447c tuist: rename tuist-generated Xcode project for MagicWeather to avoid name clashing with existing Xcode project (#5398) 2025-07-18 12:35:40 +02:00
Antonio Pallares f74872d551 Tuist: unify project settings (#5393)
* tuist: use already-defined `xcconfigFileConfigurations` `Configuration` array

* tuist: rename `project` to `app` (tuist's `Settings` object). Use `.app` or `.framework` throughout the projects in the repo

* rename settings constants
2025-07-17 20:36:59 +02:00
Facundo Menzella b5995ac1c8 Add custom change plans support for customer center (#5379) 2025-07-16 16:46:05 +02:00
Facundo Menzella 721d2b1740 Add build configurations for tuist workspace (#5364)
* chore: Remove project warnings from examples

* remove extra file

* remove run from RevneueCat and add xctestplans to workspace

* Add build configurations for project

* revert maestro

* remove storyboard

* don't add local xcconfig if not there

* remove additional files - only in workspace

* hide paywall tester scheme

* Add APITester tag

* add BackendIntegrationTestsHostApp

* fixed api testers
2025-07-11 15:31:15 +02:00
Facundo Menzella 03fbe30807 Add basics for a working tuist workspace (#5248) 2025-07-04 11:37:37 +02:00
Will Taylor 3f6924ff6f Add Intro Eligibility Functions to CEC Mode (#5322) 2025-06-25 13:48:12 -05:00
Pol Piella AbadiaandHidde van der Ploeg 7138c59a5b SampleCat: A new iOS Sample app that guides users through any configuration issues (#5200)
* Initial app creation

* Initial screen

* Installs and configures the SDK

* Creates a full Swift 6 compliant ViewModel

* Adds a demo customer center button

* Fixes icon name

* Updates a bit of the logic to fetch offerings

* Updates initial layout by showing offerings

* Makes more progress with a VERY DRAFT and VERY WIP screen

* Creates a new network path and requests

* Creates a new health API and adds it to the BE class

* Creates a `checkOfferings` method

* Pushes local changes

* Moved viewmodels to separate files

* Prepared some basic UI structure

* Adds specific branch of `purchases-ios` for testing

* Gets the sample app back to compiling

* Shows products

* Initial implementation of the products view

* More progress

* More changes

* Added first illustrations

* Added noise background and visual to offerings

* Presenting Product on tap

* made more progress on sample

* Removed NavBar

* Fetches offerings with the latest changes to the SDK

* Adds offerings view

* Maps packages into offering

* Updates app so that we can show a list of the packages that belong to an offering

* Moves all logic to a dedicated health view model

* Adds a full-screen blocking error to the app

* More slight adjustments

* Adds a way to purchase products directly from the Sample App

* Adds an empty StoreKit Configuration file to the scheme

* Changes bundle id

* Only allow scroll behaviour to bounce where it makes sense

* Bit of a better layout for the full screen error

* Points RC Swift Package back to the `main` branch

* Re-adds error messages to make sure that we can just point the user in the right direction

* Updates product cell to have better styles and test purchase button

* Updates `ProductCell` to make sure purchased products can be shown

* Removes unnecessary files from PR

* Formats files

* Removes warning

* Adds project to the API checker script

* Adds project to the update revision fastlane script

* Updates error view

* Removes storekit config file temporarily

* Updates name of property to match dashboard

* Updates entitlementId name

* Adds storekit file back to the scheme (this will get injected from the BE)

* Optimizes app icon to reduce repo size

* Reduces app icon file

* Remove instead of comment out

* Removes unused `EntitlementsView`

* Removes duplicate

* Removes all headers from Swift files

* Uses string directly rather than property holding single string

* canNot to cannot

* Renames products to packages

* Refactors logic to tidy up a bit

* Moves types over to their own files

* More tidying up

* Renames properties from sdk to loaded

* Removes previews that do not work

* Renames `purchasable` to `viewModel`

* Fixes sendability issues

* Converts folders to groups instead

---------

Co-authored-by: Hidde van der Ploeg <hiddevanderploeg@me.com>
2025-06-05 11:41:50 +01:00
Facundo Menzella b4766d41f2 Add new test cases for maestro + customer center (#5177)
* add support for lists

* see all

* see all

* use circled_close_button for id

* use circled
2025-05-27 12:52:05 +02:00
Facundo Menzella 2d064d1ea2 Add consumable and non consumable for Customer Center test app (#5172) 2025-05-26 13:36:25 +02:00
Facundo Menzella 7263bc1052 Add a push navigation to Customer Center maestro app (#5157) 2025-05-26 11:55:11 +02:00
Facundo Menzella dfa77d6b6e Add README to Maestro app (#5165) 2025-05-23 12:17:35 +02:00
Facundo Menzella 48bf32b7f0 feat: Show subscription list instead of only the active subscription (#5050)
* feat: Show multiple subscriptions instead of one

* tweak screen

* tweak manage sub

* tweak button actions

* add warning

* add warning

* point to branch

* fixed compiler errors

* push nav

* open wihtout selection

* listen to array changes

* bring back filter

* listen to array changes

* remove close

* go back to list

* brought back snaps

* add snaps for warning

* reuse view model for both screens

* push tuist branch

* test compile again

* fixed wrong initializer

* trailing commas

* remove trailing comma

* almost done with tests

* remove key

* revert a rfew things

* revert ManageSubscriptionsButtonsView

* lint

* missing broken test

* fixed last tests

* move transaction code to transaction.swift

* useful renaming

* rename variables, and rewrite guard

* add test for non apple

* re-add onchange

* added support

* shouldShowContactSupport

* remove dup close

* rever tuist branc

* add missing copies

* fixed condition

* tests working

* remove state

* tweaked snaps

* trailing comma

* disable dup warning till backend is ready

* trailing comma

* fix old sna
2025-05-07 12:05:50 -06:00
Facundo MenzellaandAntonio Pallares 078bcf8ab4 fix: Hide cancel & refundRequest if subscription is already cancelled (#5035)
* fix: Hide cancel & refundRequest if subscription is already cancelled

* update refund

* convert to ObservedObject

* Update RevenueCatUI/CustomerCenter/Data/PurchaseInformation.swift

Co-authored-by: Antonio Pallares <ajpallares@users.noreply.github.com>

* test binding

* use binding to update

* EntitlementInfo.isCancelled

* remove extra binding and private(set)

* remove extra

* fixed tests

---------

Co-authored-by: Antonio Pallares <ajpallares@users.noreply.github.com>
2025-05-05 17:35:30 +00:00
Facundo Menzella 7d0a27dc97 feat: Use not synced storekit config (#5037) 2025-05-04 16:23:48 +00:00
Facundo MenzellaandAntonio Pallares 95e1eb8c39 feat: Add missing pieces for maestro local execution (#5017)
* add rc-maestro with tests

* point to remote

* add promo-offer-primary-button

* move mise.toml to root

* added change plans test

* follow spm conventions + remove test files

* add manage_subscriptions test

* add see all purchases test

* added xccondig

* renamed to Local.xcconfig instead of Maestro.xcconfig

* renamed

* deleted Derived folder

* delete .swiftpm/xcode/xcshareddata/xcschemes/RevenueCat-Package.xcscheme

* feat: Add circle CI job

* test mise x

* bring back path

* generate all in one

* install + generate

* replce api key

* install dep

* fix crash when trying to access invalid URL from paywall components localization (#5016)

* dont override default xcconfig

* updated fastlane

* fixed ci

* tuist

* fixed fastlane lane

* mastro path

* added cleanup job

* final tweaks

* dont launch app all the time

* increase timeout

* fastlane exports

* replace assertion

* test instead of record

* test using maestro sim cmd

* use it in fastlane

* pass it to fastlane as option

* install runtime 17

* add env

* use default if not passed

* remove arch

* remove arch

* test existing sim 18.2

* don't install 17

* wrap in sh

* record flow

* accept promo offer

* deleted CI code

---------

Co-authored-by: Antonio Pallares <ajpallares@users.noreply.github.com>
2025-05-02 08:24:35 +00:00
Facundo Menzella 06d4721294 feat: Introduce maestro for UI testing (#5013)
* add rc-maestro with tests

* point to remote

* add promo-offer-primary-button

* move mise.toml to root

* added change plans test

* follow spm conventions + remove test files

* add manage_subscriptions test

* add see all purchases test

* added xccondig

* renamed to Local.xcconfig instead of Maestro.xcconfig

* renamed

* deleted Derived folder

* delete .swiftpm/xcode/xcshareddata/xcschemes/RevenueCat-Package.xcscheme

* dont override default xcconfig

* delete theme test

* find implicit deps
2025-04-25 10:39:45 +00:00
Toni RicoandBence Pattogato 4d6c51844d Update Extensions.swift (#4987) (#5012)
Co-authored-by: Bence Pattogato <pattogatobence@gmail.com>
2025-04-23 10:29:02 +02:00
Toni Rico fd77ea2def New APIs to CustomEntitlementsComputationMode SDK (#4972) 2025-04-11 12:51:05 +02:00