diff --git a/plugins/woocommerce/changelog/add-39644 b/plugins/woocommerce/changelog/add-39644 new file mode 100644 index 000000000000..9c58d5f7c47f --- /dev/null +++ b/plugins/woocommerce/changelog/add-39644 @@ -0,0 +1,4 @@ +Significance: minor +Type: enhancement + +Remove 'List price' and 'Sale price' fields from the General tab diff --git a/plugins/woocommerce/src/Internal/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php b/plugins/woocommerce/src/Internal/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php index afc8b0d4370f..170609065fcd 100644 --- a/plugins/woocommerce/src/Internal/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php +++ b/plugins/woocommerce/src/Internal/Features/ProductBlockEditor/ProductTemplates/SimpleProductTemplate.php @@ -234,72 +234,6 @@ private function add_general_group_blocks() { ) ); - // This is needed until hide conditions can be applied to core blocks. - $pricing_conditional_wrapper = $basic_details->add_block( - array( - 'id' => 'product-pricing-conditional-wrapper', - 'blockName' => 'woocommerce/conditional', - 'order' => 30, - 'hideConditions' => array( - array( - 'expression' => 'editedProduct.type === "grouped"', - ), - ), - ) - ); - - $pricing_wrapper = Features::is_enabled( 'product-grouped' ) ? $pricing_conditional_wrapper : $basic_details; - $pricing_columns = $pricing_wrapper->add_block( - array( - 'id' => 'product-pricing-columns', - 'blockName' => 'core/columns', - 'order' => 30, - ) - ); - $pricing_column_1 = $pricing_columns->add_block( - array( - 'id' => 'product-pricing-column-1', - 'blockName' => 'core/column', - 'order' => 10, - 'attributes' => array( - 'templateLock' => 'all', - ), - ) - ); - $pricing_column_1->add_block( - array( - 'id' => 'product-regular-price', - 'blockName' => 'woocommerce/product-regular-price-field', - 'order' => 10, - 'attributes' => array( - 'name' => 'regular_price', - 'label' => __( 'List price', 'woocommerce' ), - /* translators: PricingTab: This is a link tag to the pricing tab. */ - 'help' => __( 'Manage more settings in Pricing.', 'woocommerce' ), - ), - ) - ); - $pricing_column_2 = $pricing_columns->add_block( - array( - 'id' => 'product-pricing-column-2', - 'blockName' => 'core/column', - 'order' => 20, - 'attributes' => array( - 'templateLock' => 'all', - ), - ) - ); - $pricing_column_2->add_block( - array( - 'id' => 'product-sale-price', - 'blockName' => 'woocommerce/product-sale-price-field', - 'order' => 10, - 'attributes' => array( - 'label' => __( 'Sale price', 'woocommerce' ), - ), - ) - ); - // Description section. $description_section = $general_group->add_section( array( diff --git a/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js index c9cf119bbf8a..fc23a9fd209a 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/create-simple-product-block-editor.spec.js @@ -50,18 +50,22 @@ test.describe( 'General tab', () => { ) .last() .fill( productData.summary ); - await page - .locator( - '[id^="wp-block-woocommerce-product-regular-price-field"]' - ) - .first() - .fill( productData.productPrice ); - await page - .locator( - '[id^="wp-block-woocommerce-product-sale-price-field"]' - ) - .first() - .fill( productData.salePrice ); + + await clickOnTab( 'Pricing', page ); + + const regularPrice = page + .locator( 'input[name="regular_price"]' ) + .first(); + await regularPrice.waitFor( { state: 'visible' } ); + await regularPrice.click(); + await regularPrice.fill( productData.productPrice ); + + const salePrice = page + .locator( 'input[name="sale_price"]' ) + .first(); + await salePrice.waitFor( { state: 'visible' } ); + await salePrice.click(); + await salePrice.fill( productData.salePrice ); await page .locator( '.woocommerce-product-header__actions' ) @@ -86,6 +90,7 @@ test.describe( 'General tab', () => { await expect( productId ).toBeDefined(); await expect( title ).toHaveText( productData.name ); } ); + test( 'can not create a product with duplicated SKU', async ( { page, } ) => { @@ -99,6 +104,8 @@ test.describe( 'General tab', () => { '[data-template-block-id="basic-details"] .components-summary-control' ) .fill( productData.summary ); + + await clickOnTab( 'Pricing', page ); await page .locator( '[id^="wp-block-woocommerce-product-regular-price-field"]' @@ -117,6 +124,7 @@ test.describe( 'General tab', () => { await expect( textContent ).toMatch( /Invalid or duplicated SKU./ ); } ); + test( 'can a shopper add the simple product to the cart', async ( { page, } ) => { diff --git a/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/product-edit-block-editor.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/product-edit-block-editor.spec.js index 683247462ef4..3fbdccc87dca 100644 --- a/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/product-edit-block-editor.spec.js +++ b/plugins/woocommerce/tests/e2e-pw/tests/merchant/products/block-editor/product-edit-block-editor.spec.js @@ -37,8 +37,6 @@ test( 'can update the general information of a product', async ( { name: `Product ${ Date.now() }`, description: `Updated description for the awesome product ${ Date.now() }`, short_description: `Updated summary for the awesome product ${ Date.now() }`, - regularPrice: '100.05', - salePrice: '99.05', }; const nameTextbox = page.getByLabel( 'Name' ).getByRole( 'textbox' ); @@ -48,22 +46,11 @@ test( 'can update the general information of a product', async ( { const descriptionTextbox = page .getByLabel( 'Block: Product description' ) .getByRole( 'textbox' ); - const listPriceTextbox = page.getByRole( 'textbox', { - name: 'List price', - } ); - const salePriceTextbox = page.getByRole( 'textbox', { - name: 'Sale price', - } ); await test.step( 'edit the product name', async () => { await nameTextbox.fill( updatedProduct.name ); } ); - await test.step( 'edit the product price', async () => { - await listPriceTextbox.fill( updatedProduct.regularPrice ); - await salePriceTextbox.fill( updatedProduct.salePrice ); - } ); - await test.step( 'edit the product description and summary', async () => { // Need to clear the textbox before filling it, otherwise the text will be appended. await descriptionTextbox.clear(); @@ -91,12 +78,5 @@ test( 'can update the general information of a product', async ( { await expect .soft( descriptionTextbox ) .toHaveText( updatedProduct.description ); - - await expect - .soft( listPriceTextbox ) - .toHaveValue( updatedProduct.regularPrice ); - await expect - .soft( salePriceTextbox ) - .toHaveValue( updatedProduct.salePrice ); } ); } );