diff --git a/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/block.tsx b/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/block.tsx
index c4b68bac929..68be42ddde5 100644
--- a/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/block.tsx
+++ b/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/block.tsx
@@ -2,7 +2,10 @@
* External dependencies
*/
import { __ } from '@wordpress/i18n';
-import { useShippingData } from '@woocommerce/base-context/hooks';
+import {
+ useCustomerData,
+ useShippingData,
+} from '@woocommerce/base-context/hooks';
import { ShippingRatesControl } from '@woocommerce/base-components/cart-checkout';
import {
getShippingRatesPackageCount,
@@ -19,15 +22,13 @@ import type {
PackageRateOption,
CartShippingPackageShippingRate,
} from '@woocommerce/types';
-import { CART_STORE_KEY } from '@woocommerce/block-data';
-import { useSelect } from '@wordpress/data';
import NoticeBanner from '@woocommerce/base-components/notice-banner';
+import type { ReactElement } from 'react';
/**
* Internal dependencies
*/
import './style.scss';
-import { shippingAddressHasValidationErrors } from '../../../../data/cart/utils';
/**
* Renders a shipping rate control option.
@@ -54,10 +55,7 @@ const renderShippingRatesControlOption = (
};
};
-const Block = ( {
- noShippingPlaceholder = null,
- shippingCostRequiresAddress = false,
-} ): React.ReactElement | null => {
+const Block = ( { noShippingPlaceholder = null } ): ReactElement | null => {
const { isEditor } = useEditorContext();
const {
@@ -68,9 +66,7 @@ const Block = ( {
isCollectable,
} = useShippingData();
- const shippingAddressPushed = useSelect( ( select ) => {
- return select( CART_STORE_KEY ).getFullShippingAddressPushed();
- } );
+ const { shippingAddress } = useCustomerData();
const filteredShippingRates = isCollectable
? shippingRates.map( ( shippingRatesPackage ) => {
@@ -86,25 +82,14 @@ const Block = ( {
} )
: shippingRates;
- const shippingAddress = useSelect( ( select ) => {
- return select( CART_STORE_KEY ).getCustomerData()?.shippingAddress;
- } );
-
if ( ! needsShipping ) {
return null;
}
- const shippingAddressHasErrors = ! shippingAddressHasValidationErrors();
- const addressComplete = isAddressComplete( shippingAddress );
-
const shippingRatesPackageCount =
getShippingRatesPackageCount( shippingRates );
- if (
- ( ! hasCalculatedShipping && ! shippingRatesPackageCount ) ||
- ( shippingCostRequiresAddress &&
- ( ! shippingAddressPushed || ! shippingAddressHasErrors ) )
- ) {
+ if ( ! hasCalculatedShipping && ! shippingRatesPackageCount ) {
return (
{ __(
@@ -114,6 +99,7 @@ const Block = ( {
);
}
+ const addressComplete = isAddressComplete( shippingAddress );
return (
<>
diff --git a/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/frontend.tsx b/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/frontend.tsx
index 9fced3fa2e7..dd67d39fba5 100644
--- a/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/frontend.tsx
+++ b/plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/frontend.tsx
@@ -20,7 +20,6 @@ const FrontendBlock = ( {
showStepNumber,
children,
className,
- shippingCostRequiresAddress = false,
}: {
title: string;
description: string;
@@ -32,7 +31,6 @@ const FrontendBlock = ( {
showStepNumber: boolean;
children: JSX.Element;
className?: string;
- shippingCostRequiresAddress: boolean;
} ) => {
const checkoutIsProcessing = useSelect( ( select ) =>
select( CHECKOUT_STORE_KEY ).isProcessing()
@@ -55,9 +53,7 @@ const FrontendBlock = ( {
description={ description }
showStepNumber={ showStepNumber }
>
-
+
{ children }
);
diff --git a/plugins/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/general-settings.tsx b/plugins/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/general-settings.tsx
index 3bd05a33dcf..fa42758b94a 100644
--- a/plugins/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/general-settings.tsx
+++ b/plugins/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/general-settings.tsx
@@ -3,7 +3,7 @@
*/
import { __ } from '@wordpress/i18n';
import { createInterpolateElement, useState } from '@wordpress/element';
-import { ADMIN_URL } from '@woocommerce/settings';
+import { ADMIN_URL, getSetting } from '@woocommerce/settings';
import { CHECKOUT_PAGE_ID } from '@woocommerce/block-settings';
import {
CheckboxControl,
@@ -47,6 +47,11 @@ const GeneralSettings = () => {
useSettingsContext();
const [ showCosts, setShowCosts ] = useState( !! settings.cost );
+ const shippingCostRequiresAddress = getSetting< boolean >(
+ 'shippingCostRequiresAddress',
+ false
+ );
+
return (
@@ -78,10 +83,23 @@ const GeneralSettings = () => {
'Enable local pickup',
'woo-gutenberg-products-block'
) }
- help={ __(
- 'When enabled, local pickup will appear as an option on the block based checkout.',
- 'woo-gutenberg-products-block'
- ) }
+ help={
+
+ { __(
+ 'When enabled, local pickup will appear as an option on the block based checkout.',
+ 'woo-gutenberg-products-block'
+ ) }
+ { shippingCostRequiresAddress ? (
+ <>
+
+ { __(
+ 'If local pickup is enabled, the "Hide shipping costs until an address is entered" setting will be ignored.',
+ 'woo-gutenberg-products-block'
+ ) }
+ >
+ ) : null }
+
+ }
/>
asset_api = $asset_api;
$this->asset_data_registry = $asset_data_registry;
+
+ $this->local_pickup_enabled = LocalPickupUtils::is_local_pickup_enabled();
}
/**
@@ -81,7 +90,7 @@ class ShippingController {
* @return boolean Whether shipping cost calculation should require an address to be entered before calculating.
*/
public function override_cost_requires_address_option( $value ) {
- if ( CartCheckoutUtils::is_checkout_block_default() ) {
+ if ( CartCheckoutUtils::is_checkout_block_default() && $this->local_pickup_enabled ) {
return 'no';
}
return $value;
@@ -94,7 +103,7 @@ class ShippingController {
* @return boolean Whether shipping should continue to be enabled/disabled.
*/
public function force_shipping_enabled( $enabled ) {
- if ( CartCheckoutUtils::is_checkout_block_default() ) {
+ if ( CartCheckoutUtils::is_checkout_block_default() && $this->local_pickup_enabled ) {
return true;
}
return $enabled;
@@ -141,48 +150,31 @@ class ShippingController {
*/
public function remove_shipping_settings( $settings ) {
- // Do not add the "Hide shipping costs until an address is entered" setting if the Checkout block is not used on the WC checkout page.
- if ( CartCheckoutUtils::is_checkout_block_default() ) {
- $settings = array_filter(
- $settings,
- function( $setting ) {
- return ! in_array(
- $setting['id'],
- array(
- 'woocommerce_shipping_cost_requires_address',
- ),
- true
- );
- }
- );
- }
-
// Do not add the shipping calculator setting if the Cart block is not used on the WC cart page.
if ( CartCheckoutUtils::is_cart_block_default() ) {
- // If the Cart is default, but not the checkout, we should ensure the 'Calculations' title is added to the
- // `woocommerce_shipping_cost_requires_address` options group, since it is attached to the
- // `woocommerce_enable_shipping_calc` option that we're going to remove later.
- if ( ! CartCheckoutUtils::is_checkout_block_default() ) {
- $calculations_title = '';
+ // Ensure the 'Calculations' title is added to the `woocommerce_shipping_cost_requires_address` options
+ // group, since it is attached to the `woocommerce_enable_shipping_calc` option that gets removed if the
+ // Cart block is in use.
+ $calculations_title = '';
- // Get Calculations title so we can add it to 'Hide shipping costs until an address is entered' option.
- foreach ( $settings as $setting ) {
- if ( 'woocommerce_enable_shipping_calc' === $setting['id'] ) {
- $calculations_title = $setting['title'];
- break;
- }
- }
-
- // Add Calculations title to 'Hide shipping costs until an address is entered' option.
- foreach ( $settings as $index => $setting ) {
- if ( 'woocommerce_shipping_cost_requires_address' === $setting['id'] ) {
- $settings[ $index ]['title'] = $calculations_title;
- $settings[ $index ]['checkboxgroup'] = 'start';
- break;
- }
+ // Get Calculations title so we can add it to 'Hide shipping costs until an address is entered' option.
+ foreach ( $settings as $setting ) {
+ if ( 'woocommerce_enable_shipping_calc' === $setting['id'] ) {
+ $calculations_title = $setting['title'];
+ break;
}
}
+
+ // Add Calculations title to 'Hide shipping costs until an address is entered' option.
+ foreach ( $settings as $index => $setting ) {
+ if ( 'woocommerce_shipping_cost_requires_address' === $setting['id'] ) {
+ $settings[ $index ]['title'] = $calculations_title;
+ $settings[ $index ]['checkboxgroup'] = 'start';
+ break;
+ }
+ }
+
$settings = array_filter(
$settings,
function( $setting ) {
@@ -196,6 +188,18 @@ class ShippingController {
}
);
}
+
+ if ( CartCheckoutUtils::is_checkout_block_default() && $this->local_pickup_enabled ) {
+ foreach ( $settings as $index => $setting ) {
+ if ( 'woocommerce_shipping_cost_requires_address' === $setting['id'] ) {
+ $settings[ $index ]['desc'] .= ' (' . __( 'Not available when using WooCommerce Blocks Local Pickup', 'woo-gutenberg-products-block' ) . ')';
+ $settings[ $index ]['disabled'] = true;
+ $settings[ $index ]['value'] = 'no';
+ break;
+ }
+ }
+ }
+
return $settings;
}
diff --git a/plugins/woocommerce-blocks/src/StoreApi/Utilities/LocalPickupUtils.php b/plugins/woocommerce-blocks/src/StoreApi/Utilities/LocalPickupUtils.php
index 836e3599668..29cff3b2142 100644
--- a/plugins/woocommerce-blocks/src/StoreApi/Utilities/LocalPickupUtils.php
+++ b/plugins/woocommerce-blocks/src/StoreApi/Utilities/LocalPickupUtils.php
@@ -6,6 +6,16 @@ namespace Automattic\WooCommerce\StoreApi\Utilities;
* the ShippingController, i.e. the OrderController.
*/
class LocalPickupUtils {
+
+ /**
+ * Checks if WC Blocks local pickup is enabled.
+ *
+ * @return bool True if local pickup is enabled.
+ */
+ public static function is_local_pickup_enabled() {
+ $pickup_location_settings = get_option( 'woocommerce_pickup_location_settings', [] );
+ return wc_string_to_bool( $pickup_location_settings['enabled'] ?? 'no' );
+ }
/**
* Gets a list of payment method ids that support the 'local-pickup' feature.
*
diff --git a/plugins/woocommerce-blocks/tests/e2e/specs/backend/checkout.test.js b/plugins/woocommerce-blocks/tests/e2e/specs/backend/checkout.test.js
index 28cc2296609..1329860ac68 100644
--- a/plugins/woocommerce-blocks/tests/e2e/specs/backend/checkout.test.js
+++ b/plugins/woocommerce-blocks/tests/e2e/specs/backend/checkout.test.js
@@ -22,7 +22,6 @@ import {
openWidgetEditor,
closeModalIfExists,
} from '../../utils.js';
-import { merchant as merchantUtils } from '../../../utils/merchant';
const block = {
name: 'Checkout',
@@ -128,79 +127,6 @@ describe( `${ block.name } Block`, () => {
await selectBlockByName( block.slug );
} );
- it( 'can toggle "hide shipping costs until an address is entered"', async () => {
- await selectBlockByName(
- 'woocommerce/checkout-shipping-methods-block'
- );
- const toggleLabel = await findLabelWithText(
- 'Hide shipping costs until an address is entered'
- );
- await toggleLabel.click();
- const shippingOptionsRequireAddressText = await page.$x(
- '//p[contains(text(), "Shipping options will be displayed here after entering your full shipping address.")]'
- );
- await expect( shippingOptionsRequireAddressText ).toHaveLength(
- 1
- );
-
- await toggleLabel.click();
- await expect( page ).toMatchElement(
- '.wc-block-components-shipping-rates-control'
- );
- } );
-
- it( 'toggles the same setting in shipping method and shipping methods blocks', async () => {
- await merchantUtils.goToLocalPickupSettingsPage();
- await merchantUtils.enableLocalPickup();
- await merchantUtils.saveLocalPickupSettingsPageWithRefresh();
-
- await visitBlockPage( `${ block.name } Block` );
- await expect( page ).toClick(
- '.wc-block-checkout__shipping-method button',
- { text: 'Shipping' }
- );
- await openSettingsSidebar();
- const toggleLabel = await findLabelWithText(
- 'Hide shipping costs until an address is entered'
- );
- await toggleLabel.click();
- const [ label ] = await page.$x(
- '//label[contains(., "Hide shipping costs until an address is entered")]'
- );
- const shippingMethodForValue = await page.evaluate(
- ( passedLabel ) => passedLabel.getAttribute( 'for' ),
- label
- );
- const shippingMethodSettingIsChecked = await page.evaluate(
- ( passedShippingMethodForValue ) =>
- document.getElementById( passedShippingMethodForValue )
- .checked,
- shippingMethodForValue
- );
- await expect( shippingMethodSettingIsChecked ).toBe( true );
- await selectBlockByName(
- 'woocommerce/checkout-shipping-methods-block'
- );
- const [ shippingMethodsLabel ] = await page.$x(
- '//label[contains(., "Hide shipping costs until an address is entered")]'
- );
- const shippingMethodsLabelForValue = await page.evaluate(
- ( passedShippingMethodsLabel ) =>
- passedShippingMethodsLabel.getAttribute( 'for' ),
- shippingMethodsLabel
- );
- const shippingMethodLabelIsChecked = await page.evaluate(
- ( passedShippingMethodsLabelForValue ) =>
- document.getElementById(
- passedShippingMethodsLabelForValue
- ).checked,
- shippingMethodsLabelForValue
- );
- expect( shippingMethodSettingIsChecked ).toBe(
- shippingMethodLabelIsChecked
- );
- } );
-
it( 'can enable dark mode inputs', async () => {
const toggleLabel = await findLabelWithText(
'Dark mode inputs'
diff --git a/plugins/woocommerce-blocks/tests/e2e/specs/merchant/local-pickup.test.ts b/plugins/woocommerce-blocks/tests/e2e/specs/merchant/local-pickup.test.ts
index 2cb4027e434..25138d8c4f6 100644
--- a/plugins/woocommerce-blocks/tests/e2e/specs/merchant/local-pickup.test.ts
+++ b/plugins/woocommerce-blocks/tests/e2e/specs/merchant/local-pickup.test.ts
@@ -106,32 +106,8 @@ describe( `Local Pickup Settings`, () => {
checkoutSlug: 'checkout-block',
} );
} );
- it( 'hides the correct shipping options if Checkout block is the default', async () => {
- await visitAdminPage(
- 'admin.php',
- 'page=wc-settings&tab=shipping§ion=options'
- );
- const hideShippingLabel = await findLabelWithText(
- 'Hide shipping costs until an address is entered'
- );
- expect( hideShippingLabel ).toBeUndefined();
-
- const shippingCalculatorLabel = await findLabelWithText(
- 'Enable the shipping calculator on the cart page'
- );
- expect( shippingCalculatorLabel ).toBeUndefined();
- } );
-
- it( 'does not hide the relevant setting if Cart or Checkout block is not the default', async () => {
- await setCartCheckoutPages( {
- cartSlug: 'cart',
- checkoutSlug: 'checkout',
- } );
-
- await visitAdminPage(
- 'admin.php',
- 'page=wc-settings&tab=advanced'
- );
+ it( 'shows the correct shipping options depending on whether Local Pickup is enabled', async () => {
+ await merchant.disableLocalPickup();
await visitAdminPage(
'admin.php',
'page=wc-settings&tab=shipping§ion=options'
@@ -141,10 +117,15 @@ describe( `Local Pickup Settings`, () => {
);
await expect( hideShippingLabel ).toHaveLength( 1 );
- const shippingCalculatorLabel = await page.$x(
- '//label[contains(., "Enable the shipping calculator on the cart page")]'
+ await merchant.enableLocalPickup();
+ await visitAdminPage(
+ 'admin.php',
+ 'page=wc-settings&tab=shipping§ion=options'
);
- await expect( shippingCalculatorLabel ).toHaveLength( 1 );
+ const modifiedHideShippingLabel = await page.$x(
+ '//label[contains(., "Hide shipping costs until an address is entered (Not available when using WooCommerce Blocks Local Pickup)")]'
+ );
+ await expect( modifiedHideShippingLabel ).toHaveLength( 1 );
} );
} );
diff --git a/plugins/woocommerce-blocks/tests/e2e/specs/shopper/cart-checkout/checkout.test.js b/plugins/woocommerce-blocks/tests/e2e/specs/shopper/cart-checkout/checkout.test.js
index c0cf8483e9a..f5a039feb60 100644
--- a/plugins/woocommerce-blocks/tests/e2e/specs/shopper/cart-checkout/checkout.test.js
+++ b/plugins/woocommerce-blocks/tests/e2e/specs/shopper/cart-checkout/checkout.test.js
@@ -334,40 +334,8 @@ describe( 'Shopper → Checkout', () => {
const NORMAL_SHIPPING_NAME = 'Normal Shipping';
const NORMAL_SHIPPING_PRICE = '$20.00';
- afterAll( async () => {
+ afterEach( async () => {
await merchant.login();
- await visitBlockPage( 'Checkout Block' );
- await openSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/checkout-shipping-methods-block'
- );
- const [ label ] = await page.$x(
- '//label[contains(., "Hide shipping costs until an address is entered")]'
- );
- const shippingMethodForValue = await page.evaluate(
- ( passedLabel ) => passedLabel.getAttribute( 'for' ),
- label
- );
- let shippingMethodSettingIsChecked = await page.evaluate(
- ( passedShippingMethodForValue ) =>
- document.getElementById( passedShippingMethodForValue )
- .checked,
- shippingMethodForValue
- );
- if ( ! shippingMethodSettingIsChecked ) {
- await setCheckbox(
- await getToggleIdByLabel(
- 'Hide shipping costs until an address is entered'
- )
- );
- }
- shippingMethodSettingIsChecked = await page.evaluate(
- ( passedShippingMethodForValue ) =>
- document.getElementById( passedShippingMethodForValue )
- .checked,
- shippingMethodForValue
- );
-
await merchantUtils.disableLocalPickup();
} );
@@ -401,159 +369,68 @@ describe( 'Shopper → Checkout', () => {
await expect( page ).toMatch( NORMAL_SHIPPING_NAME );
} );
- it( 'User sees the correct shipping options based on block settings', async () => {
- await preventCompatibilityNotice();
- await merchant.login();
- await visitBlockPage( 'Checkout Block' );
- await openSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/checkout-shipping-methods-block'
- );
-
- const [ label ] = await page.$x(
- '//label[contains(., "Hide shipping costs until an address is entered")]'
- );
- const shippingMethodForValue = await page.evaluate(
- ( passedLabel ) => passedLabel.getAttribute( 'for' ),
- label
- );
- let shippingMethodSettingIsChecked = await page.evaluate(
- ( passedShippingMethodForValue ) =>
- document.getElementById( passedShippingMethodForValue )
- .checked,
- shippingMethodForValue
- );
- if ( ! shippingMethodSettingIsChecked ) {
- await setCheckbox(
- await getToggleIdByLabel(
- 'Hide shipping costs until an address is entered'
- )
- );
- }
- shippingMethodSettingIsChecked = await page.evaluate(
- ( passedShippingMethodForValue ) =>
- document.getElementById( passedShippingMethodForValue )
- .checked,
- shippingMethodForValue
- );
- await expect( shippingMethodSettingIsChecked ).toBe( true );
- await saveOrPublish();
- await shopper.block.emptyCart();
- // Log out to have a fresh empty cart.
- await shopper.logout();
- await shopper.block.goToShop();
- await shopper.addToCartFromShopPage( SIMPLE_PHYSICAL_PRODUCT_NAME );
- await shopper.block.goToCheckout();
- // Expect no shipping options to be shown, but with a friendly message.
- const shippingOptionsRequireAddressText = await page.$x(
- '//p[contains(text(), "Shipping options will be displayed here after entering your full shipping address.")]'
- );
- expect( shippingOptionsRequireAddressText ).toHaveLength( 1 );
-
- // Enter the address and expect shipping options to be shown.
- await shopper.block.fillInCheckoutWithTestData();
- await expect( page ).toMatchElement(
- '.wc-block-components-shipping-rates-control'
- );
-
- // This sequence will reset the checkout form.
- await shopper.login();
- await shopper.logout();
-
- await preventCompatibilityNotice();
- await merchant.login();
- await visitBlockPage( 'Checkout Block' );
- await openSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/checkout-shipping-methods-block'
- );
-
- await unsetCheckbox(
- await getToggleIdByLabel(
- 'Hide shipping costs until an address is entered'
- )
- );
- await saveOrPublish();
- await shopper.block.emptyCart();
-
- await shopper.block.goToShop();
- await shopper.addToCartFromShopPage( SIMPLE_PHYSICAL_PRODUCT_NAME );
- await shopper.block.goToCheckout();
-
- // Expect the shipping options to be displayed without entering an address.
- await expect( page ).toMatchElement(
- '.wc-block-components-shipping-rates-control'
- );
- } );
-
it( 'User does not see shipping rates until full address is entered', async () => {
await preventCompatibilityNotice();
await merchant.login();
- await merchantUtils.enableLocalPickup();
- await merchantUtils.addLocalPickupLocation();
- await visitBlockPage( 'Checkout Block' );
- await openSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/checkout-shipping-methods-block'
+ await merchantUtils.disableLocalPickup();
+ await visitAdminPage(
+ 'admin.php',
+ 'page=wc-settings&tab=shipping§ion=options'
);
+ const hideShippingLabel = await page.$x(
+ '//label[contains(., "Hide shipping costs until an address is entered")]'
+ );
+ await hideShippingLabel[ 0 ].click();
- await setCheckbox(
- await getToggleIdByLabel(
- 'Hide shipping costs until an address is entered'
- )
+ const saveButton = await page.$x(
+ '//button[contains(., "Save changes")]'
);
- await saveOrPublish();
+ await saveButton[ 0 ].click();
+
+ await page.waitForXPath(
+ '//strong[contains(., "Your settings have been saved.")]'
+ );
+ await merchant.logout();
+
await shopper.block.emptyCart();
- // Log out to have a fresh empty cart.
- await shopper.logout();
await shopper.block.goToShop();
await shopper.addToCartFromShopPage( SIMPLE_PHYSICAL_PRODUCT_NAME );
await shopper.block.goToCheckout();
- // Expect no shipping options to be shown, but with a friendly message.
+ // // Expect no shipping options to be shown, but with a friendly message.
const shippingOptionsRequireAddressText = await page.$x(
'//p[contains(text(), "Shipping options will be displayed here after entering your full shipping address.")]'
);
- expect( shippingOptionsRequireAddressText ).toHaveLength( 1 );
-
- await expect( page ).toClick(
- '.wc-block-checkout__shipping-method button',
- { text: 'Shipping' }
- );
+ await expect( shippingOptionsRequireAddressText ).toHaveLength( 1 );
// Enter the address but not city and expect shipping options not to be shown.
- await shopper.block.fillInCheckoutWithTestData( { city: '' } );
+ await shopper.block.fillInCheckoutWithTestData( { postcode: '' } );
await expect( page ).not.toMatchElement(
'.wc-block-components-shipping-rates-control'
);
+ await merchant.login();
+ await merchantUtils.enableLocalPickup();
+ await merchantUtils.addLocalPickupLocation();
+ await merchant.logout();
+
// This sequence will reset the checkout form.
await shopper.login();
await shopper.logout();
- await preventCompatibilityNotice();
- await merchant.login();
- await visitBlockPage( 'Checkout Block' );
- await openSettingsSidebar();
- await selectBlockByName(
- 'woocommerce/checkout-shipping-methods-block'
- );
-
- await unsetCheckbox(
- await getToggleIdByLabel(
- 'Hide shipping costs until an address is entered'
- )
- );
- await saveOrPublish();
await shopper.block.emptyCart();
-
await shopper.block.goToShop();
await shopper.addToCartFromShopPage( SIMPLE_PHYSICAL_PRODUCT_NAME );
await shopper.block.goToCheckout();
+ await expect( page ).toClick(
+ '.wc-block-checkout__shipping-method button',
+ { text: 'Shipping' }
+ );
+
// Expect the shipping options to be displayed without entering an address.
await expect( page ).toMatchElement(
'.wc-block-components-shipping-rates-control'
diff --git a/plugins/woocommerce-blocks/tests/utils/shopper.js b/plugins/woocommerce-blocks/tests/utils/shopper.js
index 2184c7ec5fb..d3302451340 100644
--- a/plugins/woocommerce-blocks/tests/utils/shopper.js
+++ b/plugins/woocommerce-blocks/tests/utils/shopper.js
@@ -432,7 +432,7 @@ export const shopper = {
};
// We need to wait for the shipping total to update before we assert.
- // As no dom elements are being added or removed, we cannot use `await page.waitForSelectot()`
+ // As no dom elements are being added or removed, we cannot use `await page.waitForSelector()`
// so instead we check when the `via ` text changes
await page.$eval(
'.wc-block-components-totals-shipping .wc-block-components-totals-shipping__via',