Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Module Symfony Laravel Package

codeception/module-symfony

Codeception module for Symfony: boots the kernel in functional tests, exposes the service container and Symfony services, and integrates Doctrine data cleanup, mailer and profiler assertions so you can write expressive end-to-end tests. Official module maintained by the Codeception team.

View on GitHub
Deep Wiki
Context7
3.11.0

What's Changed

20 new methods. No breaking changes, no new configuration options, no new traits. PHP ^8.2 · Symfony 5.4 · 6.4 · 7.4 · 8.1

🗄️ Doctrine

Method
grabEntityManager() The EntityManager on the Actor, honouring em_service.
resetDoctrineManager() Reopens an EntityManager closed by a failed flush(). Clears it if still open.
seeDoctrineSchemaIsValid() In-process doctrine:schema:validate.
seeNumQueriesIsLessThan() N+1 guard.
dontSeeDuplicateQueries() N+1 guard.
$I->amOnPage('/register');
$I->resetDoctrineManager();
$I->seeNumRecords(1, User::class);

🧩 Services

Method
grabContainer() The test container — private services included.
mockService() / unmockService() Swap a service for a double. Survives kernel reboots.
$I->mockService('http_client', new MockHttpClient($responses));

🔐 Security

Method
seeUserIsGranted() / dontSeeUserIsGranted() Runs the app's voters — with a subject.
$I->seeUserIsGranted('EDIT', $post);

📨 Messenger

[!NOTE] Requires symfony/messenger >= 6.3.

Method
grabMessengerTransport() The in-memory transport itself.
seeMessengerTransportContains() A message class is queued.
seeMessengerQueueCount() Pending count — sent minus acknowledged or rejected.
consumeMessengerMessages() Handles queued envelopes in-process.
$I->seeMessengerQueueCount(1, 'async');
$I->consumeMessengerMessages('async');

🖥️ Console

[!NOTE] Requires Symfony 8.1. runSymfonyConsoleCommand() is unchanged and remains the path for earlier versions.

Method
runCommand() Returns an ExecutionResult: status code, stdout and stderr separately.
assertCommandIsSuccessful()
assertCommandFailed()
assertCommandIsInvalid()
assertCommandResultEquals()
$result = $I->runCommand('app:import', ['--dry-run' => true]);
$I->assertCommandIsSuccessful($result);

🔔 Session

Method
assertSessionHasFlashMessage() Non-destructive — reads the flash bag with peek().
$I->assertSessionHasFlashMessage('success', 'Your changes were saved.');

🛠️ Also

  • _getEntityManager() reopens a closed manager, so one failed write no longer cascades through the test.
  • Clearer failure when the em_service service is missing or is the wrong type.
  • Internal-domain lookup is now O(N) instead of O(N²).

#246 · #247 · #248 — Full changelog

3.10.1

What's Changed

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.10.0...3.10.1

3.10.0

Minor release featuring two new assertion trait groups, Symfony 8.1 test support, plus DX, performance, and bug fixes.

🚀 New Features

Messenger Assertions

Introduced MessengerAssertionsTrait for testing dispatched messages ([#241]):

  • seeMessageDispatched()
  • dontSeeMessageDispatched()
  • seeDispatchedMessageCount()
  • grabDispatchedMessageClasses()

Symfony-Inherited Assertions

Ported directly from Symfony's own test helpers ([#240]):

  • Browser: assertBrowserHistoryIsOnFirstPage(), assertBrowserHistoryIsNotOnFirstPage(), assertBrowserHistoryIsOnLastPage(), assertBrowserHistoryIsNotOnLastPage()
  • DomCrawler: assertSelectorCount(), assertAnySelectorTextContains(), assertAnySelectorTextSame(), assertAnySelectorTextNotContains()
  • Mailer: getMailerEvents(), getMailerMessages(), getMailerMessage()
  • Mime: assertEmailAddressNotContains(), assertEmailSubjectContains(), assertEmailSubjectNotContains()

🔄 Changed

Mail/Mime Assertions Refactor

Assertions now operate on RawMessage instead of Email to support any sent message type ([#232]):

  • grabLastSentEmail() return type widened from ?Email to ?RawMessage.
  • assertEmailAddressContains(), assertEmailHasHeader(), assertEmailNotHasHeader(), assertEmailHeaderSame(), and assertEmailHeaderNotSame() now accept ?Message instead of ?Email.

⚠️ Important Runtime Note: The object returned by grabLastSentEmail() remains an Email instance at runtime, but its declared type is now the wider RawMessage. If your tests rely on Email-specific methods (like ->getTo() or ->getSubject()), you must explicitly narrow the type using instanceof Email or a type cast. Alternatively, migrate to the new assertEmailSubjectContains() or header assertions where possible.

Quality of Life & Performance

  • Improved DX, type safety, and performance across all assertion traits by adding/tightening type hints and reducing redundant operations in hot paths. ([#235], [#234])

🐛 Fixed

  • Doctrine: Fixed missing security context in Doctrine entity listeners after a kernel reboot. ([#236])
  • Profiler: Fixed profiler service deprecation by switching to the non-deprecated internal service ID. ([#237])

🛠️ Maintenance

  • Added Symfony 8.1 to the test matrix and included symfony/messenger as an unchanged dev dependency. ([#243])
  • Applied the 7.4 reset-formats patch using GNU patch (fuzz) and pinned codeception/module-rest to ^3.4 in the functional suite. ([#242])

🤝 New Contributors

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.9.1...3.10.0

3.9.2

What's Changed

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.9.1...3.9.2

3.6.0

What's Changed

New Contributors

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.5.1...3.6.0

3.5.1

What's Changed

Support Symfony 7.2 (https://github.com/Codeception/module-symfony/pull/203). Added Symfony Translation assertions (https://github.com/Codeception/module-symfony/pull/205):

  • dontSeeFallbackTranslations
  • dontSeeMissingTranslations
  • grabDefinedTranslationsCount
  • seeAllTranslationsDefined
  • seeDefaultLocaleIs
  • seeFallbackLocalesAre
  • seeFallbackTranslationsCountLessThan
  • seeMissingTranslationsCountLessThan

Added Symfony Logger assertion (dontSeeDeprecations) (https://github.com/Codeception/module-symfony/pull/206).

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.5.0...3.5.1

3.5.0

🎉 Release 3.5.0

🆕 New Assertions

you can now use all Symfony assertions directly in Codeception with the $I-> syntax.

  • Browser assertions:
assertBrowserCookieValueSame
assertBrowserHasCookie
assertBrowserNotHasCookie
assertRequestAttributeValueSame
assertResponseCookieValueSame
assertResponseFormatSame
assertResponseHasCookie
assertResponseHasHeader
assertResponseHeaderNotSame
assertResponseHeaderSame
assertResponseIsSuccessful
assertResponseIsUnprocessable
assertResponseNotHasCookie
assertResponseNotHasHeader
assertResponseRedirects
assertResponseStatusCodeSame
  • DomCrawler assertions:
assertCheckboxChecked
assertCheckboxNotChecked
assertInputValueNotSame
assertInputValueSame
assertPageTitleContains
assertPageTitleSame
assertSelectorExists
assertSelectorNotExists
assertSelectorTextContains
assertSelectorTextNotContains
assertSelectorTextSame
  • HttpClient assertions:
assertHttpClientRequest
assertHttpClientRequestCount
assertNotHttpClientRequest
  • Mailer assertions:
assertEmailCount
assertEmailIsQueued
assertEmailIsNotQueued
assertQueuedEmailCount
  • Form assertions:
assertFormValue
assertNoFormValue

🔧 Other Changes

🚀 Enjoy the new features and keep building better tests!

New Contributors

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.4.0...3.5.0

3.4.0

What's Changed

New Contributors

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.3.2...3.4.0

3.3.2

What's Changed

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.3.1...3.3.2

3.3.0

What's Changed

Full Changelog: https://github.com/Codeception/module-symfony/compare/3.2.0...3.3.0

3.2.0
3.1.1
  • Allow installation of lib-innerbrowser v4 to support PHPUnit 10.
3.0.0
  • Support for Codeception 5
2.1.1
2.1.0

What's Changed

By @TavoNiievez:

By @ThomasLandauer:

Full Changelog: https://github.com/Codeception/module-symfony/compare/2.0.5...2.1.0

2.0.5

Added assertions for Symfony Mime component (#139):

  • assertEmailAddressContains
  • assertEmailAttachmentCount
  • assertEmailHasHeader
  • assertEmailHeaderNotSame
  • assertEmailHeaderSame
  • assertEmailHtmlBodyContains
  • assertEmailHtmlBodyNotContains
  • assertEmailNotHasHeader
  • assertEmailTextBodyContains
  • assertEmailTextBodyNotContains
2.0.4
  • New method: $I->goToLogoutPath();

  • $I->logout(); is now an alias for $I->logoutProgrammatically();

  • Added changelog link to readme.md (#136) by @Arhell

2.0.3
  • Added Symfony 5.3 compatibility (#133).
  • Added new method: $I->seeRequestTimeIsLessThan() (#132).
2.0.2

Logical changes by @mrsombre :

  • Fix Doctrine Connection service alias (#129)

Documentation changes by @ThomasLandauer :

  • submitSymfonyForm(): Mentioning name attribute (#128)
2.0.1

Minor changes in documentation by @ThomasLandauer :

  • Added info from the 'Codeception for Symfony' page (#98)
  • Explaining the stopFollowingRedirects() restriction for email (#118)
  • Added 'See also' in related email functions (#122)
  • Standardize "[@example](https://github.com/example).com" as domain in documentation (#124)
  • Mentioning Symfony Mailer requirement (#126)
  • Changing Fail message for Symfony Mailer (#127)
2.0.0

If you are already using Symfony 4.4 or higher it should not be necessary to make changes to your tests to update!

1.6.0
  • New methods by @TavoNiievez:

    • dontSeeEventTriggered
    • seeFormErrorMessages
    • seeUserHasRoles
  • Remembered authentication methods now also verify the Cookie generated (#81)

  • Fixed time metric when running test with --debug (#77)

If you're interested in contributing to this module and didn't know where to start, a contribution guide is now available, thanks to @ThomasLandauer and @TavoNiievez (#79).

BC: Removed support for PHP 7.1 and PHP 7.2.

Minor changes: (#65) (#78)

1.5.0
  • New method by @ThomasLandauer:

    • dontSeeInSession
  • New methods by @TavoNiievez:

    • dontSeeRememberedAuthentication
    • grabNumRecords
    • seeEventTriggered
    • seeRememberedAuthentication
    • seeSessionHasValues
    • persistPermanentService
  • Now you can run test for all the methods of this module in https://github.com/Codeception/symfony-module-tests .

  • BC: Remove PHP 7.0 support (#69), code standards updated to PHP 7.1+ (#75)

  • BC: Removed parameter flags in seeAuthentication, dontSeeAuthentication and persistService, use seeRememberedAuthentication, dontSeeRememberedAuthentication and persistPermanentService instead.

Minor logical change in #74.

1.4.2

Minor non-logical changes in #57 and #62.

1.4.1
1.4.0
  • New methods by @TavoNiievez:

    • seeFormErrorMessage (#50)
    • dontSeeFormErrors function (#49)
    • seeFormHasErrors function (#48)
  • Minor logic fixes (#51), (#47), (#44), (#41) and (#56).

1.3.0
  • New methods by @TavoNiievez:

    • grabRepository (#27)
    • seeUserPasswordDoesNotNeedRehash (#29)
    • grabParameter (#30)
    • submitSymfonyForm (#32)
    • seePageIsAvailable (#33)
    • seePageRedirectsTo (#33)
  • Supports vlucas/phpdotenv v5 (#28)

  • Minor logic fixes (#35), (#36), (#37) and (#38)

  • Improved documentation of the 'Parts' feature by @ThomasLandauer (#40)

  • BC: Removed support for php 5.6 and Symfony 2.8 (#39)

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator