lakion/mink-debug-extension
MinkDebugExtension (friends-of-behat/mink-debug-extension) is a Behat extension that logs and debugs Mink data after every failed step, especially useful on CI. With a supported driver it can save screenshots. Configure the log directory, screenshot option, and clean_start.
composer require plus a three-key YAML block (directory, screenshot, clean_start), so the build comparison is trivially favourable if the Behat/Mink prerequisite is already met. If it isn't, the "build" option isn't custom code either — it's changing test frameworks, which is a much larger decision.config/*.php, no container registration, no integration with php artisan test. Projects on Laravel Dusk, Pest, PHPUnit, Cypress, or Playwright get zero value. A PM should treat "we don't run Behat" as a closed decision, not a backlog item.NOASSERTION license requiring legal sign-off, and a single-maintainer-shaped project now stewarded by FriendsOfBehat. It is replaceable in an afternoon; treat it that way in architecture reviews so it never becomes load-bearing.Lakion\Behat\MinkDebugExtension to FriendsOfBehat\MinkDebugExtension, log extension changed .log → .html, and the upload-textfiles / upload-screenshots / wait-for-port helper binaries were removed. Any existing CI script calling vendor/lakion/.../travis/tools/* breaks. Plan for native CI artifact upload instead. v2.2.0 adds Behat 4 support; v2.1.0 requires PHP ≥7.4 and v2.0.0+ targets PHP 8.0 — confirm the runtime line before committing.Consider adoption when all of these are true:
screenshot: true — otherwise scope the promise down to logs only.Run a time-boxed pilot when:
NOASSERTION license hasn't been cleared. Get the actual LICENSE file reviewed in writing before broader rollout, especially if the repo is audited or shipped to regulated customers.Look elsewhere when:
Caveats to carry into any decision:
clean_start: true limits accumulation, not sensitivity. Decide who can read artifacts, where they're stored, and the retention window before enabling this in any environment handling real user data.To executives (30 seconds): "This is a small, low-cost improvement to our test infrastructure — but only for teams already running Behat acceptance tests. When a build goes red, it automatically captures the page state and, where the driver allows, a screenshot, so engineers spend minutes instead of hours working out what broke. It is not a customer-facing feature; the return is engineering throughput and release confidence. Two things to know: it doesn't apply to Laravel Dusk/Pest/PHPUnit suites, and its license is unclassified, so I'd recommend a time-boxed pilot on one suite with legal review in parallel before we call it standard."
To engineering and DevOps: "MinkDebugExtension is a Behat extension — not a Laravel package. One composer require --dev, one behat.yml block (directory required; screenshot: false and clean_start: true by default), and it hooks the Mink step lifecycle to write failure artifacts. It touches no application code and no production path; blast radius is test infrastructure only. Three things to check before rollout: (1) confirm which Mink driver we run and whether screenshot: true does anything; (2) replace any legacy vendor/lakion/.../travis/tools/* invocations with native artifact upload (actions/upload-artifact, GitLab artifacts:) — those binaries were removed in v2.0.0; (3) note the namespace changed from Lakion\Behat\... to FriendsOfBehat\..., so old wiki pages and StackOverflow snippets will silently fail to load. Also: the log dir must be writable by the CI user, and we need a retention policy — HTML page dumps can contain tokens and customer data."
To QA and testing teams: "This automates the first step of failure triage. When a scenario fails, you get the failed-step context, the current URL, page source, and — if the driver supports it — a screenshot, without rerunning anything locally. It's most valuable on flaky or environment-specific acceptance tests. We'll pilot it on our highest-friction suite first: week one logs only, week two add screenshots, and we'll compare triage time against how long a red build takes us today. If it doesn't move that number, we drop it — the cost of removing it is one dependency and one YAML block."
How can I help you explore Laravel packages today?