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

Render ECE buttons #8818

Merged
merged 26 commits into from
May 20, 2024
Merged

Render ECE buttons #8818

merged 26 commits into from
May 20, 2024

Conversation

rafaelzaleski
Copy link
Contributor

@rafaelzaleski rafaelzaleski commented May 14, 2024

Closes #8772
Closes #8825

Changes proposed in this Pull Request

Render the ECE buttons behind a feature flag. The buttons are rendered in:

  • The product page.
  • The shortcode cart/checkout.
  • The blocks cart/checkout.

It also relocates functions that were used by other parts of the application, such as the WooPay button, from payment-request/utils to a new high-level utility directory, utils/express-checkout. This move aims to decouple these helpers from any specific express checkout implementation.

Testing instructions

Before you enable the feature flag, test the PRB buttons and ensure there are no regressions. Also test the WooPay express checkout button.

  • Enable the ECE feature flag. npm run wp option update _wcpay_feature_stripe_ece 1
  • Confirm that the ECE buttons are rendering on the shortcode and blocks product/cart/checkout pages.
  • Ensure that the PRB buttons are not rendered when the feature flag is enabled.
  • Ensure the ECE buttons are not rendered when the feature flag is disabled.

  • 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

@botwoo
Copy link
Collaborator

botwoo commented May 14, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 8818 or branch name feat/8772-render-ece-buttons 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: cb045a8
  • Build time: 2024-05-17 20:10:56 UTC

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

Copy link
Contributor

github-actions bot commented May 14, 2024

Size Change: +10.5 kB (+1%)

Total Size: 1.27 MB

Filename Size Change
release/woocommerce-payments/dist/blocks-checkout.js 56.5 kB +273 B (0%)
release/woocommerce-payments/dist/cart-block.js 21.4 kB +17 B (0%)
release/woocommerce-payments/dist/cart.js 4.46 kB +22 B (0%)
release/woocommerce-payments/dist/checkout.js 37.4 kB +19 B (0%)
release/woocommerce-payments/dist/payment-request.js 12 kB +19 B (0%)
release/woocommerce-payments/dist/product-details.js 17.2 kB +15 B (0%)
release/woocommerce-payments/dist/settings.js 201 kB +42 B (0%)
release/woocommerce-payments/dist/tokenized-payment-request.js 12.2 kB +22 B (0%)
release/woocommerce-payments/dist/woopay-direct-checkout.js 4.83 kB +20 B (0%)
release/woocommerce-payments/dist/woopay-express-button.js 21 kB +15 B (0%)
release/woocommerce-payments/dist/woopay.js 69.4 kB +20 B (0%)
release/woocommerce-payments/dist/express-checkout-rtl.css 155 B +155 B (new file) 🆕
release/woocommerce-payments/dist/express-checkout.css 155 B +155 B (new file) 🆕
release/woocommerce-payments/dist/express-checkout.js 9.71 kB +9.71 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.08 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.08 kB
release/woocommerce-payments/assets/css/success.css 172 B
release/woocommerce-payments/assets/css/success.rtl.css 172 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.06 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.07 kB
release/woocommerce-payments/dist/bnpl-announcement-rtl.css 530 B
release/woocommerce-payments/dist/bnpl-announcement.css 531 B
release/woocommerce-payments/dist/bnpl-announcement.js 20 kB
release/woocommerce-payments/dist/checkout-rtl.css 599 B
release/woocommerce-payments/dist/checkout.css 599 B
release/woocommerce-payments/dist/index-rtl.css 40.7 kB
release/woocommerce-payments/dist/index.css 40.7 kB
release/woocommerce-payments/dist/index.js 293 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.05 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.28 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 59.6 kB
release/woocommerce-payments/dist/multi-currency.css 3.29 kB
release/woocommerce-payments/dist/multi-currency.js 54.7 kB
release/woocommerce-payments/dist/order-rtl.css 733 B
release/woocommerce-payments/dist/order.css 735 B
release/woocommerce-payments/dist/order.js 41.9 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.21 kB
release/woocommerce-payments/dist/payment-gateways.css 1.21 kB
release/woocommerce-payments/dist/payment-gateways.js 38.7 kB
release/woocommerce-payments/dist/payment-request-rtl.css 155 B
release/woocommerce-payments/dist/payment-request.css 155 B
release/woocommerce-payments/dist/product-details-rtl.css 398 B
release/woocommerce-payments/dist/product-details.css 402 B
release/woocommerce-payments/dist/settings-rtl.css 11.1 kB
release/woocommerce-payments/dist/settings.css 10.9 kB
release/woocommerce-payments/dist/subscription-edit-page.js 669 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 19.4 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 693 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 18.5 kB
release/woocommerce-payments/dist/tokenized-payment-request-rtl.css 155 B
release/woocommerce-payments/dist/tokenized-payment-request.css 155 B
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 236 B
release/woocommerce-payments/dist/tos.js 21 kB
release/woocommerce-payments/dist/woopay-express-button-rtl.css 155 B
release/woocommerce-payments/dist/woopay-express-button.css 155 B
release/woocommerce-payments/dist/woopay-rtl.css 4.25 kB
release/woocommerce-payments/dist/woopay.css 4.22 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 622 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 815 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.44 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.01 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 196 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 20 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 196 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 627 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 20 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 628 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 202 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 522 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 581 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 214 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 523 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 722 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 408 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 230 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/babel.config.js 160 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.css 2.36 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.js 13.5 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.rtl.css 2.36 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.03 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 291 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 403 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.6 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 299 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 742 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 572 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 411 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 544 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.8 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.83 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 544 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.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.6 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 502 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 355 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 429 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 781 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.27 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 392 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.05 kB

compressed-size-action

@rafaelzaleski rafaelzaleski self-assigned this May 15, 2024
@rafaelzaleski rafaelzaleski changed the title WIP: Render ECE buttons Render ECE buttons May 16, 2024
@rafaelzaleski rafaelzaleski marked this pull request as ready for review May 16, 2024 12:26
@rafaelzaleski rafaelzaleski requested review from a team and cesarcosta99 and removed request for a team May 16, 2024 12:26
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.

Code looks good overall! Before I dive into testing, I wanted to point out some suggestions. Mostly are about renaming some methods and variables, which is reasonable since we're splitting the approaches.

client/express-checkout/blocks/index.js Outdated Show resolved Hide resolved
let paymentRequestType;

// Track the payment request button click event.
const trackPaymentRequestButtonClick = ( source ) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we rename this to trackExpressCheckoutButtonClick?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It's unclear how much of this code will be retained once we start processing payments.
I also plan to refactor these files once I jump into payment processing. I'll assess whether it's easier to delete everything that is currently unused or simply rename everything 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I've updated some variable names and cleaned up the JavaScript to achieve a near-minimal implementation. I've requested another review.

client/express-checkout/index.js Outdated Show resolved Hide resolved
client/express-checkout/index.js Outdated Show resolved Hide resolved
client/express-checkout/index.js Outdated Show resolved Hide resolved
client/express-checkout/index.js Outdated Show resolved Hide resolved
client/express-checkout/index.js Outdated Show resolved Hide resolved
client/express-checkout/index.js Outdated Show resolved Hide resolved
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.

Thanks for the latest changes and cleaning things up a bit. I've tested it and everything worked as expected, except for ApplePay which I can't test it. I left one last (and minor 🤏) suggestion before giving the final approval.

Before enabling ECE

  • Checkout with GooglePay at the checkout page ✅
  • Checkout with GooglePay in the product page ✅
  • Checkout with ApplePay ⚠️
    • I don't have ApplePay set up, if needed, feel free to ask someone else from the team to test it.
  • Checkout with the WooPay button from the checkout page ✅
  • Checkout with the WooPay button from the product page ✅
  • Ensure the ECE buttons are not rendered when the feature flag is disabled ✅
    • Checked product page, shortcode cart, shortcode checkout, cart Block and checkout Block.

After enabling ECE

  • Confirm that the ECE buttons are rendering ✅
    • Checked product page, shortcode cart, shortcode checkout, cart Block and checkout Block.
  • Ensure that the PRB buttons are not rendered ✅
    • Checked product page, shortcode cart, shortcode checkout, cart Block and checkout Block.

client/express-checkout/blocks/apple-pay-preview.js Outdated Show resolved Hide resolved
client/express-checkout/blocks/index.js Outdated Show resolved Hide resolved
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.

LGTM :shipit:

@rafaelzaleski rafaelzaleski added this pull request to the merge queue May 20, 2024
Merged via the queue into develop with commit 88d920d May 20, 2024
23 checks passed
@rafaelzaleski rafaelzaleski deleted the feat/8772-render-ece-buttons branch May 20, 2024 13:23
@frosso frosso restored the feat/8772-render-ece-buttons branch May 21, 2024 11:36
@frosso frosso deleted the feat/8772-render-ece-buttons branch May 24, 2024 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants