Laravel 6 – 10
PHP 7.4+
No commit activity in last 2 years
No release in over 2 years
Laravel Test Trap
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

Runtime

^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0
league/climate
^3.5
phpunit/phpunit
^8.0 | ^9.0
 Project Readme

Speed and SQL trap for Laravel Tests

PHP Version Latest Version on Packagist GitHub Tests Action Status License

Screenshot of terminal using Laravel Test Trap

Laravel Test Trap will help you trap any slow tests or when a SQL query is slow or runs multiple times. Laravel Test Trap is inspired by phpunit-speedtrap and is tailored to be used in Laravel applications.

Installation

You can install the package via composer:

composer require --dev hughsaffar/laravel-test-trap

You can publish the config file with:

php artisan vendor:publish --provider="TestTrap\TestTrapServiceProvider" --tag="config"

This is the contents of the published config file:

return [
    'ignore_migrations_queries' => env('TEST_TRAP_IGNORE_MIGRATIONS_QUERIES', true),
    'environment_name' => env('TEST_TRAP_ENVIRONMENT', 'testing'),
];
  • By setting ignore_migrations_queries to true, Laravel Test Trap will not log any related queries to the migrations. This is useful if you are using RefreshDatabase trait on your tests. However, if you are running migration manually for your test database you need to set the value to false;
  • By default, Laravel Test Trap will only log queries when the application is running on testing environment. If your application has a different name for testing environment you may override it by changing environment_name value.

Usage

Laravel Test Trap comes with an PHPUnit extension class that you need to add to your phpunit.xml.

<extensions>
    <extension class="TestTrap\TestTrapExtension">
        <arguments>
            <array>
                <element key="speed">
                    <double>500</double>
                </element>
                <element key="queryCalled">
                    <integer>10</integer>
                </element>
                <element key="querySpeed">
                    <double>1000</double>
                </element>
            </array>
        </arguments>
    </extension>
</extensions>

In this example we ask Test Trap to report any tests that:

  • Take more than 500ms to run
  • Or run a single query more than 10 times in a test
  • Or a query takes more than a second (1000ms) to run

Disable Laravel Test Trap

If you do not want Laravel Test Trap to always run with your tests, you can simply disable it by adding an environment variable to your phpunit.xml file:

<php>
   ...
   <server name="TEST_TRAP_DISABLE" value="true"/>
   ...
</php>

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email hs@houmaan.ca instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.