https://github.com/hughsaffar/laravel-test-trap
Laravel Test Trap will help you to trap tests that take longer than what you expect and find problematic SQL queries in your tests.
https://github.com/hughsaffar/laravel-test-trap
laravel profiling testing
Last synced: 6 months ago
JSON representation
Laravel Test Trap will help you to trap tests that take longer than what you expect and find problematic SQL queries in your tests.
- Host: GitHub
- URL: https://github.com/hughsaffar/laravel-test-trap
- Owner: hughsaffar
- License: mit
- Created: 2020-08-03T14:13:17.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-28T15:21:11.000Z (almost 3 years ago)
- Last Synced: 2024-08-09T23:49:06.719Z (almost 2 years ago)
- Topics: laravel, profiling, testing
- Language: PHP
- Homepage: https://github.com/hughsaffar/laravel-test-trap
- Size: 68.4 KB
- Stars: 18
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Speed and SQL trap for Laravel Tests
[](https://packagist.org/packages/spatie/laravel-test-trap)
[](https://packagist.org/packages/hughsaffar/laravel-test-trap)
[](https://github.com/hughsaffar/laravel-test-trap/actions?query=workflow%3ATests+branch%3Amaster)
[](https://packagist.org/packages/hughsaffar/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](https://github.com/johnkary/phpunit-speedtrap) and is tailored to be used in Laravel applications.
## Installation
You can install the package via composer:
```bash
composer require --dev hughsaffar/laravel-test-trap
```
You can publish the config file with:
```bash
php artisan vendor:publish --provider="TestTrap\TestTrapServiceProvider" --tag="config"
```
This is the contents of the published config file:
```php
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`.
``` xml
500
10
1000
```
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:
```xml
...
...
```
## Testing
``` bash
composer test
```
## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) for details.
## Security
If you discover any security related issues, please email hs@houmaan.ca instead of using the issue tracker.
## Credits
- [Hugh Saffar](https://github.com/hughsaffar)
- [All Contributors](../../contributors)
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.