Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Display shipping calculator link for guests shopper #11442

Merged
merged 3 commits into from
Oct 25, 2023

Conversation

tarunvijwani
Copy link

@tarunvijwani tarunvijwani commented Oct 25, 2023

What

Fixes #11435

Why

  • The shipping calculator link was displayed based on the isAddressComplete value.
  • The shipping calculator was not displayed for the scenarios where the address was incomplete, but the formatted address was present.
  • This made the shipping calculator not getting displayed for guest shoppers.
  • With this, conditions are changed from isAddressCompletea to formatShippingAddress to display the shipping calculator if the formatted address is present.
  • Added the unit test case for the condition for formatted address.

Testing Instructions

Case 1

  1. Go to the WooCommerce settings page: wp-admin/admin.php?page=wc-settings.
  2. Change 'Default customer location' to No location by default.
  3. Remove any default(fallback) shipping rates.
  4. Open your site in a private session(incognito mode).
  5. Add some products to the cart.
  6. Go to the cart page, and confirm the "Add an address for shipping rates" link is present in the shipping calculator.
  7. Click on the link, and confirm it is working as expected.
  8. Open your site in a regular session where you're already logged in and have placed an order before.
  9. Add some products to the cart.
  10. Go to the cart page, confirm the shipping address, and "change address" link present in the shipping calculator.
  11. Click on the link, and confirm it is working as expected.

Case 2

  1. Go to the WooCommerce settings page: wp-admin/admin.php?page=wc-settings.
  2. Change 'Default customer location' to No location by default.
  3. Add any default(fallback) shipping rates.
  4. Open your site in a private session(incognito mode).
  5. Add some products to the cart.
  6. Go to the cart page, and confirm the shipping calculator is hidden and default shipping rates are visible
  7. Open your site in a regular session where you're already logged in and have placed an order before.
  8. Add some products to the cart.
  9. Go to the cart page, confirm the shipping address, and "change address" link present in the shipping calculator.
  10. Click on the link, and confirm it is working as expected.

Case 3

  1. Go to the WooCommerce settings page: wp-admin/admin.php?page=wc-settings.
  2. Change 'Default customer location' to Shop country/region.
  3. Add the store's address.
  4. Add the rates that cover the store's address
  5. As a guest/not logged-in user, visit the cart page with some products added already.
  6. Confirm the shipping address calculator link to change or add a new address is displayed.
  • Do not include in the Testing Notes
  • Should be tested by the development team exclusively

Screenshots or screencast

Before After
image image

WooCommerce Visibility

Required:

  • WooCommerce Core
  • Feature plugin
  • Experimental
  • N/A

Checklist

Required:

  • This PR has either a [type] label or a [skip-changelog] label.
  • This PR is assigned to a milestone.

Conditional:

  • This PR has a changelog description (if [skip-changelog] label is not present).
  • This PR adds/removes a feature flag & I've updated this doc.
  • This PR adds/removes an experimental interfaces, and I've updated this doc.
  • This PR has been accessibility tested.
  • This PR has had any necessary documentation added/updated.

Changelog

Display shipping calculator link for guests shoppers.

- Earlier, shipping calculator was getting displayed based on the isAddressComplete value.
- For the scenarios where address was incomplete but formatted address was present shipping calculator was not getting displayed.
- This made shipping calculator not getting displayed for guest shoppers.
- With this, conditions are changed from isAddressComplete to formatShippingAddress to display shipping calculator if formatted address is present.
- Add unit test case for the condition for formatted address.
@tarunvijwani tarunvijwani self-assigned this Oct 25, 2023
@tarunvijwani tarunvijwani added the type: bug The issue/PR concerns a confirmed bug. label Oct 25, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Oct 25, 2023

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-11442.zip

Script Dependencies Report

There is no changed script dependency between this branch and trunk.

This comment was automatically generated by the ./github/compare-assets action.

TypeScript Errors Report

  • Files with errors: 523
  • Total errors: 2340

⚠️ ⚠️ This PR introduces new TS errors on 1 files:

assets/js/base/components/cart-checkout/totals/shipping/test/index.tsx

comments-aggregator

@github-actions
Copy link
Contributor

github-actions bot commented Oct 25, 2023

Size Change: +41 B (0%)

Total Size: 1.53 MB

Filename Size Change
build/cart-frontend.js 28.9 kB +2 B (0%)
build/cart.js 39.5 kB +14 B (0%)
build/checkout-blocks/order-summary-shipping-frontend.js 20.5 kB -2 B (0%)
build/checkout.js 42.6 kB +27 B (0%)
ℹ️ View Unchanged
Filename Size
build/3810-frontend.js 18.3 kB
build/4124-frontend.js 23.9 kB
build/8280-frontend.js 8.48 kB
build/active-filters-frontend.js 6.56 kB
build/active-filters-rtl.css 1.68 kB
build/active-filters-wrapper-frontend.js 6.88 kB
build/active-filters-wrapper-rtl.css 1.53 kB
build/active-filters-wrapper.css 1.53 kB
build/active-filters.css 1.68 kB
build/active-filters.js 6.04 kB
build/add-to-cart-form-rtl.css 375 B
build/add-to-cart-form.css 373 B
build/all-products-frontend.js 9.86 kB
build/all-products-rtl.css 4.53 kB
build/all-products.css 4.53 kB
build/all-products.js 39.8 kB
build/all-reviews-rtl.css 1.79 kB
build/all-reviews.css 1.79 kB
build/all-reviews.js 7.84 kB
build/attribute-filter-frontend.js 19.8 kB
build/attribute-filter-rtl.css 4.03 kB
build/attribute-filter-wrapper-frontend.js 21 kB
build/attribute-filter-wrapper-rtl.css 1.65 kB
build/attribute-filter-wrapper.css 1.65 kB
build/attribute-filter.css 4.01 kB
build/attribute-filter.js 11.2 kB
build/base-components-stock-filter-wrapper~attribute-filter-wrapper~rating-filter-wrapper-style.scss-rtl.css 2.97 kB
build/base-components-stock-filter-wrapper~attribute-filter-wrapper~rating-filter-wrapper-style.scss.css 2.97 kB
build/blocks-checkout.js 33.9 kB
build/blocks-components.js 8.53 kB
build/breadcrumbs-rtl.css 234 B
build/breadcrumbs.css 234 B
build/breadcrumbs.js 2.03 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.4 kB
build/cart-blocks/cart-accepted-payment-methods-style.js 153 B
build/cart-blocks/cart-cross-sells-frontend.js 268 B
build/cart-blocks/cart-cross-sells-products-frontend.js 5.55 kB
build/cart-blocks/cart-cross-sells-products-style.js 153 B
build/cart-blocks/cart-cross-sells-style.js 269 B
build/cart-blocks/cart-express-payment-frontend.js 5.36 kB
build/cart-blocks/cart-express-payment-style.js 155 B
build/cart-blocks/cart-items-frontend.js 273 B
build/cart-blocks/cart-items-style.js 240 B
build/cart-blocks/cart-line-items-frontend.js 9.23 kB
build/cart-blocks/cart-line-items-style.js 153 B
build/cart-blocks/cart-order-summary-frontend.js 20.5 kB
build/cart-blocks/cart-order-summary-style.js 341 B
build/cart-blocks/cart-totals-frontend.js 290 B
build/cart-blocks/cart-totals-style.js 253 B
build/cart-blocks/empty-cart-frontend.js 367 B
build/cart-blocks/empty-cart-style.js 365 B
build/cart-blocks/filled-cart-frontend.js 605 B
build/cart-blocks/filled-cart-style.js 333 B
build/cart-blocks/order-summary-coupon-form-frontend.js 20.8 kB
build/cart-blocks/order-summary-coupon-form-style.js 155 B
build/cart-blocks/order-summary-discount-frontend.js 20.9 kB
build/cart-blocks/order-summary-discount-style.js 155 B
build/cart-blocks/order-summary-fee-frontend.js 288 B
build/cart-blocks/order-summary-fee-style.js 153 B
build/cart-blocks/order-summary-heading-frontend.js 346 B
build/cart-blocks/order-summary-heading-style.js 351 B
build/cart-blocks/order-summary-shipping-frontend.js 20.5 kB
build/cart-blocks/order-summary-shipping-style.js 154 B
build/cart-blocks/order-summary-subtotal-frontend.js 291 B
build/cart-blocks/order-summary-subtotal-style.js 154 B
build/cart-blocks/order-summary-taxes-frontend.js 456 B
build/cart-blocks/order-summary-taxes-style.js 202 B
build/cart-blocks/proceed-to-checkout-frontend.js 7.62 kB
build/cart-blocks/proceed-to-checkout-style.js 1.08 kB
build/cart-rtl.css 9.23 kB
build/cart.css 9.22 kB
build/catalog-sorting-rtl.css 259 B
build/catalog-sorting.css 259 B
build/catalog-sorting.js 1.69 kB
build/checkout-blocks/actions-frontend.js 8.11 kB
build/checkout-blocks/actions-style.js 1.01 kB
build/checkout-blocks/billing-address-frontend.js 9.91 kB
build/checkout-blocks/billing-address-style.js 630 B
build/checkout-blocks/contact-information-frontend.js 1.7 kB
build/checkout-blocks/contact-information-style.js 653 B
build/checkout-blocks/express-payment-frontend.js 5.84 kB
build/checkout-blocks/fields-frontend.js 297 B
build/checkout-blocks/fields-style.js 271 B
build/checkout-blocks/order-note-frontend.js 674 B
build/checkout-blocks/order-summary-cart-items-frontend.js 6.47 kB
build/checkout-blocks/order-summary-cart-items-style.js 153 B
build/checkout-blocks/order-summary-coupon-form-frontend.js 20.9 kB
build/checkout-blocks/order-summary-coupon-form-style.js 155 B
build/checkout-blocks/order-summary-discount-frontend.js 20.9 kB
build/checkout-blocks/order-summary-discount-style.js 154 B
build/checkout-blocks/order-summary-fee-frontend.js 291 B
build/checkout-blocks/order-summary-fee-style.js 155 B
build/checkout-blocks/order-summary-frontend.js 20.5 kB
build/checkout-blocks/order-summary-shipping-style.js 154 B
build/checkout-blocks/order-summary-style.js 342 B
build/checkout-blocks/order-summary-subtotal-frontend.js 289 B
build/checkout-blocks/order-summary-subtotal-style.js 155 B
build/checkout-blocks/order-summary-taxes-frontend.js 456 B
build/checkout-blocks/order-summary-taxes-style.js 201 B
build/checkout-blocks/payment-frontend.js 14.5 kB
build/checkout-blocks/payment-style.js 509 B
build/checkout-blocks/pickup-options-frontend.js 11.2 kB
build/checkout-blocks/pickup-options-style.js 480 B
build/checkout-blocks/shipping-address-frontend.js 9.87 kB
build/checkout-blocks/shipping-address-style.js 517 B
build/checkout-blocks/shipping-method-frontend.js 1.96 kB
build/checkout-blocks/shipping-method-style.js 1.43 kB
build/checkout-blocks/shipping-methods-frontend.js 19 kB
build/checkout-blocks/shipping-methods-style.js 456 B
build/checkout-blocks/terms-frontend.js 1.55 kB
build/checkout-blocks/terms-style.js 1.02 kB
build/checkout-blocks/totals-frontend.js 334 B
build/checkout-blocks/totals-style.js 301 B
build/checkout-frontend.js 30.5 kB
build/checkout-rtl.css 8.46 kB
build/checkout.css 8.45 kB
build/classic-shortcode-rtl.css 242 B
build/classic-shortcode.css 241 B
build/classic-shortcode.js 4.63 kB
build/collection-filters.js 1.63 kB
build/collection-price-filter-frontend.js 577 B
build/collection-price-filter-rtl.css 1.28 kB
build/collection-price-filter.css 1.28 kB
build/collection-price-filter.js 3.43 kB
build/customer-account-rtl.css 410 B
build/customer-account.css 409 B
build/customer-account.js 3.17 kB
build/featured-category-rtl.css 974 B
build/featured-category.css 973 B
build/featured-category.js 13.6 kB
build/featured-product-rtl.css 1.02 kB
build/featured-product.css 1.02 kB
build/featured-product.js 13.7 kB
build/filter-wrapper-frontend.js 14.5 kB
build/filter-wrapper-rtl.css 378 B
build/filter-wrapper.css 378 B
build/filter-wrapper.js 2.37 kB
build/handpicked-products.js 7.22 kB
build/legacy-template-rtl.css 240 B
build/legacy-template.css 240 B
build/legacy-template.js 7.73 kB
build/mini-cart-component-frontend.js 30.7 kB
build/mini-cart-contents-block/cart-button-frontend.js 1.86 kB
build/mini-cart-contents-block/cart-button-style.js 1.23 kB
build/mini-cart-contents-block/checkout-button-frontend.js 1.95 kB
build/mini-cart-contents-block/checkout-button-style.js 1.43 kB
build/mini-cart-contents-block/empty-cart-frontend.js 374 B
build/mini-cart-contents-block/empty-cart-style.js 378 B
build/mini-cart-contents-block/filled-cart-frontend.js 284 B
build/mini-cart-contents-block/filled-cart-style.js 288 B
build/mini-cart-contents-block/footer-frontend.js 3.87 kB
build/mini-cart-contents-block/footer-style.js 1.95 kB
build/mini-cart-contents-block/items-frontend.js 247 B
build/mini-cart-contents-block/items-style.js 251 B
build/mini-cart-contents-block/products-table-frontend.js 8.58 kB
build/mini-cart-contents-block/shopping-button-frontend.js 501 B
build/mini-cart-contents-block/shopping-button-style.js 361 B
build/mini-cart-contents-block/title-frontend.js 2.04 kB
build/mini-cart-contents-block/title-items-counter-frontend.js 1.74 kB
build/mini-cart-contents-block/title-items-counter-style.js 1.2 kB
build/mini-cart-contents-block/title-label-frontend.js 1.68 kB
build/mini-cart-contents-block/title-label-style.js 1.14 kB
build/mini-cart-contents-block/title-style.js 1.38 kB
build/mini-cart-contents-rtl.css 3.21 kB
build/mini-cart-contents.css 3.2 kB
build/mini-cart-contents.js 15.9 kB
build/mini-cart-frontend.js 2.35 kB
build/mini-cart-rtl.css 2.44 kB
build/mini-cart.css 2.44 kB
build/mini-cart.js 6 kB
build/order-confirmation-additional-information-rtl.css 367 B
build/order-confirmation-additional-information.css 367 B
build/order-confirmation-additional-information.js 1.57 kB
build/order-confirmation-billing-address-rtl.css 398 B
build/order-confirmation-billing-address.css 397 B
build/order-confirmation-billing-address.js 1.55 kB
build/order-confirmation-billing-wrapper.js 1.5 kB
build/order-confirmation-downloads-rtl.css 477 B
build/order-confirmation-downloads-wrapper.js 1.57 kB
build/order-confirmation-downloads.css 478 B
build/order-confirmation-downloads.js 1.9 kB
build/order-confirmation-shipping-address-rtl.css 399 B
build/order-confirmation-shipping-address.css 398 B
build/order-confirmation-shipping-address.js 1.55 kB
build/order-confirmation-shipping-wrapper.js 1.5 kB
build/order-confirmation-status-rtl.css 280 B
build/order-confirmation-status.css 280 B
build/order-confirmation-status.js 1.54 kB
build/order-confirmation-summary-rtl.css 460 B
build/order-confirmation-summary.css 460 B
build/order-confirmation-summary.js 1.75 kB
build/order-confirmation-totals-rtl.css 594 B
build/order-confirmation-totals-wrapper.js 1.79 kB
build/order-confirmation-totals.css 593 B
build/order-confirmation-totals.js 2.16 kB
build/packages-style-rtl.css 5.08 kB
build/packages-style.css 5.08 kB
build/page-content-wrapper.js 1.85 kB
build/price-filter-frontend.js 7.86 kB
build/price-filter-rtl.css 2.68 kB
build/price-filter-wrapper-frontend.js 8.08 kB
build/price-filter-wrapper-rtl.css 2.53 kB
build/price-filter-wrapper.css 2.53 kB
build/price-filter.css 2.67 kB
build/price-filter.js 7.42 kB
build/price-format.js 913 B
build/product-add-to-cart-frontend.js 8.11 kB
build/product-add-to-cart-rtl.css 1.37 kB
build/product-add-to-cart.css 1.38 kB
build/product-add-to-cart.js 8.35 kB
build/product-average-rating-frontend.js 1.88 kB
build/product-average-rating.js 1.4 kB
build/product-best-sellers.js 7.04 kB
build/product-button-frontend.js 4.93 kB
build/product-button-interactivity-frontend.js 8.48 kB
build/product-button-rtl.css 1.14 kB
build/product-button.css 1.14 kB
build/product-button.js 4.64 kB
build/product-categories-rtl.css 654 B
build/product-categories.css 654 B
build/product-categories.js 2.58 kB
build/product-category.js 7.97 kB
build/product-collection.js 13.4 kB
build/product-details-rtl.css 397 B
build/product-details.css 394 B
build/product-gallery-frontend.js 638 B
build/product-gallery-large-image-frontend.js 585 B
build/product-gallery-large-image-next-previous.js 4.15 kB
build/product-gallery-large-image.js 2.36 kB
build/product-gallery-pager.js 3.38 kB
build/product-gallery-rtl.css 1.15 kB
build/product-gallery-thumbnails.js 3.8 kB
build/product-gallery.css 1.15 kB
build/product-gallery.js 9.4 kB
build/product-image-frontend.js 2.89 kB
build/product-image-gallery-rtl.css 307 B
build/product-image-gallery.css 306 B
build/product-image-rtl.css 996 B
build/product-image.css 994 B
build/product-image.js 2.53 kB
build/product-new.js 7.3 kB
build/product-on-sale.js 7.29 kB
build/product-price-frontend.js 2.81 kB
build/product-price-rtl.css 644 B
build/product-price.css 643 B
build/product-price.js 2.33 kB
build/product-query-rtl.css 350 B
build/product-query.css 349 B
build/product-query.js 11.5 kB
build/product-rating-counter-frontend.js 2.19 kB
build/product-rating-counter.js 1.71 kB
build/product-rating-frontend.js 2.53 kB
build/product-rating-rtl.css 247 B
build/product-rating-stars-frontend.js 2.43 kB
build/product-rating-stars-rtl.css 899 B
build/product-rating-stars.css 900 B
build/product-rating-stars.js 1.95 kB
build/product-rating.css 246 B
build/product-rating.js 2.05 kB
build/product-results-count-rtl.css 230 B
build/product-results-count.css 230 B
build/product-results-count.js 1.65 kB
build/product-reviews-rtl.css 458 B
build/product-reviews.css 458 B
build/product-sale-badge-frontend.js 2.01 kB
build/product-sale-badge-rtl.css 437 B
build/product-sale-badge.css 437 B
build/product-sale-badge.js 1.52 kB
build/product-search-rtl.css 419 B
build/product-search.css 417 B
build/product-search.js 2.6 kB
build/product-sku-frontend.js 2.02 kB
build/product-sku-rtl.css 240 B
build/product-sku.css 239 B
build/product-sku.js 1.53 kB
build/product-stock-indicator-frontend.js 2.19 kB
build/product-stock-indicator-rtl.css 232 B
build/product-stock-indicator.css 232 B
build/product-stock-indicator.js 1.71 kB
build/product-summary-frontend.js 2.35 kB
build/product-summary-rtl.css 549 B
build/product-summary.css 549 B
build/product-summary.js 1.87 kB
build/product-tag.js 7.5 kB
build/product-template-rtl.css 536 B
build/product-template.css 535 B
build/product-template.js 2.79 kB
build/product-title-frontend.js 2.31 kB
build/product-title-rtl.css 693 B
build/product-title.css 694 B
build/product-title.js 2.04 kB
build/product-top-rated.js 7.57 kB
build/products-by-attribute.js 8.02 kB
build/rating-filter-frontend.js 18.7 kB
build/rating-filter-rtl.css 4.08 kB
build/rating-filter-wrapper-frontend.js 19.7 kB
build/rating-filter-wrapper-rtl.css 1.73 kB
build/rating-filter-wrapper.css 1.73 kB
build/rating-filter.css 4.07 kB
build/rating-filter.js 5.79 kB
build/reviews-by-category-rtl.css 1.79 kB
build/reviews-by-category.css 1.79 kB
build/reviews-by-category.js 11.4 kB
build/reviews-by-product-rtl.css 1.79 kB
build/reviews-by-product.css 1.79 kB
build/reviews-by-product.js 12.7 kB
build/reviews-frontend.js 6.52 kB
build/single-product-rtl.css 378 B
build/single-product.css 378 B
build/single-product.js 11 kB
build/stock-filter-frontend.js 18.9 kB
build/stock-filter-rtl.css 3.88 kB
build/stock-filter-wrapper-frontend.js 19.9 kB
build/stock-filter-wrapper-rtl.css 1.49 kB
build/stock-filter-wrapper.css 1.49 kB
build/stock-filter.css 3.87 kB
build/stock-filter.js 6.42 kB
build/store-notices.js 1.67 kB
build/wc-blocks-classic-template-revert-button-style-rtl.css 240 B
build/wc-blocks-classic-template-revert-button-style.css 239 B
build/wc-blocks-classic-template-revert-button.js 1.18 kB
build/wc-blocks-data.js 19.6 kB
build/wc-blocks-editor-style-rtl.css 7.18 kB
build/wc-blocks-editor-style.css 7.17 kB
build/wc-blocks-google-analytics.js 1.16 kB
build/wc-blocks-jetpack-woocommerce-analytics.js 750 B
build/wc-blocks-middleware.js 735 B
build/wc-blocks-registry.js 2.74 kB
build/wc-blocks-rtl.css 2.47 kB
build/wc-blocks-shared-context.js 850 B
build/wc-blocks-shared-hocs.js 1.4 kB
build/wc-blocks-vendors.js 61.7 kB
build/wc-blocks.css 2.48 kB
build/wc-blocks.js 2.61 kB
build/wc-interactivity.js 10.7 kB
build/wc-payment-method-bacs.js 406 B
build/wc-payment-method-cheque.js 401 B
build/wc-payment-method-cod.js 508 B
build/wc-payment-method-paypal.js 437 B
build/wc-settings.js 2.4 kB
build/wc-shipping-method-pickup-location.js 29.3 kB

compressed-size-action

@tarunvijwani tarunvijwani changed the title Display shipping calculator for guests Display shipping calculator link for guests shopper Oct 25, 2023
@tarunvijwani tarunvijwani marked this pull request as ready for review October 25, 2023 08:34
@woocommercebot woocommercebot requested review from a team and senadir and removed request for a team October 25, 2023 08:35
@tarunvijwani tarunvijwani added status: needs review block: cart Issues related to the cart block. block: checkout Issues related to the checkout block. labels Oct 25, 2023
@tarunvijwani tarunvijwani requested review from rubikuserbot and mikejolley and removed request for rubikuserbot October 25, 2023 08:35
@ralucaStan
Copy link
Contributor

@tarunvijwani to be super safe add also testing steps where the shipping address has all fields empty and the Add and address link to see shipping options link appears. That would imply not defaulting shipping to the store address

const hasFormattedAddress = !! formatShippingAddress( shippingAddress );

// If we don't have formatted address, and we're not in the editor, don't show anything.
if ( ! hasFormattedAddress && ! isEditor ) {
Copy link
Contributor

Choose a reason for hiding this comment

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

This comments is redundant as it explains the code, but does not provide context. What case are we actually covering with this and why are we returning nothing?

Copy link
Contributor

Choose a reason for hiding this comment

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

Yup, maybe the comment can explain why hasFormattedAddress would be false? (i.e. the shopper hasn't entered one)

Copy link
Author

@tarunvijwani tarunvijwani Oct 25, 2023

Choose a reason for hiding this comment

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

@ralucaStan Thank you for the suggestion, I will update the comment and add more testing steps.

What case are we actually covering with this and why are we returning nothing?

If there is no default customer location in the store and the customer has not entered their address, but there is a default shipping method available for all locations, then we will hide the shipping calculator. This is because the store already has a default shipping address. This change was made in response to this request: #8141 (comment)

Here are the steps to reproduce this behavior:

  1. Go to the WooCommerce settings page: wp-admin/admin.php?page=wc-settings.
  2. Change 'Default customer location' to No location by default.
  3. Add any default(fallback) shipping rates.
  4. Open your site in a private session(incognito mode).
  5. Add some products to the cart.
  6. Go to the cart page, and confirm the shipping calculator is hidden and default shipping rates are visible
image image image

Copy link
Member

Choose a reason for hiding this comment

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

I understand that we have this rather complex sutation because we choose to have two buttons, one named "change address" and one named "enter an address to view shipping rates"? Otherwise I don't understand why we need to check if a formatted address is present to begin with to see the calculator.

Copy link
Author

Choose a reason for hiding this comment

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

@senadir Yes, it wouldn't make sense to show the 'Add address for shipping rates' link when default rates are already displayed. Similarly, we should not display the 'Change address' link without an address. Hence we decided to hide it in this condition.

Copy link
Member

Choose a reason for hiding this comment

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

What happens when you have rates but not an address? Do we show nothing at that step?

Copy link
Author

Choose a reason for hiding this comment

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

@senadir No, we don't show a calculator in that scenario. It will be addressed in the https://github.com/woocommerce/woocommerce-blocks/issues/10327 ticket.

Copy link
Contributor

@opr opr 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 fine besides the comment Raluca mentioned, a couple of the testing steps seem slightly redundant, why make the tester add rates for California, then update their store's address? We could just specify that there should be rates that cover the store's address couldn't we?

I tested with:

  • above steps
  • no shipping rates for the default location
  • only local pickup for the default location

Since this works OK and the updates are only comments/testing steps I will approve.

const hasFormattedAddress = !! formatShippingAddress( shippingAddress );

// If we don't have formatted address, and we're not in the editor, don't show anything.
if ( ! hasFormattedAddress && ! isEditor ) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Yup, maybe the comment can explain why hasFormattedAddress would be false? (i.e. the shopper hasn't entered one)

- Update the comments to add the reason to hide shipping calculator.
- When there is no default customer location in the store and the customer has not entered their address, but there is a default shipping method available for all locations, then we will hide the shipping calculator.
@tarunvijwani
Copy link
Author

@opr I have updated the testing steps and comments. I'd appreciate it if you could review them before I merge the PR. Thank you so much!

Copy link
Contributor

@opr opr left a comment

Choose a reason for hiding this comment

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

Thanks I re-tested this with this configuration:

  • no default location,
  • location-specific methods and fallback methods enabled

I feel that the calculator should be shown here. Why don't we show it in this case?

@tarunvijwani
Copy link
Author

Thanks I re-tested this with this configuration:

  • no default location,
  • location-specific methods and fallback methods enabled

I feel that the calculator should be shown here. Why don't we show it in this case?

@opr There is a discussion ongoing about which text to show for the calculator link. Click here #11442 (comment) for more information.

I feel we should tackle that in a different PR. Happy to hear your thoughts about it.

@opr
Copy link
Contributor

opr commented Oct 25, 2023

@tarunvijwani - ok if you create a follow-up issue to tackle this then that should be OK!

Copy link
Contributor

@opr opr left a comment

Choose a reason for hiding this comment

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

Approving on the basis that a follow-up ticket will be created to tackle the issue of the calculator not showing if:

  • No location set by default,
  • Location-specific methods and fallback methods available

@tarunvijwani
Copy link
Author

@opr I have updated the testing steps and comments. I'd appreciate it if you could review them before I merge the PR. Thank you so much!

We already have a separate ticket for it. It will be addressed in the woocommerce/woocommerce#42280 ticket.

@tarunvijwani tarunvijwani added this to the 11.5.0 milestone Oct 25, 2023
@tarunvijwani tarunvijwani merged commit 484f5f5 into trunk Oct 25, 2023
32 checks passed
@tarunvijwani tarunvijwani deleted the fix/11435-display-shipping-calculator-for-guests branch October 25, 2023 18:50
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: cart Issues related to the cart block. block: checkout Issues related to the checkout block. type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Shipping calculator link not present for guest/non logged in customers
4 participants