Commit 0e2d4903fd6 for woocommerce

commit 0e2d4903fd6b734d03e416f545e381fe920a80a5
Author: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
Date:   Thu Jul 23 13:25:18 2026 +0300

    e2e tests: Remove 4 redundant blocks E2E tests covered lower in the pyramid (#66731)

diff --git a/plugins/woocommerce/changelog/testops-234-remove-redundant-blocks-e2e-tests b/plugins/woocommerce/changelog/testops-234-remove-redundant-blocks-e2e-tests
new file mode 100644
index 00000000000..58d0c3790f4
--- /dev/null
+++ b/plugins/woocommerce/changelog/testops-234-remove-redundant-blocks-e2e-tests
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Remove 4 redundant blocks E2E tests already covered by unit/component/PHPUnit tests.
diff --git a/plugins/woocommerce/tests/e2e/tests/blocks/breadcrumbs/breadcrumbs.block_theme.spec.ts b/plugins/woocommerce/tests/e2e/tests/blocks/breadcrumbs/breadcrumbs.block_theme.spec.ts
index 50740c66e52..3a0f6b9b3e1 100644
--- a/plugins/woocommerce/tests/e2e/tests/blocks/breadcrumbs/breadcrumbs.block_theme.spec.ts
+++ b/plugins/woocommerce/tests/e2e/tests/blocks/breadcrumbs/breadcrumbs.block_theme.spec.ts
@@ -9,23 +9,6 @@ const blockData = {
 };

 test.describe( `${ blockData.slug } Block`, () => {
-	test( "block can't be inserted in Post Editor", async ( {
-		admin,
-		editor,
-	} ) => {
-		await admin.createNewPost();
-
-		try {
-			await editor.insertBlock( { name: blockData.slug } );
-		} catch ( _error ) {
-			// noop
-		}
-
-		await expect(
-			await editor.getBlockByName( blockData.slug )
-		).toBeHidden();
-	} );
-
 	test( 'block can be inserted in the Site Editor', async ( {
 		admin,
 		requestUtils,
diff --git a/plugins/woocommerce/tests/e2e/tests/blocks/cart-store/mutation-batcher.block_theme.spec.ts b/plugins/woocommerce/tests/e2e/tests/blocks/cart-store/mutation-batcher.block_theme.spec.ts
index 44ec555c04d..1ce093d0a88 100644
--- a/plugins/woocommerce/tests/e2e/tests/blocks/cart-store/mutation-batcher.block_theme.spec.ts
+++ b/plugins/woocommerce/tests/e2e/tests/blocks/cart-store/mutation-batcher.block_theme.spec.ts
@@ -25,38 +25,6 @@ test.describe( 'Mutation Batcher', () => {
 		await frontendUtils.goToShop();
 	} );

-	test( 'synchronous calls are batched into a single request', async ( {
-		page,
-	} ) => {
-		const batchRequests: number[] = [];
-
-		await page.route( '**/wc/store/v1/batch**', async ( route ) => {
-			const body = route.request().postDataJSON();
-			batchRequests.push( body?.requests?.length || 0 );
-			await route.continue();
-		} );
-
-		await page.evaluate( async () => {
-			const { store } = await import( '@wordpress/interactivity' );
-			const unlockKey =
-				'I acknowledge that using a private store means my plugin will inevitably break on the next store release.';
-
-			await import( '@woocommerce/stores/woocommerce/cart' );
-			const { actions } = store( 'woocommerce', {}, { lock: unlockKey } );
-
-			// Three calls with no await between them — same microtick.
-			const p1 = actions.addCartItem( { id: 15, quantityToAdd: 1 } );
-			const p2 = actions.addCartItem( { id: 16, quantityToAdd: 1 } );
-			const p3 = actions.addCartItem( { id: 17, quantityToAdd: 1 } );
-
-			await Promise.all( [ p1, p2, p3 ] );
-		} );
-
-		// All 3 operations should have been sent in a single batch request.
-		expect( batchRequests ).toHaveLength( 1 );
-		expect( batchRequests[ 0 ] ).toBe( 3 );
-	} );
-
 	test( 'awaited calls produce separate batch requests', async ( {
 		page,
 	} ) => {
@@ -221,59 +189,4 @@ test.describe( 'Mutation Batcher', () => {
 		// to the snapshot taken before any optimistic mutations.
 		await expect( button ).toHaveText( '1 in cart' );
 	} );
-
-	test( 'partial failure in a batch does not prevent successful operations', async ( {
-		page,
-	} ) => {
-		const batchRequests: number[] = [];
-
-		await page.route( '**/wc/store/v1/batch**', async ( route ) => {
-			const body = route.request().postDataJSON();
-			batchRequests.push( body?.requests?.length || 0 );
-			await route.continue();
-		} );
-
-		const result = await page.evaluate( async () => {
-			const { store } = await import( '@wordpress/interactivity' );
-			const unlockKey =
-				'I acknowledge that using a private store means my plugin will inevitably break on the next store release.';
-
-			await import( '@woocommerce/stores/woocommerce/cart' );
-			const { actions, state } = store(
-				'woocommerce',
-				{},
-				{ lock: unlockKey }
-			);
-
-			// Refresh to get clean state.
-			await actions.refreshCartItems();
-
-			// Mix valid and invalid product IDs — all in one microtick.
-			const p1 = actions.addCartItem( { id: 15, quantityToAdd: 1 } );
-			const p2 = actions.addCartItem( { id: 999999, quantityToAdd: 1 } ); // Invalid
-			const p3 = actions.addCartItem( { id: 16, quantityToAdd: 1 } );
-
-			// addCartItem catches errors internally so all promises resolve.
-			await Promise.allSettled( [ p1, p2, p3 ] );
-
-			const cartProductIds = state.cart.items.map(
-				( item: { id: number } ) => item.id
-			);
-
-			return {
-				has15: cartProductIds.includes( 15 ),
-				has999999: cartProductIds.includes( 999999 ),
-				has16: cartProductIds.includes( 16 ),
-			};
-		} );
-
-		// Valid products should be in cart, invalid should not.
-		expect( result.has15 ).toBe( true );
-		expect( result.has999999 ).toBe( false );
-		expect( result.has16 ).toBe( true );
-
-		// Should still have been sent as a single batch.
-		expect( batchRequests ).toHaveLength( 1 );
-		expect( batchRequests[ 0 ] ).toBe( 3 );
-	} );
 } );
diff --git a/plugins/woocommerce/tests/e2e/tests/blocks/checkout/checkout-block.shopper.block_theme.spec.ts b/plugins/woocommerce/tests/e2e/tests/blocks/checkout/checkout-block.shopper.block_theme.spec.ts
index 88eef0a2b38..520aadf9b79 100644
--- a/plugins/woocommerce/tests/e2e/tests/blocks/checkout/checkout-block.shopper.block_theme.spec.ts
+++ b/plugins/woocommerce/tests/e2e/tests/blocks/checkout/checkout-block.shopper.block_theme.spec.ts
@@ -293,29 +293,6 @@ test.describe( 'Shopper → Local pickup', () => {
 	} );
 } );

-test.describe( 'Shopper → Payment Methods', () => {
-	test( 'User can change payment methods', async ( {
-		frontendUtils,
-		page,
-	} ) => {
-		await frontendUtils.goToShop();
-		await frontendUtils.addToCart( SIMPLE_PHYSICAL_PRODUCT_NAME );
-		await frontendUtils.goToCheckout();
-
-		await page
-			.getByRole( 'radio', { name: 'Direct bank transfer' } )
-			.click();
-		await expect(
-			page.getByRole( 'radio', { name: 'Direct bank transfer' } )
-		).toBeChecked();
-
-		await page.getByRole( 'radio', { name: 'Cash on delivery' } ).click();
-		await expect(
-			page.getByRole( 'radio', { name: 'Cash on delivery' } )
-		).toBeChecked();
-	} );
-} );
-
 test.describe( 'Shopper → Shipping and Billing Addresses', () => {
 	const billingTestData = {
 		firstname: 'John',