Skip to content

Integration Tests: changed weekly to monthly subscriptions to work around 0-second subscriptions#2042

Merged
NachoSoto merged 1 commit into
mainfrom
integration-tests-monthly
Nov 9, 2022
Merged

Integration Tests: changed weekly to monthly subscriptions to work around 0-second subscriptions#2042
NachoSoto merged 1 commit into
mainfrom
integration-tests-monthly

Conversation

@NachoSoto

Copy link
Copy Markdown
Contributor

As exposed by #2038, weekly subscriptions were leading to false negatives because they were always expired by the time the purchase was made (using TimeRate.monthlyRenewalEveryThirtySeconds), instead of lasting 10 seconds as documented. This is reported as FB11767559.

The advantage of using weekly subscriptions was to also work around FB11767679, which means that we have to manually wait for the subscription to expire, as SKTestSession.expireSubscription(productIdentifier:) doesn't actually change the receipt.
Because we had to wait, using weekly subscriptions was faster, since we only needed to wait 10 seconds.

This does mean that expirations in these tests now have to wait 30 seconds instead of 10, but now they're no longer flaky 🎉
Looks like tests right now pass in CI in less than 7 minutes, which I believe is totally acceptable, especially for the benefit of no longer having these flaky tests.

…around 0-second subscriptions

As exposed by #2038, weekly subscriptions were leading to false negatives because they were always expired by the time the purchase was made using `TimeRate.monthlyRenewalEveryThirtySeconds`, instead of lasting 10 seconds as documented.
(`FB11767559`)

The advantage of using weekly subscriptions was to also work around `FB11767679`, which means that we have to manually _wait_ for the subscription to expire, as `SKTestSession.expireSubscription(productIdentifier:)` doesn't actually change the receipt.
Because we had to wait, using weekly subscriptions was faster, since we only needed to wait 10 seconds.

This does mean that expirations in these tests now have to wait 30 seconds instead of 10, but now they're no longer flaky 🎉
@NachoSoto NachoSoto requested a review from a team November 9, 2022 14:30
@NachoSoto

Copy link
Copy Markdown
Contributor Author

Re-opened #2039 here targeting main.

@NachoSoto NachoSoto merged commit dc7d044 into main Nov 9, 2022
@NachoSoto NachoSoto deleted the integration-tests-monthly branch November 9, 2022 14:39
NachoSoto pushed a commit that referenced this pull request Nov 9, 2022
**This is an automatic release.**

### Bugfixes
* `ISO8601DateFormatter.withMilliseconds`: fixed iOS 11 crash (#2037)
via NachoSoto (@NachoSoto)
* Changed `StoreKit2Setting.default` back to
`.enabledOnlyForOptimizations` (#2022) via NachoSoto (@NachoSoto)
### Other Changes
* `Integration Tests`: changed weekly to monthly subscriptions to work
around 0-second subscriptions (#2042) via NachoSoto (@NachoSoto)
* `Integration Tests`: fixed `testPurchaseWithAskToBuyPostsReceipt`
(#2040) via NachoSoto (@NachoSoto)
* `ReceiptRefreshPolicy.retryUntilProductIsFound`: default to returning
"invalid" receipt (#2024) via NachoSoto (@NachoSoto)
* `CachingProductsManager`: use partial cached products (#2014) via
NachoSoto (@NachoSoto)
* Added `BackendErrorCode.purchasedProductMissingInAppleReceipt` (#2033)
via NachoSoto (@NachoSoto)
* `PurchaseTesterSwiftUI`: replaced `Purchases` dependency with `SPM`
(#2027) via NachoSoto (@NachoSoto)
* `Integration Tests`: changed log output to `raw` (#2031) via NachoSoto
(@NachoSoto)
* `Integration Tests`: run on iOS 16 (#2035) via NachoSoto (@NachoSoto)
* CI: fixed `iOS 14` tests Xcode version (#2030) via NachoSoto
(@NachoSoto)
* `Async.call`: added non-throwing overload (#2006) via NachoSoto
(@NachoSoto)
* Documentation: Fixed references in `V4_API_Migration_guide.md` (#2018)
via NachoSoto (@NachoSoto)
* `eligiblePromotionalOffers`: don't log error if response is ineligible
(#2019) via NachoSoto (@NachoSoto)
* Runs push-pods after make-release (#2025) via Cesar de la Vega
(@vegaro)
* Some updates on notify-on-non-patch-release-branches: (#2026) via
Cesar de la Vega (@vegaro)
* Deploy `PurchaseTesterSwiftUI` to TestFlight (#2003) via NachoSoto
(@NachoSoto)
* `PurchaseTesterSwiftUI`: added "logs" screen (#2012) via NachoSoto
(@NachoSoto)
* `PurchaseTesterSwiftUI`: allow configuring API key at runtime (#1999)
via NachoSoto (@NachoSoto)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants