diff --git a/tests/Middleware/DeferJavascriptRobustTest.php b/tests/Middleware/DeferJavascriptRobustTest.php new file mode 100644 index 0000000..fc04d59 --- /dev/null +++ b/tests/Middleware/DeferJavascriptRobustTest.php @@ -0,0 +1,457 @@ +middleware = new DeferJavascript(); + } + + public function test_adds_defer_to_external_scripts(): void + { + $html = <<<'HTML' + + +
+ + + + + +HTML; + + $middleware = new DeferJavascript(); + $actual = $middleware->apply($html); + + // Note: Regex adds an extra space, but this is valid HTML + $this->assertStringContainsString('src="https://cdn.example.com/library.js" defer>', $actual); + $this->assertStringContainsString('defer>', $actual); + } + + public function test_preserves_existing_defer_attribute(): void + { + $html = <<<'HTML' + + + + + + + + +HTML; + + $middleware = new DeferJavascript(); + $actual = $middleware->apply($html); + + // Should not add duplicate defer + $this->assertStringContainsString(' + + + + +