Development and tests 

Architecture 

  • Channel/SlackChannel.php — selects the route, calls toSlack(), and invokes the transport; implements ChannelInterface.
  • Configuration/SlackRoute.php — validated destination value object.
  • Configuration/SlackConfiguration.php — TYPO3 extension configuration and secrets at the delivery boundary.
  • Message/SlackMessage.php — immutable Slack message content.
  • Transport/SlackTransport.php — HTTPS request/response handling.
  • Exception/SlackTransportException.php — delivery failure details.

The extension uses service autowiring and the notifications.channel tag. Changes to the notification core are not required to register the channel.

Run tests 

From the extension source root, install development dependencies:

composer install

composer test:php:unit
composer test:php:acceptance
composer phpstan
composer cgl:ci
Copied!

The composer.json also defines composer test, which includes lint, unit, functional, and acceptance scripts. Consult the repository for the exact scripts available in the checkout.

Tests are grouped under Tests/Unit/ and Tests/Acceptance/. Acceptance tests boot TYPO3 with a simulated Slack HTTP handler and do not send live Slack notifications. They cover the main routing entry points, formats, queued message serialization and failures.

Build and preview documentation 

TYPO3's documentation renderer supports the reStructuredText files in Documentation/. From the root of the extension, with Docker available, run:

docker run --rm --pull always \
  -v "$(pwd):/project" \
  ghcr.io/typo3-documentation/render-guides:latest
Copied!

For renderer options and local preview instructions, see the TYPO3 documentation guide.

Contributing 

Keep the public API backward compatible and add or adjust tests for message validation, route changes, network errors, and security behavior. When changing configuration keys or APIs, update these documentation pages and README.md together.