diff --git a/plugins/performance-lab/includes/site-health/audit-enqueued-assets/helper.php b/plugins/performance-lab/includes/site-health/audit-enqueued-assets/helper.php index 7b54647779..aeb1f7ee55 100644 --- a/plugins/performance-lab/includes/site-health/audit-enqueued-assets/helper.php +++ b/plugins/performance-lab/includes/site-health/audit-enqueued-assets/helper.php @@ -119,7 +119,7 @@ function perflab_aea_audit_blocking_assets(): array { } $href = $processor->get_attribute( 'href' ); - if ( ! is_string( $href ) ) { + if ( ! is_string( $href ) || '' === trim( $href ) ) { continue; } diff --git a/plugins/performance-lab/tests/includes/site-health/audit-enqueued-assets/test-audit-enqueued-assets.php b/plugins/performance-lab/tests/includes/site-health/audit-enqueued-assets/test-audit-enqueued-assets.php index a99501b706..8c8a0ab4ad 100644 --- a/plugins/performance-lab/tests/includes/site-health/audit-enqueued-assets/test-audit-enqueued-assets.php +++ b/plugins/performance-lab/tests/includes/site-health/audit-enqueued-assets/test-audit-enqueued-assets.php @@ -168,6 +168,12 @@ public function test_perflab_aea_audit_enqueued_styles(): void { wp_dequeue_style( 'style3' ); wp_enqueue_style( 'style-print', 'https://print-style.com', array(), null, 'print' ); wp_enqueue_style( 'style-no-href', 'https://no-href-style.com', array(), null ); + /** + * Enqueue style with empty href + * + * @see https://github.com/WordPress/performance/issues/2278 + */ + wp_enqueue_style( 'style-empty-href', 'https://empty-href-style.com', array(), null ); // Filter to remove href attribute from a specific style handle. add_filter( @@ -176,6 +182,14 @@ static function ( $tag, $handle ) { if ( 'style-no-href' === $handle ) { $tag = str_replace( 'href=\'https://no-href-style.com\'', ' ', $tag ); } + + if ( 'style-empty-href' === $handle ) { + $tag = str_replace( + 'href=\'https://empty-href-style.com\'', + "href=''", + $tag + ); + } return $tag; }, 10, @@ -242,6 +256,14 @@ static function ( $item ) { } ); $this->assertEmpty( $no_href_style ); + + $empty_href_style = array_filter( + $assets['styles'], + static function ( $item ) { + return 'https://empty-href-style.com' === $item['src']; + } + ); + $this->assertEmpty( $empty_href_style ); } /**