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

Ibexa Behat Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • Adoption signal: 0 stars and 0 dependents means essentially no external validation. The package is effectively a single-vendor (elbformat) utility published for its own delivery work.
  • Maintainer concentration: no evidence of a support contract, contributor base, or governance. If the agency relationship or maintainer interest changes, the project inherits a fork.
  • Compatibility coupling: release notes show explicit Ibexa 4.6 compatibility work (v2.0.0) and a break/restore cycle around that version. Page builder blocks, SEO fields, matrix fields, object states, and Solr are all areas where Ibexa upgrades can silently break assertions.
  • Destructive operations: the partial-reset model assumes test isolation and configurable minimum content IDs (BEHAT_CONTENT_MIN_ID). A misconfigured environment could delete content in a non-test database.
  • Metadata anomaly: the recorded last release date (2026-09-21) is in the future and should be treated as unreliable until verified. Do not use it as proof of active maintenance.
  • Hidden dependencies: Solr context implies an external service in CI; the TestFilePathNormalizer decoration can collide with Flysystem upgrades; admin UI steps are inherently more brittle than kernel-level ones.
  • Quality trajectory: v1.0.0 shipped "without tests"; by v2.2.3 the project added PHPStan and CS-fixer matrix checks. Direction is positive but maturity is still early-stage.

Key questions for the maintainer/vendor.

  1. What is the explicit support matrix for Ibexa versions, PHP, Symfony, Behat, and database engines?
  2. What license and support model apply? Is there a commercial SLA or is this GitHub-issues-only?
  3. Can suites run in parallel CI without shared-database interference, and what is the recommended isolation model?
  4. Is Solr mandatory for all suites or only for SolrContext scenarios? What is the CI contract?
  5. How are page builder block schemas and fixture formats versioned across Ibexa upgrades?
  6. How does partial DB reset interact with pre-seeded fixtures and fixed content/location IDs below the reset threshold?
  7. Who owns upgrades if the vendor relationship ends, and what is the contribution/backport policy?

Integration Approach

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:

  1. Inventory existing Behat features and map each to the equivalent context/step in this bundle.
  2. Run one representative suite on both stacks and compare runtime, flakiness, and coverage gaps.
  3. Port incrementally, keeping the official bundle where this package has no equivalent (notably Netgen tags support, which v2.0.0 explicitly dropped relative to v1.1.4).
  4. Retain a fallback path if the port stalls.

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).
  • Page builder block fixtures against the target Ibexa page builder schema.
  • Solr and search-index steps against the target search engine configuration.

Sequencing. A pragmatic rollout:

  1. PoC (1–2 sprints): one project, ephemeral DB, create content, upload image, admin preview, one page builder block.
  2. CI hardening: dedicated .env.test/.env.behat, containerized DB/Solr, guardrails preventing reset against non-test environments, artifact capture on failure.
  3. Coverage expansion: object states, trash, landing pages, SEO/matrix fields as used by the business.
  4. Operationalize: pinning policy, upgrade runbook, ownership assignment, contribution model (internal fork vs upstream PRs).

Operational Impact

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.

  • Test reset executed against the wrong database/environment (highest-severity risk).
  • Content/location ID collisions or assumptions violated after fixture changes.
  • Schema drift after Ibexa upgrade breaking reset SQL or field assertions.
  • Flysystem decoration conflicts or image filename assertions failing when the normalizer is inactive.
  • Solr unavailable or stale, causing false negatives in search-dependent scenarios.
  • Admin UI steps failing on markup changes, session handling, or preview siteaccess resolution (see v2.2.6's node_assignment fix).
  • The package's own CI tooling (PHPStan/CS-fixer) diverging from the consuming project's standards.

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.

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.
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
equipc/laravel-email-database-log
adedsec/nova-translated-labels