elbformat/ibexa-behat-bundle
A Behat bundle for Ibexa offering a fast, Symfony Kernel-based testing approach with partial database resets, strict behavioral wording, and support for page builder blocks.
Architecture fit. This is a test-environment-only Symfony bundle set (ElbformatSymfonyBehatBundle + ElbformatIbexaBehatBundle) that plugs Behat into an Ibexa DXP application. It deliberately bypasses HTTP for most operations by driving the Symfony kernel directly, and it short-circuits full database reloads in favor of partial resets. That is an intentional architectural trade-off: much faster feedback, but tighter coupling to Ibexa internals (content/location IDs, database tables, page builder block structures, Solr). It does not alter production runtime architecture; the blast radius is the test environment, provided bundle registration is correctly scoped to ['test' => true].
Integration feasibility. Installation is conventional Composer plus config/bundles.php, behat.yml, and a service decoration for Ibexa\Core\IO\FilePathNormalizer\Flysystem to make uploaded-image filenames deterministic. The bootstrap sequence (create DB, doctrine migrations, Ibexa migrations, reindex) is documented and matches standard Ibexa test setup. For a team already using Behat and Gherkin on an Ibexa project, a proof of concept is realistically days, not weeks. The larger effort is authoring and maintaining project-specific step definitions, fixtures, and page builder block coverage.
Technical risk.
BEHAT_CONTENT_MIN_ID). A misconfigured environment could delete content in a non-test database.TestFilePathNormalizer decoration can collide with Flysystem upgrades; admin UI steps are inherently more brittle than kernel-level ones.Key questions for the maintainer/vendor.
SolrContext scenarios? What is the CI contract?Stack fit. PHP/Composer/Symfony/Behat on Ibexa DXP. v2.x targets Ibexa 4.6; older Ibexa lines require v1.1.x. The bundle is test-scoped only, so it imposes no production dependency or runtime risk. The design assumes a dedicated test database and, where SolrContext is used, a disposable Solr instance. Recommend containerized MySQL/PostgreSQL and Solr for parity with CI.
Migration path. This is not a drop-in replacement for the official ibexa/behat bundle—different execution model, different context classes, stricter Gherkin wording, and different reset semantics. Treat migration as a suite-by-suite port:
For greenfield Ibexa QA, adoption is simpler, but plan to vendor/fork the package or contribute upstream fixes given the low external adoption.
Compatibility. Pin exact versions in composer.lock and verify against the target Ibexa release before every platform upgrade. Specifically validate:
TestFilePathNormalizer decoration against the installed Flysystem/FilePathNormalizer signature.BEHAT_CONTENT_MIN_ID against any fixed IDs in fixtures (README advises raising it above 1000 when internal fixed IDs exist).Sequencing. A pragmatic rollout:
.env.test/.env.behat, containerized DB/Solr, guardrails preventing reset against non-test environments, artifact capture on failure.Maintenance. The dependency surface is small but the coupling to Ibexa internals is high. Expect each Ibexa minor/major upgrade to require a compatibility spike, particularly around database reset logic, page builder block fixtures, and field-type assertions (SEO, matrix, image assets). Release history shows steady 2.2.x fixes, which is encouraging, but the zero-adoption profile means the team should budget for self-maintenance rather than assume community fixes.
Support. No official commercial support is indicated. Escalation is via GitHub issues and the vendor relationship. For a regression suite that gates releases, that is insufficient on its own—assign an internal owner, document known workarounds, and consider a support arrangement with elbformat if the suite becomes business-critical.
Scaling. The kernel-direct, partial-reset design is the main selling point and should outperform full-stack Behat for small-to-medium suites. Scaling is constrained less by compute than by state: parallel test execution requires careful database and Solr isolation, and shared fixtures can create cross-test interference. Page builder and admin UI scenarios will dominate runtime and flakiness as coverage grows.
Failure modes to design against.
node_assignment fix).Ramp-up. Requires two skill sets: Gherkin/Behat fluency and Ibexa domain knowledge (content types, locations, object states, page builder, search). The README leans on the companion elbformat/symfony-behat-bundle docs, and release notes effectively serve as the feature changelog—so onboarding must include both sources plus an internal example suite. Estimate one to two weeks for a developer/QA pair to become productive on core content scenarios, with additional time for page builder, admin UI, and Solr coverage. Produce an internal runbook covering environment setup, reset guardrails, upgrade procedure, and the decision log for adopting a low-adoption community bundle.
How can I help you explore Laravel packages today?