Skip to content

Releases: Codeception/module-symfony

3.11.0

Choose a tag to compare

@TavoNiievez TavoNiievez released this 04 Sep 08:45
53c37cc

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 · #248Full changelog

3.10.1

Choose a tag to compare

@TavoNiievez TavoNiievez released this 10 Jul 20:20
01cfa3e

What's Changed

Full Changelog: 3.10.0...3.10.1

3.10.0

Choose a tag to compare

@TavoNiievez TavoNiievez released this 27 Jun 01:10
558c038

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: 3.9.1...3.10.0

3.9.2

Choose a tag to compare

@TavoNiievez TavoNiievez released this 23 Jun 05:24
99fe8e4

What's Changed

  • Restore InnerBrowser navigation state for Codeception runs by @TavoNiievez in #238

Full Changelog: 3.9.1...3.9.2

3.9.1

Choose a tag to compare

@TavoNiievez TavoNiievez released this 14 Apr 20:34
bed4de2

What's Changed

  • fix inconsistencies across assertion traits and tests in #228, #229 and #230.

Full Changelog: 3.9.0...3.9.1

3.9.0

Choose a tag to compare

@TavoNiievez TavoNiievez released this 01 Apr 00:06

What's Changed

Full Changelog: 3.8.0...3.9.0

3.8.0

Choose a tag to compare

@TavoNiievez TavoNiievez released this 27 Nov 21:32
70e5e06

What's Changed

New Contributors

Full Changelog: 3.7.1...3.8.0

3.7.1

Choose a tag to compare

@TavoNiievez TavoNiievez released this 07 Aug 11:35
ee7cb9c

What's Changed

  • Fix profiler issue in #216

Full Changelog: 3.7.0...3.7.1

3.7.0

Choose a tag to compare

@TavoNiievez TavoNiievez released this 07 Aug 03:40
b6d609c

What's Changed

  • Module code adapted for PHPStan in #213
  • Update to Symfony 7.3 in #214

Full Changelog: 3.6.0...3.7.0

3.6.0

Choose a tag to compare

@TavoNiievez TavoNiievez released this 04 Jun 14:01
c2adb5c

What's Changed

New Contributors

Full Changelog: 3.5.1...3.6.0