Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from
Nov 9, 2022

Conversation

NachoSoto
Copy link
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 added test Adding missing tests or correcting existing tests ci Changes to our CI configuration files and scripts labels Nov 9, 2022
@NachoSoto NachoSoto requested a review from a team November 9, 2022 14:30
@NachoSoto
Copy link
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
ci Changes to our CI configuration files and scripts test Adding missing tests or correcting existing tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants