Make WordPress Core


Ignore:
Timestamp:
01/27/2026 11:18:32 AM (8 months ago)
Author:
jonsurrell
Message:

Build/Test Tools: Ensure assertEqualHTML() recognizes whitespace text.

Ensure whitespace text nodes are correctly represented by build_visual_html_tree().

The build_visual_html_tree() function used by assertEqualHTML() would remove some leading whitespace from text nodes. Some whitespace-only text nodes were omitted from the tree.

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

Follow-up to [60295].

Reviewed by wildworks.
Merges [61519] to the 6.9 branch.

Props jonsurrell, dmsnell, bernhard-reiter.
Fixes #64531.

Location:
branches/6.9
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/6.9

  • branches/6.9/tests/phpunit/tests/script-modules/wpScriptModules.php

    r61506 r61536  
    573573                        2
    574574                );
    575                 $actual = get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) );
     575                $actual   = get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) );
     576                $expected = <<<'HTML'
     577<script type="module" src="/src.js" id="with-src-js-module"></script>
     578<script type="module" src="/was-empty-but-added-via-filter.js" id="without-src-but-filtered-js-module"></script>
     579
     580HTML;
    576581                $this->assertEqualHTML(
    577                         '
    578                                 <script type="module" src="/src.js" id="with-src-js-module"></script>
    579                                 <script type="module" src="/was-empty-but-added-via-filter.js" id="without-src-but-filtered-js-module"></script>
    580                         ',
     582                        $expected,
    581583                        $actual,
    582584                        '<body>',
    583                         "Expected only one SCRIPT tag to be printed. Snapshot:\n$actual"
     585                        'Expected only one SCRIPT tag to be printed.'
    584586                );
    585587        }
     
    14771479                $actual_footer = get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) );
    14781480
     1481                $expected = <<<'HTML'
     1482<script type="module" src="/default.js" id="default-js-module"></script>
     1483<script type="module" src="/not-in-footer-via-enqueue.js" id="not-in-footer-via-enqueue-js-module"></script>
     1484<script type="module" src="/not-in-footer-via-override.js" id="not-in-footer-via-override-js-module"></script>
     1485
     1486HTML;
     1487
    14791488                $this->assertEqualHTML(
    14801489                        $actual_head,
    1481                         '
    1482                                 <script type="module" src="/default.js" id="default-js-module"></script>
    1483                                 <script type="module" src="/not-in-footer-via-enqueue.js" id="not-in-footer-via-enqueue-js-module"></script>
    1484                                 <script type="module" src="/not-in-footer-via-override.js" id="not-in-footer-via-override-js-module"></script>
    1485                         ',
     1490                        $expected,
    14861491                        '<body>',
    1487                         "Expected equal script modules in the HEAD. Snapshot:\n$actual_head"
    1488                 );
     1492                        'Expected equal script modules in the HEAD.'
     1493                );
     1494
     1495                $expected = <<<'HTML'
     1496<script type="module" src="/in-footer-via-register.js" id="in-footer-via-register-js-module"></script>
     1497<script type="module" src="/in-footer-via-enqueue.js" id="in-footer-via-enqueue-js-module"></script>
     1498<script type="module" src="/in-footer-via-override.js" id="in-footer-via-override-js-module"></script>
     1499
     1500HTML;
    14891501                $this->assertEqualHTML(
    14901502                        $actual_footer,
    1491                         '
    1492                                 <script type="module" src="/in-footer-via-register.js" id="in-footer-via-register-js-module"></script>
    1493                                 <script type="module" src="/in-footer-via-enqueue.js" id="in-footer-via-enqueue-js-module"></script>
    1494                                 <script type="module" src="/in-footer-via-override.js" id="in-footer-via-override-js-module"></script>
    1495                         ',
     1503                        $expected,
    14961504                        '<body>',
    1497                         "Expected equal script modules in the footer. Snapshot:\n$actual_footer"
     1505                        'Expected equal script modules in the footer.'
    14981506                );
    14991507        }
     
    17471755                $actual   = get_echo( array( wp_script_modules(), 'print_script_module_preloads' ) );
    17481756                $actual  .= get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) );
    1749                 $expected = '
    1750                         <link rel="modulepreload" href="/z.js" id="z-js-modulepreload" fetchpriority="high">
    1751                         <link rel="modulepreload" href="/d.js" id="d-js-modulepreload" fetchpriority="high">
    1752                         <link rel="modulepreload" href="/e.js" id="e-js-modulepreload" fetchpriority="low">
    1753                         <link rel="modulepreload" href="/c.js" id="c-js-modulepreload" fetchpriority="low">
    1754                         <link rel="modulepreload" href="/b.js" id="b-js-modulepreload" fetchpriority="low">
    1755                         <link rel="modulepreload" href="/y.js" id="y-js-modulepreload" fetchpriority="high">
    1756                         <script type="module" src="/a.js" id="a-js-module" fetchpriority="low"></script>
    1757                         <script type="module" src="/x.js" id="x-js-module" fetchpriority="high"></script>
    1758                 ';
    1759                 $this->assertEqualHTML( $expected, $actual, '<body>', "Snapshot:\n$actual" );
     1757                $expected = <<<'HTML'
     1758<link rel="modulepreload" href="/z.js" id="z-js-modulepreload" fetchpriority="high">
     1759<link rel="modulepreload" href="/d.js" id="d-js-modulepreload" fetchpriority="high">
     1760<link rel="modulepreload" href="/e.js" id="e-js-modulepreload" fetchpriority="low">
     1761<link rel="modulepreload" href="/c.js" id="c-js-modulepreload" fetchpriority="low">
     1762<link rel="modulepreload" href="/b.js" id="b-js-modulepreload" fetchpriority="low">
     1763<link rel="modulepreload" href="/y.js" id="y-js-modulepreload" fetchpriority="high">
     1764<script type="module" src="/a.js" id="a-js-module" fetchpriority="low"></script>
     1765<script type="module" src="/x.js" id="x-js-module" fetchpriority="high"></script>
     1766
     1767HTML;
     1768                $this->assertEqualHTML( $expected, $actual );
    17601769        }
    17611770
     
    17921801                $actual   = get_echo( array( wp_script_modules(), 'print_script_module_preloads' ) );
    17931802                $actual  .= get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) );
    1794                 $expected = '
    1795                         <link rel="modulepreload" href="/d.js" id="d-js-modulepreload" fetchpriority="low">
    1796                         <link rel="modulepreload" href="/e.js" id="e-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
    1797                         <link rel="modulepreload" href="/a.js" id="a-js-modulepreload" fetchpriority="low" data-wp-fetchpriority="high">
    1798                         <link rel="modulepreload" href="/b.js" id="b-js-modulepreload">
    1799                         <link rel="modulepreload" href="/f.js" id="f-js-modulepreload" fetchpriority="high">
    1800                         <link rel="modulepreload" href="/c.js" id="c-js-modulepreload" fetchpriority="high">
    1801                         <script type="module" src="/x.js" id="x-js-module" fetchpriority="low"></script>
    1802                         <script type="module" src="/y.js" id="y-js-module"></script>
    1803                         <script type="module" src="/z.js" id="z-js-module" fetchpriority="high"></script>
    1804                 ';
    1805                 $this->assertEqualHTML( $expected, $actual, '<body>', "Snapshot:\n$actual" );
     1803                $expected = <<<'HTML'
     1804<link rel="modulepreload" href="/d.js" id="d-js-modulepreload" fetchpriority="low">
     1805<link rel="modulepreload" href="/e.js" id="e-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
     1806<link rel="modulepreload" href="/a.js" id="a-js-modulepreload" fetchpriority="low" data-wp-fetchpriority="high">
     1807<link rel="modulepreload" href="/b.js" id="b-js-modulepreload">
     1808<link rel="modulepreload" href="/f.js" id="f-js-modulepreload" fetchpriority="high">
     1809<link rel="modulepreload" href="/c.js" id="c-js-modulepreload" fetchpriority="high">
     1810<script type="module" src="/x.js" id="x-js-module" fetchpriority="low"></script>
     1811<script type="module" src="/y.js" id="y-js-module"></script>
     1812<script type="module" src="/z.js" id="z-js-module" fetchpriority="high"></script>
     1813
     1814HTML;
     1815                $this->assertEqualHTML( $expected, $actual );
    18061816        }
    18071817
     
    18231833                $actual_preloads = $this->normalize_markup_for_snapshot( get_echo( array( wp_script_modules(), 'print_script_module_preloads' ) ) );
    18241834                $this->assertEqualHTML(
    1825                         '
    1826                                 <link rel="modulepreload" href="/wp-includes/js/dist/script-modules/interactivity/debug.min.js" id="@wordpress/interactivity-js-modulepreload" fetchpriority="low">
    1827                         ',
    1828                         $actual_preloads,
    1829                         '<body>',
    1830                         "Snapshot:\n$actual_preloads"
     1835                        "<link rel='modulepreload' href='/wp-includes/js/dist/script-modules/interactivity/debug.min.js' id='@wordpress/interactivity-js-modulepreload' fetchpriority='low'>\n",
     1836                        $actual_preloads
    18311837                );
    18321838
     
    18341840                $this->assertEqualHTML(
    18351841                        '',
    1836                         $actual_head_script_modules,
    1837                         '<body>',
    1838                         "Snapshot:\n$actual_head_script_modules"
     1842                        $actual_head_script_modules
    18391843                );
    18401844
    18411845                $actual_footer_script_modules = $this->normalize_markup_for_snapshot( get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) ) );
     1846                $expected                     = <<<'HTML'
     1847<script type="module" src="/wp-includes/js/dist/script-modules/a11y/index.min.js" id="@wordpress/a11y-js-module" fetchpriority="low"></script>
     1848<script type="module" src="/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js" id="@wordpress/block-library/navigation/view-js-module" fetchpriority="low" data-wp-router-options="{&quot;loadOnClientNavigation&quot;:true}"></script>
     1849
     1850HTML;
    18421851                $this->assertEqualHTML(
    1843                         '
    1844                                 <script type="module" src="/wp-includes/js/dist/script-modules/a11y/index.min.js" id="@wordpress/a11y-js-module" fetchpriority="low"></script>
    1845                                 <script type="module" src="/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js" id="@wordpress/block-library/navigation/view-js-module" fetchpriority="low" data-wp-router-options="{&quot;loadOnClientNavigation&quot;:true}"></script>
    1846                         ',
    1847                         $actual_footer_script_modules,
    1848                         '<body>',
    1849                         "Snapshot:\n$actual_footer_script_modules"
     1852                        $expected,
     1853                        $actual_footer_script_modules
    18501854                );
    18511855        }
     
    18671871                $actual = $this->normalize_markup_for_snapshot( get_echo( array( wp_script_modules(), 'print_enqueued_script_modules' ) ) );
    18681872                $this->assertEqualHTML(
    1869                         '<script type="module" src="/wp-includes/js/dist/script-modules/a11y/index.min.js" id="@wordpress/a11y-js-module" fetchpriority="low"></script>',
    1870                         $actual,
    1871                         '<body>',
    1872                         "Snapshot:\n$actual"
     1873                        "<script type='module' src='/wp-includes/js/dist/script-modules/a11y/index.min.js' id='@wordpress/a11y-js-module' fetchpriority='low'></script>\n",
     1874                        $actual
    18731875                );
    18741876        }
     
    18961898                $actual = $this->normalize_markup_for_snapshot( $actual );
    18971899
    1898                 $expected = '
    1899                         <link rel="modulepreload" href="/wp-includes/js/dist/script-modules/a11y/index.min.js" id="@wordpress/a11y-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
    1900                         <link rel="modulepreload" href="/wp-includes/js/dist/script-modules/interactivity/debug.min.js" id="@wordpress/interactivity-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
    1901                         <link rel="modulepreload" href="/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js" id="@wordpress/block-library/navigation/view-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
    1902                         <script type="module" src="/super-important-module.js" id="super-important-js-module" fetchpriority="high"></script>
    1903                 ';
    1904                 $this->assertEqualHTML( $expected, $actual, '<body>', "Snapshot:\n$actual" );
     1900                $expected = <<<'HTML'
     1901<link rel="modulepreload" href="/wp-includes/js/dist/script-modules/a11y/index.min.js" id="@wordpress/a11y-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
     1902<link rel="modulepreload" href="/wp-includes/js/dist/script-modules/interactivity/debug.min.js" id="@wordpress/interactivity-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
     1903<link rel="modulepreload" href="/wp-includes/js/dist/script-modules/block-library/navigation/view.min.js" id="@wordpress/block-library/navigation/view-js-modulepreload" fetchpriority="high" data-wp-fetchpriority="low">
     1904<script type="module" src="/super-important-module.js" id="super-important-js-module" fetchpriority="high"></script>
     1905
     1906HTML;
     1907                $this->assertEqualHTML( $expected, $actual );
    19051908        }
    19061909
     
    23412344                );
    23422345                $this->assertEqualHTML(
    2343                         '
    2344                                 <link rel="modulepreload" href="/static1.js" id="static1-js-modulepreload">
    2345                         ',
     2346                        "<link rel='modulepreload' href='/static1.js' id='static1-js-modulepreload'>\n",
    23462347                        $preload_links,
    23472348                        '<body>',
    2348                         "Expected preload links to match snapshot:\n$preload_links"
     2349                        'Expected preload links to match.'
    23492350                );
    23502351                $this->assertEqualHTML(
    2351                         '
    2352                                 <script type="module" src="/enqueued.js" id="enqueued-js-module"></script>
    2353                         ',
     2352                        "<script type='module' src='/enqueued.js' id='enqueued-js-module'></script>\n",
    23542353                        $script_modules,
    23552354                        '<body>',
    2356                         "Expected script modules to match snapshot:\n$script_modules"
     2355                        'Expected script modules to match.'
    23572356                );
    23582357        }
Note: See TracChangeset for help on using the changeset viewer.