Cuando empezamos a tener muchos test automatizados en Laravel se hace cada vez más pesado lanzarlos.
Vale, que puede que sean solo 4 segundos, pero eso es muyyyy lento.
Una forma de arreglarlo es revisar los test lentos.
Y otra es usar una herramienta como Paratest, que los lanza en paralelo.
El ahorro de tiempo es brutal. En ocasiones he pasado de 10 segundos a un segundo.
Este post es posible gracias a Urlan Heat – empresa de desarrollo especializada en PHP.
Cómo instalar Laravel Paratest
Para poder juguetear con Paratest necesitarás, al menos, la versión 8.25 de Laravel.
Puedes probar a lanzar el comando:
php artisan test --parallel
Con suerte, esto te funciona a la primera y la lo tienes.
Si falta algún paquete te dará algún aviso como éste:
Running tests in parallel requires "brianium/paratest". Do you wish to install it as a dev dependency? (yes/no) [no]:
Otra opción es lanzar directamente este comando:
composer update nunomaduro/collision laravel/framework
Lanzar Laravel Paratest
Ya lo tienes, ahora tan solo necesitas ejecutar los test:
php artisan test --parallel
¡Y listo!
Filtrar test
Yo no he conseguido que me funcione el filtrado test con el comando artisan. Sin embargo, si lanzas Paratest directamente sí que funciona:
./vendor/bin/paratest --functional --filter=MisTest
Otra forma es añadir una suite de test y ejecutar solo esa:
php artisan test --parallel --testsuite=MiSuite