<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[60295] trunk/tests/phpunit: Tests: Add new `assertEqualHTML` assertion.</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/60295">60295</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/60295","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>Bernhard Reiter</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2025-06-10 10:23:38 +0000 (Tue, 10 Jun 2025)</dd>
</dl>
<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Tests: Add new `assertEqualHTML` assertion.
Add a new `assertEqualHTML` method to `WP_UnitTestClass` for tests comparing HTML (potentially including block markup).
Internally, the assertion builds a deterministic tree string representation of the markup (using the HTML API) and compares the results. The format of the tree is inspired by the HTML5lib-tests tree format. It is extended with a special representation of block delimiters and their attributes. This format also makes it easier to visually spot the differences between the two strings if the assertion fails.
Finally, this changeset updates `Tests_Dependencies_Scripts` to remove its `assertEqualMarkup` and `parse_markup_fragment` methods, and to use the newly introduced `assertEqualHTML` instead.
Props bernhard-reiter, jonsurrell, dmsnell, jorbin, gziolo.
Fixes <a href="https://core.trac.wordpress.org/ticket/63527">#63527</a>.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunktestsphpunitincludesabstracttestcasephp">trunk/tests/phpunit/includes/abstract-testcase.php</a></li>
<li><a href="#trunktestsphpunittestsdependenciesscriptsphp">trunk/tests/phpunit/tests/dependencies/scripts.php</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunktestsphpunitincludesbuildvisualhtmltreephp">trunk/tests/phpunit/includes/build-visual-html-tree.php</a></li>
<li><a href="#trunktestsphpunittestsbuildvisualhtmltreephp">trunk/tests/phpunit/tests/build-visual-html-tree.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunktestsphpunitincludesabstracttestcasephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/includes/abstract-testcase.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/includes/abstract-testcase.php 2025-06-09 18:49:44 UTC (rev 60294)
+++ trunk/tests/phpunit/includes/abstract-testcase.php 2025-06-10 10:23:38 UTC (rev 60295)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once __DIR__ . '/build-visual-html-tree.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/factory.php';
</span><span class="cx" style="display: block; padding: 0 10px"> require_once __DIR__ . '/trac.php';
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,7 +14,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> * All WordPress unit tests should inherit from this class.
</span><span class="cx" style="display: block; padding: 0 10px"> */
</span><span class="cx" style="display: block; padding: 0 10px"> abstract class WP_UnitTestCase_Base extends PHPUnit_Adapter_TestCase {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px"> protected static $forced_tickets = array();
</span><span class="cx" style="display: block; padding: 0 10px"> protected $expected_deprecated = array();
</span><span class="cx" style="display: block; padding: 0 10px"> protected $caught_deprecated = array();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1181,6 +1181,44 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Check HTML markup (including blocks) for semantic equivalence.
+ *
+ * Given two markup strings, assert that they translate to the same semantic HTML tree,
+ * normalizing tag names, attribute names, and attribute order. Furthermore, attributes
+ * and class names are sorted and deduplicated, and whitespace in style attributes
+ * is normalized. Finally, block delimiter comments are recognized and normalized,
+ * applying the same principles.
+ *
+ * @since 6.9.0
+ *
+ * @param string $expected The expected HTML.
+ * @param string $actual The actual HTML.
+ * @param string|null $fragment_context Optional. The fragment context, for example "<td>" expected HTML
+ * must occur within "<table><tr>" fragment context. Default "<body>".
+ * Only "<body>" or `null` are supported at this time.
+ * Set to `null` to parse a full HTML document.
+ * @param string|null $message Optional. The assertion error message.
+ */
+ public function assertEqualHTML( string $expected, string $actual, ?string $fragment_context = '<body>', $message = 'HTML markup was not equivalent.' ): void {
+ try {
+ $tree_expected = build_visual_html_tree( $expected, $fragment_context );
+ $tree_actual = build_visual_html_tree( $actual, $fragment_context );
+ } catch ( Exception $e ) {
+ // For PHP 8.4+, we can retry, using the built-in DOM\HTMLDocument parser.
+ if ( class_exists( 'DOM\HtmlDocument' ) ) {
+ $dom_expected = DOM\HtmlDocument::createFromString( $expected, LIBXML_NOERROR );
+ $tree_expected = build_visual_html_tree( $dom_expected->saveHtml(), $fragment_context );
+ $dom_actual = DOM\HtmlDocument::createFromString( $actual, LIBXML_NOERROR );
+ $tree_actual = build_visual_html_tree( $dom_actual->saveHtml(), $fragment_context );
+ } else {
+ throw $e;
+ }
+ }
+
+ $this->assertSame( $tree_expected, $tree_actual, $message );
+ }
+
+ /**
</ins><span class="cx" style="display: block; padding: 0 10px"> * Helper function to convert a single-level array containing text strings to a named data provider.
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * The value of the data set will also be used as the name of the data set.
</span></span></pre></div>
<a id="trunktestsphpunitincludesbuildvisualhtmltreephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: trunk/tests/phpunit/includes/build-visual-html-tree.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/includes/build-visual-html-tree.php (rev 0)
+++ trunk/tests/phpunit/includes/build-visual-html-tree.php 2025-06-10 10:23:38 UTC (rev 60295)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,304 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/* phpcs:disable WordPress.Security.EscapeOutput.ExceptionNotEscaped */
+
+/**
+ * Generates representation of the semantic HTML tree structure.
+ *
+ * This is inspired by the representation used by the HTML5lib tests. It's been extended here for
+ * blocks to render the semantic structure of blocks and their attributes.
+ * The order of attributes and class names is normalized both for HTML tags and blocks,
+ * as is the whitespace in HTML tags' style attribute.
+ *
+ * For example, consider the following block markup:
+ *
+ * <!-- wp:separator {"className":"is-style-default has-custom-classname","style":{"spacing":{"margin":{"top":"50px","bottom":"50px"}}},"backgroundColor":"accent-1"} -->
+ * <hr class="wp-block-separator is-style-default has-custom-classname" style="margin-top: 50px; margin-bottom: 50px" />
+ * <!-- /wp:separator -->
+ *
+ * This will be represented as:
+ *
+ * BLOCK["core/separator"]
+ * {
+ * "backgroundColor": "accent-1",
+ * "className": "has-custom-classname is-style-default",
+ * "style": {
+ * "spacing": {
+ * "margin": {
+ * "top": "50px",
+ * "bottom": "50px"
+ * }
+ * }
+ * }
+ * }
+ * <hr>
+ * class="has-custom-classname is-style-default wp-block-separator"
+ * style="margin-top:50px;margin-bottom:50px;"
+ *
+ *
+ * @see https://github.com/WordPress/wordpress-develop/blob/trunk/tests/phpunit/data/html5lib-tests/tree-construction/README.md
+ *
+ * @since 6.9.0
+ *
+ * @throws WP_HTML_Unsupported_Exception|Error If the markup could not be parsed.
+ *
+ * @param string $html Given test HTML.
+ * @param string|null $fragment_context Context element in which to parse HTML, such as BODY or SVG.
+ * @return string Tree structure of parsed HTML, if supported.
+ */
+function build_visual_html_tree( string $html, ?string $fragment_context ): string {
+ $processor = $fragment_context
+ ? WP_HTML_Processor::create_fragment( $html, $fragment_context )
+ : WP_HTML_Processor::create_full_parser( $html );
+ if ( null === $processor ) {
+ throw new Error( 'Could not create a parser.' );
+ }
+ $tree_indent = ' ';
+
+ $output = '';
+ $indent_level = 0;
+ $was_text = null;
+ $text_node = '';
+
+ $block_context = array();
+
+ while ( $processor->next_token() ) {
+ if ( null !== $processor->get_last_error() ) {
+ break;
+ }
+
+ $token_name = $processor->get_token_name();
+ $token_type = $processor->get_token_type();
+ $is_closer = $processor->is_tag_closer();
+
+ if ( $was_text && '#text' !== $token_name ) {
+ if ( '' !== $text_node ) {
+ $output .= "{$text_node}\"\n";
+ }
+ $was_text = false;
+ $text_node = '';
+ }
+
+ switch ( $token_type ) {
+ case '#doctype':
+ $doctype = $processor->get_doctype_info();
+ $output .= "<!DOCTYPE {$doctype->name}";
+ if ( null !== $doctype->public_identifier || null !== $doctype->system_identifier ) {
+ $output .= " \"{$doctype->public_identifier}\" \"{$doctype->system_identifier}\"";
+ }
+ $output .= ">\n";
+ break;
+
+ case '#tag':
+ $namespace = $processor->get_namespace();
+ $tag_name = 'html' === $namespace
+ ? strtolower( $processor->get_tag() )
+ : "{$namespace} {$processor->get_qualified_tag_name()}";
+
+ if ( $is_closer ) {
+ --$indent_level;
+
+ if ( 'html' === $namespace && 'TEMPLATE' === $token_name ) {
+ --$indent_level;
+ }
+
+ break;
+ }
+
+ $tag_indent = $indent_level;
+
+ if ( $processor->expects_closer() ) {
+ ++$indent_level;
+ }
+
+ $output .= str_repeat( $tree_indent, $tag_indent ) . "<{$tag_name}>\n";
+
+ $attribute_names = $processor->get_attribute_names_with_prefix( '' );
+ if ( $attribute_names ) {
+ $sorted_attributes = array();
+ foreach ( $attribute_names as $attribute_name ) {
+ $sorted_attributes[ $attribute_name ] = $processor->get_qualified_attribute_name( $attribute_name );
+ }
+
+ /*
+ * Sorts attributes to match html5lib sort order.
+ *
+ * - First comes normal HTML attributes.
+ * - Then come adjusted foreign attributes; these have spaces in their names.
+ * - Finally come non-adjusted foreign attributes; these have a colon in their names.
+ *
+ * Example:
+ *
+ * From: <math xlink:author definitionurl xlink:title xlink:show>
+ * Sorted: 'definitionURL', 'xlink show', 'xlink title', 'xlink:author'
+ */
+ uasort(
+ $sorted_attributes,
+ static function ( $a, $b ) {
+ $a_has_ns = str_contains( $a, ':' );
+ $b_has_ns = str_contains( $b, ':' );
+
+ // Attributes with `:` should follow all other attributes.
+ if ( $a_has_ns !== $b_has_ns ) {
+ return $a_has_ns ? 1 : -1;
+ }
+
+ $a_has_sp = str_contains( $a, ' ' );
+ $b_has_sp = str_contains( $b, ' ' );
+
+ // Attributes with a namespace ' ' should come after those without.
+ if ( $a_has_sp !== $b_has_sp ) {
+ return $a_has_sp ? 1 : -1;
+ }
+
+ return $a <=> $b;
+ }
+ );
+
+ foreach ( $sorted_attributes as $attribute_name => $display_name ) {
+ $val = $processor->get_attribute( $attribute_name );
+ /*
+ * Attributes with no value are `true` with the HTML API,
+ * we use the empty string value in the tree structure.
+ */
+ if ( true === $val ) {
+ $val = '';
+ } elseif ( 'class' === $attribute_name ) {
+ $class_names = iterator_to_array( $processor->class_list() );
+ sort( $class_names, SORT_STRING );
+ $val = implode( ' ', $class_names );
+ } elseif ( 'style' === $attribute_name ) {
+ $normalized_style = '';
+ foreach ( explode( ';', $val ) as $style ) {
+ if ( empty( trim( $style ) ) ) {
+ continue;
+ }
+ list( $style_key, $style_val ) = explode( ':', $style );
+
+ $style_key = trim( $style_key );
+ $style_val = trim( $style_val );
+
+ $normalized_style .= "{$style_key}:{$style_val};";
+ }
+ $val = $normalized_style;
+ }
+ $output .= str_repeat( $tree_indent, $tag_indent + 1 ) . "{$display_name}=\"{$val}\"\n";
+ }
+ }
+
+ // Self-contained tags contain their inner contents as modifiable text.
+ $modifiable_text = $processor->get_modifiable_text();
+ if ( '' !== $modifiable_text ) {
+ $output .= str_repeat( $tree_indent, $tag_indent + 1 ) . "\"{$modifiable_text}\"\n";
+ }
+
+ if ( 'html' === $namespace && 'TEMPLATE' === $token_name ) {
+ $output .= str_repeat( $tree_indent, $indent_level ) . "content\n";
+ ++$indent_level;
+ }
+
+ break;
+
+ case '#cdata-section':
+ case '#text':
+ $text_content = $processor->get_modifiable_text();
+ if ( '' === trim( $text_content, " \f\t\r\n" ) ) {
+ break;
+ }
+ $was_text = true;
+ if ( '' === $text_node ) {
+ $text_node .= str_repeat( $tree_indent, $indent_level ) . '"';
+ }
+ $text_node .= $text_content;
+ break;
+
+ case '#funky-comment':
+ // Comments must be "<" then "!-- " then the data then " -->".
+ $output .= str_repeat( $tree_indent, $indent_level ) . "<!-- {$processor->get_modifiable_text()} -->\n";
+ break;
+
+ case '#comment':
+ // Comments must be "<" then "!--" then the data then "-->".
+ $comment = "<!--{$processor->get_full_comment_text()}-->";
+
+ // Maybe the comment is a block delimiter.
+ $parser = new WP_Block_Parser();
+ $parser->document = $comment;
+ $parser->offset = 0;
+ list( $delimiter_type, $block_name, $block_attrs, $start_offset, $token_length ) = $parser->next_token();
+
+ switch ( $delimiter_type ) {
+ case 'block-opener':
+ case 'void-block':
+ $output .= str_repeat( $tree_indent, $indent_level ) . "BLOCK[\"{$block_name}\"]\n";
+
+ if ( 'block-opener' === $delimiter_type ) {
+ $block_context[] = $block_name;
+ ++$indent_level;
+ }
+
+ // If they're no attributes, we're done here.
+ if ( empty( $block_attrs ) ) {
+ break;
+ }
+
+ // Normalize attribute order.
+ ksort( $block_attrs, SORT_STRING );
+
+ if ( isset( $block_attrs['className'] ) ) {
+ // Normalize class name order (and de-duplicate), as we need to be tolerant of different orders.
+ // (Style attributes don't need this treatment, as they are parsed into a nested array.)
+ $block_class_processor = new WP_HTML_Tag_Processor( '<div>' );
+ $block_class_processor->next_token();
+ $block_class_processor->set_attribute( 'class', $block_attrs['className'] );
+ $class_names = iterator_to_array( $block_class_processor->class_list() );
+ sort( $class_names, SORT_STRING );
+ $block_attrs['className'] = implode( ' ', $class_names );
+ }
+
+ $block_attrs = json_encode( $block_attrs, JSON_PRETTY_PRINT );
+ // Fix indentation by "halving" it (2 spaces instead of 4).
+ // Additionally, we need to indent each line by the current indentation level.
+ $block_attrs = preg_replace( '/^( +)\1/m', str_repeat( $tree_indent, $indent_level ) . '$1', $block_attrs );
+ // Finally, indent the first line, and the last line (with the closing curly brace).
+ $output .= str_repeat( $tree_indent, $indent_level ) . substr( $block_attrs, 0, -1 ) . str_repeat( $tree_indent, $indent_level ) . "}\n";
+ break;
+ case 'block-closer':
+ // Is this a closer for the currently open block?
+ if ( ! empty( $block_context ) && end( $block_context ) === $block_name ) {
+ // If it's a closer, we don't add it to the output.
+ // Instead, we decrease indentation and remove the block from block context stack.
+ --$indent_level;
+ array_pop( $block_context );
+ }
+ break;
+ default: // Not a block delimiter.
+ $output .= str_repeat( $tree_indent, $indent_level ) . $comment . "\n";
+ break;
+ }
+ break;
+ default:
+ // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_var_export
+ $serialized_token_type = var_export( $processor->get_token_type(), true );
+ throw new Error( "Unhandled token type for tree construction: {$serialized_token_type}" );
+ }
+ }
+
+ if ( null !== $processor->get_unsupported_exception() ) {
+ throw $processor->get_unsupported_exception();
+ }
+
+ if ( null !== $processor->get_last_error() ) {
+ throw new Error( "Parser error: {$processor->get_last_error()}" );
+ }
+
+ if ( $processor->paused_at_incomplete_token() ) {
+ throw new Error( 'Paused at incomplete token.' );
+ }
+
+ if ( '' !== $text_node ) {
+ $output .= "{$text_node}\"\n";
+ }
+
+ return $output;
+}
</ins></span></pre></div>
<a id="trunktestsphpunittestsbuildvisualhtmltreephp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: trunk/tests/phpunit/tests/build-visual-html-tree.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/build-visual-html-tree.php (rev 0)
+++ trunk/tests/phpunit/tests/build-visual-html-tree.php 2025-06-10 10:23:38 UTC (rev 60295)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,144 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * Tests for build_visual_html_tree().
+ *
+ * @package WordPress
+ *
+ * @group testsuite
+ */
+class Tests_Build_Equivalent_HTML_Semantic_Tree extends WP_UnitTestCase {
+ public function data_build_equivalent_html_semantic_tree() {
+ $block_markup = <<<END
+ <!-- wp:separator {"className":"is-style-default has-custom-classname","style":{"spacing":{"margin":{"top":"50px","bottom":"50px"}}},"backgroundColor":"accent-1"} -->
+ <hr class="wp-block-separator is-style-default has-custom-classname" style="margin-top: 50px; margin-bottom: 50px" />
+ <!-- /wp:separator -->
+END;
+
+ $tree_structure = <<<END
+BLOCK["core/separator"]
+ {
+ "backgroundColor": "accent-1",
+ "className": "has-custom-classname is-style-default",
+ "style": {
+ "spacing": {
+ "margin": {
+ "top": "50px",
+ "bottom": "50px"
+ }
+ }
+ }
+ }
+ <hr>
+ class="has-custom-classname is-style-default wp-block-separator"
+ style="margin-top:50px;margin-bottom:50px;"
+
+END;
+
+ return array(
+ 'Block delimiter' => array( $block_markup, $tree_structure ),
+ );
+ }
+
+ /**
+ * @ticket 63527
+ *
+ * @covers ::build_visual_html_tree
+ *
+ * @dataProvider data_build_equivalent_html_semantic_tree
+ */
+ public function test_build_equivalent_html_semantic_tree( $markup, $expected ) {
+ $actual = build_visual_html_tree( $markup, '<body>' );
+ $this->assertSame( $expected, $actual );
+ }
+
+ public function data_build_equivalent_html_semantic_tree_with_equivalent_html() {
+ return array(
+ 'Different attribute order' => array(
+ '<img src="wp.png" alt="The WordPress logo">',
+ '<img alt="The WordPress logo" src="wp.png">',
+ ),
+ 'Different class name order' => array(
+ '<hr class="wp-block-separator is-style-default">',
+ '<hr class="is-style-default wp-block-separator">',
+ ),
+ 'Differences in style attribute whitespace and trailing semicolon' => array(
+ '<hr style="margin-top: 50px; margin-bottom: 50px;">',
+ '<hr style="margin-top:50px;margin-bottom: 50px">',
+ ),
+ 'Different block attribute order' => array(
+ '<!-- wp:separator {"className":"is-style-default","backgroundColor":"accent-1"} -->',
+ '<!-- wp:separator {"backgroundColor":"accent-1","className":"is-style-default"} -->',
+ ),
+ 'Different block class name order' => array(
+ '<!-- wp:separator {"className":"is-style-default has-custom-classname"} -->',
+ '<!-- wp:separator {"className":"has-custom-classname is-style-default"} -->',
+ ),
+ 'Different whitespace in block class name' => array(
+ '<!-- wp:separator {"className":"wp-block-separator is-style-default"} -->',
+ '<!-- wp:separator {"className":"wp-block-separator is-style-default "} -->',
+ ),
+ 'Duplicated block class names' => array(
+ '<!-- wp:separator {"className":"wp-block-separator is-style-default"} -->',
+ '<!-- wp:separator {"className":"wp-block-separator is-style-default wp-block-separator"} -->',
+ ),
+ 'Different Capitalization of tag' => array(
+ '<IMG src="wp.png" alt="The WordPress logo">',
+ '<img src="wp.png" alt="The WordPress logo">',
+ ),
+ );
+ }
+
+ /**
+ * @ticket 63527
+ *
+ * @covers ::build_visual_html_tree
+ *
+ * @dataProvider data_build_equivalent_html_semantic_tree_with_equivalent_html
+ */
+ public function test_build_equivalent_html_semantic_tree_with_equivalent_html( $expected, $actual ) {
+ $tree_expected = build_visual_html_tree( $expected, '<body>' );
+ $tree_actual = build_visual_html_tree( $actual, '<body>' );
+
+ $this->assertSame( $tree_expected, $tree_actual );
+ }
+
+ public function data_build_equivalent_html_semantic_tree_with_non_equivalent_html() {
+ return array(
+ 'Different attributes' => array(
+ '<img src="wp.png" alt="The WordPress logo">',
+ '<img alt="The WordPress logo" src="wp.png" title="WordPress">',
+ ),
+ 'Different class names' => array(
+ '<hr class="wp-block-separator is-style-default">',
+ '<hr class="is-style-default wp-block-hairline">',
+ ),
+ 'Different styles' => array(
+ '<hr style="margin-top: 50px; margin-bottom: 50px;">',
+ '<hr style="margin-top: 50px; margin-bottom: 100px">',
+ ),
+ 'Different comments' => array(
+ '<!-- abc -->',
+ '<!-- xyz -->',
+ ),
+ 'Semantically relevant whitespace' => array(
+ '<div style="color: rgb(50 139 31)">Test</div>',
+ '<div style="color:rgb(5013931)">Test</div>',
+ ),
+ );
+ }
+
+ /**
+ * @ticket 63527
+ *
+ * @covers ::build_visual_html_tree
+ *
+ * @dataProvider data_build_equivalent_html_semantic_tree_with_non_equivalent_html
+ */
+ public function test_build_equivalent_html_semantic_tree_with_non_equivalent_html( $expected, $actual ) {
+ $tree_expected = build_visual_html_tree( $expected, '<body>' );
+ $tree_actual = build_visual_html_tree( $actual, '<body>' );
+
+ $this->assertNotSame( $tree_expected, $tree_actual );
+ }
+}
</ins></span></pre></div>
<a id="trunktestsphpunittestsdependenciesscriptsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/dependencies/scripts.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/dependencies/scripts.php 2025-06-09 18:49:44 UTC (rev 60294)
+++ trunk/tests/phpunit/tests/dependencies/scripts.php 2025-06-10 10:23:38 UTC (rev 60295)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -79,7 +79,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com?ver=1.2' id='empty-deps-version-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='empty-deps-null-version-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // No scripts left to print.
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( '', get_echo( 'wp_print_scripts' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -125,7 +125,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 'id' => 'ms-isa-1-js-after',
</span><span class="cx" style="display: block; padding: 0 10px"> )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $output, 'Inline scripts in the "after" position, that are attached to a deferred main script, are failing to print/execute.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $output, '<body>', 'Inline scripts in the "after" position, that are attached to a deferred main script, are failing to print/execute.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -154,7 +154,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $output, 'Inline scripts in the "after" position, that are attached to a blocking main script, are failing to print/execute.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $output, '<body>', 'Inline scripts in the "after" position, that are attached to a blocking main script, are failing to print/execute.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -187,9 +187,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 'id' => 'ds-i1-1-js-before',
</span><span class="cx" style="display: block; padding: 0 10px"> )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' src='http://example.org/ds-i1-1.js' id='ds-i1-1-js' $strategy data-wp-strategy='{$strategy}'></script>\n";
- $expected .= "<script type='text/javascript' src='http://example.org/ds-i1-2.js' id='ds-i1-2-js' $strategy data-wp-strategy='{$strategy}'></script>\n";
- $expected .= "<script type='text/javascript' src='http://example.org/ds-i1-3.js' id='ds-i1-3-js' $strategy data-wp-strategy='{$strategy}'></script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' src='http://example.org/ds-i1-1.js' id='ds-i1-1-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
+ $expected .= "<script type='text/javascript' src='http://example.org/ds-i1-2.js' id='ds-i1-2-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
+ $expected .= "<script type='text/javascript' src='http://example.org/ds-i1-3.js' id='ds-i1-3-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= wp_get_inline_script_tag(
</span><span class="cx" style="display: block; padding: 0 10px"> 'console.log("before last");',
</span><span class="cx" style="display: block; padding: 0 10px"> array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -197,9 +197,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 'type' => 'text/javascript',
</span><span class="cx" style="display: block; padding: 0 10px"> )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' src='http://example.org/ms-i1-1.js' id='ms-i1-1-js' {$strategy} data-wp-strategy='{$strategy}'></script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' src='http://example.org/ms-i1-1.js' id='ms-i1-1-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $output, 'Inline scripts in the "before" position, that are attached to a deferred main script, are failing to print/execute.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $output, '<body>', 'Inline scripts in the "before" position, that are attached to a deferred main script, are failing to print/execute.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -216,8 +216,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // No dependents, No dependencies then async.
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'main-script-a1', '/main-script-a1.js', array(), null, array( 'strategy' => 'async' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> $output = get_echo( 'wp_print_scripts' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' src='/main-script-a1.js' id='main-script-a1-js' async data-wp-strategy='async'></script>\n";
- $this->assertEqualMarkup( $expected, $output, 'Scripts enqueued with an async loading strategy are failing to have the async attribute applied to the script handle when being printed.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' src='/main-script-a1.js' id='main-script-a1-js' async='async' data-wp-strategy='async'></script>\n";
+ $this->assertEqualHTML( $expected, $output, '<body>', 'Scripts enqueued with an async loading strategy are failing to have the async attribute applied to the script handle when being printed.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -238,9 +238,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'dependency-script-a2', '/dependency-script-a2.js', array(), null );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'main-script-a2', '/main-script-a2.js', array( 'dependency-script-a2' ), null, compact( 'strategy' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> $output = get_echo( 'wp_print_scripts' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script id='dependency-script-a2-js' src='/dependency-script-a2.js'></script>\n";
- $expected .= "<script type='text/javascript' src='/main-script-a2.js' id='main-script-a2-js' {$strategy} data-wp-strategy='{$strategy}'></script>";
- $this->assertEqualMarkup( $expected, $output, 'Dependents of a blocking dependency are free to have any strategy.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script id='dependency-script-a2-js' src='/dependency-script-a2.js' type='text/javascript'></script>\n";
+ $expected .= "<script type='text/javascript' src='/main-script-a2.js' id='main-script-a2-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>";
+ $this->assertEqualHTML( $expected, $output, '<body>', 'Dependents of a blocking dependency are free to have any strategy.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -264,7 +264,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='/main-script-a3.js' id='main-script-a3-js' data-wp-strategy='{$strategy}'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="dependent-script-a3-js" src="/dependent-script-a3.js" type="text/javascript"></script>
</span><span class="cx" style="display: block; padding: 0 10px"> JS;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $output, 'Blocking dependents must force delayed dependencies to become blocking.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $output, '<body>', 'Blocking dependents must force delayed dependencies to become blocking.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -511,18 +511,26 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-not-async-without-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-not-async-without-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=blocking-not-async-without-dependency:%20script' id='blocking-not-async-without-dependency-js'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-not-async-without-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-not-async-without-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-with-blocking-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-with-blocking-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=async-with-blocking-dependency:%20script' id='async-with-blocking-dependency-js' data-wp-strategy='async'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-with-blocking-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-with-blocking-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -548,25 +556,37 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-no-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-no-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=async-no-dependency:%20script' id='async-no-dependency-js' data-wp-strategy='async'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-no-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-no-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-one-async-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-one-async-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=async-one-async-dependency:%20script' id='async-one-async-dependency-js' data-wp-strategy='async'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-one-async-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-one-async-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-two-async-dependencies-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-two-async-dependencies: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=async-two-async-dependencies:%20script' id='async-two-async-dependencies-js' data-wp-strategy='async'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-two-async-dependencies-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-two-async-dependencies: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -584,18 +604,26 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-with-blocking-dependent-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-with-blocking-dependent: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=async-with-blocking-dependent:%20script' id='async-with-blocking-dependent-js' data-wp-strategy='async'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-with-blocking-dependent-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-with-blocking-dependent: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-dependent-of-async-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-dependent-of-async: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=blocking-dependent-of-async:%20script' id='blocking-dependent-of-async-js'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-dependent-of-async-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-dependent-of-async: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -613,18 +641,26 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-with-defer-dependent-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-with-defer-dependent: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=async-with-defer-dependent:%20script' id='async-with-defer-dependent-js' data-wp-strategy='async'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-with-defer-dependent-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-with-defer-dependent: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-async-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-async: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-async:%20script' id='defer-dependent-of-async-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-async-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-async: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -645,17 +681,25 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-bundle-of-none-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-bundle-of-none: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-bundle-of-none-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-bundle-of-none: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-blocking-bundle-of-none-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-none: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-blocking-bundle-of-none:%20script' id='defer-dependent-of-blocking-bundle-of-none-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-blocking-bundle-of-none-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-none: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -679,25 +723,37 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-bundle-member-one-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-bundle-member-one: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=blocking-bundle-member-one:%20script' id='blocking-bundle-member-one-js'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-bundle-member-one-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-bundle-member-one: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-bundle-member-two-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-bundle-member-two: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=blocking-bundle-member-two:%20script' id='blocking-bundle-member-two-js'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-bundle-member-two-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-bundle-member-two: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-blocking-bundle-of-two-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-two: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-blocking-bundle-of-two:%20script' id='defer-dependent-of-blocking-bundle-of-two-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-blocking-bundle-of-two-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-two: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -720,17 +776,25 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-bundle-of-none-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-bundle-of-none: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-bundle-of-none-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-bundle-of-none: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-defer-bundle-of-none-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-defer-bundle-of-none: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-defer-bundle-of-none:%20script' id='defer-dependent-of-defer-bundle-of-none-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-defer-bundle-of-none-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-defer-bundle-of-none: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -751,25 +815,37 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-dependency-with-defer-following-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-dependency-with-defer-following-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=blocking-dependency-with-defer-following-dependency:%20script' id='blocking-dependency-with-defer-following-dependency-js'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-dependency-with-defer-following-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-dependency-with-defer-following-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependency-with-blocking-preceding-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependency-with-blocking-preceding-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependency-with-blocking-preceding-dependency:%20script' id='defer-dependency-with-blocking-preceding-dependency-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependency-with-blocking-preceding-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependency-with-blocking-preceding-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-blocking-and-defer-dependencies-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-blocking-and-defer-dependencies: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-blocking-and-defer-dependencies:%20script' id='defer-dependent-of-blocking-and-defer-dependencies-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-blocking-and-defer-dependencies-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-blocking-and-defer-dependencies: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -790,25 +866,37 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependency-with-blocking-following-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependency-with-blocking-following-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependency-with-blocking-following-dependency:%20script' id='defer-dependency-with-blocking-following-dependency-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependency-with-blocking-following-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependency-with-blocking-following-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-dependency-with-defer-preceding-dependency-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-dependency-with-defer-preceding-dependency: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=blocking-dependency-with-defer-preceding-dependency:%20script' id='blocking-dependency-with-defer-preceding-dependency-js'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="blocking-dependency-with-defer-preceding-dependency-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "blocking-dependency-with-defer-preceding-dependency: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-defer-and-blocking-dependencies-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-defer-and-blocking-dependencies: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-defer-and-blocking-dependencies:%20script' id='defer-dependent-of-defer-and-blocking-dependencies-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-defer-and-blocking-dependencies-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-defer-and-blocking-dependencies: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -826,18 +914,26 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-with-async-dependent-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-with-async-dependent: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-with-async-dependent:%20script' id='defer-with-async-dependent-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-with-async-dependent-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-with-async-dependent: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-dependent-of-defer-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-dependent-of-defer: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=async-dependent-of-defer:%20script' id='async-dependent-of-defer-js' data-wp-strategy='async'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="async-dependent-of-defer-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "async-dependent-of-defer: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -851,9 +947,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-with-before-inline-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-with-before-inline: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-with-before-inline:%20script' id='defer-with-before-inline-js' defer data-wp-strategy='defer'></script>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-with-before-inline:%20script' id='defer-with-before-inline-js' defer='defer' data-wp-strategy='defer'></script>
</ins><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -867,7 +965,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-with-after-inline:%20script' id='defer-with-after-inline-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-with-after-inline-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-with-after-inline: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -883,9 +983,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'theme-functions', 'https://example.com/theme-functions.js', array( 'jquery' ), null, array( 'strategy' => 'defer' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<script type='text/javascript' src='http://$wp_tests_domain/wp-includes/js/jquery/jquery.js' id='jquery-core-js' defer data-wp-strategy='defer'></script>
-<script type='text/javascript' src='http://$wp_tests_domain/wp-includes/js/jquery/jquery-migrate.js' id='jquery-migrate-js' defer data-wp-strategy='defer'></script>
-<script type='text/javascript' src='https://example.com/theme-functions.js' id='theme-functions-js' defer data-wp-strategy='defer'></script>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<script type='text/javascript' src='http://$wp_tests_domain/wp-includes/js/jquery/jquery.js' id='jquery-core-js' defer='defer' data-wp-strategy='defer'></script>
+<script type='text/javascript' src='http://$wp_tests_domain/wp-includes/js/jquery/jquery-migrate.js' id='jquery-migrate-js' defer='defer' data-wp-strategy='defer'></script>
+<script type='text/javascript' src='https://example.com/theme-functions.js' id='theme-functions-js' defer='defer' data-wp-strategy='defer'></script>
</ins><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -912,11 +1012,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=inner-bundle-member-two:%20script' id='inner-bundle-member-two-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=outer-bundle-leaf-member:%20script' id='outer-bundle-leaf-member-js'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-nested-aliases-js-before" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-nested-aliases: before inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-nested-aliases:%20script' id='defer-dependent-of-nested-aliases-js' data-wp-strategy='defer'></script>
</span><span class="cx" style="display: block; padding: 0 10px"> <script id="defer-dependent-of-nested-aliases-js-after" type="text/javascript">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* <![CDATA[ */
</ins><span class="cx" style="display: block; padding: 0 10px"> scriptEventLog.push( "defer-dependent-of-nested-aliases: after inline" )
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/* ]]> */
</ins><span class="cx" style="display: block; padding: 0 10px"> </script>
</span><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -935,9 +1039,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $this->enqueue_test_script( 'defer-dependent-of-async-aliases', 'defer', array( $alias_handle ) );
</span><span class="cx" style="display: block; padding: 0 10px"> },
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_markup' => <<<HTML
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<script type='text/javascript' src='https://example.com/external.js?script_event_log=async1:%20script' id='async1-js' defer data-wp-strategy='async'></script>
-<script type='text/javascript' src='https://example.com/external.js?script_event_log=async2:%20script' id='async2-js' defer data-wp-strategy='async'></script>
-<script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-async-aliases:%20script' id='defer-dependent-of-async-aliases-js' defer data-wp-strategy='defer'></script>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<script type='text/javascript' src='https://example.com/external.js?script_event_log=async1:%20script' id='async1-js' defer='defer' data-wp-strategy='async'></script>
+<script type='text/javascript' src='https://example.com/external.js?script_event_log=async2:%20script' id='async2-js' defer='defer' data-wp-strategy='async'></script>
+<script type='text/javascript' src='https://example.com/external.js?script_event_log=defer-dependent-of-async-aliases:%20script' id='defer-dependent-of-async-aliases-js' defer='defer' data-wp-strategy='defer'></script>
</ins><span class="cx" style="display: block; padding: 0 10px"> HTML
</span><span class="cx" style="display: block; padding: 0 10px"> ,
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -960,7 +1064,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> public function test_various_strategy_dependency_chains( $set_up, $expected_markup ) {
</span><span class="cx" style="display: block; padding: 0 10px"> $set_up();
</span><span class="cx" style="display: block; padding: 0 10px"> $actual_markup = get_echo( 'wp_print_scripts' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( trim( $expected_markup ), trim( $actual_markup ), "Actual markup:\n{$actual_markup}" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( trim( $expected_markup ), trim( $actual_markup ), '<body>', "Actual markup:\n{$actual_markup}" );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1036,12 +1140,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'dependent-script-d4-2', '/dependent-script-d4-2.js', array( 'dependent-script-d4-1' ), null, array( 'strategy' => 'async' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'dependent-script-d4-3', '/dependent-script-d4-3.js', array( 'dependent-script-d4-2' ), null, array( 'strategy' => 'defer' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> $output = get_echo( 'wp_print_scripts' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' src='/main-script-d4.js' id='main-script-d4-js' defer data-wp-strategy='defer'></script>\n";
- $expected .= "<script type='text/javascript' src='/dependent-script-d4-1.js' id='dependent-script-d4-1-js' defer data-wp-strategy='defer'></script>\n";
- $expected .= "<script type='text/javascript' src='/dependent-script-d4-2.js' id='dependent-script-d4-2-js' defer data-wp-strategy='async'></script>\n";
- $expected .= "<script type='text/javascript' src='/dependent-script-d4-3.js' id='dependent-script-d4-3-js' defer data-wp-strategy='defer'></script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' src='/main-script-d4.js' id='main-script-d4-js' defer='defer' data-wp-strategy='defer'></script>\n";
+ $expected .= "<script type='text/javascript' src='/dependent-script-d4-1.js' id='dependent-script-d4-1-js' defer='defer' data-wp-strategy='defer'></script>\n";
+ $expected .= "<script type='text/javascript' src='/dependent-script-d4-2.js' id='dependent-script-d4-2-js' defer='defer' data-wp-strategy='async'></script>\n";
+ $expected .= "<script type='text/javascript' src='/dependent-script-d4-3.js' id='dependent-script-d4-3-js' defer='defer' data-wp-strategy='defer'></script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $output, 'Scripts registered as defer but that have dependents that are async are expected to have said dependents deferred.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $output, '<body>', 'Scripts registered as defer but that have dependents that are async are expected to have said dependents deferred.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1113,7 +1217,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_header .= "<script type='text/javascript' src='/enqueue-header-old.js' id='enqueue-header-old-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_header .= "<script type='text/javascript' src='/enqueue-header-new.js' id='enqueue-header-new-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_header, $actual_header, 'Scripts registered/enqueued using the older $in_footer parameter or the newer $args parameter should have the same outcome.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_header, $actual_header, '<body>', 'Scripts registered/enqueued using the older $in_footer parameter or the newer $args parameter should have the same outcome.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> $this->assertEmpty( $actual_footer, 'Expected footer to be empty since all scripts were for head.' );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1141,7 +1245,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_footer .= "<script type='text/javascript' src='/enqueue-footer-new.js' id='enqueue-footer-new-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertEmpty( $actual_header, 'Expected header to be empty since all scripts targeted footer.' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_footer, $actual_footer, 'Scripts registered/enqueued using the older $in_footer parameter or the newer $args parameter should have the same outcome.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_footer, $actual_footer, '<body>', 'Scripts registered/enqueued using the older $in_footer parameter or the newer $args parameter should have the same outcome.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1260,7 +1364,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_register_script( 'invalid-strategy', '/defaults.js', array(), null, array( 'strategy' => 'random-strategy' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'invalid-strategy' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML(
</ins><span class="cx" style="display: block; padding: 0 10px"> "<script type='text/javascript' src='/defaults.js' id='invalid-strategy-js'></script>\n",
</span><span class="cx" style="display: block; padding: 0 10px"> get_echo( 'wp_print_scripts' )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1285,7 +1389,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_script_add_data( 'invalid-strategy', 'strategy', 'random-strategy' );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'invalid-strategy' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML(
</ins><span class="cx" style="display: block; padding: 0 10px"> "<script type='text/javascript' src='/defaults.js' id='invalid-strategy-js'></script>\n",
</span><span class="cx" style="display: block; padding: 0 10px"> get_echo( 'wp_print_scripts' )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1306,7 +1410,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> public function test_script_strategy_doing_it_wrong_via_enqueue() {
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'invalid-strategy', '/defaults.js', array(), null, array( 'strategy' => 'random-strategy' ) );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML(
</ins><span class="cx" style="display: block; padding: 0 10px"> "<script type='text/javascript' src='/defaults.js' id='invalid-strategy-js'></script>\n",
</span><span class="cx" style="display: block; padding: 0 10px"> get_echo( 'wp_print_scripts' )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1342,9 +1446,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $concatenate_scripts = $old_value;
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one-concat-dep,two-concat-dep,three-concat-dep&ver={$wp_version}'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' src='/main-script.js' id='main-defer-script-js' defer data-wp-strategy='defer'></script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' src='/main-script.js' id='main-defer-script-js' defer='defer' data-wp-strategy='defer'></script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts, 'Scripts are being incorrectly concatenated when a main script is registered with a "defer" loading strategy. Deferred scripts should not be part of the script concat loading query.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts, '<body>', 'Scripts are being incorrectly concatenated when a main script is registered with a "defer" loading strategy. Deferred scripts should not be part of the script concat loading query.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1377,9 +1481,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $concatenate_scripts = $old_value;
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one-concat-dep-1,two-concat-dep-1,three-concat-dep-1&ver={$wp_version}'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' src='/main-script.js' id='main-async-script-1-js' async data-wp-strategy='async'></script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' src='/main-script.js' id='main-async-script-1-js' async='async' data-wp-strategy='async'></script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts, 'Scripts are being incorrectly concatenated when a main script is registered with an "async" loading strategy. Async scripts should not be part of the script concat loading query.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts, '<body>', 'Scripts are being incorrectly concatenated when a main script is registered with an "async" loading strategy. Async scripts should not be part of the script concat loading query.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1416,9 +1520,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $concatenate_scripts = $old_value;
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one-concat-dep-2,two-concat-dep-2,three-concat-dep-2,four-concat-dep-2,five-concat-dep-2,six-concat-dep-2&ver={$wp_version}'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' src='/main-script.js' id='deferred-script-2-js' defer data-wp-strategy='defer'></script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' src='/main-script.js' id='deferred-script-2-js' defer='defer' data-wp-strategy='defer'></script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts, 'Scripts are being incorrectly concatenated when a main script is registered as deferred after other blocking scripts are registered. Deferred scripts should not be part of the script concat loader query string. ' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts, '<body>', 'Scripts are being incorrectly concatenated when a main script is registered as deferred after other blocking scripts are registered. Deferred scripts should not be part of the script concat loader query string. ' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1427,6 +1531,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> public function test_wp_enqueue_script_with_html5_support_does_not_contain_type_attribute() {
</span><span class="cx" style="display: block; padding: 0 10px"> global $wp_version;
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->add_html5_script_theme_support();
+
</ins><span class="cx" style="display: block; padding: 0 10px"> $GLOBALS['wp_scripts'] = new WP_Scripts();
</span><span class="cx" style="display: block; padding: 0 10px"> $GLOBALS['wp_scripts']->default_version = get_bloginfo( 'version' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1434,7 +1540,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script src='http://example.com?ver={$wp_version}' id='empty-deps-no-version-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1473,7 +1579,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$wp_scripts->base_url}ftp://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver={$wp_version}' id='jquery-ftp-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // Go!
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // No scripts left to print.
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( '', get_echo( 'wp_print_scripts' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1516,7 +1622,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-only-data-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // Go!
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // No scripts left to print.
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( '', get_echo( 'wp_print_scripts' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1531,10 +1637,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // Enqueue and add conditional comments.
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-only-conditional', 'example.com', array(), null );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_script_add_data( 'test-only-conditional', 'conditional', 'gt IE 7' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<!--[if gt IE 7]>\n<script type='text/javascript' src='http://example.com' id='test-only-conditional-js'></script>\n<![endif]-->\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<!--[if gt IE 7]>\n<script type=\"text/javascript\" src=\"http://example.com\" id=\"test-only-conditional-js\"></script>\n<![endif]-->\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // Go!
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // No scripts left to print.
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( '', get_echo( 'wp_print_scripts' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1555,7 +1661,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = str_replace( "'", '"', $expected );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // Go!
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // No scripts left to print.
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( '', get_echo( 'wp_print_scripts' ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1573,10 +1679,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='http://example.com' id='test-invalid-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // Go!
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> // No scripts left to print.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( '', get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( '', get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1602,7 +1708,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'handle-three' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1690,8 +1796,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_header .= "<script type='text/javascript' src='/child-head.js' id='child-head-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_footer = "<script type='text/javascript' src='/parent.js' id='parent-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_header, $header, 'Expected same header markup.' );
- $this->assertEqualMarkup( $expected_footer, $footer, 'Expected same footer markup.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_header, $header, '<body>', 'Expected same header markup.' );
+ $this->assertEqualHTML( $expected_footer, $footer, '<body>', 'Expected same footer markup.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1711,8 +1817,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_footer = "<script type='text/javascript' src='/child-footer.js' id='child-footer-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_footer .= "<script type='text/javascript' src='/parent.js' id='parent-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_header, $header, 'Expected same header markup.' );
- $this->assertEqualMarkup( $expected_footer, $footer, 'Expected same footer markup.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_header, $header, '<body>', 'Expected same header markup.' );
+ $this->assertEqualHTML( $expected_footer, $footer, '<body>', 'Expected same footer markup.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1742,8 +1848,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_footer .= "<script type='text/javascript' src='/child2-footer.js' id='child2-footer-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_footer .= "<script type='text/javascript' src='/parent-footer.js' id='parent-footer-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_header, $header, 'Expected same header markup.' );
- $this->assertEqualMarkup( $expected_footer, $footer, 'Expected same footer markup.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_header, $header, '<body>', 'Expected same header markup.' );
+ $this->assertEqualHTML( $expected_footer, $footer, '<body>', 'Expected same footer markup.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1770,10 +1876,16 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-example', 'example.com', array(), null );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = <<<HTML
+<script type='text/javascript' id='test-example-js-before'>
+/* <![CDATA[ */
+console.log("before");
+/* ]]> */
+</script>
+HTML;
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1784,9 +1896,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= <<<HTML
+<script type='text/javascript' id='test-example-js-after'>
+/* <![CDATA[ */
+console.log("after");
+/* ]]> */
+</script>
+HTML;
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1797,11 +1915,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1812,9 +1930,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-example' );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1825,9 +1943,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-example' );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1839,10 +1957,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
+ $expected .= "<script type='text/javascript' id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1855,11 +1973,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1872,11 +1990,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' id='test-example-js-extra'>\n/* <![CDATA[ */\nvar testExample = {\"foo\":\"bar\"};\n/* ]]> */\n</script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1895,13 +2013,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'one', 'console.log("before one");', 'before' );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'two', 'console.log("before two");', 'before' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='one-js-before'>\nconsole.log(\"before one\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' id='one-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before one\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}one.js?ver={$wp_version}' id='one-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='two-js-before'>\nconsole.log(\"before two\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='two-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before two\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}three.js?ver={$wp_version}' id='three-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1919,12 +2037,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'one', 'console.log("before one");', 'before' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected = "<script type='text/javascript' id='one-js-before'>\nconsole.log(\"before one\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected = "<script type='text/javascript' id='one-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before one\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}one.js?ver={$wp_version}' id='one-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}three.js?ver={$wp_version}' id='three-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1946,12 +2064,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one&ver={$wp_version}'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='two-js-after'>\nconsole.log(\"after two\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='two-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after two\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}three.js?ver={$wp_version}' id='three-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='three-js-after'>\nconsole.log(\"after three\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='three-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after three\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='{$this->default_scripts_dir}four.js?ver={$wp_version}' id='four-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1969,9 +2087,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_localized = str_replace( "'", '"', $expected_localized );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<!--[if gte IE 9]>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<![endif]-->\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = str_replace( "'", '"', $expected );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1982,7 +2100,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_script_add_data( 'test-example', 'conditional', 'gte IE 9' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( $expected_localized, get_echo( 'wp_print_scripts' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $wp_scripts->print_html );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $wp_scripts->print_html );
</ins><span class="cx" style="display: block; padding: 0 10px"> $this->assertTrue( $wp_scripts->do_concat );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1999,7 +2117,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate&ver={$wp_version}'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("after");' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2007,7 +2125,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_print_scripts();
</span><span class="cx" style="display: block; padding: 0 10px"> $print_scripts = get_echo( '_print_scripts' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2023,8 +2141,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate&ver={$wp_version}'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<!--[if gte IE 9]>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
- $expected .= "<script type='text/javascript' id='test-example-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type=\"text/javascript\" src=\"http://example.com\" id=\"test-example-js\"></script>\n";
+ $expected .= "<script type=\"text/javascript\" id=\"test-example-js-after\">\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<![endif]-->\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2034,7 +2152,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_print_scripts();
</span><span class="cx" style="display: block; padding: 0 10px"> $print_scripts = get_echo( '_print_scripts' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2050,7 +2168,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $wp_scripts->do_concat = true;
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate&ver={$wp_version}'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2059,7 +2177,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_print_scripts();
</span><span class="cx" style="display: block; padding: 0 10px"> $print_scripts = get_echo( '_print_scripts' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2075,15 +2193,17 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $wp_scripts->do_concat = true;
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,wp-dom-ready,wp-hooks&ver={$wp_version}'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example-js-before'>\nconsole.log(\"before\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/i18n.min.js' id='wp-i18n-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' id='wp-i18n-js-after'>\n";
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "/* <![CDATA[ */\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );\n";
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "/* ]]> */\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "</script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/dist/a11y.min.js' id='wp-a11y-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example2.com' id='test-example2-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='test-example2-js-after'>\nconsole.log(\"after\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='test-example2-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
</span><span class="cx" style="display: block; padding: 0 10px"> wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2109,7 +2229,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $print_scripts // Printed scripts.
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2126,7 +2246,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_tail = "<script type='text/javascript' src='/customize-dependency.js' id='customize-dependency-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected_tail .= "<script type='text/javascript' id='customize-dependency-js-after'>\n";
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected_tail .= "/* <![CDATA[ */\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected_tail .= "tryCustomizeDependency()\n";
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected_tail .= "/* ]]> */\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected_tail .= "</script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $handle = 'customize-dependency';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2142,7 +2264,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $tail = substr( $print_scripts, strrpos( $print_scripts, '<script type="text/javascript" src="/customize-dependency.js" id="customize-dependency-js">' ) );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_tail, $tail );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_tail, $tail );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2161,12 +2283,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'four', '/wp-includes/js/script4.js' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-includes/js/script.js?ver={$wp_version}' id='one-js'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='one-js-after'>\nconsole.log(\"after one\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='one-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after one\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script2.js?ver={$wp_version}' id='two-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script3.js?ver={$wp_version}' id='three-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script4.js?ver={$wp_version}' id='four-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2185,11 +2307,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_enqueue_script( 'four', '/wp-includes/js/script4.js' );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one,two&ver={$wp_version}'></script>\n";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $expected .= "<script type='text/javascript' id='three-js-before'>\nconsole.log(\"before three\");\n</script>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $expected .= "<script type='text/javascript' id='three-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before three\");\n/* ]]> */\n</script>\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script3.js?ver={$wp_version}' id='three-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script4.js?ver={$wp_version}' id='four-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2206,7 +2328,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'delayed' => false,
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_data' => '/*before foo 1*/',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- 'expected_tag' => "<script id='foo-js-before' type='text/javascript'>\n/*before foo 1*/\n</script>\n",
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'expected_tag' => "<script id='foo-js-before' type='text/javascript'>\n/* <![CDATA[ */\n/*before foo 1*/\n/* ]]> */\n</script>\n",
</ins><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'after-blocking' => array(
</span><span class="cx" style="display: block; padding: 0 10px"> 'position' => 'after',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2216,7 +2338,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'delayed' => false,
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_data' => "/*after foo 1*/\n/*after foo 2*/",
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- 'expected_tag' => "<script id='foo-js-after' type='text/javascript'>\n/*after foo 1*/\n/*after foo 2*/\n</script>\n",
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'expected_tag' => "<script id='foo-js-after' type='text/javascript'>\n/* <![CDATA[ */\n/*after foo 1*/\n/*after foo 2*/\n/* ]]> */\n</script>\n",
</ins><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'before-delayed' => array(
</span><span class="cx" style="display: block; padding: 0 10px"> 'position' => 'before',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2225,7 +2347,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'delayed' => true,
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_data' => '/*before foo 1*/',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- 'expected_tag' => "<script id='foo-js-before' type='text/javascript'>\n/*before foo 1*/\n</script>\n",
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'expected_tag' => "<script id='foo-js-before' type='text/javascript'>\n/* <![CDATA[ */\n/*before foo 1*/\n/* ]]> */\n</script>\n",
</ins><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'after-delayed' => array(
</span><span class="cx" style="display: block; padding: 0 10px"> 'position' => 'after',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2235,7 +2357,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> 'delayed' => true,
</span><span class="cx" style="display: block; padding: 0 10px"> 'expected_data' => "/*after foo 1*/\n/*after foo 2*/",
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- 'expected_tag' => "<script id='foo-js-after' type='text/javascript'>\n/*after foo 1*/\n/*after foo 2*/\n</script>\n",
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'expected_tag' => "<script id='foo-js-after' type='text/javascript'>\n/* <![CDATA[ */\n/*after foo 1*/\n/*after foo 2*/\n/* ]]> */\n</script>\n",
</ins><span class="cx" style="display: block; padding: 0 10px"> ),
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2287,13 +2409,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( $expected_data, $wp_scripts->get_inline_script_data( $handle, $position ) );
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertSame( $expected_data, $wp_scripts->print_inline_script( $handle, $position, false ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML(
</ins><span class="cx" style="display: block; padding: 0 10px"> $expected_tag,
</span><span class="cx" style="display: block; padding: 0 10px"> $wp_scripts->get_inline_script_tag( $handle, $position )
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px"> ob_start();
</span><span class="cx" style="display: block; padding: 0 10px"> $output = $wp_scripts->print_inline_script( $handle, $position, true );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_tag, ob_get_clean() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_tag, ob_get_clean() );
</ins><span class="cx" style="display: block; padding: 0 10px"> $this->assertEquals( $expected_data, $output );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2321,7 +2443,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script.js' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2348,7 +2470,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-content/plugins/my-plugin/js/script.js' id='plugin-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2375,7 +2497,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-content/themes/my-theme/js/script.js' id='theme-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2402,7 +2524,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-admin/js/script.js' id='script-handle-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2432,7 +2554,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' src='/wp-includes/js/dist/wp-i18n.js' id='wp-i18n-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-admin/js/script.js' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2461,7 +2583,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> );
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script.js' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2491,7 +2613,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script.js' id='test-dependency-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/wp-includes/js/script2.js' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2880,7 +3002,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected = "<script type='text/javascript' id='test-example-js-extra'>\n/* <![CDATA[ */\nvar testExample = {$expected};\n/* ]]> */\n</script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='http://example.com' id='test-example-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, get_echo( 'wp_print_scripts' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2945,7 +3067,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/plugins/wp-i18n.js' id='wp-i18n-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px"> $expected .= "<script type='text/javascript' src='/default/common.js' id='common-js'></script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected, $print_scripts );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected, $print_scripts );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2981,87 +3103,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Parse an HTML markup fragment.
- *
- * @param string $markup Markup.
- * @return DOMDocument Document containing the normalized markup fragment.
- */
- protected function parse_markup_fragment( $markup ) {
- $dom = new DOMDocument();
- $dom->loadHTML(
- "<!DOCTYPE html><html><head><meta charset=utf8></head><body>{$markup}</body></html>"
- );
-
- /** @var DOMElement $body */
- $body = $dom->getElementsByTagName( 'body' )->item( 0 );
-
- // Trim whitespace nodes added before/after which can be added when parsing.
- foreach ( array( $body->firstChild, $body->lastChild ) as $node ) {
- if ( $node instanceof DOMText && '' === trim( $node->data ) ) {
- $body->removeChild( $node );
- }
- }
-
- // Normalize other whitespace nodes.
- $xpath = new DOMXPath( $dom );
- foreach ( $xpath->query( '//text()' ) as $node ) {
- /** @var DOMText $node */
- if ( preg_match( '/^\s+$/', $node->nodeValue ) ) {
- $node->nodeValue = ' ';
- }
- }
-
- return $dom;
- }
-
- /**
- * Assert markup is equal after normalizing script tags.
- *
- * @param string $expected Expected markup.
- * @param string $actual Actual markup.
- * @param string $message Message.
- */
- protected function assertEqualMarkup( $expected, $actual, $message = '' ) {
- $expected_dom = $this->parse_markup_fragment( $expected );
- $actual_dom = $this->parse_markup_fragment( $actual );
- foreach ( array( $expected_dom, $actual_dom ) as $dom ) {
- $xpath = new DOMXPath( $dom );
- /** @var DOMElement $script */
-
- // Normalize type attribute. When missing, it defaults to text/javascript.
- foreach ( $xpath->query( '//script[ not( @type ) ]' ) as $script ) {
- $script->setAttribute( 'type', 'text/javascript' );
- }
-
- // Normalize script contents to remove CDATA wrapper.
- foreach ( $xpath->query( '//script[ contains( text(), "<![CDATA[" ) ]' ) as $script ) {
- $script->textContent = str_replace(
- array(
- "/* <![CDATA[ */\n",
- "\n/* ]]> */",
- ),
- '',
- $script->textContent
- );
- }
-
- // Normalize XHTML-compatible boolean attributes to HTML5 ones.
- foreach ( array( 'async', 'defer' ) as $attribute ) {
- foreach ( iterator_to_array( $xpath->query( "//script[ @{$attribute} = '{$attribute}' ]" ) ) as $script ) {
- $script->removeAttribute( $attribute );
- $script->setAttributeNode( $dom->createAttribute( $attribute ) );
- }
- }
- }
-
- $this->assertEquals(
- $expected_dom->getElementsByTagName( 'body' )->item( 0 ),
- $actual_dom->getElementsByTagName( 'body' )->item( 0 ),
- $message
- );
- }
-
- /**
</del><span class="cx" style="display: block; padding: 0 10px"> * Adds html5 script theme support.
</span><span class="cx" style="display: block; padding: 0 10px"> */
</span><span class="cx" style="display: block; padding: 0 10px"> protected function add_html5_script_theme_support() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3100,8 +3141,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> wp_scripts()->do_footer_items();
</span><span class="cx" style="display: block; padding: 0 10px"> $footer = ob_get_clean();
</span><span class="cx" style="display: block; padding: 0 10px">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- $this->assertEqualMarkup( $expected_header, $header, 'Expected header script markup to match.' );
- $this->assertEqualMarkup( $expected_footer, $footer, 'Expected footer script markup to match.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $this->assertEqualHTML( $expected_header, $header, '<body>', 'Expected header script markup to match.' );
+ $this->assertEqualHTML( $expected_footer, $footer, '<body>', 'Expected footer script markup to match.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> $this->assertEqualSets( $expected_in_footer, wp_scripts()->in_footer, 'Expected to have the same handles for in_footer.' );
</span><span class="cx" style="display: block; padding: 0 10px"> $this->assertEquals( $expected_groups, wp_scripts()->groups, 'Expected groups to match.' );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre>
</div>
</div>
</body>
</html>