sylius-labs/behat-chrome-extension
Behat extension for controlling Chrome without Selenium, communicating directly over HTTP and WebSockets for speed at least twice as fast. Supports headless Chrome 59+, with configurable SSL validation, socket timeout, and download behavior.
Architecture fit. syliuslabs/behat-chrome-extension is a Behat extension that wires the Chrome Mink driver into a Behat acceptance-test suite — it lets Behat scenarios drive a real Chrome/Chromium instance (typically headless in CI) via the DevTools protocol. It is not a Laravel package and has no relationship to Laravel's service container, HTTP kernel, or Dusk. It is relevant only if the target system runs a Behat/Mink suite — most commonly Sylius storefronts, but in principle any PHP application with a behat.yml. For a Laravel-first portfolio, the architecture fit is low unless we have inherited Behat suites (Sylius migrations, legacy e-commerce platforms). It is a developer/QA-tooling dependency, never a runtime/production dependency, which bounds the blast radius considerably.
Integration feasibility. Straightforward: composer require --dev syliuslabs/behat-chrome-extension, register the extension in behat.yml under extensions:, and configure the Mink driver to point at a running Chrome/Chromedriver. The real integration cost is not the Composer package — it is the infrastructure: Chrome binary, matching chromedriver, headless flags, --no-sandbox in containerised CI, and a stable lifecycle wrapper in pipelines. Expect a day or two of pipeline work for a team already comfortable with Behat; significantly more for a team that has only used Dusk/Pest browser testing.
Technical risk. Moderate and mostly confined to the test harness. v1.5.1 is a single-change patch: it adds a Composer conflict against dmore/chrome-mink-driver 2.11.0 (PR #5, first contribution from @TheMilek). That is a defensive pin — it strongly implies 2.11.0 broke this extension. The risk profile is therefore: (a) we cannot adopt chrome-mink-driver 2.11.0 while on this version, which may collide with another package requiring ^2.11; (b) the pin is a workaround rather than a fix, so the underlying incompatibility still exists and will resurface in 2.12+; (c) Composer will silently resolve to an older driver, which can produce confusing behaviour rather than a clean error. There is no new feature, no API change, no deprecation, and no removal in this release — the public surface is unchanged, so a patch-level upgrade from v1.5.0 is low risk if the current lockfile already sits below 2.11.0.
Key questions.
chrome-mink-driver 2.11.0 — a runtime error, a capability negotiation failure, or a behavioural regression? Is there an upstream issue?chrome-mink-driver at 2.11.0 anywhere? If so, v1.5.1 is a forced downgrade, not a routine bump.Stack fit. Only applicable to Behat-based suites. If our services are Laravel + Dusk or Pest browser tests, this package should not be introduced — it solves a problem we do not have. If we operate Sylius or another Behat/Mink estate, it is close to the default choice for Chrome driving and fits naturally alongside behat/mink-extension and behat/mink-browserkit-driver (the latter for fast non-JS scenarios, with this extension reserved for JS-required ones).
Migration path. Nothing to migrate at the application level; v1.5.1 changes only the dependency graph. For existing consumers: composer update syliuslabs/behat-chrome-extension --with-dependencies, then inspect composer.lock to confirm which chrome-mink-driver version actually resolved — do not assume Composer picked 2.10.x. For new adopters: install the extension and the driver together in one step so the conflict constraint is evaluated during initial resolution rather than as a surprise later.
Compatibility. The conflict entry is the entire compatibility story of this release. Practically, that means the supported window is chrome-mink-driver ≤ 2.10.x until further notice. Verify this against any other dev dependency that pins or requires chrome-mink-driver (some Behat/Mink bundles do) — a hard conflict there will block the upgrade entirely, and Composer's error is unhelpful. Also confirm PHP and Behat version bounds are unchanged; nothing in the changelog suggests otherwise, but the patch should be validated against our exact PHP and Behat majors in CI.
Sequencing.
composer why dmore/chrome-mink-driver and diff the lockfile.Maintenance. Low. This is dev-only tooling with one release in the period under review and a single-line diff. The ongoing cost is not the package itself but the surrounding surface: Chrome upgrades, chromedriver pairing, and Behat/Drupal-Mink transitive updates. Budget a small recurring allowance for that, not for this library.
Support. Upstream is a small-maintainer project; this release is a first contribution, which is a mild signal of a thin contributor base. Escalation paths are GitHub issues. Internal ownership should sit with the QA/developer-experience function that owns the acceptance suite, not with an application team — otherwise nobody owns the pin and it silently ages.
Scaling. Irrelevant in the horizontal-scaling sense; this does not touch production traffic. It scales with suite size and parallelism: each Behat process needs its own Chrome instance, so CI cost grows roughly linearly with worker count. Teams running large Sylius suites should plan for browser-pool sizing and container memory, which dwarfs any consideration about this package's version.
Failure modes.
chrome-mink-driver ^2.11, hard-blocking our upgrade path until this extension lifts its conflict. Highest-probability failure.chrome-mink-driver usage or migration to a Playwright-backed approach).Ramp-up. Low for anyone already writing Behat features — the extension is declarative configuration, not an API to learn. For teams coming from Dusk or Pest browser testing, the learning curve is Behat itself (Gherkin, step definitions, Mink abstractions), not this package, and that is a multi-week investment that should be justified by the suite's value rather than by this dependency. Document the behat.yml block and the CI browser setup in the repo README; that artefact, not the library, is what makes onboarding cheap.
How can I help you explore Laravel packages today?