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

Fix/8175 show tooltip instead of deposit guesstimate #8184

Merged
merged 17 commits into from
Feb 18, 2024

Conversation

haszari
Copy link
Contributor

@haszari haszari commented Feb 13, 2024

Fixes #8175

Screenshot 2024-02-14 at 12 42 39 PM

Tooltip text is as follows:

Deposits are initiated based on the following criteria:

Changes proposed in this Pull Request

  • Removes the estimated next deposit date from deposit overview screen (and related code)
  • Adds a tooltip with more info and links to docs about what factors affect deposits / payouts

Testing instructions

  • Get your store in a state where you can expect payouts (e.g. outside of new account waiting period)
  • View Payments > Overview
  • Check the deposit box payout schedule info makes sense, and the tooltip is helpful.
  • Test different payout schedules – the format string(s) for the schedule summary changed in this PR (to remove the estimated date part).

Bonus points:

  • Test other store states to ensure the copy & tooltip are relevant and helpful. (Should be consistent/unchanged from previous logic)

  • 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

more screenshots

With a monthly schedule:

Screenshot 2024-02-15 at 9 54 26 AM

@haszari haszari self-assigned this Feb 13, 2024
@botwoo
Copy link
Collaborator

botwoo commented Feb 13, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 8184 or branch name fix/8175-show-tooltip-instead-of-deposit-guesstimate 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: bb08bd3
  • Build time: 2024-02-18 20:47:55 UTC

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

Copy link
Contributor

github-actions bot commented Feb 13, 2024

Size Change: +40 B (0%)

Total Size: 1.26 MB

Filename Size Change
release/woocommerce-payments/dist/index-rtl.css 37.2 kB +16 B (0%)
release/woocommerce-payments/dist/index.css 37.2 kB +15 B (0%)
release/woocommerce-payments/dist/index.js 291 kB -27 B (0%)
release/woocommerce-payments/dist/settings-rtl.css 10.3 kB +18 B (0%)
release/woocommerce-payments/dist/settings.css 10.3 kB +18 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.06 kB
release/woocommerce-payments/assets/css/success.css 158 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 1.81 kB
release/woocommerce-payments/dist/blocks-checkout.css 1.81 kB
release/woocommerce-payments/dist/blocks-checkout.js 84.8 kB
release/woocommerce-payments/dist/checkout-rtl.css 318 B
release/woocommerce-payments/dist/checkout.css 319 B
release/woocommerce-payments/dist/checkout.js 36 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.05 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.31 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 59.4 kB
release/woocommerce-payments/dist/multi-currency.css 3.31 kB
release/woocommerce-payments/dist/multi-currency.js 54.7 kB
release/woocommerce-payments/dist/order-rtl.css 707 B
release/woocommerce-payments/dist/order.css 708 B
release/woocommerce-payments/dist/order.js 41.6 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.18 kB
release/woocommerce-payments/dist/payment-gateways.css 1.18 kB
release/woocommerce-payments/dist/payment-gateways.js 38.4 kB
release/woocommerce-payments/dist/payment-request-rtl.css 153 B
release/woocommerce-payments/dist/payment-request.css 153 B
release/woocommerce-payments/dist/payment-request.js 12.3 kB
release/woocommerce-payments/dist/product-details.js 919 B
release/woocommerce-payments/dist/settings.js 234 kB
release/woocommerce-payments/dist/subscription-edit-page.js 669 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 19.4 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 710 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 18.5 kB
release/woocommerce-payments/dist/tos-rtl.css 230 B
release/woocommerce-payments/dist/tos.css 231 B
release/woocommerce-payments/dist/tos.js 21 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 2.83 kB
release/woocommerce-payments/dist/woopay-express-button-rtl.css 153 B
release/woocommerce-payments/dist/woopay-express-button.css 153 B
release/woocommerce-payments/dist/woopay-express-button.js 52.3 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.18 kB
release/woocommerce-payments/dist/woopay.css 4.19 kB
release/woocommerce-payments/dist/woopay.js 70.9 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 622 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 812 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.43 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.01 kB
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-identity-crisis/babel.config.js 160 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.css 2.37 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.37 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

@haszari haszari requested a review from a team February 13, 2024 23:47
@haszari haszari marked this pull request as ready for review February 13, 2024 23:47
@@ -119,6 +193,12 @@ const DepositsOverview: React.FC = () => {
depositsSchedule={ account.deposits_schedule }
showNextDepositDate={ availableFunds > 0 }
/>
<ClickTooltip
content={ nextDepositHelpContent }
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 really wanted to put the tooltip markup in children, composition style:

<ClickTooltip>
  Deposits are initiated based on the following criteria:

  <ul>
    <li>The pending period in your country</li>
    <li>(etc)</li>
  </ul>
</ClickTooltip>

However, our tooltip uses children for something else – I think it allows the client to use a different element for the button/element that user clicks to show the tooltip.

Would love to refactor our ToolTip and friends to support arbitrary tooltip content as children … though not important to do now!

Copy link
Member

@Jinksi Jinksi Feb 15, 2024

Choose a reason for hiding this comment

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

I agree!

💭 I think this component was originally based on @wordpress/components tooltip, for which children is used for "The element to which the tooltip should anchor.".

For @wordpress/components popover component, however, children is used for "elements rendered as the popover's content." 👍

Rua Haszard added 2 commits February 14, 2024 12:57
…f github.com:Automattic/woocommerce-payments into fix/8175-show-tooltip-instead-of-deposit-guesstimate
@haszari
Copy link
Contributor Author

haszari commented Feb 14, 2024

Deposit Schedule renders › with a monthly schedule on the 2nd

Looks like I have some tests to fix 📓

@haszari
Copy link
Contributor Author

haszari commented Feb 14, 2024

● Deposits Overview information › Component Renders

I also need to update snapshots.

@haszari
Copy link
Contributor Author

haszari commented Feb 14, 2024

Also tested with account soft blocked by platform, looking good:

Screenshot 2024-02-15 at 10 56 52 AM

Comment on lines 196 to 201
<ClickTooltip
content={ nextDepositHelpContent }
className="wcpay-deposits-overview__schedule__tooltip"
buttonIcon={ <HelpOutlineIcon /> }
buttonLabel={ 'Deposit schedule tooltip' }
/>
Copy link
Member

Choose a reason for hiding this comment

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

⛏️ this className may be redundant, AFAICT it isn't references anywhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removed! adfc76d

Copy link
Member

@Jinksi Jinksi left a comment

Choose a reason for hiding this comment

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

This tests well @haszari 🙌

I've added some commits with minor code changes in 198303a, c3bd550 and 7de0b05.

I've tested the message against daily, weekly, monthly deposit schedules. ✅
The tooltip renders well and is navigable via keyboard. ✅

⚠️ Note that when the deposit schedule is set to manual via Stripe Dashboard, the tooltip is rendered without a schedule message.

image

I believe this is a rare edge case, but we could bail on rendering the entire schedule message section if check if you think it's worth avoiding for manual scheduled.

💡 A future enhancement may involve adding this tooltip to the Deposits screen, related to #8026.

Screenshot 2024-02-15 at 12 00 55

@haszari
Copy link
Contributor Author

haszari commented Feb 16, 2024

I've added some commits with minor code changes in 198303a, c3bd550 and 7de0b05.

Thanks @Jinksi for catching these tidy ups!

⚠️ Note that when the deposit schedule is set to manual via Stripe Dashboard, the tooltip is rendered without a schedule message.
I believe this is a rare edge case, but we could bail on rendering the entire schedule message section if check if you think it's worth avoiding for manual scheduled.

I like this idea – though pulled back when I realised I need to add the same logic in DepositSchedule to the outer card component (around the tooltip). And the logic is a little complex, need to check the schedule interval is one of 3 known strings. So … leaving as is.

I'm thinking when we adapt this for #8026 we can move the tooltip inside DepositSchedule.

@haszari
Copy link
Contributor Author

haszari commented Feb 18, 2024

❌ E2E Tests - Pull Request / WC - latest | wcpay - merchant
❌ E2E Tests - Pull Request / WC - latest | subscriptions - merchant

Looks like there's a bunch of unrelated failures breaking the tests. Unrelated to this PR so merging.

Failed to load resource: the server responded with a status of 400 (Bad Request)
at Page. (../../../../../Users/ronrennick/Sites/solaris/woocommerce/tests/e2e/env/src/setup/jest.setup.js:164:3)
at Page._onLogEntryAdded (node_modules/puppeteer/lib/Page.js:224:12)

Order > Full refund › should be able to view a refunded transaction
TimeoutError: Element li.woocommerce-timeline-item (text: "A payment of $0.00 was successfully refunded.") not found

Order > Status Change › Change Status of order to Cancelled › When Order Status changed to Cancel, show Cancel Confirmation modal, change status to Cancel if confirmed
: Timeout - Async callback was not invoked within the 100000 ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 100000 ms timeout specified by jest.setTimeout.Error:

These are possibly due to recent release of Woo core 8.6?

@haszari haszari added this pull request to the merge queue Feb 18, 2024
Merged via the queue into develop with commit 371d8e7 Feb 18, 2024
24 of 26 checks passed
@haszari haszari deleted the fix/8175-show-tooltip-instead-of-deposit-guesstimate branch February 18, 2024 20:56
Jinksi added a commit that referenced this pull request Mar 28, 2024
Co-authored-by: Rua Haszard <rua@automattic.com>
Co-authored-by: Eric Jinks <3147296+Jinksi@users.noreply.github.com>
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.

Don't show an estimated deposit (payout) date in WooPayments UI
3 participants