Make WordPress Core


Ignore:
Timestamp:
01/13/2026 03:11:06 PM (9 months ago)
Author:
jonsurrell
Message:

Build/Test Tools: Use semantic HTML comparison in script tests.

The assertEqualHTML() method makes tests resilient to irrelevant syntactic changes in HTML output, focusing on semantic equivalence rather than exact string matching.

Developed in ​https://github.com/WordPress/wordpress-develop/pull/10727.

Follow up to [61394], [61391].

Props jonsurrell, cbravobernal.
See #64225.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/dependencies/scripts.php

    r61424 r61478  
    334334                wp_register_script( 'dependent-script-a4', '/dependent-script-a4.js', array( 'main-script-a4' ), null );
    335335                $output   = get_echo( 'wp_print_scripts' );
    336                 $expected = str_replace( "'", '"', "<script src='/main-script-a4.js' id='main-script-a4-js' {$strategy} data-wp-strategy='{$strategy}'></script>" );
    337                 $this->assertStringContainsString( $expected, $output, 'Only enqueued dependents should affect the eligible strategy.' );
     336                $expected = "<script src='/main-script-a4.js' id='main-script-a4-js' {$strategy} data-wp-strategy='{$strategy}'></script>";
     337                $this->assertEqualHTMLScriptTagById( $expected, $output, 'Only enqueued dependents should affect the eligible strategy.' );
    338338        }
    339339
    … …  
    10771077                wp_enqueue_script( 'main-script-d1', 'http://example.com/main-script-d1.js', array(), null, array( 'strategy' => 'defer' ) );
    10781078                $output   = get_echo( 'wp_print_scripts' );
    1079                 $expected = str_replace( "'", '"', "<script src='http://example.com/main-script-d1.js' id='main-script-d1-js' defer data-wp-strategy='defer'></script>\n" );
    1080                 $this->assertStringContainsString( $expected, $output, 'Expected defer, as there is no dependent or dependency' );
     1079                $expected = "<script src='http://example.com/main-script-d1.js' id='main-script-d1-js' defer data-wp-strategy='defer'></script>\n";
     1080                $this->assertEqualHTMLScriptTagById( $expected, $output, 'Expected defer, as there is no dependent or dependency' );
    10811081        }
    10821082
    … …  
    10971097                $output   = get_echo( 'wp_print_scripts' );
    10981098                $expected = '<script src="http://example.com/main-script-d2.js" id="main-script-d2-js" defer data-wp-strategy="defer"></script>';
    1099                 $this->assertStringContainsString( $expected, $output, 'Expected defer, as all dependencies are either deferred or blocking' );
     1099                $this->assertEqualHTMLScriptTagById( $expected, $output, 'Expected defer, as all dependencies are either deferred or blocking' );
    11001100        }
    11011101
    … …  
    11161116                $output   = get_echo( 'wp_print_scripts' );
    11171117                $expected = '<script src="http://example.com/main-script-d3.js" id="main-script-d3-js" defer data-wp-strategy="defer"></script>';
    1118                 $this->assertStringContainsString( $expected, $output, 'Expected defer, as all dependents have defer loading strategy' );
     1118                $this->assertEqualHTMLScriptTagById( $expected, $output, 'Expected defer, as all dependents have defer loading strategy' );
    11191119        }
    11201120
    … …  
    14961496                wp_enqueue_script( 'dependent-script-d4-2', '/dependent-script-d4-2.js', array( 'dependent-script-d4-1' ), null );
    14971497                wp_enqueue_script( 'dependent-script-d4-3', '/dependent-script-d4-3.js', array( 'dependent-script-d4-2' ), null, array( 'strategy' => 'defer' ) );
     1498
    14981499                $output   = get_echo( 'wp_print_scripts' );
    1499                 $expected = str_replace( "'", '"', "<script src='/main-script-d4.js' id='main-script-d4-js' data-wp-strategy='defer'></script>\n" );
    1500                 $this->assertStringContainsString( $expected, $output, 'Scripts registered as defer but that have all dependents with no strategy, should become blocking (no strategy).' );
     1500                $expected = "<script src='/main-script-d4.js' id='main-script-d4-js' data-wp-strategy='defer'></script>\n";
     1501                $this->assertEqualHTMLScriptTagById( $expected, $output, 'Scripts registered as defer but that have all dependents with no strategy, should become blocking (no strategy).' );
    15011502        }
    15021503
Note: See TracChangeset for help on using the changeset viewer.