NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1617 most downloaded on Packagist
Codeception module for Symfony framework
Last release 1 months ago
04 Sep 2026
Ships fairly regularly
a new release about every 3 months
Some releases are documented
notes for 11 of 38 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
38 releases · first in 2019
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
20 new methods. No breaking changes, no new configuration options, no new traits.
PHP^8.2· Symfony5.4·6.4·7.4·8.1
| 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);| 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));| Method | |
|---|---|
seeUserIsGranted() / dontSeeUserIsGranted() |
Runs the app's voters — with a subject. |
$I->seeUserIsGranted('EDIT', $post);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');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);| Method | |
|---|---|
assertSessionHasFlashMessage() |
Non-destructive — reads the flash bag with peek(). |
$I->assertSessionHasFlashMessage('success', 'Your changes were saved.');_getEntityManager() reopens a closed manager, so one failed write no longer cascades through the test.em_service service is missing or is the wrong type.O(N) instead of O(N²).#246 · #247 · #248 — Full changelog
One column per quarter.
Restore doctrine.connections after kernel shutdown by @d-mitrofanov-v in #244
Full Changelog: 3.10.0...3.10.1
Profiler: Fixed profiler service deprecation by switching to the non-deprecated internal service ID. ([ #237 ])
Minor release featuring two new assertion trait groups, Symfony 8.1 test support, plus DX, performance, and bug fixes.
Introduced MessengerAssertionsTrait for testing dispatched messages ([#241]):
seeMessageDispatched()dontSeeMessageDispatched()seeDispatchedMessageCount()grabDispatchedMessageClasses()Ported directly from Symfony's own test helpers ([#240]):
assertBrowserHistoryIsOnFirstPage(), assertBrowserHistoryIsNotOnFirstPage(), assertBrowserHistoryIsOnLastPage(), assertBrowserHistoryIsNotOnLastPage()assertSelectorCount(), assertAnySelectorTextContains(), assertAnySelectorTextSame(), assertAnySelectorTextNotContains()getMailerEvents(), getMailerMessages(), getMailerMessage()assertEmailAddressNotContains(), assertEmailSubjectContains(), assertEmailSubjectNotContains()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 bygrabLastSentEmail()remains anRawMessage. If your tests rely on->getTo()or->getSubject()), you must explicitly narrow the type usinginstanceof Emailor a type cast. Alternatively, migrate to the newassertEmailSubjectContains()or header assertions where possible.
symfony/messenger as an unchanged dev dependency. ([#243])reset-formats patch using GNU patch (fuzz) and pinned codeception/module-rest to ^3.4 in the functional suite. ([#242])Full Changelog: 3.9.1...3.10.0
Restore InnerBrowser navigation state for Codeception runs by @TavoNiievez in #238
Full Changelog: 3.9.1...3.9.2
fix inconsistencies across assertion traits and tests in #228 , #229 and #230 .
Full Changelog: 3.9.0...3.9.1
Allow Symfony 8 by @W0rma in #225
Full Changelog: 3.8.0...3.9.0
Standardize to PHP 8.2 and PSR-4 by @TavoNiievez in #217
Full Changelog: 3.7.1...3.8.0
What's Changed Fix profiler issue in #216 Full Changelog : 3.7.0...3.7.1
Module code adapted for PHPStan in #213
Full Changelog: 3.6.0...3.7.0
Document new Symfony assertions by @TavoNiievez in #208
Full Changelog: 3.5.1...3.6.0
Added Symfony Logger assertion ( dontSeeDeprecations ) ( #206 ).
Support Symfony 7.2 (#203).
Added Symfony Translation assertions (#205):
dontSeeFallbackTranslationsdontSeeMissingTranslationsgrabDefinedTranslationsCountseeAllTranslationsDefinedseeDefaultLocaleIsseeFallbackLocalesAreseeFallbackTranslationsCountLessThanseeMissingTranslationsCountLessThanAdded Symfony Logger assertion (dontSeeDeprecations) (#206).
Full Changelog: 3.5.0...3.5.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →