codeception/module-symfony
Symfony module for Codeception that integrates the framework’s kernel, container, and HTTP client for functional/acceptance testing. Boot the app, make requests, assert responses, and access services to test controllers and app behavior with minimal setup.
Kernel for service container access, enabling direct testing of dependency-injected services (e.g., grabService(), seeEventTriggered()).$I->), making it idiomatic for BDD-style testing.Container vs. Symfony’s ContainerInterface may require adapters (e.g., SymfonyBridge).Router vs. Symfony’s Routing component may need mocking for assertions like assertResponseRedirects().Mailer vs. Laravel’s Mail facade (similar but not identical APIs).HttpClient for HTTP tests (works with Laravel’s Http facade via adapters).seeEventTriggered()).| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Service Container Gap | High | Create a Symfony-Laravel bridge (e.g., SymfonyContainerAdapter). |
| Routing/HTTP Mismatch | Medium | Mock Symfony’s Router or use HTTP client assertions (e.g., assertResponseStatusCodeSame). |
| Mailer API Differences | Low | Abstract mail-related assertions behind interfaces. |
| Event System | Medium | Use Laravel’s Events facade + Symfony’s EventDispatcher adapter. |
| Twig vs. Blade | Medium | Focus on template rendering assertions (less Blade-specific). |
| Performance Overhead | Low | Module is optimized (e.g., kernel boot caching in v3.9+). |
HttpTests, Dusk) or augment them?assertRedirect(), assertSession()).// Laravel + Symfony Module
$I = new SymfonyTester($scenario);
$I->seeResponseIsSuccessful(); // Uses Symfony's HttpFoundation
$I->assertEmailCount(1); // Uses Symfony Mailer
SymfonyBridge to translate Laravel services to Symfony interfaces.| Laravel Assertion | Symfony Module Equivalent |
|---|---|
assertRedirect() |
assertResponseRedirects() |
assertSession() |
seeSessionHasValues() |
| Custom event listeners | seeEventTriggered() |
| Component | Laravel Equivalent | Compatibility Notes |
|---|---|---|
| HTTP Layer | Illuminate\Http |
Use HttpClient assertions or mock Router. |
| Mailer | Illuminate/Mail |
Abstract behind Symfony\Component\Mailer. |
| Service Container | Illuminate/Container |
Adapter pattern required. |
| Events | Illuminate/Events |
Bridge Symfony\Contracts\EventDispatcher. |
| Doctrine | Illuminate\Database |
Use grabService('doctrine') if DBAL used. |
| Twig | Blade |
Focus on rendering assertions, not syntax. |
HttpTests.assertResponseRedirects() checks headers/cookies).How can I help you explore Laravel packages today?