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

Enable ECE for shipping subscriptions with free trial and sign up fee #9955

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from

Conversation

asumaran
Copy link
Contributor

@asumaran asumaran commented Dec 14, 2024

Part of #9771

Changes proposed in this Pull Request

Enables ECE for subscriptions that require shipping with a free trial and sign-up fee.

Testing instructions

Note

In order to test this PR with the changes in woocommerce-subscriptions-core (ref) you'd need to clone this repo and symlink the repo to your local subscriptions-core directory inside the WooCommerce Subscriptions plugin:

woopayments/wp-content/plugins/woocommerce-subscriptions » ll vendor/woocommerce
lrwxr-xr-x 56 2024-11-05 15:28 subscriptions-core -> >/Users/asumaran/Developer/woocommerce-subscriptions-core

run npm install and composer install if necessary.

  • Switch to this branch
  • Ensure you are using the PR from woocommerce-subscriptions-core
  • For reference, case matrix is here.

Verify ECE is enabled for case 4

  • Create a simple subscription with a free trial and a sign up fee.
  • Go to the product page.
  • Verify ECE is enabled and can checkout without issues.

Verify ECE is enabled for case 12

  • Create a variable subscription with at least one variation with only the following options:
    • With Free trial
    • With a Sign up fee.
  • Go to the product page.
  • Verify ECE is enabled and can checkout without issues.

Verify ECE is not enabled for Case 3

  • Create a simple subscription with a free trial (do not add a sign up fee).
  • Go to the product page.
  • Verify ECE is not displayed.

Verify ECE is not enabled for Case 11

  • Create a variable subscription with at least one variation with only the following options:
    • Free trial.
  • Go to the product page.
  • Verify ECE is hidden after selecting the variation.

  • Run npm run changelog to add a changelog file, choose patch to leave it empty if the change is not significant. You can add multiple changelog files in one PR by running this command a few times.
  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Post merge

@asumaran asumaran self-assigned this Dec 14, 2024
@botwoo
Copy link
Collaborator

botwoo commented Dec 14, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 9955 or branch name as-fix-ece-shipping-subs-with-free-trial-and-sign-up-fee in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: 4ad046f
  • Build time: 2024-12-18 23:42:25 UTC

Note: the build is updated when a new commit is pushed to this PR.

@asumaran asumaran force-pushed the as-fix-ece-shipping-subs-with-free-trial-and-sign-up-fee branch from bb1ee4b to b3c6d87 Compare December 14, 2024 00:20
Copy link
Contributor

github-actions bot commented Dec 14, 2024

Size Change: -6 B (0%)

Total Size: 1.39 MB

Filename Size Change
release/woocommerce-payments/dist/express-checkout.js 15.5 kB -6 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.37 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.37 kB
release/woocommerce-payments/assets/css/success.css 182 B
release/woocommerce-payments/assets/css/success.rtl.css 184 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.63 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.63 kB
release/woocommerce-payments/dist/blocks-checkout.js 55.3 kB
release/woocommerce-payments/dist/cart-block.js 17 kB
release/woocommerce-payments/dist/cart.js 5.73 kB
release/woocommerce-payments/dist/checkout-rtl.css 932 B
release/woocommerce-payments/dist/checkout.css 931 B
release/woocommerce-payments/dist/checkout.js 33.4 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/express-checkout.css 229 B
release/woocommerce-payments/dist/frontend-tracks.js 854 B
release/woocommerce-payments/dist/index-rtl.css 52.6 kB
release/woocommerce-payments/dist/index.css 52.6 kB
release/woocommerce-payments/dist/index.js 303 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.08 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 4.46 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.9 kB
release/woocommerce-payments/dist/multi-currency.css 4.46 kB
release/woocommerce-payments/dist/multi-currency.js 57.6 kB
release/woocommerce-payments/dist/order-rtl.css 730 B
release/woocommerce-payments/dist/order.css 730 B
release/woocommerce-payments/dist/order.js 42.2 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.32 kB
release/woocommerce-payments/dist/payment-gateways.css 1.32 kB
release/woocommerce-payments/dist/payment-gateways.js 38.7 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 386 B
release/woocommerce-payments/dist/plugins-page.css 386 B
release/woocommerce-payments/dist/plugins-page.js 20.1 kB
release/woocommerce-payments/dist/product-details-rtl.css 433 B
release/woocommerce-payments/dist/product-details.css 436 B
release/woocommerce-payments/dist/product-details.js 12.3 kB
release/woocommerce-payments/dist/settings-rtl.css 11.6 kB
release/woocommerce-payments/dist/settings.css 11.5 kB
release/woocommerce-payments/dist/settings.js 224 kB
release/woocommerce-payments/dist/subscription-edit-page.js 703 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.2 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 730 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.3 kB
release/woocommerce-payments/dist/tokenized-express-checkout-rtl.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.css 229 B
release/woocommerce-payments/dist/tokenized-express-checkout.js 16.3 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 21.8 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 6.13 kB
release/woocommerce-payments/dist/woopay-express-button.js 24.8 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.31 kB
release/woocommerce-payments/dist/woopay.css 4.28 kB
release/woocommerce-payments/dist/woopay.js 71 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 625 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 814 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/jetpack-script-data.js 767 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.02 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/script-data.js 69 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/babel.config.js 163 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.2 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.css 10 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.js 28.4 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.rtl.css 10 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 280 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 625 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 333 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 626 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 424 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 585 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 215 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 721 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 412 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 632 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.04 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 294 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 408 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.59 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 301 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 746 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 574 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 414 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 543 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.78 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.84 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 545 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.2 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.7 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 507 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 358 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 428 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 782 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.09 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.26 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 391 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.04 kB

compressed-size-action

@asumaran asumaran marked this pull request as ready for review December 14, 2024 01:02
@asumaran asumaran requested review from a team and cesarcosta99 and removed request for a team December 14, 2024 01:03
@asumaran
Copy link
Contributor Author

@cesarcosta99 don't worry too much about the amounts in the payment sheet for now, as they'll be addressed later. It would be great if you could confirm that the amounts charged are correct.

Copy link
Contributor

@cesarcosta99 cesarcosta99 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good, however, I spotted two potential issues that require some attention, being one a failing test instruction:

  • Verify ECE is enabled for case 4 ⚠️
    • Checkout succeeded with correct amount charged ✅
    • I found one issue where I clicked the ECE button for the first time, closed the payment sheet, then clicked on it again. I got a notice (see image) and the payment sheet didn't load again. Refreshing fixes the payment sheet state. I haven't checked whether this has been introduced in this PR (it doesn't seem like), but we gotta check and track this issue.
      image
  • Verify ECE is enabled for case 12 ⚠️
    • Checkout succeeded with correct amount charged ✅
    • Same issue observed in case 4.
  • Verify ECE is not enabled for Case 3 ✅
  • Verify ECE is not enabled for Case 11 ❌
    • I created a variable subscription with a single variation, non-virtual, with a trial period and no fee, and in the product page the ECE button remains visible after selecting that variation.

Comment on lines +441 to +442
// Applies to Case 11 from matrix:
// https://github.com/Automattic/woocommerce-payments/issues/9771#issuecomment-2518829514
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works well, but I wonder if adding more details to this comment here could help others understand the logic more quickly. I think linking to the PR makes sense, but just to provide additional context, not using as the main source of documentation.

Comment on lines +767 to +768
// Applies to case 3 from matrix: https://github.com/Automattic/woocommerce-payments/issues/9771#issuecomment-2518829514.
// Note: This does not check variable subscriptions, as that will be handled on the frontend.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

@asumaran
Copy link
Contributor Author

I found one issue where I clicked the ECE button for the first time, closed the payment sheet, then clicked on it again. I got a notice (see image) and the payment sheet didn't load again.

@cesarcosta99 I’ve also started experiencing the same behavior while testing #9888. I’m going to run a git bisect to determine whether this issue was recently introduced or if it’s related to Google Pay.

@asumaran
Copy link
Contributor Author

Verify ECE is not enabled for Case 11 ❌

@cesarcosta99 I’ve confirmed it’s working on my end—the button is hidden after selecting a variation. Could you double-check the subscription details? A video or screenshot would be super helpful.

I got a notice (see image) and the payment sheet didn't load again.

I didn’t get the notice this time. I’ve updated my branch with develop just to be sure, but I’m seeing the same results. It doesn’t seem to be related to our codebase.

@asumaran
Copy link
Contributor Author

I've tested with a variable subscription with all variations (Cases 3, 4, 11, and 12) and I get expected results. Please @cesarcosta99 double check the Case 11 please.

@cesarcosta99
Copy link
Contributor

double check the Case 11 please.

@asumaran, case 11 passed after merging develop 🎉 However, the other issue I reported (payment sheet not displaying) persists.

@asumaran
Copy link
Contributor Author

I found one issue where I clicked the ECE button for the first time, closed the payment sheet, then clicked on it again. I got a notice (see image) and the payment sheet didn't load again.

@cesarcosta99, thank you for identifying this issue. Pinpointing the problem has been a bit tedious. This error occurs when the response from /?wc-ajax=wcpay_ece_get_shipping_options returns a total.amount lower than the value with which ECE was initially initialized. It seems the free trial is impacting the total calculation, causing it to be lower than expected.

I’m not entirely sure how to resolve this yet, as it’s affecting both regular and variable subscriptions. I’ll look into this further and see what we can do. FYI @bborman22

@asumaran
Copy link
Contributor Author

asumaran commented Dec 18, 2024

@cesarcosta99 I've uploaded a fix for the Google Pay issue, but I’d like to run tests across all subscription scenarios before you review it again.

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