A bundle to ensure all routes of a Symfony application have been tested.
Note
This bundle was originally hosted on Tiime-Software organisation. Given the lack of maintenance (see this PR & this one), I decided to create an independant repository in order to give to this project the love it deserves.
- Launch your tests using PHPUnit or anything else. All called routes will be stored in
var/cache/bab_tested_routes_checker_bundle_route_storage. - Run
php bin/console bab:tested-routes-checker:checkto have a small report of what's tested and what's not!
Make sure Composer is installed globally, as explained in the installation chapter of the Composer documentation.
Open a command console, enter your project directory and execute:
composer require --dev bab/tested-routes-checker-bundleOpen a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
composer require --dev bab/tested-routes-checker-bundleThen, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php file of your project:
// config/bundles.php
return [
// ...
Bab\TestedRoutesCheckerBundle\BabTestedRoutesCheckerBundle::class => ['dev' => true, 'test' => true],
];If you're using Github actions, simply add the following step to your existing test job:
name: Tests
jobs:
tests:
steps:
# Do your stuff
# - ...
# Ensure no new untested route have been introduced
- name: Run Bab/TestedRoutesCheckerBundle
run: bin/console bab:tested-routes-checker:checkView a fully working example in altercampagne/eventoj repository.
If you have several jobs to run all your tests, that's not a problem! 👌
- Upload an artifact containing all tested routes after each of your job
jobs:
tests:
steps:
# Do your stuff
# - ...
- name: Save tested routes
uses: actions/upload-artifact@v4
with:
name: tested-routes-${{ inputs.any-relevant-discriminent }}
path: var/cache/bab_tested_routes_checker_bundle_route_storage- Run a new job at the end to concatenate all files & run the command
jobs:
tested-routes-checker:
name: Check tested routes
needs: [your_tests_job]
steps:
# Install the project
# - ...
- name: Download All Artifacts
uses: actions/download-artifact@v4
with:
path: tested-routes
pattern: tested-routes-*
- name: Create var/cache directory to put tested routes files inside
shell: bash
run: mkdir -p var/cache
- name: Merge all tested routes files
shell: bash
run: cat tested-routes/tested-routes-*/bab_tested_routes_checker_bundle_route_storage > var/cache/bab_tested_routes_checker_bundle_route_storage
- name: Check tested routes
shell: bash
run: php bin/console bab:tested-routes-checker:checkYou can ignore some routes with a .bab-trc-baseline file with 1 route per line.