Files
Antonio PallaresandCursor 091ca1b152 Add Maestro SDK update tests verifying persisted state (#7900)
* Add Maestro SDK update tests verifying persisted state

Builds a barebones test app against the latest released SDK and against the local SDK, installs one over the other in the same simulator, and asserts with screenshots that the app user ID (anonymous and logged in) and entitlements are preserved after the update.

Co-authored-by: Cursor <cursoragent@cursor.com>

* [TEMP] Only run SDK update tests on CI

Co-authored-by: Cursor <cursoragent@cursor.com>

* Keep SDK update tester labels from shifting when messages appear

Co-authored-by: Cursor <cursoragent@cursor.com>

* Revert "[TEMP] Only run SDK update tests on CI"

This reverts commit d65904de54.

* Use the shared plugin actions for the SDK update tests

Temporarily pins fastlane-plugin-revenuecat_internal to the commit of RevenueCat/fastlane-plugin-revenuecat_internal#161 until it's merged.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Build and run the SDK update test cases in a single CI job

Setup takes longer than each test case, so running them on separate machines sharing the apps through the workspace isn't worth it.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Purchase a fixed offering and package in the SDK update tester

The current offering and its first package can change in the dashboard.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Purchase from an offering not tied to Paywalls V1 in the SDK update tester

Co-authored-by: Cursor <cursoragent@cursor.com>

* Allow triggering the SDK update tests via @RCGitBot please test

Co-authored-by: Cursor <cursoragent@cursor.com>

* Remove redundant SDK update tester customer info stream

* Wait for entitlement label before asserting SDK update state

* Read the previous SDK release from purchases-ios GitHub releases

The shared plugin action now reads GitHub releases, which the purchases-ios-spm mirror doesn't have.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Pin shared SDK update actions to merged plugin commit

* Keep shared plugin revision only in lockfile

* Bump fastlane-plugin-revenuecat_internal to 4c49d48

Co-authored-by: Cursor <cursoragent@cursor.com>

* Run SDK update tests only in release CI

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-27 11:04:18 +00:00

113 lines
3.0 KiB
Plaintext

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## User settings
**/xcuserdata/
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint
*.xccheckout
## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
build/
DerivedData/
*.moved-aside
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
.idea/
Carthage
.DS_Store
.ruby-version
.bundle/
.build/
# Per-platform derived data written by the generate_swiftinterface lane.
.build-*/
vendor/
CarthageUploads
*.bck
**/fastlane/report.xml
**/fastlane/test_output/
builds/
Pods/
IntegrationTests/CarthageInstallation/Cartfile.resolved
scan_derived_data/
generated_docs/
# Local clone of `paywall-preview-resources` repo to be available for tests.
Tests/paywall-preview-resources
# Local clone of `paywall-rendering-validation` repo to be available for tests.
Tests/paywall-rendering-validation
# Recorded V1 template snapshots (uploaded to Emerge, not stored in git)
Tests/RevenueCatUITests/Templates/__Snapshots__
# SPM
# SwiftPM/Xcode-generated workspace metadata (machine-specific, avoid noisy diffs and CI variance)
AdapterSDKs/RevenueCatAdMob/.swiftpm/
# This is the "SPM" scheme, which is duplicated with the scheme in the project
# and that breaks Carthage because it appears twice in `xcodebuild -list`
.swiftpm/xcode/xcshareddata/xcschemes/RevenueCat.xcscheme
Examples/**/Package.resolved
Tuist/Package.resolved
.package.resolved
Tests/InstallationTests/SPMInstallation/SPMInstallation.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
Tests/InstallationTests/ReceiptParserInstallation/ReceiptParserInstallation.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
Tests/InstallationTests/XcodeDirectInstallation/XcodeDirectInstallation.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
# fastlane
fastlane/.env
.vscode/settings.json
# Local build settings
Local.xcconfig
# CI Build settings
CI.xcconfig
# Gets created when Cursor is used with the sswg Swift extension
/.index-build/
# xcode-build-server
/buildServer.json
*.orig
# tuist
**/Derived/
# Tuist workspaces
RevenueCat-Tuist.xcworkspace/
Projects/**/*.xcodeproj
Projects/SDKUpdateTester/*.xcworkspace
Examples/**/*.xcodeproj
Projects/**/xcshareddata/
Projects/**/*.xcworkspacedata
Examples/**/.xcworkspacedata
Examples/**/*.xcscheme
Examples/**/xcshareddata/**
# Avoid xcscheme pollution when integrating SDK with SPM
# We can't avoid the whole folder yet because RC and RCUI need to be tested through the package, rather than the workspace
.swiftpm/xcode/xcshareddata/xcschemes/ReceiptParser.xcscheme
.swiftpm/xcode/xcshareddata/xcschemes/RevenueCat_CustomEntitlementComputation.xcscheme
.swiftpm/xcode/xcshareddata/xcschemes/RevenueCatAdMob.xcscheme
Tests/TestingApps/PaywallsTester/PaywallsTester/PaywallsTester.storekit
# Claude Code
.claude/