Repository: symfony/ux
Pull request #1759 (2024-04-20 04:37:14)

[LiveComponent] hide property-info deprecations in Symfony 7.1
| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| Issues        | n/a
| License       | MIT

This fixes the LiveComponent CI on 7.1.


Patch:
diff --git a/src/LazyImage/src/BlurHash/BlurHash.php b/src/LazyImage/src/BlurHash/BlurHash.php
index 4eef2fee..320d6491 100644
--- a/src/LazyImage/src/BlurHash/BlurHash.php
+++ b/src/LazyImage/src/BlurHash/BlurHash.php
@@ -13,7 +13,6 @@ namespace Symfony\UX\LazyImage\BlurHash;
 
 use Intervention\Image\ImageManager;
 use kornrunner\Blurhash\Blurhash as BlurhashEncoder;
-use Symfony\Contracts\Cache\CacheInterface;
 
 /**
  * @author Titouan Galopin <galopintitouan@gmail.com>
@@ -24,7 +23,6 @@ class BlurHash implements BlurHashInterface
 {
     public function __construct(
         private ?ImageManager $imageManager = null,
-        private ?CacheInterface $cache = null,
     ) {
     }
 
@@ -62,18 +60,6 @@ class BlurHash implements BlurHashInterface
             throw new \LogicException('To use the Blurhash feature, install kornrunner/blurhash.');
         }
 
-        if ($this->cache) {
-            return $this->cache->get(
-                'blurhash.'.hash('xxh3', $filename.$encodingWidth.$encodingHeight),
-                fn () => $this->doEncode($filename, $encodingWidth, $encodingHeight)
-            );
-        }
-
-        return $this->doEncode($filename, $encodingWidth, $encodingHeight);
-    }
-
-    private function doEncode(string $filename, int $encodingWidth = 75, int $encodingHeight = 75): string
-    {
         // Resize image to increase encoding performance
         $image = $this->imageManager->make(file_get_contents($filename));
         $image->resize($encodingWidth, $encodingHeight, static function ($constraint) {
diff --git a/src/LazyImage/src/BlurHash/CachedBlurHash.php b/src/LazyImage/src/BlurHash/CachedBlurHash.php
new file mode 100644
index 00000000..e5dad760
--- /dev/null
+++ b/src/LazyImage/src/BlurHash/CachedBlurHash.php
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\UX\LazyImage\BlurHash;
+
+use Symfony\Contracts\Cache\CacheInterface;
+
+/**
+ * Decorate a BlurHashInterface to cache the result of the encoding, for performance purposes.
+ *
+ * @author Hugo Alliaume <hugo@alliau.me>
+ *
+ * @final
+ */
+class CachedBlurHash implements BlurHashInterface
+{
+    public function __construct(
+        private BlurHashInterface $blurHash,
+        private CacheInterface $cache,
+    ) {
+    }
+
+    public function createDataUriThumbnail(string $filename, int $width, int $height, int $encodingWidth = 75, int $encodingHeight = 75): string
+    {
+        return $this->blurHash->createDataUriThumbnail($filename, $width, $height, $encodingWidth, $encodingHeight);
+    }
+
+    public function encode(string $filename, int $encodingWidth = 75, int $encodingHeight = 75): string
+    {
+        return $this->cache->get(
+            'blurhash.'.hash('xxh3', $filename.$encodingWidth.$encodingHeight),
+            fn () => $this->blurHash->encode($filename, $encodingWidth, $encodingHeight)
+        );
+    }
+}
diff --git a/src/LazyImage/src/DependencyInjection/LazyImageExtension.php b/src/LazyImage/src/DependencyInjection/LazyImageExtension.php
index 8089ed5b..be5686f8 100644
--- a/src/LazyImage/src/DependencyInjection/LazyImageExtension.php
+++ b/src/LazyImage/src/DependencyInjection/LazyImageExtension.php
@@ -21,6 +21,7 @@ use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\HttpKernel\DependencyInjection\Extension;
 use Symfony\UX\LazyImage\BlurHash\BlurHash;
 use Symfony\UX\LazyImage\BlurHash\BlurHashInterface;
+use Symfony\UX\LazyImage\BlurHash\CachedBlurHash;
 use Symfony\UX\LazyImage\Twig\BlurHashExtension;
 
 /**
@@ -44,18 +45,22 @@ class LazyImageExtension extends Extension implements PrependExtensionInterface
 
         $container
             ->setDefinition('lazy_image.blur_hash', new Definition(BlurHash::class))
-            ->setArgument(0, new Reference('lazy_image.image_manager', ContainerInterface::NULL_ON_INVALID_REFERENCE))
+            ->addArgument(new Reference('lazy_image.image_manager', ContainerInterface::NULL_ON_INVALID_REFERENCE))
             ->setPublic(false)
         ;
 
+        $container->setAlias(BlurHashInterface::class, 'lazy_image.blur_hash')->setPublic(false);
+
         if (isset($config['cache'])) {
             $container
-                ->getDefinition('lazy_image.blur_hash')
-                ->setArgument(1, new Reference($config['cache']))
+                ->setDefinition('lazy_image.cached_blur_hash', new Definition(CachedBlurHash::class))
+                ->setDecoratedService('lazy_image.blur_hash')
+                ->addArgument(new Reference('lazy_image.cached_blur_hash.inner'))
+                ->addArgument(new Reference($config['cache']))
             ;
-        }
 
-        $container->setAlias(BlurHashInterface::class, 'lazy_image.blur_hash')->setPublic(false);
+            $container->setAlias(BlurHashInterface::class, 'lazy_image.blur_hash')->setPublic(false);
+        }
 
         $container
             ->setDefinition('twig.extension.blur_hash', new Definition(BlurHashExtension::class))
diff --git a/src/LiveComponent/composer.json b/src/LiveComponent/composer.json
index 720b4fc1..f00a40c9 100644
--- a/src/LiveComponent/composer.json
+++ b/src/LiveComponent/composer.json
@@ -43,7 +43,7 @@
         "symfony/form": "^5.4|^6.0|^7.0",
         "symfony/framework-bundle": "^5.4|^6.0|^7.0",
         "symfony/options-resolver": "^5.4|^6.0|^7.0",
-        "symfony/phpunit-bridge": "^6.0|^7.0",
+        "symfony/phpunit-bridge": "^6.1|^7.0",
         "symfony/property-info": "^5.4|^6.0|^7.0",
         "symfony/security-bundle": "^5.4|^6.0|^7.0",
         "symfony/serializer": "^5.4|^6.0|^7.0",
diff --git a/src/LiveComponent/phpunit.xml.dist b/src/LiveComponent/phpunit.xml.dist
index 8798e3cc..87b89d58 100644
--- a/src/LiveComponent/phpunit.xml.dist
+++ b/src/LiveComponent/phpunit.xml.dist
@@ -18,7 +18,7 @@
         <server name="KERNEL_CLASS" value="Symfony\UX\LiveComponent\Tests\Fixtures\Kernel"/>
         <server name="DATABASE_URL" value="sqlite:///%kernel.project_dir%/var/data.db"/>
         <env name="SHELL_VERBOSITY" value="-1"/>
-        <server name="SYMFONY_DEPRECATIONS_HELPER" value="max[self]=0&amp;max[direct]=0"/>
+        <server name="SYMFONY_DEPRECATIONS_HELPER" value="max[self]=0&amp;max[direct]=0&amp;ignoreFile=./tests/baseline-ignore"/>
     </php>
 
     <testsuites>
diff --git a/src/Turbo/phpstan.neon.dist b/src/Turbo/phpstan.neon.dist
index 62d57c07..77f5e851 100644
--- a/src/Turbo/phpstan.neon.dist
+++ b/src/Turbo/phpstan.neon.dist
@@ -35,13 +35,3 @@ parameters:
 			message: "#^Parameter \\$stimulus of method Symfony\\\\UX\\\\Turbo\\\\Bridge\\\\Mercure\\\\TurboStreamListenRenderer\\:\\:__construct\\(\\) has invalid type Symfony\\\\WebpackEncoreBundle\\\\Twig\\\\StimulusTwigExtension\\.$#"
 			count: 1
 			path: src/Bridge/Mercure/TurboStreamListenRenderer.php
-
-		-
-			message: "#^Call to an undefined method Doctrine\\\\ORM\\\\Event\\\\OnFlushEventArgs\\:\\:getEntityManager\\(\\)\\.$#"
-			count: 1
-			path: src/Doctrine/BroadcastListener.php
-
-		-
-			message: "#^Call to an undefined method Doctrine\\\\ORM\\\\Event\\\\PostFlushEventArgs\\:\\:getEntityManager\\(\\)\\.$#"
-			count: 1
-			path: src/Doctrine/BroadcastListener.php
diff --git a/src/Turbo/src/Doctrine/BroadcastListener.php b/src/Turbo/src/Doctrine/BroadcastListener.php
index c2c07eb0..9298b117 100644
--- a/src/Turbo/src/Doctrine/BroadcastListener.php
+++ b/src/Turbo/src/Doctrine/BroadcastListener.php
@@ -130,13 +130,13 @@ final class BroadcastListener implements ResetInterface
 
         if (!isset($this->broadcastedClasses[$class])) {
             $this->broadcastedClasses[$class] = [];
-            $r = new \ReflectionClass($class);
+            $r = null;
 
-            if ($options = $r->getAttributes(Broadcast::class)) {
+            if ($options = ($r = new \ReflectionClass($class))->getAttributes(Broadcast::class)) {
                 foreach ($options as $option) {
                     $this->broadcastedClasses[$class][] = $option->newInstance()->options;
                 }
-            } elseif ($this->annotationReader && $options = $this->annotationReader->getClassAnnotations($r)) {
+            } elseif ($this->annotationReader && $options = $this->annotationReader->getClassAnnotations($r ?? new \ReflectionClass($class))) {
                 foreach ($options as $option) {
                     if ($option instanceof Broadcast) {
                         $this->broadcastedClasses[$class][] = $option->options;
diff --git a/src/Turbo/src/Doctrine/ClassUtil.php b/src/Turbo/src/Doctrine/ClassUtil.php
index 49e7e7a5..a32abcce 100644
--- a/src/Turbo/src/Doctrine/ClassUtil.php
+++ b/src/Turbo/src/Doctrine/ClassUtil.php
@@ -19,9 +19,6 @@ use Symfony\Component\VarExporter\LazyObjectInterface;
  */
 final class ClassUtil
 {
-    /**
-     * @return class-string
-     */
     public static function getEntityClass(object $entity): string
     {
         if ($entity instanceof LazyObjectInterface) {


Test patch:
diff --git a/src/LazyImage/tests/BlurHash/BlurHashTest.php b/src/LazyImage/tests/BlurHash/BlurHashTest.php
index 503c5234..56ad512b 100644
--- a/src/LazyImage/tests/BlurHash/BlurHashTest.php
+++ b/src/LazyImage/tests/BlurHash/BlurHashTest.php
@@ -15,9 +15,8 @@ use PHPUnit\Framework\TestCase;
 use Symfony\Component\Cache\Adapter\ArrayAdapter;
 use Symfony\Component\Config\Loader\LoaderInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Contracts\Cache\CacheInterface;
-use Symfony\UX\LazyImage\BlurHash\BlurHash;
 use Symfony\UX\LazyImage\BlurHash\BlurHashInterface;
+use Symfony\UX\LazyImage\BlurHash\CachedBlurHash;
 use Symfony\UX\LazyImage\Tests\Kernel\TwigAppKernel;
 
 /**
@@ -51,8 +50,7 @@ class BlurHashTest extends TestCase
         /** @var BlurHashInterface $blurHash */
         $blurHash = $container->get('test.lazy_image.blur_hash');
 
-        $this->assertInstanceOf(BlurHash::class, $blurHash);
-        $this->assertNull($this->extractCache($blurHash));
+        static::assertNotInstanceOf(CachedBlurHash::class, $blurHash);
     }
 
     public function testEnsureCacheIsUsedWhenConfigured()
@@ -88,83 +86,43 @@ class BlurHashTest extends TestCase
         /** @var BlurHashInterface $blurHash */
         $blurHash = $container->get('test.lazy_image.blur_hash');
 
-        $this->assertInstanceOf(BlurHash::class, $blurHash);
-        $this->assertInstanceOf(CacheInterface::class, $this->extractCache($blurHash));
+        static::assertInstanceOf(CachedBlurHash::class, $blurHash);
     }
 
-    public function testCreateDataUriThumbnail()
+    public function testEncodeShouldBeCalledOnceWhenCached()
     {
-        $kernel = new TwigAppKernel('test', true);
-        $kernel->boot();
-        $container = $kernel->getContainer()->get('test.service_container');
+        $blurHash = $this->createMock(BlurHashInterface::class);
+        $blurHash->expects($this->once())->method('encode')->with(__DIR__.'/../Fixtures/logo.png')->willReturn('L54ec*~q_3?bofoffQWB9F9FD%IU');
+        $cache = new ArrayAdapter();
+        $cachedBlurHash = new CachedBlurHash($blurHash, $cache);
 
-        /** @var BlurHashInterface $blurHash */
-        $blurHash = $container->get('test.lazy_image.blur_hash');
+        $this->assertEmpty($cache->getValues());
 
-        $this->assertInstanceOf(BlurHash::class, $blurHash);
-        $this->assertNull($this->extractCache($blurHash));
+        $this->assertSame(
+            'L54ec*~q_3?bofoffQWB9F9FD%IU',
+            $cachedBlurHash->encode(__DIR__.'/../Fixtures/logo.png')
+        );
+
+        $this->assertNotEmpty($cache->getValues());
 
         $this->assertSame(
-            'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gODAK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAOgDqAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A8k8g00wH0rofsftTTZ+1AHOtAaieA10bWftUL2ftQBzbwGq0kBrppLT2qrLae1AHMSwGs+4tyc11ctr7VRntfagDj5oWQk44qGuluLQc8Vk3VngkrxQBQopWUqcGkoAKKKKACiiigAooqRIXbtQBHRVtLMnrUy2Q9KAM6itQWQ9KDZD0oAy6K0Gsh6VE9oR0oAqUVI8Lr2qMjHWgAooooAKKKKAPov7OPSmm3HpWhgU1gKAM1rcelQPbj0rUcCoJAKAMmSAelVJYB6VsSgVTlAoAxpoR6VRnhHpWzMBWfOBzQBi3EI5rLuYRg8Vu3GOayrnHNAHO3sA5IrPPBravMYNYz/eNACUUUUAFKqljgUlTWwGaALFvbjvV+KAelNgA4q7EBQAiQj0qVYR6VKgqZRQBX8kelBhHpVoCgigCk0I9KheEelaDAVC4FAGZLAKpT249K2JAKpzAUAY0iFTTKuXAHNU6ACiiigD6S84U1phWP9s96abz3oA1XmFQSTCs1rv3qB7v3oA0JZh61TllFUpbv3qpLd+9AFqaUVnzyiq812Oeaz7i7HPNAE1xKOeayrqYc81Dd3ygHJrGubxpCQvT1oAde3GThapUHmigAooooAKdG21s02igDUt5gQOavxSCueRyh4q3Dd44NAHQJJUyyVix3QPerC3I9aANTzKDIKzhcj1pDcj1oAvtJULyVSa5HrVeS7A70AXJZBVGeYDPNVpbvPSqruzHk0APmk3HioqKKACiiigD1X7WfWmm7PrVA000AXGuz61C92fWqrVA9AFiS8PrVSa896hlqlP3oAfcX+M81lXF+zkhfzqO8NVKAFd2c5Y5pKKKACiiigAooooAKKKKACiiigBQxHQ08TOO9R0UATfaHpDcOaiooAeZXPemEk9aKKACiiigAooooAKKKKAP/9k=',
-            $blurHash->createDataUriThumbnail(__DIR__.'/../Fixtures/logo.png', 234, 58)
+            'L54ec*~q_3?bofoffQWB9F9FD%IU',
+            $cachedBlurHash->encode(__DIR__.'/../Fixtures/logo.png')
         );
     }
 
-    public function testCreateDataUriThumbnailWithCache()
+    public function testCreateDataUriThumbnail()
     {
-        $kernel = new class('test', true) extends TwigAppKernel {
-            public function registerContainerConfiguration(LoaderInterface $loader)
-            {
-                parent::registerContainerConfiguration($loader);
-
-                $loader->load(static function (ContainerBuilder $container) {
-                    $container->loadFromExtension('framework', [
-                        'cache' => [
-                            'pools' => [
-                                'cache.lazy_image' => [
-                                    'adapter' => 'cache.adapter.array',
-                                ],
-                            ],
-                        ],
-                    ]);
-
-                    $container->loadFromExtension('lazy_image', [
-                        'cache' => 'cache.lazy_image',
-                    ]);
-
-                    $container->setAlias('test.cache.lazy_image', 'cache.lazy_image')->setPublic(true);
-                });
-            }
-        };
-
+        $kernel = new TwigAppKernel('test', true);
         $kernel->boot();
         $container = $kernel->getContainer()->get('test.service_container');
 
         /** @var BlurHashInterface $blurHash */
         $blurHash = $container->get('test.lazy_image.blur_hash');
 
-        $this->assertInstanceOf(BlurHash::class, $blurHash);
-        $this->assertInstanceOf(ArrayAdapter::class, $cache = $this->extractCache($blurHash));
-
-        $this->assertEmpty($cache->getValues());
-
-        $this->assertSame(
-            'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gODAK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAOgDqAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A8k8g00wH0rofsftTTZ+1AHOtAaieA10bWftUL2ftQBzbwGq0kBrppLT2qrLae1AHMSwGs+4tyc11ctr7VRntfagDj5oWQk44qGuluLQc8Vk3VngkrxQBQopWUqcGkoAKKKKACiiigAooqRIXbtQBHRVtLMnrUy2Q9KAM6itQWQ9KDZD0oAy6K0Gsh6VE9oR0oAqUVI8Lr2qMjHWgAooooAKKKKAPov7OPSmm3HpWhgU1gKAM1rcelQPbj0rUcCoJAKAMmSAelVJYB6VsSgVTlAoAxpoR6VRnhHpWzMBWfOBzQBi3EI5rLuYRg8Vu3GOayrnHNAHO3sA5IrPPBravMYNYz/eNACUUUUAFKqljgUlTWwGaALFvbjvV+KAelNgA4q7EBQAiQj0qVYR6VKgqZRQBX8kelBhHpVoCgigCk0I9KheEelaDAVC4FAGZLAKpT249K2JAKpzAUAY0iFTTKuXAHNU6ACiiigD6S84U1phWP9s96abz3oA1XmFQSTCs1rv3qB7v3oA0JZh61TllFUpbv3qpLd+9AFqaUVnzyiq812Oeaz7i7HPNAE1xKOeayrqYc81Dd3ygHJrGubxpCQvT1oAde3GThapUHmigAooooAKdG21s02igDUt5gQOavxSCueRyh4q3Dd44NAHQJJUyyVix3QPerC3I9aANTzKDIKzhcj1pDcj1oAvtJULyVSa5HrVeS7A70AXJZBVGeYDPNVpbvPSqruzHk0APmk3HioqKKACiiigD1X7WfWmm7PrVA000AXGuz61C92fWqrVA9AFiS8PrVSa896hlqlP3oAfcX+M81lXF+zkhfzqO8NVKAFd2c5Y5pKKKACiiigAooooAKKKKACiiigBQxHQ08TOO9R0UATfaHpDcOaiooAeZXPemEk9aKKACiiigAooooAKKKKAP/9k=',
-            $blurHash->createDataUriThumbnail(__DIR__.'/../Fixtures/logo.png', 234, 58)
-        );
-
-        $this->assertNotEmpty($cache->getValues());
-
         $this->assertSame(
             'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gODAK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgAOgDqAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A8k8g00wH0rofsftTTZ+1AHOtAaieA10bWftUL2ftQBzbwGq0kBrppLT2qrLae1AHMSwGs+4tyc11ctr7VRntfagDj5oWQk44qGuluLQc8Vk3VngkrxQBQopWUqcGkoAKKKKACiiigAooqRIXbtQBHRVtLMnrUy2Q9KAM6itQWQ9KDZD0oAy6K0Gsh6VE9oR0oAqUVI8Lr2qMjHWgAooooAKKKKAPov7OPSmm3HpWhgU1gKAM1rcelQPbj0rUcCoJAKAMmSAelVJYB6VsSgVTlAoAxpoR6VRnhHpWzMBWfOBzQBi3EI5rLuYRg8Vu3GOayrnHNAHO3sA5IrPPBravMYNYz/eNACUUUUAFKqljgUlTWwGaALFvbjvV+KAelNgA4q7EBQAiQj0qVYR6VKgqZRQBX8kelBhHpVoCgigCk0I9KheEelaDAVC4FAGZLAKpT249K2JAKpzAUAY0iFTTKuXAHNU6ACiiigD6S84U1phWP9s96abz3oA1XmFQSTCs1rv3qB7v3oA0JZh61TllFUpbv3qpLd+9AFqaUVnzyiq812Oeaz7i7HPNAE1xKOeayrqYc81Dd3ygHJrGubxpCQvT1oAde3GThapUHmigAooooAKdG21s02igDUt5gQOavxSCueRyh4q3Dd44NAHQJJUyyVix3QPerC3I9aANTzKDIKzhcj1pDcj1oAvtJULyVSa5HrVeS7A70AXJZBVGeYDPNVpbvPSqruzHk0APmk3HioqKKACiiigD1X7WfWmm7PrVA000AXGuz61C92fWqrVA9AFiS8PrVSa896hlqlP3oAfcX+M81lXF+zkhfzqO8NVKAFd2c5Y5pKKKACiiigAooooAKKKKACiiigBQxHQ08TOO9R0UATfaHpDcOaiooAeZXPemEk9aKKACiiigAooooAKKKKAP/9k=',
             $blurHash->createDataUriThumbnail(__DIR__.'/../Fixtures/logo.png', 234, 58)
         );
-
-        $this->assertNotEmpty($cache->getValues());
-    }
-
-    private function extractCache(BlurHash $blurHash): ?CacheInterface
-    {
-        return \Closure::bind(fn () => $this->cache, $blurHash, BlurHash::class)();
     }
 }
diff --git a/src/LiveComponent/tests/baseline-ignore b/src/LiveComponent/tests/baseline-ignore
new file mode 100644
index 00000000..0d927bdf
--- /dev/null
+++ b/src/LiveComponent/tests/baseline-ignore
@@ -0,0 +1,5 @@
+%Since symfony/property-info 7.1: The "Symfony\\Component\\PropertyInfo\\Extractor\\ReflectionExtractor::getTypes\(\)".+%
+%Since symfony/property-info 7.1: The "Symfony\\Component\\PropertyInfo\\Extractor\\PhpStanExtractor::getTypes\(\)".+%
+%Since symfony/property-info 7.1: The "Symfony\\Component\\PropertyInfo\\Extractor\\PhpDocExtractor::getTypes\(\)".+%
+%Since symfony/property-info 7.1: The "Symfony\\Component\\PropertyInfo\\PropertyInfoExtractor::getTypes\(\)".+%
+%Since symfony/property-info 7.1: The "Symfony\\Component\\PropertyInfo\\Type" class is deprecated..+%
diff --git a/src/StimulusBundle/tests/Twig/StimulusTwigExtensionTest.php b/src/StimulusBundle/tests/Twig/StimulusTwigExtensionTest.php
index 331536a0..ed63845a 100644
--- a/src/StimulusBundle/tests/Twig/StimulusTwigExtensionTest.php
+++ b/src/StimulusBundle/tests/Twig/StimulusTwigExtensionTest.php
@@ -205,6 +205,7 @@ final class StimulusTwigExtensionTest extends TestCase
             'actionName' => 'onClick',
             'eventName' => null,
             'parameters' => ['boolParam' => true, 'intParam' => 4, 'stringParam' => 'test'],
+            'expectedString' => 'data-action="onClick"',
             'expectedString' => 'data-action="my-controller#onClick" data-my-controller-bool-param-param="true" data-my-controller-int-param-param="4" data-my-controller-string-param-param="test"',
             'expectedArray' => ['data-action' => 'my-controller#onClick', 'data-my-controller-bool-param-param' => 'true', 'data-my-controller-int-param-param' => '4', 'data-my-controller-string-param-param' => 'test'],
         ];