Commit eedd01cca26 for woocommerce

commit eedd01cca2647b2a0a24a6fa306bd638a974b38b
Author: Tung Du <dinhtungdu@gmail.com>
Date:   Tue Jul 21 15:46:44 2026 +0700

    Fix: use the stable Block Selectors API for WooCommerce blocks (#66596)

    * fix: use stable Selectors API

    * chore: changelog

    * fix: restore experimental selectors for affected blocks

    * fix: anchor stable selectors to block wrappers

diff --git a/plugins/woocommerce/changelog/fix-stable-selectors-api b/plugins/woocommerce/changelog/fix-stable-selectors-api
new file mode 100644
index 00000000000..51827c0a3c6
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-stable-selectors-api
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Use the stable Block Selectors API.
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.json b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.json
index 1ad7e7d941e..1baa9010ad6 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/button/block.json
@@ -65,8 +65,10 @@
 			"padding": true,
 			"__experimentalSkipSerialization": true
 		},
-		"email": true,
-		"__experimentalSelector": ".wp-block-button.wc-block-components-product-button .wc-block-components-product-button__button"
+		"email": true
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-button .wc-block-components-product-button__button"
 	},
 	"ancestor": [
 		"woocommerce/all-products",
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.json b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.json
index 5f67398ea01..92069f75d48 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/image/block.json
@@ -40,8 +40,10 @@
 			"aspectRatio": true,
 			"__experimentalSkipSerialization": true
 		},
-		"email": true,
-		"__experimentalSelector": ".wc-block-components-product-image"
+		"email": true
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-image.wc-block-components-product-image, .wp-block-woocommerce-product-image .wc-block-components-product-image"
 	},
 	"ancestor": [
 		"woocommerce/all-products",
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json
index f100ecfa763..c07741dcc67 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json
@@ -42,8 +42,10 @@
 		"typography": {
 			"fontSize": true,
 			"__experimentalSkipSerialization": true
-		},
-		"__experimentalSelector": ".wc-block-components-product-rating-counter"
+		}
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-rating-counter.wc-block-components-product-rating-counter, .wp-block-woocommerce-product-rating-counter .wc-block-components-product-rating-counter"
 	},
 	"usesContext": [ "query", "queryId", "postId" ],
 	"keywords": [ "WooCommerce" ],
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json
index 624cb4bcef2..48f10979b69 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json
@@ -45,8 +45,10 @@
 		"typography": {
 			"fontSize": true,
 			"__experimentalSkipSerialization": true
-		},
-		"__experimentalSelector": ".wc-block-components-product-rating"
+		}
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-rating-stars.wc-block-components-product-rating, .wp-block-woocommerce-product-rating-stars .wc-block-components-product-rating"
 	},
 	"ancestor": [ "woocommerce/single-product" ],
 	"textdomain": "woocommerce",
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.json b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.json
index 9ee05125131..7d86c79c9c3 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/rating/block.json
@@ -43,8 +43,10 @@
 		"typography": {
 			"fontSize": true,
 			"__experimentalSkipSerialization": true
-		},
-		"__experimentalSelector": ".wc-block-components-product-rating"
+		}
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-rating.wc-block-components-product-rating, .wp-block-woocommerce-product-rating .wc-block-components-product-rating"
 	},
 	"ancestor": [
 		"woocommerce/all-products",
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.json b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.json
index 72e05aab2f6..d520e1e4f02 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.json
@@ -47,8 +47,10 @@
 		"spacing": {
 			"margin": true
 		},
-		"email": true,
-		"__experimentalSelector": ".wc-block-components-product-sale-badge"
+		"email": true
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-sale-badge .wc-block-components-product-sale-badge"
 	},
 	"ancestor": [
 		"woocommerce/single-product",
diff --git a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.json b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.json
index 635a4e197e3..ba9067038ea 100644
--- a/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/atomic/blocks/product-elements/title/block.json
@@ -28,8 +28,10 @@
 		"spacing": {
 			"margin": true,
 			"__experimentalSkipSerialization": true
-		},
-		"__experimentalSelector": ".wc-block-components-product-title"
+		}
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-title .wc-block-components-product-title"
 	},
 	"textdomain": "woocommerce",
 	"attributes": {
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/next-previous-buttons/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/next-previous-buttons/block.json
index c84ae763e0e..43bccb48613 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/next-previous-buttons/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/next-previous-buttons/block.json
@@ -34,8 +34,10 @@
 		"__experimentalBorder": {
 			"radius": true,
 			"__experimentalSkipSerialization": true
-		},
-		"__experimentalSelector": ".wc-block-next-previous-buttons__button"
+		}
+	},
+	"selectors": {
+		"root": ".wp-block-woocommerce-product-gallery-large-image-next-previous .wc-block-next-previous-buttons__button"
 	},
 	"ancestor": [
 		"woocommerce/product-gallery-large-image",
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/downloads/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/downloads/block.json
index c621c278fb5..f0b03d8ffc8 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/downloads/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/downloads/block.json
@@ -4,15 +4,10 @@
 	"title": "Order Downloads",
 	"description": "Display links to purchased downloads.",
 	"category": "woocommerce",
-	"keywords": [
-		"WooCommerce"
-	],
+	"keywords": [ "WooCommerce" ],
 	"supports": {
 		"multiple": false,
-		"align": [
-			"wide",
-			"full"
-		],
+		"align": [ "wide", "full" ],
 		"html": false,
 		"typography": {
 			"fontSize": true,
@@ -70,4 +65,4 @@
 	"textdomain": "woocommerce",
 	"apiVersion": 3,
 	"$schema": "https://schemas.wp.org/trunk/block.json"
-}
\ No newline at end of file
+}
diff --git a/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/totals/block.json b/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/totals/block.json
index 066c4387db7..1801fb44c10 100644
--- a/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/totals/block.json
+++ b/plugins/woocommerce/client/blocks/assets/js/blocks/order-confirmation/totals/block.json
@@ -4,15 +4,10 @@
 	"title": "Order Totals",
 	"description": "Display the items purchased and order totals.",
 	"category": "woocommerce",
-	"keywords": [
-		"WooCommerce"
-	],
+	"keywords": [ "WooCommerce" ],
 	"supports": {
 		"multiple": false,
-		"align": [
-			"wide",
-			"full"
-		],
+		"align": [ "wide", "full" ],
 		"html": false,
 		"typography": {
 			"fontSize": true,
@@ -70,4 +65,4 @@
 	"textdomain": "woocommerce",
 	"apiVersion": 3,
 	"$schema": "https://schemas.wp.org/trunk/block.json"
-}
\ No newline at end of file
+}